Files
DevFlow/src/i18n/zh-CN/ai.ts
T
lxy 2441101978 新增: 挂机模式 P1 总装: 设置面板+顶栏徽章+边界卡精简+监控告警推送
- 新增 UnattendedPanel.vue 挂机配置面板(引擎自动认领看板任务,Settings KV 热读即改即生效)
- Settings.vue 接入挂机面板;searchIndex.ts 补挂机搜索词条
- TopBar.vue 新增挂机进行中徽章(脉冲动效+透明度过渡)
- TaskBoundaryCard.vue 精简边界状态判定(wallState 合并比对,删冗余 watch)
- i18n zh-CN/en: settings/ai/aiChat 六文件补挂机词条双语
- unattended.rs 新增 push_monitor_alert 监控告警推送(异常快照+告警头直发 monitor_chat)
- feishu_notify.rs push/push_card 出口重构收敛
- lib.rs 注册 unattended_status/unattended_set_enabled 两 IPC
- aiShared.ts/useAiStreamingEvents.ts 挂机状态流接入
2026-10-07 22:03:41 +08:00

176 lines
9.5 KiB
TypeScript

export default {
ai: {
assistant: 'AI 助手',
toolName: {
readFile: '读取文件',
listDirectory: '查看目录',
writeFile: '写入文件',
fileInfo: '文件信息',
appendFile: '追加写入',
searchFiles: '搜索文件',
patchFile: '修改文件',
deleteFile: '删除文件',
renameFile: '重命名/移动文件',
},
aiTool: {
fileInfoDesc: '获取文件或目录的元信息(是否存在、大小、行数、修改时间、是否二进制、是否目录),不读取文件内容',
appendFileDesc: '向文件末尾追加内容,文件不存在则自动创建。返回写入字数和新文件大小',
searchFilesDesc: '在指定目录下搜索匹配模式(字符串包含匹配)的文件名,返回路径和大小列表。支持递归搜索,结果限 50 条',
renameFileDesc: '重命名或移动文件(同一工具覆盖 rename 和 move)。from=源路径、to=目标路径、overwrite=默认 false 目标存在拒绝。同卷原子 rename,跨卷自动 copy+remove',
},
errorNotFound: '调用失败:接口地址或模型不存在,请检查 Provider 配置',
errorAuth: '调用失败:API Key 无效或无权限',
errorTimeout: '响应超时,请重试',
errorNetwork: '网络连接失败,请检查网络',
// CR-30-2 / F-260616-07(d) / 决策 a1: 流中断自动重试的过渡细条文案(中性描述:
// 重试是过渡态非终态失败,不用错误警示语气;重试耗尽的终态失败仍走 AiError 错误卡)
aiStreamRetry: '与上游连接中断,自动重试中({attempt}/{max})…',
// Fatal 类错误(4xx/鉴权)不可重试,提示用户去设置而非重试
notRetryable: '此错误无法通过重试解决,请检查配置',
streamInterruptedAfterTool: '⚠ 工具已执行完成,后续回复中断(长时间无数据流)。可点「重试」续跑(整轮重跑,已完成工具会重新执行)。',
streamInterrupted: '⚠ 响应中断(长时间无数据流)。可能是网络断连或后端异常,请重试。',
// 看门狗探测到后端已正常收敛(仅收尾事件丢失)时补的轻收敛提示,非错误语气
streamFinishedConverged: '响应在收尾阶段中断,已自动完成收敛。',
// 看门狗超时探测到后端 loop 活着/已自动续跑时的首次提示(仅首次补,后续静默重挂不刷屏)
streamAutoResuming: '响应出现停滞,正在自动恢复(无需手动操作)…',
// UX-2025-04 / CR-30-2 / 决策 a1: 流中途失败保文后的系统提示气泡(前端镜像后端 session.messages)
responseIncomplete: '⚠ 响应因网络中断不完整,以上为已接收的部分内容。可重新发送以获取完整回复。',
// 达最大轮次后端自动收尾(非网络中断,复用 incomplete 气泡但语义独立)
responseIncompleteMaxRounds: '已达最大轮次,AI 已自动收尾本轮结果;可继续对话让 AI 补充完善',
queueFull: '待发送队列已满(最多 {limit} 条)',
forceSendConfirm: 'AI 生成似乎卡住了。是否强制结束当前生成并发送消息?(可能中断正在生成的回复)',
forceSendBtn: '强制发送',
queueTimedOut: '排队超时',
approvalNotDelivered: '审批操作未送达后端:{error}',
queuedSendFailed: '队列消息发送失败:{error}',
// UX-P2-A2:出错/重生成/编辑清排队消息的 toast 提示(原静默丢弃无任何反馈)
queueCleared: '已清 {n} 条排队消息',
queueWillContinue: '已停止,{n} 条排队消息仍将自动发送',
approvalTimeout: '⚰ 审批超时,已自动拒绝:{toolName}',
// 对话加载/切换失败反馈(网络抖动/IPC 断开 → 列表空/切换空白,原静默无反馈)
loadConvFail: '对话列表加载失败,请检查网络或后端连接',
switchConvFail: '对话切换失败,请重试',
// UX走查 P3-7/P1-1: 关联会话跳转命中已删会话(原静默新建空会话/分离窗死点击)
convDeleted: '会话已删除',
// M30:重命名/归档/置顶 IPC 失败反馈(原无 try/catch 异常进 unhandledrejection,用户无感)
renameConvFail: '重命名失败,请重试',
archiveConvFail: '{action}失败,请重试',
pinConvFail: '{action}失败,请重试',
// G3.4:新建/删除对话失败反馈(原裸 await → unhandledrejection,用户无感)
newConvFail: '新建对话失败,请重试',
deleteConvFail: '删除对话失败,请重试',
archiveAction: '归档',
unarchiveAction: '取消归档',
pinAction: '置顶',
unpinAction: '取消置顶',
// Agentic 循环进度条文案(C 状态语义化:第 N 轮 · 累计 M 次调用 · 进行中/待审批)
// total 由前端聚合当前轮次 toolCalls(useTurnTrace),非后端字段
// 注:max 总轮次后端暂不透传,模板条件渲染省略;后端补全后新增 *WithMax key
agenticProgress: '第 {round} 轮 · 累计 {total} 次调用 · ⏳{pending} 项待审批',
agenticProgressNoPending: '第 {round} 轮 · 累计 {total} 次调用 · 进行中',
// 执行轨迹卡/实时步骤摘要(A 过程压缩)与聚合分组行(B 聚合卡统一)共用语义
trace: {
title: '执行轨迹',
calls: '{n} 次调用',
ok: '成功 {n}',
fail: '失败 {n}',
rejected: '拒绝 {n}',
duration: '总耗时 {time}',
expand: '展开轨迹',
collapse: '收起轨迹',
roundN: '第 {n} 轮',
processOnly: '过程记录',
stepDone: '✓ {n} 次调用完成',
stepRunning: '正在 {name}',
stepPending: '⏳ {n} 项待审批',
},
// S1 子代理完成卡(AiAgentFinished):父会话消息流末尾的子代理终态轻量卡
agentFinished: {
title: '子代理',
completed: '已完成',
truncated: '已截断',
cancelled: '已取消',
failed: '失败',
// stop_kind 结构化终止原因细分(根治 summary 启发式;截断三态各自透出)
truncMaxRounds: '已达轮次上限',
truncWallClock: '超时截断',
truncTokenBudget: 'token 预算截断',
noReport: '未产出报告',
// 被拒工具 chip({tools} 为「工具名×次数」枚举,多枚前 2 枚 + N)
rejected: '被拒 {tools}',
// 启动失败型子代理未落库无轨迹,卡禁点(hover 说明替代 viewHint)
noTrace: '无轨迹(启动失败)',
meta: '{rounds} 轮 · {tokens} tokens',
// S3:完成卡可点击查看只读轨迹(hover 提示)
viewHint: '点击查看执行轨迹',
},
// P3-6 后台会话子代理完成轻提醒({status} 复用上方 agentFinished 状态词,{summary} 截前 40 字)
agentFinishedToast: '子代理{status}: {summary}',
// S3 子代理轨迹浮层(完成卡点击展开,只读简版渲染,关即弃)
agentTrace: {
title: '子代理执行轨迹',
empty: '暂无消息记录',
loadFail: '拉取子代理轨迹失败',
roleUser: '用户',
roleAssistant: '助手',
roleTool: '工具结果',
roleSystem: '系统',
deniedTool: '被拒:{tool}',
riskLow: '低风险',
riskMedium: '中风险',
riskHigh: '高风险',
},
// 无人值守安全停靠卡(AiTaskParked,挂起家族终局):继续=重新授权续跑,停止归档=不再续跑
taskParked: {
title: '任务已停靠',
// stop_kind 结构化停止原因(词表后端契约钉死,未知值走 unknownKind 中性兜底)
stopKind: {
approval_timeout: '审批超时',
cancelled: '已取消',
circuit_breaker: '熔断保护',
stall_breaker: '停滞保护',
max_rounds: '已达轮次上限',
fatal: '连续失败,已自动暂停',
midstream: '响应流中断',
},
unknownKind: '任务停靠',
stopArchive: '停止归档',
stoppedToast: '任务已停止,不再续跑',
archiveFailed: '停止失败:{msg}',
},
// 无人值守任务进度(AiTaskProgress,设计 §4.3):TopBar 轻量进度条,静默期可见「在干活」
taskProgress: {
running: '进行中 · 第 {round}/{max} 轮 · {tokens} tokens',
unlimited: '进行中 · 第 {round} 轮 · {tokens} tokens',
barHint: '第 {round}/{max} 轮',
},
// 无人值守边界配置卡(P1 总装简化:授权面收敛单一档,可调项只剩预算两项)
taskBoundary: {
toggle: '无人值守',
badge: '无人值守边界已授权',
forbidDestructive: '破坏性命令恒禁止',
budgetToggle: '预算(高级)',
budgetRounds: '最大轮次',
budgetWallSecs: '最长运行时长',
budgetUnlimited: '不限',
budgetHint: '勾选「不限」即不设该项上限',
confirmSet: '一次授权,任务期内不再打扰',
clearBoundary: '清除边界',
setOk: '已授权无人值守边界',
clearOk: '已清除边界,回到逐次审批',
setFail: '边界设置失败:{msg}',
lockedGenerating: '任务运行中,仅支持清除边界(收权),字段不可修改',
loadFailed: '边界读取失败,当前表单不可信',
retryLoad: '重试',
clearConfirm: '清除边界将立即收回无人值守授权,运行中的任务后续工具调用回到逐次审批。确定清除?',
echoRounds: '最多 {n} 轮',
echoSecs: '最长 {n} 秒',
echoBudget: '预算 {rounds} / {secs}',
echoNoBudget: '预算不限',
// A12: 预算校验错误定位字段;A11: 脏编辑保留提示
budgetInvalidField: '{field} 需为正整数',
dirtyKept: '有未提交的编辑已保留(目标会话已切换,确认前请核对)',
},
},
}