refactor: update AIAgent handoff and fallback modes terminology for clarity

This commit is contained in:
mlogclub
2026-06-26 18:27:54 +08:00
parent b46e0d9b7c
commit 015b57bfe7
7 changed files with 56 additions and 35 deletions
@@ -0,0 +1,21 @@
import assert from "node:assert/strict"
import test from "node:test"
import { readFile } from "node:fs/promises"
const configWorkbenchSource = await readFile(new URL("./config-workbench.tsx", import.meta.url), "utf8")
const zhMessagesSource = await readFile(new URL("../../../../messages/zh-CN.json", import.meta.url), "utf8")
test("AI Agent workflow-era policy copy separates handoff execution from knowledge fallback", () => {
const combinedSource = `${configWorkbenchSource}\n${zhMessagesSource}`
assert.match(combinedSource, /转人工执行方式/)
assert.match(combinedSource, /知识不足回复策略/)
assert.match(combinedSource, /知识不足回复文案/)
assert.match(combinedSource, /AI继续接待并提醒人工/)
assert.match(combinedSource, /直接说明知识不足/)
assert.match(combinedSource, /引导用户补充信息/)
assert.doesNotMatch(configWorkbenchSource, /转人工模式/)
assert.doesNotMatch(configWorkbenchSource, /兜底策略/)
assert.doesNotMatch(configWorkbenchSource, /兜底文案/)
})
@@ -278,14 +278,14 @@ export function AIAgentConfigWorkbench({
() => [
{ value: String(AIAgentHandoffMode.WaitPool), label: "进入待接入池" },
{ value: String(AIAgentHandoffMode.DefaultTeamPool), label: "进入默认客服组待接入池" },
{ value: String(AIAgentHandoffMode.AIHoldAndNotify), label: "AI托底并提醒人工" },
{ value: String(AIAgentHandoffMode.AIHoldAndNotify), label: "AI继续接待并提醒人工" },
],
[]
)
const fallbackModeOptions = useMemo(
() => [
{ value: String(AIAgentFallbackMode.NoAnswer), label: "直接声明无答案" },
{ value: String(AIAgentFallbackMode.SuggestRetry), label: "建议补充信息" },
{ value: String(AIAgentFallbackMode.NoAnswer), label: "直接说明知识不足" },
{ value: String(AIAgentFallbackMode.SuggestRetry), label: "引导用户补充信息" },
],
[]
)
@@ -652,11 +652,11 @@ export function AIAgentConfigWorkbench({
{activeSection === "basic" ? (
<ConfigSection>
<div className="grid grid-cols-1 gap-4 lg:grid-cols-2">
<FieldBlock label="转人工式">
<OptionCombobox value={handoffMode} options={handoffModeOptions} placeholder="选择转人工式" onChange={setHandoffMode} />
<FieldBlock label="转人工执行方式">
<OptionCombobox value={handoffMode} options={handoffModeOptions} placeholder="选择转人工执行方式" onChange={setHandoffMode} />
</FieldBlock>
<FieldBlock label="兜底策略">
<OptionCombobox value={fallbackMode} options={fallbackModeOptions} placeholder="选择兜底策略" onChange={setFallbackMode} />
<FieldBlock label="知识不足回复策略">
<OptionCombobox value={fallbackMode} options={fallbackModeOptions} placeholder="选择知识不足回复策略" onChange={setFallbackMode} />
</FieldBlock>
</div>
<AddRow
@@ -674,7 +674,7 @@ export function AIAgentConfigWorkbench({
items={selectedTeamOptions}
onRemove={(id) => setSelectedTeamIds((current) => current.filter((item) => item !== id))}
/>
<FieldBlock label="兜底文案">
<FieldBlock label="知识不足回复文案">
<Textarea rows={5} value={fallbackMessage} onChange={(event) => setFallbackMessage(event.target.value)} />
</FieldBlock>
<FieldBlock label="描述">
+3 -3
View File
@@ -5,8 +5,8 @@ export enum AIAgentFallbackMode {
SuggestRetry = 2,
}
export const AIAgentFallbackModeLabels: Record<AIAgentFallbackMode, string> = {
[AIAgentFallbackMode.NoAnswer]: "直接声明无答案",
[AIAgentFallbackMode.SuggestRetry]: "建议补充信息",
[AIAgentFallbackMode.NoAnswer]: "直接说明知识不足",
[AIAgentFallbackMode.SuggestRetry]: "引导用户补充信息",
}
export enum AIAgentHandoffMode {
@@ -17,7 +17,7 @@ export enum AIAgentHandoffMode {
export const AIAgentHandoffModeLabels: Record<AIAgentHandoffMode, string> = {
[AIAgentHandoffMode.WaitPool]: "进入待接入池",
[AIAgentHandoffMode.DefaultTeamPool]: "进入默认客服组待接入池",
[AIAgentHandoffMode.AIHoldAndNotify]: "AI托底并提醒人工",
[AIAgentHandoffMode.AIHoldAndNotify]: "AI继续接待并提醒人工",
}
export enum AIModelType {
+16 -16
View File
@@ -1034,15 +1034,15 @@
"serviceAiFirst": "AI 优先",
"handoffWaitPool": "进入待接入池",
"handoffDefaultTeamPool": "进入默认客服组待接入池",
"handoffAiHoldAndNotify": "AI托底并提醒人工",
"fallbackNoAnswer": "直接声明无答案",
"fallbackSuggestRetry": "建议补充信息",
"handoffAiHoldAndNotify": "AI继续接待并提醒人工",
"fallbackNoAnswer": "直接说明知识不足",
"fallbackSuggestRetry": "引导用户补充信息",
"nameRequired": "名称不能为空",
"aiConfigRequired": "请选择 AI 配置",
"serviceModeRequired": "请选择服务模式",
"replyTimeoutInvalid": "回复超时秒数必须是大于等于 0 的整数",
"handoffModeRequired": "请选择转人工式",
"fallbackModeRequired": "请选择兜底策略",
"handoffModeRequired": "请选择转人工执行方式",
"fallbackModeRequired": "请选择知识不足回复策略",
"loadDetailFailed": "加载 AI Agent 详情失败",
"loadAiConfigFailed": "加载 AI 配置失败",
"loadTeamsFailed": "加载客服组失败",
@@ -1071,14 +1071,14 @@
"welcomeMessage": "欢迎语",
"systemPrompt": "系统提示词",
"sectionStrategy": "服务策略",
"handoffMode": "转人工式",
"selectHandoffMode": "请选择转人工式",
"searchHandoffMode": "搜索转人工式",
"emptyHandoffMode": "未找到转人工式",
"handoffMode": "转人工执行方式",
"selectHandoffMode": "请选择转人工执行方式",
"searchHandoffMode": "搜索转人工执行方式",
"emptyHandoffMode": "未找到转人工执行方式",
"replyTimeoutSeconds": "回复超时秒数",
"replyTimeoutHelp": "AI 自动回复的异步执行超时时间。填 0 时使用系统默认值 180 秒。",
"teams": "客服组",
"currentHandoffMode": "当前转人工式:{mode}",
"currentHandoffMode": "当前转人工执行方式:{mode}",
"handoffNeedsTeam": "。该模式要求至少配置一个客服组。",
"handoffOnlyWhenNeeded": "。仅在涉及转人工时生效。",
"selectTeam": "请选择客服组",
@@ -1097,12 +1097,12 @@
"emptyKnowledge": "没有可添加的知识库",
"add": "添加",
"knowledgeRequired": "请至少选择一个知识库",
"fallbackMode": "兜底策略",
"selectFallbackMode": "请选择兜底策略",
"searchFallbackMode": "搜索兜底策略",
"emptyFallbackMode": "未找到兜底策略",
"fallbackMessage": "兜底文案",
"fallbackMessageHint": "知识库未命中或命中证据不足时,会按这里的策略和文案进行兜底回复。",
"fallbackMode": "知识不足回复策略",
"selectFallbackMode": "请选择知识不足回复策略",
"searchFallbackMode": "搜索知识不足回复策略",
"emptyFallbackMode": "未找到知识不足回复策略",
"fallbackMessage": "知识不足回复文案",
"fallbackMessageHint": "知识库未命中或命中证据不足时,会按这里的策略和文案回复;是否转人工由会话流程决定。",
"skillsHint": "用于固定业务流程和多步任务编排。",
"selectSkill": "选择并添加 Skill",
"searchSkill": "搜索 Skill",