export default { aiChat: { // ── 多 Agent 并行执行 ── conflictsPending: '{n} 处冲突待处理', acceptA: '接受 A', acceptB: '接受 B', mergeBoth: '合并两者', manualResolve: '手动处理', // ── 对话侧栏 ── sidebarTitle: '对话', newConversation: '新对话', doubleClickToRename: '双击重命名', generating: '生成中…', archive: '归档', unarchive: '取消归档', pinConversation: '置顶', unpinConversation: '取消置顶', // UX走查 P3-1/P2-6: 会话「...」菜单重命名入口(搜索态无双击降级补齐 + 键盘可达的重命名路径) renameConversation: '重命名', moreActions: '更多操作', archived: '已归档', archivedCount: '已归档 ({n})', recoverableCount: '可恢复 ({n})', recoverableHint: '任务已安全停靠,点击恢复继续执行', // ── 挂机引擎态徽章(TopBar;开启时显示,熔断红徽点击复位) ── unattendedOn: '挂机中', unattendedExecuting: '执行中', unattendedTripped: '挂机熔断', unattendedBadgeHint: '挂机模式运行中,点击前往设置', unattendedResetHint: '连续启动失败已自动熔断,点击复位并重新开启', recoverableDone: '任务已恢复,继续后台执行', recoverableFail: '恢复失败: {msg}', emptyConversation: '暂无对话', // UX-06 §3.1:对话搜索(实时过滤标题,Ctrl+K 聚焦) searchPlaceholder: '搜索对话…', searchEmpty: '无匹配对话', searchShortcutHint: 'Ctrl+K', // ── 时间分组(侧栏) ── today: '今天', yesterday: '昨天', earlier: '更早', groupEmpty: '暂无', // ── Header 按钮 ── conversationList: '对话列表', maximize: '最大化', pendingApprovalCount: '{n} 项待审批', pendingApprovalHint: '点击跳转到第一个待审批项', // UX 走查 B1:审批卡到达但用户上滚读历史,不强拉滚动,只出轻提示(ToolCardList 5s 去重) newApprovalPending: '有新的审批待处理', restoreSidebar: '还原侧栏', sidebarResizeHint: '拖拽调整侧栏宽度', detachWindow: '分离窗口', reattachToMain: '收回主面板', closePanel: '关闭面板', dockRight: '吸附到主窗口右侧', undock: '取消吸附', pinOnTop: '置顶', unpin: '取消置顶', closeWindow: '关闭窗口', // I9(2026-10-05)文本/代码文件附件 pickFileTitle: '选择文本/代码文件', textFileFilter: '文本/代码文件', fileTooLargeTruncated: '文件过大,已截断插入', fileReadFailed: '文件读取失败,已跳过', shortcutsTitle: '键盘快捷键', scNewConv: '新建对话', scFocusInput: '聚焦输入框', scRegenerate: '重新生成回复', scClearChat: '清空当前对话', scSearch: '聚焦会话搜索', scToggleSidebar: '展开/收起侧栏', scCloseOverlay: '关闭弹窗/面板', // ── 审批浮层(全局右上角)── approvalWaitingTitle: '有待审批请求', approvalWaitingDesc: '点击查看并处理', // ── 系统级审批浮窗(独立窗口,应用失焦时可见)── popupTitle: '审批待办', popupTagPath: '路径授权', popupTagRisk: '风险操作', popupOpenPanel: '打开审批面板', // 空态文案:正常空态会被 maybeAutoClose 即时关窗,此 hint 仅 close 失败时兜底 popupEmptyHint: '正在关闭…', // ── Provider 状态 ── clickToSwitchProvider: '点击切换 Provider', // UX 走查 B5:顶栏切换与设置页「设为默认」同一条 IPC(ai_set_provider 互斥写 is_default),文案如实标注 providerSwitchSetsDefault: '点击切换 Provider(切换即设为全局默认)', providerNotConfigured: '未配置 AI 提供商,请在设置中添加', notConfigured: '未配置', // ── F-01 阶段6: 模型选择器(自动/指定 toggle + 下拉) ── autoMode: '自动', specifyMode: '指定', autoModeHint: '自动模式:路由器按场景自动选最优模型', specifyModeHint: '指定模式:使用下拉所选模型覆盖路由(仅主对话)', selectModel: '选择模型', noModels: '无可用模型,请在设置中拉取', // ── 空状态示例问题卡片 + 无 provider 引导) ── emptyNoProvider: '未配置 AI 提供商', emptyNoProviderHint: '请在设置中添加 Provider 后开始对话', emptyTitle: '与 AI 助手对话', emptyHint: '可以说"帮我创建一个项目"或"列出所有任务"', // 示例问题卡片:点击自动填入并发送(4 条,DevFlow 场景相关) examplePrompt1: '分析这个项目的依赖关系', examplePrompt2: '帮我写一个工作流节点', examplePrompt3: '列出当前所有任务', examplePrompt4: '生成一个项目灵感', goToSettings: '去设置', goToSettingsHint: '分离窗口无法直接打开设置,请在主窗口的设置页配置 AI 提供商', goToSettingsOpened: '已在主窗口打开设置页', goToTaskHint: '分离窗口无法直接打开任务,请在主窗口查看任务详情', // ── Provider 切换反馈── providerSwitched: '已切换到 {model}', providerSwitchHint: '当前模型:{model}', // ── 回到底部 ── backToBottom: '回到底部', // ── 待发送队列 ── queueTitle: '待发送 {n}/10', clearQueue: '清空', // UI-4(看板 943):清空队列二次确认(一键全清不可恢复) clearQueueConfirm: '确定清空全部待发送消息?清空后不可恢复', // 队列项编辑 + 立即发送 queueEdit: '编辑', queueSave: '保存', queueCancel: '取消', queueSendNow: '立即发送', // 走查-信息UX 面二 F2-1:发送钮 title/aria(原误绑 queueSendNow,语义是插队而非发送) send: '发送', // 3c UX 批追加(I4 队列回填:取出排队项填回输入框重新编辑) queueBackfill: '回填', // ── 技能 ── clearSkill: '取消技能', skillBadgeTip: '已注入技能「{name}」的完整规程', placeholderWithSkill: '已选技能,输入参数后回车', placeholderDefault: "输入消息...(/ 触发技能,{'@'} 引用实体)", skillNoMatch: '无匹配技能', skillNotLoaded: '未读取到本机技能', // ── @ 实体引用(@ 触发 popover,选中插入 [类型:名] 标记) ── mentionHint: "{'@'} 引用项目/任务", mentionGroupProject: '项目', mentionGroupTask: '任务', mentionGroupIdea: '灵感', mentionNoMatch: '无匹配实体', mentionEmpty: '暂无可引用的项目/任务', // ── 发送 ── stopGenerating: '停止生成', // L2 状态机停止按钮三态(ConvState 派生) stopping: '停止中', stopFailedRetry: '停止失败,点击重试', // ── 输入提示 ── inputHint: 'Enter 发送 · Shift+Enter 换行', // ── F-260614-05 Phase 2b: 图片输入(粘贴/拖拽) ── // 粘贴/拖拽图片到输入框,发送时构造多模态 ContentPart[] 渲染到用户气泡 pickImage: '选择图片', pickImageTitle: '选择图片(可粘贴/拖拽)', imageFilter: '图片文件', removeImage: '移除图片', imagePreviewAlt: '待发送图片', imageTooLarge: '图片过大(上限 10MB),已跳过', imageLimit: '最多 {n} 张图片,已忽略多余的', imageReadFailed: '图片读取失败', imageIgnoredWarn: '当前模型不支持图片,发送时图片将被忽略', imageOnlyBlocked: '当前模型不支持图片,请改用视觉模型或补充文字说明', // ── 确认弹层 ── confirmDeleteConversation: '确定删除对话「{title}」?该操作不可恢复。', // 删除当前活跃对话的醒目提示(活跃对话误删会清空当前视图,影响更大) confirmDeleteActiveConversation: '「{title}」是当前正在查看的对话,删除后将清空当前视图且不可恢复,确定继续?', clearChat: '清空', confirmClearChat: '确定清空当前对话的所有消息?此操作不可恢复。', toastSendFail: '发送失败:{msg}', // ── 消息拷贝── copyMsg: '复制消息', copied: '已复制', copyFailed: '复制失败', // F1-1:代码块复制按钮(v-html 渲染层注入,decorateCodeHtml 传参) copyCode: '复制', // F1-1:长文折叠条带量按钮(展开态复用 collapse 键) foldedSummary: '已折叠 {chars} 字符 / 约 {tokens} tokens,点击展开', // 气泡复制为图片(html2canvas 渲染 → 剪贴板;失败降级下载) copyAsImage: '复制为图片', copiedAsImage: '已复制为图片', copyAsImageFailed: '复制为图片失败', // ── 消息操作栏── // regenerateUnavailable:Ctrl+R / 重试链仍走 store.regenerate(),前置校验失败 toast 用 // (I6 回滚只撤了 UI 按钮,此键仍被 useAiSend.ts 引用——review 2026-10-05 ②) regenerateUnavailable: '没有可重新生成的回复', regenerateFailed: '重新生成失败:{msg}', // fetch_url "AI 帮装 obscura" 按钮触发 sendMessage 失败的 toast(对齐 editMessageFailed 模式) sendFailed: '发送失败:{msg}', // ── 编辑末条 user 消息并重新生成 ── editMessage: '编辑', editMessageFailed: '编辑失败:{msg}', editNotLastUser: '只能编辑最后一条用户消息', // UX 走查 B3:editMessage IPC 不接 parts,编辑重发会静默丢图,入口禁止并提示 editImageBlocked: '该消息包含图片,暂不支持编辑(重新生成会丢失图片)', placeholderEditing: '编辑消息后回车重新生成(Esc 取消)', // ── 错误气泡操作入口(UX-03 / ) ── retry: '重试', goToSettingsAction: '去设置', // ── 达 max_iterations 暂停态操作卡 ── maxRoundsReached: '已达最大轮次,是否继续?', maxRoundsHint: '继续将再跑一轮上限;停止则按当前结果收尾', continueLoop: '继续', stopLoop: '停止', continueLoopFailed: '继续失败:{msg}', stopLoopFailed: '停止失败:{msg}', // ── L1 求助协议(aichat 体验与 agent 能力系统化重构 §2.3,2026-06-21):断路器熔断求助卡 ── helpRequiredAck: '已记录选择,请重新描述需求以换思路/继续', // ── F-260619-03 Phase B: 路径授权弹窗(LLM 访问白名单外目录挂起) ── dirAuthRequired: '需要路径授权', dirAuthHint: '{tool} 想访问:{path}', dirAuthOnce: '本次', dirAuthSession: '当前会话', dirAuthAlways: '始终放行', dirAuthDeny: '拒绝', dirAuthFailed: '授权失败:{msg}', // M5:path 类拒绝二次确认(拒绝不可逆——工具返 Err、loop 续跑不再重试,与 approve 不对称,防误点) dirAuthDenyConfirm: '确定拒绝授权吗?该工具将立即失败,且本轮不会重试。', // 「信任所有目录」总开关开启期间的常驻放行横幅(对话区顶部) pathAuthBypassBanner: '授权已完全放行(含敏感目录):AI 可直接访问任意文件', // ── Input Augmentation 层: mention/skill 注入反馈 ── // search_files 盲搜被白名单兜底拒绝(不应弹授权窗,直接友好提示用户改用 @引用或绝对路径) searchFilesBlocked: "search_files 仅在已授权目录可用,请用 {'@'}[项目] 引用或提供绝对路径", // /技能 热重载(ai_reload_skills IPC)成功后提示 skillReloaded: '技能已重新加载', // @引用 实体 resolve 失败(id 指向的项目/任务/灵感/技能已被删除或不可用) mentionUnresolved: '引用的 {kind} 已删除或不可用', // 同名技能冲突(scan_skills 返回 conflicts,前端提示,注入按 skills>commands>plugins 优先级取首份) skillConflict: '技能 {name} 存在多份定义,已采用 skills 优先级', // ── ⑥.4 Phase 4: @项目展开摘要(输入区预览 ── enrichmentBadge: '📎 已关联「{project}」({tasks} 项任务, {ideas} 项灵感)', enrichmentExpand: '展开上下文参考', enrichmentCollapse: '收起上下文参考', enrichmentLabel: '上下文参考', // ── F-15 阶段2: 手动上下文管理(清空 / 压缩) ── // 按钮(Header 操作区:垃圾桶 + 压缩图标) clearContext: '清空上下文', compressContext: '压缩上下文', // 二次确认(清空不可逆语义,防误触;历史归档保留不删) // 标题「清空上下文」融入正文首句;强调不可逆 + 归档分段 + AI 不再看到历史 clearContextConfirm: '清空上下文?此操作不可逆,当前对话上下文将被归档为分段(AI 将不再看到这些历史消息)。新对话不受影响。', // 二次确认弹窗的危险按钮文案(ConfirmDialog dangerLabel);不传则回退 common.confirm clearContextDangerLabel: '清空', // 折叠分隔条(连续同 status 合并一条;{n}=合并的消息条数) contextArchived: '已归档 {n} 条消息', compressed: '已压缩上下文', compressing: '压缩中…', clearSuccess: '上下文已清空', compressSuccess: '上下文已压缩', // B4: 自动压缩完成一次性提示(loop 自动压缩不再全程静默) autoCompressed: '上下文已自动压缩(较早消息已折叠为摘要)', compressError: '压缩失败:{msg}', // E2:压缩失败走关键词摘要兜底,loop 继续——提示降级而非静默失忆 contextDegraded: '上下文已降级:{reason},AI 可能缺失部分早前细节', clearError: '清空失败:{msg}', initError: 'AI 面板初始化失败:{msg}(重开面板可重试)', initDegraded: '列表加载失败,面板降级继续:{msg}', // 折叠条展开 / 收起 expand: '展开', collapse: '收起', // 压缩摘要块标题(展开后 system 摘要消息前的标签) compressedSummaryLabel: '上下文摘要', // ── TopBar 底部上下文徽章(tooltip + L3 完整上下文 popover 标签) ── viewGoals: '查看目标', runningTasks: '后台进行中任务', runningRounds: '进行中 {n} 轮', untitledConversation: '未命名会话', recoverableTask: '中断·可恢复', recoverNow: '恢复', viewHistory: '查看历史消息', viewSummary: '查看上下文摘要', // 走查-信息UX 面六 F6-1:历史/摘要项点击定位未命中(目标在折叠段内未渲染 DOM)的行内提示 historyLocateInSegment: '该消息在折叠段(已归档/已压缩)内,请先在消息流中展开对应分隔条', viewContext: '查看 AI 上下文', contextSystemPrompt: '系统提示', contextEnvironment: '环境', contextCompressedSummary: '压缩摘要', contextEnrichment: '增强上下文', contextCountUnit: '条', // ── EnrichmentPanel ── enrichmentDismiss: '取消关联', // ── AE-2025-04 会话级信任(Session Trust) ── // 自动放行 toast(同会话已批准过同类操作:同工具+同目录,轻量 info 非审批气泡) autoApprovedToast: '已自动放行: {tool}({dir})', // ── 技能注入反馈闭环(/ 技能 resolve 成功/失败轻 toast) ── skillInjectedToast: '已注入技能《{name}》', skillNotFoundToast: '技能 {name} 未找到', // ── CIStatus.vue(代码提交 CI 检查状态卡)── ciTitle: 'CI 检查', ciNFailed: '{n} 项失败', ciNPending: '{n} 项进行中', ciNPassed: '{n} 项通过', // ── MessageList token 详情面板(分计费:输入/缓存命中/输出/思考) ── tokenDetailTitle: 'Token 用量详情', estimated: '估算', tokenInLabel: '输入(未命中,全价)', tokenCacheLabel: '缓存命中(低价)', tokenOutLabel: '输出', // #12 会话累计 token(token 详情面板尾部段) tokenConvTotal: '会话累计', tokenConvTotalIn: '会话累计·输入', tokenConvTotalOut: '会话累计·输出', tokenReasonLabel: '思考(reasoning)', tokenCacheRateLabel: '缓存命中率', tokenModelLabel: '模型', tokenUsageNoteLabel: '用量说明', tokenUsageNote: 'prompt_tokens 缺失,按估算展示', // ── TopBar 目标/项目上下文标签 ── goalsCount: '目标({n})', none: '无', projectLabel: "{'@'}项目", // ── 3c UX 批追加(I5 发送失败错误分类文案):按错误内容映射友好提示, // {msg} 保留原始错误串供排查,不丢线索 ── sendErrRateLimit: '发送频率超限,请稍后重试(原始错误:{msg})', sendErrQuota: 'AI 服务额度或余额不足,请检查 Provider 账户(原始错误:{msg})', sendErrNetwork: '网络异常或请求超时,请检查网络后重试(原始错误:{msg})', // ── UX-P3 对话域打磨追加 ── editEmptyBlocked: '编辑内容为空,已取消提交', skillNoMatchQuery: '未找到技能「{q}」,已阻止发送', backfillOverwriteConfirm: '输入框已有未发送草稿,回填将覆盖,确定继续?', // 走查-信息UX 面二 F2-4:示例问题卡覆盖草稿二次确认(对齐回填确认语义) exampleOverwriteConfirm: '输入框已有未发送草稿,点击示例将覆盖,确定继续?', // ── 待发箱/定时消息(OutboxDrawer + ChatInput ⏰ 入口,设计 2026-10-10 §3.4)── outboxEntry: '定时消息', outboxTitle: '定时与待发', outboxEmpty: '暂无定时或待发消息', outboxNewTitle: '新建定时消息', outboxNewPlaceholder: '输入要定时发送的内容', outboxTimeLabel: '发送时间', outboxCreate: '定时发送', outboxReschedule: '改期', outboxSendNow: '立即发送', outboxCancel: '取消', outboxQueueAsap: '尽快', outboxStatusPending: '待发', outboxStatusSending: '发送中', outboxStatusSent: '已发送', outboxStatusFailed: '失败', outboxStatusCanceled: '已取消', outboxActionFail: '操作失败,请重试', outboxDuePast: '定时时间必须晚于当前时刻', outboxNeedConv: '无目标会话,请先创建会话', contextBriefsToggle: '展开或收起项目脉络', contextBriefsTitle: '项目脉络', contextBriefsLoading: '加载中…', contextBriefsEmpty: '暂无知识沉淀。会话结束时会自动提炼对话要点,沉淀到这里', contextBriefsBringIn: '带入上下文', }, }