From 67585d17cec3d1581b6984ceab5a9f80513fe6e1 Mon Sep 17 00:00:00 2001 From: sp mac bookpro 2605 Date: Mon, 27 Jul 2026 22:28:18 +0800 Subject: [PATCH] feat: enhance external tool routing with domains, intents, slots and examples --- src/api/agents.ts | 5 + src/components/ExternalToolEditor.tsx | 61 ++++++++++ .../capability/KnowledgeSettingsPanel.tsx | 106 +++++++++++++++++- 3 files changed, 171 insertions(+), 1 deletion(-) diff --git a/src/api/agents.ts b/src/api/agents.ts index c752f29..b47165e 100644 --- a/src/api/agents.ts +++ b/src/api/agents.ts @@ -37,6 +37,11 @@ export interface ExternalToolApiRouting { summary: string; useWhen: string[]; doNotUseWhen?: string[]; + domains?: string[]; + intents?: string[]; + requiredSlots?: string[]; + optionalSlots?: string[]; + examples?: string[]; } export interface ExternalToolApi { diff --git a/src/components/ExternalToolEditor.tsx b/src/components/ExternalToolEditor.tsx index 5f84086..51e06fa 100644 --- a/src/components/ExternalToolEditor.tsx +++ b/src/components/ExternalToolEditor.tsx @@ -36,6 +36,11 @@ const EMPTY_API: ToolApiFormValue = { summary: '', useWhen: [''], doNotUseWhen: [], + domains: [], + intents: [], + requiredSlots: [], + optionalSlots: [], + examples: [], }, }; @@ -132,6 +137,11 @@ function normalizeRouting(value: ToolApiRoutingFormValue | undefined, apiName: s summary: value.summary?.trim() || '', useWhen, doNotUseWhen: normalizeStringList(value.doNotUseWhen), + domains: normalizeStringList(value.domains), + intents: normalizeStringList(value.intents), + requiredSlots: normalizeStringList(value.requiredSlots), + optionalSlots: normalizeStringList(value.optionalSlots), + examples: normalizeStringList(value.examples), }; } @@ -249,6 +259,11 @@ export default function ExternalToolEditor({ open, agentId, plugin, onClose, onS summary: item.routing?.summary || '', useWhen: item.routing?.useWhen?.length ? item.routing.useWhen : [''], doNotUseWhen: item.routing?.doNotUseWhen || [], + domains: item.routing?.domains || [], + intents: item.routing?.intents || [], + requiredSlots: item.routing?.requiredSlots || [], + optionalSlots: item.routing?.optionalSlots || [], + examples: item.routing?.examples || [], }, })), } @@ -469,6 +484,52 @@ export default function ExternalToolEditor({ open, agentId, plugin, onClose, onS )} + +
+ + + +
+ +
+ + + +
+ + + {(exampleFields, { add: addExample, remove: removeExample }) => ( + +
+
+ examples(示例) +
描述用户可能的提问方式。
+
+ +
+ {exampleFields.map((exampleField) => ( + + + + +