feat: external knowledge bases (#1783)

* Initial plan

* Add backend support for external knowledge bases

Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>

* Add frontend support for external knowledge bases with tabs UI

Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>

* Add i18n translations for all languages (Traditional Chinese and Japanese)

Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>

* Update knowledge base tab list styling to match plugins page

Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>

* perf: margin-top for kb page

* refactor: switch RetrievalResultEntry to langbot_plugin pkg ones

* feat: knowledge retriever listing and creating

* stash

* refactor: unify sync mechanism for polymorphic components

* feat: use unified retireval result struct in retrieval test page

* chore: remove unused methods

* feat: retriever icon displaying

* feat: localagent retrieval with external kbs

* chore: bump version of langbot-plugin to 0.2.0b1

* fix: i18n

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>
Co-authored-by: Junyan Qin <rockchinq@gmail.com>
This commit is contained in:
Copilot
2025-11-27 23:19:43 +08:00
committed by GitHub
parent 3c04eeaff9
commit a8481e43f0
33 changed files with 1924 additions and 161 deletions
+9
View File
@@ -587,6 +587,15 @@ const enUS = {
fileName: 'File Name',
noResults: 'No results',
retrieveError: 'Retrieve failed',
builtIn: 'Built-in',
external: 'External',
addExternal: 'Add External Knowledge Base',
createExternalSuccess: 'External knowledge base created successfully',
updateExternalSuccess: 'External knowledge base updated successfully',
deleteExternalSuccess: 'External knowledge base deleted successfully',
retriever: 'Retriever',
selectRetriever: 'Select a retriever...',
retrieverConfiguration: 'Retriever Configuration',
},
register: {
title: 'Initialize LangBot 👋',
+9
View File
@@ -591,6 +591,15 @@ const jaJP = {
fileName: 'ファイル名',
noResults: '検索結果がありません',
retrieveError: '検索に失敗しました',
builtIn: '内蔵',
external: '外部ナレッジベース',
addExternal: '外部ナレッジベースを追加',
createExternalSuccess: '外部ナレッジベースが正常に作成されました',
updateExternalSuccess: '外部ナレッジベースが正常に更新されました',
deleteExternalSuccess: '外部ナレッジベースが正常に削除されました',
retriever: '検索器',
selectRetriever: '検索器を選択...',
retrieverConfiguration: '検索器設定',
},
register: {
title: 'LangBot を初期化 👋',
+9
View File
@@ -564,6 +564,15 @@ const zhHans = {
fileName: '文件名',
noResults: '暂无结果',
retrieveError: '检索失败',
builtIn: '内置',
external: '外部知识库',
addExternal: '添加外部知识库',
createExternalSuccess: '外部知识库创建成功',
updateExternalSuccess: '外部知识库更新成功',
deleteExternalSuccess: '外部知识库删除成功',
retriever: '检索器',
selectRetriever: '选择一个检索器...',
retrieverConfiguration: '检索器配置',
},
register: {
title: '初始化 LangBot 👋',
+9
View File
@@ -561,6 +561,15 @@ const zhHant = {
fileName: '文檔名稱',
noResults: '暫無結果',
retrieveError: '檢索失敗',
builtIn: '內置',
external: '外部知識庫',
addExternal: '添加外部知識庫',
createExternalSuccess: '外部知識庫創建成功',
updateExternalSuccess: '外部知識庫更新成功',
deleteExternalSuccess: '外部知識庫刪除成功',
retriever: '檢索器',
selectRetriever: '選擇一個檢索器...',
retrieverConfiguration: '檢索器配置',
},
register: {
title: '初始化 LangBot 👋',