feat(studio): 完善编排 —— 检索接本人知识库 + 真实模型下拉 + 模板/示例
把编排从"演示桩"接到真实平台:检索节点查本人 owner 隔离的知识库,节点下拉用真实数据。 - dispatcher:makeToolNode 用 task user_id 给检索类工具的 kb 加 owner 前缀("uid/kb"), 编排里的「检索(RAG)」节点真正命中本人知识库(与隔离对齐)。 - 前端 StudioView:加 identity,载入 /kb/list 与 chat 模型作为「检索.kb」「Agent.model」下拉真值; Inspector 支持 dynamicOptions(无真值时提示去创建)。 - 编辑体验:示例(一键加载 输入→检索→Agent→输出 可运行图)/ 清空 / 模板名+保存(localStorage, 含布局)/ 载入下拉;ReactFlow deleteKeyCode 支持 Del/Backspace 删节点。 验证:示例图运行 → gateway 发布任务 → dispatcher 编译 → mcp-go 日志 `tool=wiki_search args=[kb:wt/default ...]`(kb 已按 owner 作用域)→ 命中本人库 → DeepSeek 流式作答; 底部抽屉 完成 ✓ · 工具调用 1。tsc+vite+dispatcher build 通过;重建 .app。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -126,6 +126,17 @@ export interface VaultDoc {
|
||||
content: string;
|
||||
}
|
||||
|
||||
// listChatModels: GET /api/v1/admin/models?kind=chat —— 已登记的对话模型名(供编排 Agent 节点选择)。
|
||||
export async function listChatModels(): Promise<string[]> {
|
||||
try {
|
||||
const res = await fetch(`${GATEWAY}/api/v1/admin/models?kind=chat`);
|
||||
const data = (await res.json()) as { models?: Array<{ model: string }> };
|
||||
return (data.models ?? []).map((m) => m.model);
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
// listVault: GET /api/v1/kb/vault —— 某知识库的原始文档(Obsidian 式文库浏览)。
|
||||
export async function listVault(id: Identity, kb: string): Promise<VaultDoc[]> {
|
||||
const res = await fetch(`${GATEWAY}/api/v1/kb/vault?kb=${encodeURIComponent(kb)}`, { headers: idHeaders(id) });
|
||||
|
||||
Reference in New Issue
Block a user