🐛 fix: skill detail error (#11949)

* chore: use only fetch once swr

* chore: use mcp detail tool list

* chore: update tools detail

* chore: update i18n files

* fix: skill style

* chore: add skill loading
This commit is contained in:
Rdmclin2
2026-01-29 10:56:40 +08:00
committed by arvinxx
parent a8582b0b37
commit 07d223117c
27 changed files with 266 additions and 232 deletions

View File

@@ -348,11 +348,6 @@
"inspector.delete": "حذف الاستدعاء",
"inspector.orphanedToolCall": "تم اكتشاف استدعاء مهارة يتيم، قد يؤثر على تنفيذ الوكيل. قم بإزالته.",
"inspector.pluginRender": "عرض واجهة المهارة",
"integrationDetail.author": "المؤلف",
"integrationDetail.details": "التفاصيل",
"integrationDetail.developedBy": "تم التطوير بواسطة",
"integrationDetail.tools": "الأدوات",
"integrationDetail.trustWarning": "استخدم الموصلات فقط من المطورين الذين تثق بهم. لا تتحكم LobeHub في الأدوات التي يتيحها المطورون ولا يمكنها التحقق من أنها ستعمل كما هو متوقع أو أنها لن تتغير.",
"list.item.deprecated.title": "تم الحذف",
"list.item.local.config": "الإعداد",
"list.item.local.title": "مخصص",
@@ -492,6 +487,13 @@
"settings.saveSettings": "حفظ",
"settings.title": "إعدادات مجتمع المهارات",
"showInPortal": "عرض التفاصيل في مساحة العمل",
"skillDetail.author": "المؤلف",
"skillDetail.details": "التفاصيل",
"skillDetail.developedBy": "تم التطوير بواسطة",
"skillDetail.tabs.overview": "نظرة عامة",
"skillDetail.tabs.tools": "القدرات",
"skillDetail.tools": "الأدوات",
"skillDetail.trustWarning": "استخدم الموصلات فقط من المطورين الذين تثق بهم. لا تتحكم LobeHub في الأدوات التي يتيحها المطورون ولا يمكنها التحقق من أنها ستعمل كما هو متوقع أو أنها لن تتغير.",
"skillInstallBanner.title": "أضف المهارات إلى Lobe AI",
"store.actions.cancel": "إلغاء",
"store.actions.configure": "تهيئة",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Изтриване на извикване",
"inspector.orphanedToolCall": "Открито е изолирано извикване на умение, което може да повлияе на изпълнението на агента. Премахнете го.",
"inspector.pluginRender": "Преглед на интерфейса на умението",
"integrationDetail.author": "Автор",
"integrationDetail.details": "Детайли",
"integrationDetail.developedBy": "Разработено от",
"integrationDetail.tools": "Инструменти",
"integrationDetail.trustWarning": "Използвайте само конектори от разработчици, на които имате доверие. LobeHub не контролира кои инструменти се предоставят от разработчиците и не може да гарантира, че ще работят според очакванията или че няма да бъдат променени.",
"list.item.deprecated.title": "Изтрито",
"list.item.local.config": "Конфигурация",
"list.item.local.title": "Потребителско",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Запази",
"settings.title": "Настройки на общността за умения",
"showInPortal": "Преглед на подробности в Работното пространство",
"skillDetail.author": "Автор",
"skillDetail.details": "Подробности",
"skillDetail.developedBy": "Разработено от",
"skillDetail.tabs.overview": "Преглед",
"skillDetail.tabs.tools": "Възможности",
"skillDetail.tools": "Инструменти",
"skillDetail.trustWarning": "Използвайте само конектори от разработчици, на които имате доверие. LobeHub не контролира кои инструменти са предоставени от разработчиците и не може да гарантира, че ще работят според очакванията или че няма да бъдат променени.",
"skillInstallBanner.title": "Добавете умения към Lobe AI",
"store.actions.cancel": "Отказ",
"store.actions.configure": "Конфигурирай",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Aufruf löschen",
"inspector.orphanedToolCall": "Verwaister Skill-Aufruf erkannt, kann die Agentenausführung beeinträchtigen. Entfernen.",
"inspector.pluginRender": "Skill-UI anzeigen",
"integrationDetail.author": "Autor",
"integrationDetail.details": "Einzelheiten",
"integrationDetail.developedBy": "Entwickelt von",
"integrationDetail.tools": "Werkzeuge",
"integrationDetail.trustWarning": "Verwenden Sie nur Konnektoren von Entwicklern, denen Sie vertrauen. LobeHub kontrolliert nicht, welche Werkzeuge von Entwicklern bereitgestellt werden, und kann nicht garantieren, dass diese wie beabsichtigt funktionieren oder sich nicht ändern.",
"list.item.deprecated.title": "Gelöscht",
"list.item.local.config": "Konfiguration",
"list.item.local.title": "Benutzerdefiniert",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Speichern",
"settings.title": "Skill-Community-Einstellungen",
"showInPortal": "Details im Workspace anzeigen",
"skillDetail.author": "Autor",
"skillDetail.details": "Details",
"skillDetail.developedBy": "Entwickelt von",
"skillDetail.tabs.overview": "Übersicht",
"skillDetail.tabs.tools": "Funktionen",
"skillDetail.tools": "Werkzeuge",
"skillDetail.trustWarning": "Verwenden Sie nur Connectoren von vertrauenswürdigen Entwicklern. LobeHub hat keine Kontrolle darüber, welche Werkzeuge von Entwicklern bereitgestellt werden, und kann nicht garantieren, dass diese wie beabsichtigt funktionieren oder unverändert bleiben.",
"skillInstallBanner.title": "Funktionen zu Lobe AI hinzufügen",
"store.actions.cancel": "Abbrechen",
"store.actions.configure": "Konfigurieren",

View File

@@ -348,13 +348,6 @@
"inspector.delete": "Delete call",
"inspector.orphanedToolCall": "Orphaned Skill call detected, may affect Agent execution. Remove it.",
"inspector.pluginRender": "View Skill UI",
"integrationDetail.author": "Author",
"integrationDetail.details": "Details",
"integrationDetail.developedBy": "Developed by",
"integrationDetail.tabs.overview": "Overview",
"integrationDetail.tabs.tools": "Tools",
"integrationDetail.tools": "Tools",
"integrationDetail.trustWarning": "Only use connectors from developers you trust. LobeHub does not control which tools developers make available and cannot verify that they will work as intended or that they won't change.",
"list.item.deprecated.title": "Deleted",
"list.item.local.config": "Config",
"list.item.local.title": "Custom",
@@ -494,6 +487,13 @@
"settings.saveSettings": "Save",
"settings.title": "Skill community settings",
"showInPortal": "View details in Workspace",
"skillDetail.author": "Author",
"skillDetail.details": "Details",
"skillDetail.developedBy": "Developed by",
"skillDetail.tabs.overview": "Overview",
"skillDetail.tabs.tools": "Capabilities",
"skillDetail.tools": "Tools",
"skillDetail.trustWarning": "Only use connectors from developers you trust. LobeHub does not control which tools developers make available and cannot verify that they will work as intended or that they won't change.",
"skillInstallBanner.title": "Add skills to Lobe AI",
"store.actions.cancel": "Cancel",
"store.actions.configure": "Configure",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Eliminar llamada",
"inspector.orphanedToolCall": "Se detectó una llamada de Skill huérfana, puede afectar la ejecución del Agente. Elimínala.",
"inspector.pluginRender": "Ver interfaz del Skill",
"integrationDetail.author": "Autor",
"integrationDetail.details": "Detalles",
"integrationDetail.developedBy": "Desarrollado por",
"integrationDetail.tools": "Herramientas",
"integrationDetail.trustWarning": "Utiliza únicamente conectores de desarrolladores en los que confíes. LobeHub no controla qué herramientas ponen a disposición los desarrolladores y no puede garantizar que funcionen como se espera ni que no cambien.",
"list.item.deprecated.title": "Eliminado",
"list.item.local.config": "Configuración",
"list.item.local.title": "Personalizado",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Guardar",
"settings.title": "Configuración de la comunidad de Skills",
"showInPortal": "Ver detalles en el espacio de trabajo",
"skillDetail.author": "Autor",
"skillDetail.details": "Detalles",
"skillDetail.developedBy": "Desarrollado por",
"skillDetail.tabs.overview": "Resumen",
"skillDetail.tabs.tools": "Capacidades",
"skillDetail.tools": "Herramientas",
"skillDetail.trustWarning": "Utiliza solo conectores de desarrolladores en los que confíes. LobeHub no controla qué herramientas ponen a disposición los desarrolladores ni puede garantizar que funcionen como se espera o que no cambien.",
"skillInstallBanner.title": "Agrega habilidades a Lobe AI",
"store.actions.cancel": "Cancelar",
"store.actions.configure": "Configurar",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "حذف فراخوانی",
"inspector.orphanedToolCall": "فراخوانی مهارت بدون وابستگی شناسایی شد، ممکن است بر اجرای عامل تأثیر بگذارد. آن را حذف کنید.",
"inspector.pluginRender": "مشاهده رابط کاربری مهارت",
"integrationDetail.author": "نویسنده",
"integrationDetail.details": "جزئیات",
"integrationDetail.developedBy": "توسعه‌دهنده",
"integrationDetail.tools": "ابزارها",
"integrationDetail.trustWarning": "فقط از کانکتورهایی استفاده کنید که توسط توسعه‌دهندگانی که به آن‌ها اعتماد دارید ساخته شده‌اند. LobeHub کنترلی بر ابزارهایی که توسعه‌دهندگان ارائه می‌دهند ندارد و نمی‌تواند تضمین کند که این ابزارها طبق انتظار عمل می‌کنند یا تغییر نخواهند کرد.",
"list.item.deprecated.title": "حذف شده",
"list.item.local.config": "پیکربندی",
"list.item.local.title": "سفارشی",
@@ -492,6 +487,13 @@
"settings.saveSettings": "ذخیره تنظیمات",
"settings.title": "تنظیمات جامعه مهارت",
"showInPortal": "مشاهده جزئیات در Workspace",
"skillDetail.author": "نویسنده",
"skillDetail.details": "جزئیات",
"skillDetail.developedBy": "توسعه‌دهنده",
"skillDetail.tabs.overview": "نمای کلی",
"skillDetail.tabs.tools": "قابلیت‌ها",
"skillDetail.tools": "ابزارها",
"skillDetail.trustWarning": "فقط از کانکتورهایی استفاده کنید که توسط توسعه‌دهندگان مورد اعتماد شما ارائه شده‌اند. LobeHub کنترلی بر ابزارهایی که توسعه‌دهندگان ارائه می‌دهند ندارد و نمی‌تواند تضمین کند که این ابزارها طبق انتظار عمل می‌کنند یا تغییری نخواهند کرد.",
"skillInstallBanner.title": "افزودن مهارت‌ها به Lobe AI",
"store.actions.cancel": "لغو",
"store.actions.configure": "پیکربندی",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Supprimer lappel",
"inspector.orphanedToolCall": "Appel de compétence orphelin détecté, peut affecter lexécution de lagent. Supprimez-le.",
"inspector.pluginRender": "Voir linterface de la compétence",
"integrationDetail.author": "Auteur",
"integrationDetail.details": "Détails",
"integrationDetail.developedBy": "Développé par",
"integrationDetail.tools": "Outils",
"integrationDetail.trustWarning": "N'utilisez que les connecteurs provenant de développeurs de confiance. LobeHub ne contrôle pas les outils mis à disposition par les développeurs et ne peut garantir leur bon fonctionnement ni qu'ils ne seront pas modifiés.",
"list.item.deprecated.title": "Supprimée",
"list.item.local.config": "Configuration",
"list.item.local.title": "Personnalisée",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Enregistrer",
"settings.title": "Paramètres de la communauté de compétences",
"showInPortal": "Voir les détails dans lespace de travail",
"skillDetail.author": "Auteur",
"skillDetail.details": "Détails",
"skillDetail.developedBy": "Développé par",
"skillDetail.tabs.overview": "Aperçu",
"skillDetail.tabs.tools": "Fonctionnalités",
"skillDetail.tools": "Outils",
"skillDetail.trustWarning": "N'utilisez que des connecteurs provenant de développeurs de confiance. LobeHub ne contrôle pas les outils mis à disposition par les développeurs et ne peut garantir leur bon fonctionnement ni qu'ils ne seront pas modifiés.",
"skillInstallBanner.title": "Ajouter des compétences à Lobe AI",
"store.actions.cancel": "Annuler",
"store.actions.configure": "Configurer",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Elimina chiamata",
"inspector.orphanedToolCall": "Rilevata chiamata Skill orfana, potrebbe influenzare l'esecuzione dell'agente. Rimuovila.",
"inspector.pluginRender": "Visualizza interfaccia Skill",
"integrationDetail.author": "Autore",
"integrationDetail.details": "Dettagli",
"integrationDetail.developedBy": "Sviluppato da",
"integrationDetail.tools": "Strumenti",
"integrationDetail.trustWarning": "Utilizza solo connettori di sviluppatori di cui ti fidi. LobeHub non controlla quali strumenti vengono resi disponibili dagli sviluppatori e non può garantire che funzionino come previsto o che non vengano modificati.",
"list.item.deprecated.title": "Eliminata",
"list.item.local.config": "Configurazione",
"list.item.local.title": "Personalizzata",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Salva",
"settings.title": "Impostazioni della community Skill",
"showInPortal": "Visualizza dettagli in Workspace",
"skillDetail.author": "Autore",
"skillDetail.details": "Dettagli",
"skillDetail.developedBy": "Sviluppato da",
"skillDetail.tabs.overview": "Panoramica",
"skillDetail.tabs.tools": "Funzionalità",
"skillDetail.tools": "Strumenti",
"skillDetail.trustWarning": "Utilizza solo connettori di sviluppatori di cui ti fidi. LobeHub non controlla quali strumenti vengano resi disponibili dagli sviluppatori e non può garantire che funzionino come previsto o che non vengano modificati.",
"skillInstallBanner.title": "Aggiungi abilità a Lobe AI",
"store.actions.cancel": "Annulla",
"store.actions.configure": "Configura",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "ツール呼び出しを削除",
"inspector.orphanedToolCall": "このツール呼び出しメッセージは、異常な理由により孤立している可能性があり、アシスタントの正常な実行に影響を与えることがあります。削除してください。",
"inspector.pluginRender": "スキル画面を表示",
"integrationDetail.author": "作成者",
"integrationDetail.details": "詳細",
"integrationDetail.developedBy": "開発元",
"integrationDetail.tools": "ツール",
"integrationDetail.trustWarning": "信頼できる開発者のコネクタのみを使用してください。LobeHub は、開発者が提供するツールを管理しておらず、それらが意図したとおりに動作することや、変更されないことを保証できません。",
"list.item.deprecated.title": "削除済み",
"list.item.local.config": "設定",
"list.item.local.title": "カスタム",
@@ -492,6 +487,13 @@
"settings.saveSettings": "設定を保存",
"settings.title": "スキルコミュニティの設定",
"showInPortal": "ワークスペースで詳細を確認してください",
"skillDetail.author": "作成者",
"skillDetail.details": "詳細",
"skillDetail.developedBy": "開発者",
"skillDetail.tabs.overview": "概要",
"skillDetail.tabs.tools": "機能",
"skillDetail.tools": "ツール",
"skillDetail.trustWarning": "信頼できる開発者のコネクタのみを使用してください。LobeHub は、開発者が提供するツールを管理しておらず、それらが意図したとおりに動作することや、変更されないことを保証できません。",
"skillInstallBanner.title": "Lobe AI にスキルを追加",
"store.actions.cancel": "インストールをキャンセル",
"store.actions.configure": "設定",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "도구 호출 삭제",
"inspector.orphanedToolCall": "이 도구 호출 메시지는 예기치 않은 이유로 고립되었을 수 있으며, 이는 도우미의 정상적인 실행에 영향을 줄 수 있습니다. 제거해 주세요.",
"inspector.pluginRender": "기능 인터페이스 보기",
"integrationDetail.author": "작성자",
"integrationDetail.details": "세부 정보",
"integrationDetail.developedBy": "개발자",
"integrationDetail.tools": "도구",
"integrationDetail.trustWarning": "신뢰할 수 있는 개발자의 커넥터만 사용하세요. LobeHub은 개발자가 제공하는 도구를 통제하지 않으며, 해당 도구가 의도한 대로 작동하거나 변경되지 않을 것이라는 보장을 할 수 없습니다.",
"list.item.deprecated.title": "삭제됨",
"list.item.local.config": "설정",
"list.item.local.title": "사용자 정의",
@@ -492,6 +487,13 @@
"settings.saveSettings": "설정 저장",
"settings.title": "기능 커뮤니티 설정",
"showInPortal": "워크스페이스에서 자세히 보기",
"skillDetail.author": "작성자",
"skillDetail.details": "세부 정보",
"skillDetail.developedBy": "개발자",
"skillDetail.tabs.overview": "개요",
"skillDetail.tabs.tools": "기능",
"skillDetail.tools": "도구",
"skillDetail.trustWarning": "신뢰할 수 있는 개발자의 커넥터만 사용하세요. LobeHub은 개발자가 제공하는 도구를 통제하지 않으며, 해당 도구가 의도한 대로 작동하거나 변경되지 않을 것이라는 보장을 할 수 없습니다.",
"skillInstallBanner.title": "Lobe AI에 스킬 추가",
"store.actions.cancel": "설치 취소",
"store.actions.configure": "구성",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Aanroep verwijderen",
"inspector.orphanedToolCall": "Verweesde Skill-aanroep gedetecteerd, kan Agent-uitvoering beïnvloeden. Verwijder deze.",
"inspector.pluginRender": "Bekijk Skill-UI",
"integrationDetail.author": "Auteur",
"integrationDetail.details": "Details",
"integrationDetail.developedBy": "Ontwikkeld door",
"integrationDetail.tools": "Hulpmiddelen",
"integrationDetail.trustWarning": "Gebruik alleen connectors van ontwikkelaars die je vertrouwt. LobeHub heeft geen controle over welke tools ontwikkelaars beschikbaar stellen en kan niet garanderen dat ze naar behoren werken of dat ze niet zullen veranderen.",
"list.item.deprecated.title": "Verwijderd",
"list.item.local.config": "Configuratie",
"list.item.local.title": "Aangepast",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Instellingen opslaan",
"settings.title": "Instellingen Skill-community",
"showInPortal": "Details bekijken in Werkruimte",
"skillDetail.author": "Auteur",
"skillDetail.details": "Details",
"skillDetail.developedBy": "Ontwikkeld door",
"skillDetail.tabs.overview": "Overzicht",
"skillDetail.tabs.tools": "Mogelijkheden",
"skillDetail.tools": "Hulpmiddelen",
"skillDetail.trustWarning": "Gebruik alleen connectors van ontwikkelaars die je vertrouwt. LobeHub heeft geen controle over welke tools ontwikkelaars beschikbaar stellen en kan niet garanderen dat ze naar behoren werken of ongewijzigd blijven.",
"skillInstallBanner.title": "Vaardigheden toevoegen aan Lobe AI",
"store.actions.cancel": "Annuleren",
"store.actions.configure": "Configureren",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Usuń wywołanie",
"inspector.orphanedToolCall": "Wykryto osierocone wywołanie umiejętności, może wpłynąć na działanie Agenta. Usuń je.",
"inspector.pluginRender": "Zobacz interfejs umiejętności",
"integrationDetail.author": "Autor",
"integrationDetail.details": "Szczegóły",
"integrationDetail.developedBy": "Opracowane przez",
"integrationDetail.tools": "Narzędzia",
"integrationDetail.trustWarning": "Używaj konektorów tylko od zaufanych deweloperów. LobeHub nie kontroluje, jakie narzędzia są udostępniane przez deweloperów i nie może zagwarantować, że będą działać zgodnie z oczekiwaniami ani że nie ulegną zmianie.",
"list.item.deprecated.title": "Usunięto",
"list.item.local.config": "Konfiguracja",
"list.item.local.title": "Niestandardowa",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Zapisz",
"settings.title": "Ustawienia społeczności Umiejętności",
"showInPortal": "Zobacz szczegóły w Workspace",
"skillDetail.author": "Autor",
"skillDetail.details": "Szczegóły",
"skillDetail.developedBy": "Opracowane przez",
"skillDetail.tabs.overview": "Przegląd",
"skillDetail.tabs.tools": "Możliwości",
"skillDetail.tools": "Narzędzia",
"skillDetail.trustWarning": "Używaj konektorów tylko od zaufanych deweloperów. LobeHub nie kontroluje, jakie narzędzia są udostępniane przez deweloperów i nie może zagwarantować, że będą działać zgodnie z oczekiwaniami ani że nie ulegną zmianie.",
"skillInstallBanner.title": "Dodaj umiejętności do Lobe AI",
"store.actions.cancel": "Anuluj",
"store.actions.configure": "Konfiguruj",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Excluir chamada",
"inspector.orphanedToolCall": "Chamada de Skill órfã detectada, pode afetar a execução do Agente. Remova-a.",
"inspector.pluginRender": "Ver interface da Skill",
"integrationDetail.author": "Autor",
"integrationDetail.details": "Detalhes",
"integrationDetail.developedBy": "Desenvolvido por",
"integrationDetail.tools": "Ferramentas",
"integrationDetail.trustWarning": "Use apenas conectores de desenvolvedores confiáveis. O LobeHub não controla quais ferramentas os desenvolvedores disponibilizam e não pode garantir que funcionarão como esperado ou que não serão alteradas.",
"list.item.deprecated.title": "Excluído",
"list.item.local.config": "Configuração",
"list.item.local.title": "Personalizada",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Salvar",
"settings.title": "Configurações da comunidade de habilidades",
"showInPortal": "Ver detalhes no Workspace",
"skillDetail.author": "Autor",
"skillDetail.details": "Detalhes",
"skillDetail.developedBy": "Desenvolvido por",
"skillDetail.tabs.overview": "Visão geral",
"skillDetail.tabs.tools": "Capacidades",
"skillDetail.tools": "Ferramentas",
"skillDetail.trustWarning": "Use apenas conectores de desenvolvedores confiáveis. O LobeHub não controla quais ferramentas os desenvolvedores disponibilizam e não pode garantir que funcionarão conforme o esperado ou que não serão alteradas.",
"skillInstallBanner.title": "Adicione habilidades ao Lobe AI",
"store.actions.cancel": "Cancelar",
"store.actions.configure": "Configurar",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Удалить вызов",
"inspector.orphanedToolCall": "Обнаружен осиротевший вызов навыка, может повлиять на выполнение агента. Удалите его.",
"inspector.pluginRender": "Просмотр интерфейса навыка",
"integrationDetail.author": "Автор",
"integrationDetail.details": "Подробности",
"integrationDetail.developedBy": "Разработано",
"integrationDetail.tools": "Инструменты",
"integrationDetail.trustWarning": "Используйте коннекторы только от доверенных разработчиков. LobeHub не контролирует, какие инструменты предоставляют разработчики, и не может гарантировать, что они будут работать должным образом или не изменятся со временем.",
"list.item.deprecated.title": "Удалён",
"list.item.local.config": "Конфигурация",
"list.item.local.title": "Пользовательский",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Сохранить",
"settings.title": "Настройки сообщества навыков",
"showInPortal": "Посмотреть в рабочем пространстве",
"skillDetail.author": "Автор",
"skillDetail.details": "Подробности",
"skillDetail.developedBy": "Разработано",
"skillDetail.tabs.overview": "Обзор",
"skillDetail.tabs.tools": "Возможности",
"skillDetail.tools": "Инструменты",
"skillDetail.trustWarning": "Используйте коннекторы только от доверенных разработчиков. LobeHub не контролирует, какие инструменты предоставляют разработчики, и не может гарантировать их работоспособность или неизменность.",
"skillInstallBanner.title": "Добавьте навыки в Lobe AI",
"store.actions.cancel": "Отмена",
"store.actions.configure": "Настроить",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Çağrıyı sil",
"inspector.orphanedToolCall": "Bağımsız Yetenek çağrısı tespit edildi, bu durum Ajan çalışmasını etkileyebilir. Kaldırın.",
"inspector.pluginRender": "Yetenek arayüzünü görüntüle",
"integrationDetail.author": "Yazar",
"integrationDetail.details": "Ayrıntılar",
"integrationDetail.developedBy": "Geliştiren",
"integrationDetail.tools": "Araçlar",
"integrationDetail.trustWarning": "Yalnızca güvendiğiniz geliştiricilerin bağlayıcılarını kullanın. LobeHub, geliştiricilerin hangi araçları sunduğunu kontrol etmez ve bu araçların beklendiği gibi çalışacağını ya da değişmeyeceğini garanti edemez.",
"list.item.deprecated.title": "Silindi",
"list.item.local.config": "Yapılandırma",
"list.item.local.title": "Özel",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Ayarları kaydet",
"settings.title": "Skill topluluğu ayarları",
"showInPortal": "Workspace'te ayrıntıları görüntüle",
"skillDetail.author": "Yazar",
"skillDetail.details": "Ayrıntılar",
"skillDetail.developedBy": "Geliştiren",
"skillDetail.tabs.overview": "Genel Bakış",
"skillDetail.tabs.tools": "Yetenekler",
"skillDetail.tools": "Araçlar",
"skillDetail.trustWarning": "Yalnızca güvendiğiniz geliştiricilerin bağlayıcılarını kullanın. LobeHub, geliştiricilerin hangi araçları sunduğunu kontrol etmez ve bu araçların beklendiği gibi çalışacağını veya değişmeyeceğini garanti edemez.",
"skillInstallBanner.title": "Lobe AI'a yetenekler ekleyin",
"store.actions.cancel": "İptal",
"store.actions.configure": "Yapılandır",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "Xóa lệnh gọi",
"inspector.orphanedToolCall": "Phát hiện lệnh gọi Kỹ năng mồ côi, có thể ảnh hưởng đến quá trình thực thi của Tác nhân. Hãy xóa nó.",
"inspector.pluginRender": "Xem giao diện Kỹ năng",
"integrationDetail.author": "Tác giả",
"integrationDetail.details": "Chi tiết",
"integrationDetail.developedBy": "Phát triển bởi",
"integrationDetail.tools": "Công cụ",
"integrationDetail.trustWarning": "Chỉ sử dụng các trình kết nối từ những nhà phát triển mà bạn tin tưởng. LobeHub không kiểm soát các công cụ mà nhà phát triển cung cấp và không thể đảm bảo rằng chúng sẽ hoạt động như mong đợi hoặc không bị thay đổi.",
"list.item.deprecated.title": "Đã xóa",
"list.item.local.config": "Cấu hình",
"list.item.local.title": "Tùy chỉnh",
@@ -492,6 +487,13 @@
"settings.saveSettings": "Lưu cài đặt",
"settings.title": "Cài đặt cộng đồng Kỹ năng",
"showInPortal": "Xem chi tiết trong Không gian làm việc",
"skillDetail.author": "Tác giả",
"skillDetail.details": "Chi tiết",
"skillDetail.developedBy": "Phát triển bởi",
"skillDetail.tabs.overview": "Tổng quan",
"skillDetail.tabs.tools": "Khả năng",
"skillDetail.tools": "Công cụ",
"skillDetail.trustWarning": "Chỉ sử dụng các trình kết nối từ những nhà phát triển mà bạn tin tưởng. LobeHub không kiểm soát các công cụ mà nhà phát triển cung cấp và không thể đảm bảo rằng chúng sẽ hoạt động như mong đợi hoặc không bị thay đổi.",
"skillInstallBanner.title": "Thêm kỹ năng vào Lobe AI",
"store.actions.cancel": "Hủy",
"store.actions.configure": "Cấu hình",

View File

@@ -348,13 +348,6 @@
"inspector.delete": "删除技能调用",
"inspector.orphanedToolCall": "该技能调用消息可能因异常原因成为孤立消息,这会影响助理的正常执行,请将其移除",
"inspector.pluginRender": "查看技能界面",
"integrationDetail.author": "作者",
"integrationDetail.details": "详情",
"integrationDetail.developedBy": "开发者",
"integrationDetail.tabs.overview": "概览",
"integrationDetail.tabs.tools": "技能列表",
"integrationDetail.tools": "工具",
"integrationDetail.trustWarning": "请仅使用您信任的开发者提供的连接器。LobeHub 无法控制开发者提供哪些工具,也无法验证这些工具是否按预期工作或是否会发生变化。",
"list.item.deprecated.title": "已删除",
"list.item.local.config": "配置",
"list.item.local.title": "自定义",
@@ -494,6 +487,13 @@
"settings.saveSettings": "保存设置",
"settings.title": "设置技能社区",
"showInPortal": "请在工作区中查看详情",
"skillDetail.author": "作者",
"skillDetail.details": "详情",
"skillDetail.developedBy": "开发者",
"skillDetail.tabs.overview": "概览",
"skillDetail.tabs.tools": "技能功能",
"skillDetail.tools": "工具",
"skillDetail.trustWarning": "请仅使用您信任的开发者提供的连接器。LobeHub 无法控制开发者提供哪些工具,也无法验证这些工具是否按预期工作或是否会发生变化。",
"skillInstallBanner.title": "为 Lobe AI 添加技能",
"store.actions.cancel": "取消安装",
"store.actions.configure": "配置",

View File

@@ -348,11 +348,6 @@
"inspector.delete": "刪除工具調用",
"inspector.orphanedToolCall": "該工具調用訊息可能因異常原因成為孤立訊息,這可能會影響 Agent 的正常執行,請將其移除",
"inspector.pluginRender": "查看插件介面",
"integrationDetail.author": "作者",
"integrationDetail.details": "詳細資訊",
"integrationDetail.developedBy": "開發者",
"integrationDetail.tools": "工具",
"integrationDetail.trustWarning": "請僅使用您信任的開發者所提供的連接器。LobeHub 無法控制開發者提供哪些工具,也無法保證其功能如預期運作,或未來不會有所變更。",
"list.item.deprecated.title": "已刪除",
"list.item.local.config": "配置",
"list.item.local.title": "自定義",
@@ -492,6 +487,13 @@
"settings.saveSettings": "保存設置",
"settings.title": "設定外掛社群",
"showInPortal": "請在工作區中查看詳情",
"skillDetail.author": "作者",
"skillDetail.details": "詳細資訊",
"skillDetail.developedBy": "開發者",
"skillDetail.tabs.overview": "概覽",
"skillDetail.tabs.tools": "功能",
"skillDetail.tools": "工具",
"skillDetail.trustWarning": "請僅使用您信任的開發者所提供的連接器。LobeHub 無法控制開發者提供的工具內容,也無法保證其功能如預期運作,或不會發生變更。",
"skillInstallBanner.title": "新增技能至 Lobe AI",
"store.actions.cancel": "取消安裝",
"store.actions.configure": "設定",

View File

@@ -1,14 +1,9 @@
'use client';
import { Flexbox } from '@lobehub/ui';
import type { Klavis } from 'klavis';
import { useState } from 'react';
import Header from './Header';
import { KlavisDetailProvider } from './KlavisDetailProvider';
import Nav, { type TabKey } from './Nav';
import Overview from './Overview';
import ToolList from './ToolList';
import SkillDetailInner from './SkillDetailInner';
export interface KlavisSkillDetailContentProps {
identifier: string;
@@ -19,15 +14,9 @@ export const KlavisSkillDetailContent = ({
identifier,
serverName,
}: KlavisSkillDetailContentProps) => {
const [activeTab, setActiveTab] = useState<TabKey>('overview');
return (
<KlavisDetailProvider identifier={identifier} serverName={serverName}>
<Flexbox gap={16}>
<Header type="klavis" />
<Nav activeTab={activeTab} setActiveTab={setActiveTab} />
{activeTab === 'overview' ? <Overview /> : <ToolList />}
</Flexbox>
<SkillDetailInner type="klavis" />
</KlavisDetailProvider>
);
};

View File

@@ -1,28 +1,16 @@
'use client';
import { Flexbox } from '@lobehub/ui';
import { useState } from 'react';
import Header from './Header';
import { LobehubDetailProvider } from './LobehubDetailProvider';
import Nav, { type TabKey } from './Nav';
import Overview from './Overview';
import ToolList from './ToolList';
import SkillDetailInner from './SkillDetailInner';
export interface LobehubSkillDetailContentProps {
identifier: string;
}
export const LobehubSkillDetailContent = ({ identifier }: LobehubSkillDetailContentProps) => {
const [activeTab, setActiveTab] = useState<TabKey>('overview');
return (
<LobehubDetailProvider identifier={identifier}>
<Flexbox gap={16}>
<Header type="lobehub" />
<Nav activeTab={activeTab} setActiveTab={setActiveTab} />
{activeTab === 'overview' ? <Overview /> : <ToolList />}
</Flexbox>
<SkillDetailInner type="lobehub" />
</LobehubDetailProvider>
);
};

View File

@@ -1,22 +1,39 @@
'use client';
import { Flexbox, Icon, Tabs, Tag } from '@lobehub/ui';
import { BookOpenIcon, ListIcon } from 'lucide-react';
import { createStaticStyles } from 'antd-style';
import { BookOpenIcon, CodeIcon } from 'lucide-react';
import { memo } from 'react';
import { useTranslation } from 'react-i18next';
import { useDetailContext } from './DetailContext';
import { styles } from './styles';
export type TabKey = 'overview' | 'tools';
const styles = createStaticStyles(({ css, cssVar }) => ({
nav: css`
border-block-end: 1px solid ${cssVar.colorBorder};
`,
tabs: css`
scrollbar-width: none;
overflow-x: auto;
flex: 1;
min-width: 0;
&::-webkit-scrollbar {
display: none;
}
`,
}));
export type TabKey = 'overview' | 'schema';
interface NavProps {
activeTab: TabKey;
setActiveTab: (tab: TabKey) => void;
activeTab?: TabKey;
mobile?: boolean;
setActiveTab?: (tab: TabKey) => void;
}
const Nav = memo<NavProps>(({ activeTab, setActiveTab }) => {
const { t } = useTranslation(['plugin']);
const Nav = memo<NavProps>(({ activeTab = 'overview', setActiveTab, mobile }) => {
const { t } = useTranslation('plugin');
const { tools } = useDetailContext();
const toolsCount = tools.length;
@@ -24,24 +41,29 @@ const Nav = memo<NavProps>(({ activeTab, setActiveTab }) => {
<Flexbox className={styles.nav}>
<Tabs
activeKey={activeTab}
className={styles.tabs}
compact={mobile}
items={[
{
icon: <Icon icon={BookOpenIcon} size={16} />,
key: 'overview',
label: t('integrationDetail.tabs.overview'),
label: t('skillDetail.tabs.overview'),
},
{
icon: <Icon icon={ListIcon} size={16} />,
key: 'tools',
label: (
<Flexbox align="center" gap={6} horizontal style={{ display: 'inline-flex' }}>
{t('integrationDetail.tabs.tools')}
{toolsCount > 0 && <Tag>{toolsCount}</Tag>}
</Flexbox>
),
icon: <Icon icon={CodeIcon} size={16} />,
key: 'schema',
label:
toolsCount > 0 ? (
<Flexbox align="center" gap={6} horizontal style={{ display: 'inline-flex' }}>
{t('skillDetail.tabs.tools')}
<Tag>{toolsCount}</Tag>
</Flexbox>
) : (
t('skillDetail.tabs.tools')
),
},
]}
onChange={(key) => setActiveTab(key as TabKey)}
onChange={(key) => setActiveTab?.(key as TabKey)}
/>
</Flexbox>
);

View File

@@ -26,7 +26,7 @@ const Overview = memo(() => {
{/* Developed by */}
<Flexbox gap={8}>
<Flexbox align="center" gap={4} horizontal>
<span className={styles.sectionTitle}>{t('integrationDetail.developedBy')}</span>
<span className={styles.sectionTitle}>{t('skillDetail.developedBy')}</span>
<span
className={styles.authorLink}
onClick={handleAuthorClick}
@@ -37,16 +37,16 @@ const Overview = memo(() => {
</span>
</Flexbox>
<Text className={styles.trustWarning} type="secondary">
{t('integrationDetail.trustWarning')}
{t('skillDetail.trustWarning')}
</Text>
</Flexbox>
{/* Details */}
<Flexbox gap={12}>
<span className={styles.sectionTitle}>{t('integrationDetail.details')}</span>
<span className={styles.sectionTitle}>{t('skillDetail.details')}</span>
<Flexbox gap={16} horizontal>
<div className={styles.detailItem}>
<span className={styles.detailLabel}>{t('integrationDetail.author')}</span>
<span className={styles.detailLabel}>{t('skillDetail.author')}</span>
<span
className={styles.authorLink}
onClick={handleAuthorClick}

View File

@@ -0,0 +1,46 @@
'use client';
import { Flexbox, Segmented, Tag } from '@lobehub/ui';
import { memo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import Title from '@/app/[variants]/(main)/community/features/Title';
import { DetailProvider } from '@/features/MCPPluginDetail/DetailProvider';
import Tools from '@/features/MCPPluginDetail/Schema/Tools';
import { ModeType } from '@/features/MCPPluginDetail/Schema/types';
import { useDetailContext } from './DetailContext';
const Schema = memo(() => {
const { t } = useTranslation('discover');
const { tools } = useDetailContext();
const [activeKey, setActiveKey] = useState<string[]>([]);
const [mode, setMode] = useState<ModeType>(ModeType.Docs);
const toolsCount = tools.length;
return (
<DetailProvider config={{ tools, toolsCount }}>
<Flexbox gap={8}>
<Flexbox align="center" gap={12} horizontal justify="space-between">
<Title level={3} tag={<Tag>{toolsCount}</Tag>}>
{t('mcp.details.schema.tools.title')}
</Title>
<Segmented
onChange={(v) => setMode(v as ModeType)}
options={[
{ label: t('mcp.details.schema.mode.docs'), value: ModeType.Docs },
{ label: 'JSON', value: ModeType.JSON },
]}
shape="round"
value={mode}
variant="outlined"
/>
</Flexbox>
<p style={{ marginBottom: 24 }}>{t('mcp.details.schema.tools.desc')}</p>
<Tools activeKey={activeKey} mode={mode} setActiveKey={setActiveKey} />
</Flexbox>
</DetailProvider>
);
});
export default Schema;

View File

@@ -0,0 +1,38 @@
'use client';
import { Flexbox, Skeleton } from '@lobehub/ui';
import { memo, useState } from 'react';
import { useDetailContext } from './DetailContext';
import Header from './Header';
import Nav, { type TabKey } from './Nav';
import Overview from './Overview';
import Schema from './Schema';
interface SkillDetailInnerProps {
type: 'klavis' | 'lobehub';
}
const SkillDetailInner = memo<SkillDetailInnerProps>(({ type }) => {
const [activeTab, setActiveTab] = useState<TabKey>('overview');
const { toolsLoading } = useDetailContext();
if (toolsLoading) {
return (
<Flexbox gap={16}>
<Skeleton active paragraph={{ rows: 3 }} />
<Skeleton active paragraph={{ rows: 6 }} title={false} />
</Flexbox>
);
}
return (
<Flexbox gap={16}>
<Header type={type} />
<Nav activeTab={activeTab} setActiveTab={setActiveTab} />
{activeTab === 'overview' ? <Overview /> : <Schema />}
</Flexbox>
);
});
export default SkillDetailInner;

View File

@@ -1,79 +0,0 @@
'use client';
import { Block, Collapse, Empty, Flexbox, Highlighter, Icon, Markdown, Text } from '@lobehub/ui';
import { Loader2, Wrench } from 'lucide-react';
import { memo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useDetailContext } from './DetailContext';
import { styles } from './styles';
const ToolList = memo(() => {
const { t } = useTranslation(['plugin', 'discover']);
const { tools, toolsLoading } = useDetailContext();
const [activeKey, setActiveKey] = useState<string[]>([]);
if (toolsLoading) {
return (
<Flexbox align="center" justify="center" style={{ minHeight: 200 }}>
<Icon icon={Loader2} size={24} spin />
</Flexbox>
);
}
if (tools.length === 0) {
return (
<Block variant="outlined">
<Empty
description={t('mcpEmpty.tools')}
descriptionProps={{ fontSize: 14 }}
icon={Wrench}
style={{ maxWidth: 400 }}
/>
</Block>
);
}
return (
<Collapse
activeKey={activeKey}
expandIconPlacement="end"
gap={8}
items={tools.map((item) => ({
children: (
<Flexbox gap={16}>
{item.description && (
<Flexbox gap={8}>
<span className={styles.sectionTitle}>
{t('mcp.details.schema.tools.instructions', { ns: 'discover' })}
</span>
<Markdown>{item.description}</Markdown>
</Flexbox>
)}
{item.inputSchema && (
<Flexbox gap={8}>
<span className={styles.sectionTitle}>
{t('mcp.details.schema.tools.inputSchema', { ns: 'discover' })}
</span>
<Highlighter language="json" style={{ fontSize: 12 }} variant="borderless">
{JSON.stringify(item.inputSchema, null, 2)}
</Highlighter>
</Flexbox>
)}
</Flexbox>
),
desc: item.description && (
<Text ellipsis style={{ maxWidth: 500 }} type="secondary">
{item.description}
</Text>
),
key: item.name,
label: <span className={styles.code}>{item.name}</span>,
}))}
onChange={setActiveKey}
variant="outlined"
/>
);
});
export default ToolList;

View File

@@ -32,11 +32,9 @@ export const styles = createStaticStyles(({ css, cssVar }) => ({
display: flex;
gap: 16px;
align-items: center;
padding: 16px;
border-radius: 12px;
background: ${cssVar.colorFillTertiary};
/* background: ${cssVar.colorFillTertiary}; */
`,
icon: css`
display: flex;

View File

@@ -353,14 +353,6 @@ export default {
'inspector.orphanedToolCall':
'Orphaned Skill call detected, may affect Agent execution. Remove it.',
'inspector.pluginRender': 'View Skill UI',
'integrationDetail.author': 'Author',
'integrationDetail.details': 'Details',
'integrationDetail.developedBy': 'Developed by',
'integrationDetail.tabs.overview': 'Overview',
'integrationDetail.tabs.tools': 'Tools',
'integrationDetail.tools': 'Tools',
'integrationDetail.trustWarning':
"Only use connectors from developers you trust. LobeHub does not control which tools developers make available and cannot verify that they will work as intended or that they won't change.",
'list.item.deprecated.title': 'Deleted',
'list.item.local.config': 'Config',
'list.item.local.title': 'Custom',
@@ -506,6 +498,14 @@ export default {
'settings.saveSettings': 'Save',
'settings.title': 'Skill community settings',
'showInPortal': 'View details in Workspace',
'skillDetail.author': 'Author',
'skillDetail.details': 'Details',
'skillDetail.developedBy': 'Developed by',
'skillDetail.tabs.overview': 'Overview',
'skillDetail.tabs.tools': 'Capabilities',
'skillDetail.tools': 'Tools',
'skillDetail.trustWarning':
"Only use connectors from developers you trust. LobeHub does not control which tools developers make available and cannot verify that they will work as intended or that they won't change.",
'skillInstallBanner.title': 'Add skills to Lobe AI',
'store.actions.cancel': 'Cancel',
'store.actions.configure': 'Configure',