返回 DeepSeek-Reasonix
messages_zh.go
根目录 / internal / i18n / messages_zh.go
1 package i18n
2
3 // Chinese is the zh-Hans catalogue. Keep the %s placeholders in the same order
4 // as English unless a phrase genuinely demands re-ordering — call sites pass
5 // arguments positionally and won't reshuffle.
6 var Chinese = Messages{
7 WelcomeTitleFmt: "欢迎使用 %s",
8 NoConfigYet: "还没有配置 — 现在来设置一下吧。",
9
10 InitHint: "项目记忆(AGENTS.md)在会话内由模型生成:运行 `reasonix`,然后 `/init` —— 模型会分析代码库并写入。配置请用 `reasonix setup`。",
11
12 ChatTip: "对话上下文将跨轮保留。输入 'exit' 或按 Ctrl-D 退出。",
13 TurnCancelled: "已取消 — 回到提示符",
14 InterruptedRecovery: "本轮已中断。部分输出会永久保留供查看;只有完整工具调用及结果和有界恢复摘要会进入模型下一轮。继续或回滚前请先检查当前工作区。",
15 RecoveryPaused: "已暂停自动重试。Reasonix 已停止重复尝试,并保留已完成的工作。发送“继续”即可开始新一轮,也可以补充要求来调整方向。",
16 NoSessionToResume: "没有可恢复的会话 — 用 `reasonix` 开一个新的",
17 ResumeRequiresTTY: "--resume 需要交互式终端;用 --continue 直接恢复最近一次",
18 PickSessionLabel: "恢复哪个会话?",
19
20 ResumeBusy: "请先完成或取消当前这一轮再恢复会话",
21 ResumeBadIndexFmt: "请选择 1–%d 的会话(用 /resume 查看列表)",
22 ResumeAlreadyActive: "已在该会话中",
23 ResumedTitle: "已恢复会话",
24
25 RenameUsage: "用法:/rename <新名称> 或 /rename <序号> <新名称>",
26 RenameNoSession: "当前没有活跃会话可重命名",
27 RenameDoneFmt: "会话已重命名为 %q",
28 ResumePickTitle: "选择要恢复的会话",
29 ResumePickHint: "↑/↓ 移动 · Enter 恢复 · Esc 取消",
30 ResumeRecoveryBadgeFmt: "[冲突副本 · 父会话 %s]",
31
32 ChatThinking: "思考中…",
33 ChatThoughtForFmt: "思考了 %d 秒",
34 ChatStatusThinkingFmt: "%s 思考中… (%d 秒 · Esc 取消)",
35 ChatToolWorkingFmt: "%s 运行中 · %d 秒",
36 ChatSubagentPhaseQueued: "排队中",
37 ChatSubagentPhaseRunning: "运行中",
38 ChatSubagentPhaseReasoning: "思考中",
39 ChatSubagentPhaseResponding: "生成中",
40 ChatSubagentPhaseTool: "使用工具",
41 ChatSubagentPhaseRetrying: "重试中",
42 ChatSubagentPhaseCompleted: "已完成",
43 ChatSubagentPhaseFailed: "失败",
44 ChatSubagentPhaseCancelled: "已取消",
45 ChatSubagentProgressFmt: "%s · %d 秒 · %d 秒前",
46 ChatSubagentProgressDoneFmt: "%s · %d 秒",
47 ChatSubagentPreviewLabel: "▎",
48 ChatStatusRetryingFmt: "%s 正在重试 (%d/%d)… (Esc 取消)",
49 ChatStatusCancellingFmt: "%s 正在停止… (%d 秒 · Ctrl+C 退出)",
50 ChatStatusIdle: "就绪",
51 ChatStatusYoloIdle: "已跳过工具批准",
52 ChatStatusCycleHint: "Shift+Tab 循环询问/自动/计划 · Ctrl+Y YOLO",
53 ChatStatusCycleHintCompact: "Shift+Tab 询问/自动/计划 · Ctrl+Y YOLO",
54 ChatTurnReceiptLabel: "本轮",
55 ChatStatusModelLabel: "模型",
56 ChatStatusEffortLabel: "强度",
57 ChatStatusWorkLabel: "模式",
58 ChatStatusCacheLabel: "缓存",
59 ChatStatusContextLabel: "上下文",
60 ChatStatusCompactLabel: "压缩",
61 ChatStatusJobsLabel: "任务",
62 ChatStatusBalanceLabel: "余额",
63 ChatStatusCacheNowFmt: "本次命中 %s",
64 ChatStatusCacheAvgFmt: "平均 %s",
65 ChatStatusPlanApproval: "1 开始执行 · 2 修改计划 · 3 暂不执行并退出 · n/Esc 继续规划 · PgUp/PgDn/Ctrl+Home/End 滚动",
66 PlanApprovalPrompt: "计划已生成(见上方)— 请选择下一步操作",
67 PlanApprovalChoices: "1. 开始执行\n2. 修改计划(继续规划)\n3. 暂不执行,退出计划模式\n选择 [1/2/3](y 开始执行;n/Esc 继续规划)",
68 ChatStatusToolApproval: "1 本次允许 · 2 本会话允许此范围 · 提供时 3/4 为前缀或保存 · n/Esc 拒绝 · Ctrl-C 取消本轮",
69 AskTypeSomething: "自己输入",
70 AskTypingHint: "输入后按 Enter 确认",
71 AskChatInstead: "先不选择,直接回复",
72 ChatStatusQuestion: "↑/↓ 选 · 数字快选 · 空格多选 · Enter 确认 · ←/→ 切换问题 · Esc 取消",
73 StatusResumePicker: "↑/↓ 移动 · Enter 恢复 · Esc 取消",
74 AskSubmitTitle: "提交答案",
75 AskUnanswered: "(未答)",
76 AskSubmitHint: "Enter 提交 · ← 返回修改",
77 ToolApprovalPromptFmt: "需要你的许可\n\n将调用工具 %s%s。\n%s\n%s",
78 ToolApprovalChoices: "1. 本次允许\n2. 本会话允许 %s\n3. 总是允许 %s(保存到配置)\n4. 拒绝\n选择 [1/2/3/4](兼容 y/a/p/n)",
79 BashPrefixChoices: "1. 本次允许\n2. 本会话允许 %s\n3. 总是允许 %s(保存到配置)\n4. 拒绝\n选择 [1/2/3/4](兼容 y/a/p/n)",
80 PlanModeReadOnlyCommandChoices: "1. 本次信任\n2. 本会话信任此前缀\n3. 总是在计划模式信任此前缀(保存到配置)\n4. 拒绝\n选择 [1/2/3/4](兼容 y/a/p/n)",
81 FreshHumanApprovalChoices: "1. 本次允许\n2. 拒绝\n选择 [1/2](兼容 y/n)",
82 RecoveryApprovalChoices: "1. 继续一次\n2. 换个方案",
83 RecoveryPlanChangeChoices: "1. 采用新计划并继续\n2. 不采用,让 Auto 调整",
84 RecoveryPlanDecisionPrompt: "执行计划需要你的决定",
85 RecoveryPlanBeforeFmt: "原计划:%s",
86 RecoveryPlanAfterFmt: "新计划:%s",
87 RecoveryTaskGrantChoices: "1. 继续一次\n2. 继续,并在本任务内允许同类操作\n3. 换个方案",
88 SandboxEscapeApprovalChoices: "1. 允许一次\n2. 本会话使用真实环境\n3. 拒绝\n选择 [1/2/3](兼容 y/a/n)",
89 ApprovalNeededFmt: "需要审批:%s",
90 ApprovalNeededWithSubjectFmt: "需要审批:%s %s",
91 ToolApprovalSourceFmt: "来源: %s",
92 ToolApprovalBuiltIn: "内置工具",
93 ToolApprovalImageUse: "将读取提供的图片用于图像理解。",
94 ApprovalToolLabelBash: "bash",
95 ApprovalToolLabelEditFile: "编辑文件",
96 ApprovalToolLabelWriteFile: "写入文件",
97 ApprovalToolLabelMultiEdit: "批量编辑",
98 ApprovalToolLabelMoveFile: "移动文件",
99 ApprovalToolLabelWebFetch: "读取网页",
100 ApprovalToolLabelRunSkill: "运行技能",
101 ApprovalToolLabelRemember: "保存记忆",
102 ApprovalToolLabelForget: "删除记忆",
103 ApprovalToolLabelSandboxEscape: "bash 沙箱降级审批",
104 ApprovalToolLabelPlanModeReadOnly: "计划模式只读命令",
105 MemoryApprovalSaveUpdate: "保存/更新记忆",
106 MemoryApprovalBodyLabel: "正文",
107 MemoryApprovalArchiveFmt: "归档记忆 %q",
108 PlanModeBashTrustSubjectFmt: "在计划模式中信任 %q 为只读命令前缀\n命令:%s",
109 PlanModeBashTrustReason: "这条 bash 命令不在 Reasonix 内置只读集合中。只有在确认这个精确前缀用于计划和研究时是只读的,才应批准。自动/YOLO 审批不能回答这个信任提示。",
110 PlanModeBashTrustDeclined: "用户拒绝将这条 bash 命令信任为计划模式只读命令;不要重试它,请继续使用其它已信任的只读工具,或询问用户希望如何继续。",
111 SandboxEscapeSubjectFallback: "仅本次不进沙箱运行 shell 命令",
112 SandboxEscapeSubjectPrefix: "仅本次不进沙箱运行:",
113 SandboxEscapeWrapReason: "Windows 不提供这条命令所需的 OS 级 Bash 沙箱。是否仅本次不受限运行?这只会对此命令绕过 OS 隔离。",
114 SandboxEscapeRuntimeReason: "OS 沙箱无法启动这条命令。是否仅本次不受限运行?这只会对此命令绕过 OS 隔离。",
115 SandboxEscapeDeclined: "用户拒绝在没有 OS 沙箱的情况下运行这条命令;不要不进沙箱重试,请询问用户希望如何继续。",
116 ApprovalToolLabelConfigWrite: "Reasonix 配置写入审批",
117 ConfigWriteSubjectPrefix: "写入 Reasonix 配置:",
118 ConfigWriteReason: "这次写入的目标是工作区之外的 Reasonix 托管配置文件。它可以改变后续会话的模型服务商、沙箱规则、权限和 MCP 服务器,因此需要你的明确批准。",
119 ConfigWriteDeclined: "用户拒绝了这次 Reasonix 配置写入;不要重试,请询问用户希望如何继续。",
120 ConfigWriteApprovalChoices: "1. 允许一次\n2. 本会话允许\n3. 拒绝\n选择 [1/2/3](兼容 y/a/n)",
121 PermissionSavedFmt: "授权已保存到 %s:%s",
122 PermissionAlreadyAllowedFmt: "授权已由 %s 中的规则覆盖:%s",
123 PermissionSaveFailedFmt: "保存授权 %s 失败:%v",
124 PlanModeReadOnlyCommandTrustSavedFmt: "计划模式只读命令信任已保存到 %s:%s",
125 PlanModeReadOnlyCommandTrustAlreadyFmt: "计划模式只读命令信任已保存在 %s:%s",
126 PlanModeReadOnlyCommandTrustFailedFmt: "保存计划模式只读命令信任 %s 失败:%v",
127 DiffFoldedFmt: "… 还有 %d 行",
128 DiffFoldEnabledFmt: "diff 已折叠至 %d 行(/diff-fold 展开)",
129 DiffFoldDisabled: "diff 已展开 — 显示全部行(/diff-fold 折叠)",
130
131 OutputStyleNone: "没有可用的输出风格",
132 ThemeHeader: "主题:",
133 ThemeHint: "使用 /theme <auto|light|dark|style> 切换",
134 ThemeChangedFmt: "已切换主题为 %s / %s",
135 ThemeUnknownFmt: "未知主题 %q",
136 LanguageHeader: "语言:",
137 LanguageHint: "使用 /language <auto|en|zh> 切换",
138 LanguageChangedFmt: "语言已设为 %s(当前解析为:%s)",
139 CurrencyHeader: "计价货币:",
140 CurrencyHint: "使用 /currency <auto|CNY|USD> 切换",
141 CurrencyChangedFmt: "计价货币已设为 %s(当前解析为:%s)",
142 RuntimeRefreshBusy: "请先完成或取消当前工作,并停止后台任务后再修改此设置",
143 RuntimeRefreshUnavailable: "本会话不支持刷新运行时",
144
145 CompactionWorking: "正在压缩对话…",
146 CompactionTitle: "上下文已压缩",
147 CompactionUnit: "条消息",
148 CompactionAuto: "自动",
149 CompactionManual: "手动",
150
151 ExtFormFieldsHint: "字段将通过逐项提问收集",
152 ExtRunActionFmt: "运行 %s",
153 SlashCompactFailed: "压缩失败",
154 SlashNewDone: "已开启新会话 — 之前的对话已存档",
155 SlashNewFailed: "新建会话失败",
156 SlashClearPrompt: "清空当前上下文且不保存?",
157 SlashClearDone: "已清空当前上下文",
158 SlashClearFailed: "清空当前上下文失败",
159 SlashClsDone: "已清屏(LLM 上下文保留)",
160 SlashUnknown: "未知命令",
161 SlashUnknownSentAsMessage: "已作为普通消息发送",
162 SlashTodoCleared: "已清除任务清单",
163
164 SkillPickerAvailableFmt: "%d 个可用",
165 SkillPickerMatchingFmt: "%d 个匹配 · 共 %d 个",
166 SkillPickerHint: "↑↓ 移动 · Space 开关 · Enter 保存 · / 搜索 · s 来源 · r 重新扫描 · Esc 取消",
167 SkillPickerDetailHint: "↑↓ 移动 · Enter 选择 · Space 开关 · Esc 返回",
168 SkillPickerSearchEmpty: "没有匹配的 skill",
169 SkillPickerSearchPlaceholder: "搜索 skills...",
170 SkillPickerSourceTitle: "来源",
171 SkillPickerSourceActiveFmt: "%d 个有效",
172 SkillPickerSourceHint: "↑↓ 移动 · Enter 查看技能 · d 诊断 · s skills · r 重新扫描 · Esc 关闭",
173 SkillPickerDiagHidden: "d 展开诊断",
174 SkillPickerDiagShown: "d 收起诊断",
175 SkillPickerBuiltinSource: "内置",
176 SkillPickerRescanned: "已重新扫描 skills",
177 SkillPickerNoDescription: "(无描述)",
178 SkillPickerScopeProject: "项目",
179 SkillPickerScopeCustom: "自定义",
180 SkillPickerScopeGlobal: "全局",
181 SkillPickerScopeBuiltin: "内置",
182 SkillPickerSubagent: "子代理",
183 SkillPickerAvailableLabel: "可用",
184 SkillPickerDisabledLabel: "关闭",
185 SkillPickerNoChanges: "Skills 对话框已关闭:没有更改",
186 SkillPickerSourceSkillsHint: "↑↓ 移动 · Space 开关 · Enter 详情 · Esc 返回来源",
187 SkillPickerSourceSkillsEmpty: "这个来源下没有 skill",
188 SkillPickerActionToggle: "切换启用状态",
189 SkillPickerActionDelete: "删除 skill",
190 SkillPickerDeleteTitleFmt: "删除 skill /%s?",
191 SkillPickerDeleteConfirm: "删除",
192 SkillPickerDeleteCancel: "取消",
193 SkillPickerDeleteHint: "Enter 确认 · y 删除 · n/Esc 取消",
194 SkillPickerDeletedFmt: "已删除 skill %s",
195 SkillPickerMoreAboveFmt: "↑ 上方还有 %d 个",
196 SkillPickerMoreBelowFmt: "↓ 下方还有 %d 个",
197 SkillPickerTokenFmt: "~%d tok",
198 SkillPickerDetailMetaFmt: "范围: %s 运行方式: %s",
199 SkillPickerSkillsUnit: "个 skill",
200 SkillPickerLinesUnit: "行",
201 SkillPickerStatusLabel: "技能选择器",
202 SkillPickerStatusOK: "有效",
203 SkillPickerStatusMissing: "缺失",
204 SkillPickerStatusNotDir: "非目录",
205 SkillPickerStatusUnreadable: "无权限",
206 SlashPromptEmpty: "该 MCP prompt 没有返回可发送的内容",
207 SlashMCPNone: "没有配置 MCP 服务器 — 在 reasonix.toml 加一个 [[plugins]] 条目",
208 CtrlCQuitHint: "再按一次 Ctrl+C 退出",
209 CompHintSlash: "↑/↓ 移动 · Tab/Enter 选中 · Esc 关闭",
210 CompHintFile: "↑/↓ 移动 · Tab/Enter 进入文件夹或选中文件 · Esc 关闭",
211 MouseCopiedHint: "已复制到剪贴板",
212 ClipboardCopyOSC52Hint: "已通过 OSC 52 请求复制 — 可能需要终端授权",
213 ClipboardCopyFallbackHint: "系统剪贴板不可用 — 已回退到 OSC 52",
214 ClipboardTextPasteRemoteHint: "SSH 下鼠标粘贴无法读取本地剪贴板或 PRIMARY 选区 — 请使用终端粘贴快捷键或 /mouse",
215 ClipboardTextPasteFailedFmt: "粘贴文本失败:%v",
216 ClipboardImagePastingHint: "正在粘贴图片…",
217 ClipboardImagePasteFailedFmt: "粘贴图片失败:%v",
218 MouseCaptureOnHint: "鼠标接管已开启 — 应用内拖拽选中/滚动条/滚轮生效",
219 MouseCaptureOffHint: "鼠标接管已关闭 — 由终端原生处理选中和右键菜单",
220 MouseCaptureTag: "终端原生鼠标",
221
222 ShellExecEmpty: "用法:!<命令> (例如 !ls -la)",
223 ShellExecFailedFmt: "Shell 命令执行失败:%v",
224 ShellExecTimeoutFmt: "Shell 命令超时(>%s)",
225 ShellModeHint: "Enter 执行 Shell · Esc 取消 · 点击输出展开",
226
227 CmdNew: "开启新会话并保存历史",
228 CmdClear: "丢弃当前上下文",
229 CmdCls: "清屏(保留 LLM 上下文)",
230 CmdCompact: "压缩上下文",
231 CmdRewind: "回滚到更早的一轮",
232 CmdTree: "查看对话分支树",
233 CmdBranch: "创建对话分支",
234 CmdSwitchBranch: "切换对话分支",
235 CmdResume: "恢复已保存的会话",
236 CmdRename: "重命名会话",
237 CmdModel: "切换模型",
238 CmdStatus: "显示会话状态",
239 CmdWorkMode: "切换工作模式",
240 CmdDocs: "搜索与当前版本匹配的内置文档",
241 CmdMemory: "查看指令、记忆与恢复状态",
242 CmdMigrate: "重试旧数据迁移",
243 CmdGoal: "设置或清除当前目标",
244 CmdRemember: "保存一条记忆",
245 CmdForget: "归档一条已存记忆",
246 CmdMcp: "MCP 服务器",
247 CmdRemote: "远程 SSH 主机",
248 CmdHooks: "管理 hooks",
249 CmdPlugins: "管理插件包",
250 CmdPasteImage: "粘贴剪贴板图片",
251 CmdOutputStyle: "列出输出风格",
252 CmdTheme: "切换 CLI 主题",
253 CmdLanguage: "切换 CLI 语言",
254 CmdCurrency: "切换计价货币",
255 CmdSkill: "管理 skills",
256 CmdVerbose: "切换 thinking 原文显示",
257 CmdReloadCmd: "重载自定义命令",
258 CmdReload: "重载 agent 运行时(工具、技能、命令、钩子、模型供应商),保留当前会话",
259 CmdDiffFold: "切换 diff 折叠/展开",
260 CmdSandbox: "查看沙箱状态",
261 CmdEffort: "设置推理强度",
262 CmdMouse: "切换鼠标接管(关闭后由终端原生处理选中/右键)",
263 CmdReasonLang: "设置可见思考语言",
264 CmdHelp: "查看命令列表",
265 CmdTodo: "清除任务清单",
266 CmdQuit: "退出会话",
267 CmdCopy: "选择回复复制到剪贴板",
268 CmdExport: "将会话导出为 Markdown",
269 SlashCopyDone: "已复制到剪贴板",
270 SlashCopyEmpty: "没有可复制的助手回复",
271 SlashCopyListHeader: "选择要复制的回复:",
272 SlashExportDoneFmt: "会话已导出到 %s",
273 SlashExportEmpty: "没有可导出的消息",
274 ArgSkillShow: "查看 skill 内容",
275 ArgSkillNew: "新建一个 skill",
276 ArgSkillPaths: "显示发现路径",
277 ArgMcpAdd: "连接一个服务器",
278 ArgMcpRemove: "断开一个服务器",
279 ArgMcpConnected: "已连接",
280 ArgHooksList: "列出生效的 hooks",
281 ArgModelCurrent: "当前",
282 ArgEffortAuto: "使用模型默认值",
283 ArgEffortLow: "较轻推理",
284 ArgEffortMedium: "均衡推理",
285 ArgEffortHigh: "较深推理",
286 ArgEffortXHigh: "超高推理",
287 ArgEffortMax: "最高推理",
288 ArgThemeCurrent: "当前",
289 ArgLanguageAuto: "从 REASONIX_LANG / 系统 locale 自动检测",
290 ArgLanguageEn: "English",
291 ArgLanguageZh: "中文",
292
293 ListModelsHeaderFmt: "模型(当前:%s)",
294 ListModelsHint: "用底部的模型切换器,或输入 /model <provider/model>",
295 ListMemorySaved: "保存的记忆",
296 ListMemoryArchived: "归档的记忆",
297 ListMemoryNone: "暂无记忆 — 用 “/remember <内容>” 添加,或运行 /init 生成 AGENTS.md",
298 ListSkillsHeaderFmt: "skills(%d 个)",
299 ListSkillsNone: "暂无 skill — 调用内置的(如 /init),或用 install_skill 创建一个",
300 ListHooksHeaderFmt: "hooks(生效 %d 个)",
301 ListHooksNone: "无生效 hooks — 在 .reasonix/settings.json(项目)或 <Reasonix home>/settings.json(全局)配置",
302 ListMcpHeader: "MCP 服务器",
303 ListMcpNone: "未连接 MCP 服务器 — 在 reasonix.toml([[plugins]])或项目 .mcp.json 中添加",
304
305 MemoryEditHint: "可直接编辑记忆文档,或输入 “/remember 内容” 快速记录;文档改动会在下次会话生效",
306 ForgetUsage: "用法:/forget <name> — name 是 /memory 中显示的条目标识",
307 ForgetDoneFmt: "已归档记忆:%s",
308 QuickRememberEmpty: "没有要记录的内容",
309 QuickRememberDoneFmt: "已记住 → %s",
310 GoalEmpty: "目标:无 — 用 /goal <目标> 设置",
311 GoalCurrentFmt: "目标:%s",
312 GoalSetFmt: "目标已设置 → %s",
313 GoalCleared: "目标已清除",
314 GoalNotRunning: "没有运行中的目标可暂停",
315 GoalNotPaused: "没有已暂停或被阻塞的目标可恢复",
316 GoalPaused: "目标已暂停 — /goal resume 可继续",
317 GoalPausedReason: "用户手动暂停",
318 GoalPausedFmt: "目标已暂停(%s)— 使用 /goal resume 继续",
319 GoalBudgetExtended: "目标已恢复 — 追加了一档轮次数",
320 GoalRuntimeFmt: "运行状态:轮次 %d/%d,token %d,无进展 %d/%d,追加 %d",
321 GoalRuntimeLastReason: "最近原因",
322 ModelSwitchUnavailable: "本会话不支持切换模型",
323 ModelSwitchBusy: "请先完成或取消当前工作,并停止后台任务后再切换模型",
324 ModelAlreadyOnFmt: "已经在使用 %s",
325 ModelSwitchingFmt: "正在切换到 %s…",
326 ModelSwitchedFmt: "已切换到 %s(会保留当前对话,但提示词缓存会重新计算)",
327 ModelListHeader: "模型(/model <provider/model> 切换)",
328 RuntimeSwitchPending: "请等待当前运行时切换完成",
329 RuntimeReloadQueued: "已加入重载队列——当前工作完成后执行",
330 RuntimeReloaded: "运行时已重载",
331 RuntimeReloadedGenerationFmt: "运行时已重载(构建代号 %d)",
332 WorkModeStatusFmt: "工作 %s",
333 WorkModeListHeaderFmt: "工作模式(当前:%s)",
334 WorkModeListHint: "使用 /work-mode economy|balanced|delivery 切换(/profile 为兼容别名)",
335 WorkModeEconomyLabel: "轻量",
336 WorkModeBalancedLabel: "均衡",
337 WorkModeDeliveryLabel: "交付",
338 WorkModeEconomyDesc: "降低 Token 消耗,按需连接可选工具源",
339 WorkModeBalancedDesc: "完整工具面,由模型判断所需工作量",
340 WorkModeDeliveryDesc: "强调完整验证和交付,增强 skill 与插件调用",
341 WorkModeUsage: "用法:/work-mode economy|balanced|delivery",
342 WorkModeSwitchUnavailable: "本会话不支持切换工作模式",
343 WorkModeSwitchBusy: "请先完成或取消当前工作,再切换工作模式",
344 WorkModeAlreadyOnFmt: "当前已经是 %s 工作模式",
345 WorkModeSwitchingFmt: "正在切换到 %s 工作模式…",
346 WorkModeSwitchedFmt: "已切换到 %s 工作模式(保留当前对话,但提示词缓存会重新计算)",
347 RewindNone: "暂无可回滚的内容",
348 RewindCodeConversation: "代码 + 对话",
349 RewindConversationOnly: "仅对话",
350 RewindCodeOnly: "仅代码",
351 RewindFork: "从这里分叉(保留当前代码)",
352 RewindSummarizeFrom: "总结这一轮之后的内容",
353 RewindSummarizeUpto: "总结到这一轮为止",
354 RewindPickTitle: "⟲ 回滚 — 选择一轮",
355 RewindPickHint: "↑/↓ 移动 · Enter 选择 · Esc 关闭",
356 RewindRestoreTitleFmt: "⟲ 恢复到第 %d 轮 ",
357 RewindApplyHint: "↑/↓ · Enter 应用 · Esc 返回",
358 RewindCoverageTitle: "⚠ 文件覆盖不完整",
359 RewindCoverageWarningFmt: "检测到 %d 个覆盖缺口,部分文件修改可能无法恢复。",
360 RewindConfirmHint: "Enter/y 确认 · Esc 返回",
361 RewindUnavailableFmt: "无法回滚:%s",
362 RewindEmpty: "(空)",
363
364 EnterAPIKeysHeader: "输入 API key(回车跳过、稍后再设):",
365 WroteFileFmt: "已写入 %s",
366 SetupComplete: "设置完成。",
367 SetupCancelled: "设置已取消。",
368 TryHintFmt: "试试: %s",
369 NextHint: "下一步:设置 API key(运行 `reasonix setup` 或 export DEEPSEEK_API_KEY=...),然后运行 `reasonix run \"你的任务\"`。",
370 ConfirmReconfigureFmt: "%s 已存在。重新配置并覆盖?",
371 NotOverwritingFmt: "%s 已存在,不覆盖",
372 SetupManagerTitle: "供应商配置",
373 SetupAddOpenAI: "添加 OpenAI 兼容供应商",
374 SetupAddAnthropic: "添加 Anthropic 兼容供应商",
375 SetupProviderExistsFmt: "供应商 %q 已存在。请进入现有供应商管理来编辑模型或设置。",
376 SetupSaveExit: "保存并退出",
377 SetupSaveExitDesc: "写入当前暂存的修改",
378 SetupCancel: "取消",
379 SetupCancelDesc: "放弃全部暂存修改",
380 SetupModelsUnit: "个模型",
381 SetupKeySet: "已设置 Key",
382 SetupKeyMissing: "缺少 Key",
383 SetupDefaultBadge: "默认",
384 SetupProviderActionsFmt: "管理 %s",
385 SetupEditProvider: "编辑供应商",
386 SetupUpdateKey: "更新 API Key",
387 SetupTestRefresh: "测试连接 / 刷新模型列表",
388 SetupSetDefault: "设置默认模型",
389 SetupRemoveProvider: "删除供应商",
390 SetupBack: "返回",
391 SetupPromptModels: "模型列表(用逗号分隔)",
392 SetupSharedKeyWarningFmt: "%s 已被 %s(%s)使用。确认共享这项凭据?",
393 SetupPromptAPIKeyFmt: "输入 %s 的新值",
394 SetupSelectDefaultModel: "选择默认模型",
395 SetupConfirmRemoveFmt: "确认删除供应商 %s?",
396 SetupSummaryTitle: "待保存修改:",
397 SetupSummaryAddedFmt: "新增:%s",
398 SetupSummaryEditedFmt: "编辑:%s",
399 SetupSummaryRemovedFmt: "删除:%s",
400 SetupSummaryDefaultFmt: "默认模型:%s",
401 SetupSummaryKeysFmt: "更新 API Key:%d 项",
402 SetupSummaryNoChanges: "没有修改",
403 SetupConfirmSave: "保存这些修改?",
404 SetupConcurrentChangeFmt: "setup 打开期间配置已被修改(%s)。本次暂存修改未写入,请重新运行 setup 检查最新配置。",
405
406 // model fetching
407 FetchingModelsFmt: "正在获取 %s 的模型列表...",
408 FetchModelsSuccessFmt: "发现 %d 个 %s 模型",
409 FetchModelsFailedFmt: "获取 %s 模型失败: %v",
410 FetchModelsUsingPresetsFmt: "无法在线获取 %s 的模型,使用预设列表",
411 SelectModelsLabel: "选择要启用的 %s 模型",
412 CustomFetchEmpty: "/models 返回为空,回退到手动输入",
413 AnthropicFetchEmpty: "/models 返回为空 — Anthropic 兼容服务通常不提供此端点,回退到手动输入",
414 APIKeyAlreadySetFmt: "复用已设置的 %s",
415 APIKeyResetPromptFmt: "重新输入 %s?",
416 InvalidAPIKeyEnvFmt: "%q 不是有效的 API Key 变量名。只能使用字母、数字和下划线(例如 MY_PROVIDER_API_KEY);这里不要填写模型名。",
417 RepairedAPIKeyEnvFmt: "provider %s:已将无效的 API Key 变量名 %q 修复为 %q",
418
419 // custom provider
420 CustomProviderDesc: "添加第三方 OpenAI 兼容模型",
421 CustomAddMethodLabel: "添加第三方 OpenAI 兼容模型 - 选择添加方式",
422 CustomMethodManual: "手动输入模型名称",
423 CustomMethodURL: "从 URL 获取模型列表",
424 CustomPromptModel: "请输入模型名称",
425 CustomPromptBaseURL: "请输入 Base URL",
426 CustomPromptKeyEnv: "API Key 变量名(直接回车使用默认值,不是模型名)",
427 CustomPromptAPIKey: "请输入 API Key",
428 CustomAddedFmt: "已添加自定义模型: %s",
429
430 // Anthropic 兼容 provider
431 AnthropicProviderDesc: "添加第三方 Anthropic 兼容模型",
432 AnthropicAddMethodLabel: "添加第三方 Anthropic 兼容模型 - 选择添加方式",
433 AnthropicMethodManual: "手动输入模型名称",
434 AnthropicMethodURL: "从 URL 获取模型列表",
435 AnthropicPromptModel: "请输入模型名称",
436 AnthropicPromptBaseURL: "请输入 Base URL",
437 AnthropicPromptKeyEnv: "API Key 变量名(直接回车使用默认值,不是模型名)",
438 AnthropicPromptAPIKey: "请输入 API Key",
439 AnthropicAddedFmt: "已添加 Anthropic 兼容模型: %s",
440 AnthropicFetchingModelsFmt: "正在获取 %s 的模型列表...",
441 AnthropicFetchModelsSuccessFmt: "发现 %d 个 %s 模型",
442 AnthropicFetchModelsFailedFmt: "获取 %s 模型失败: %v",
443 AnthropicSelectModelsLabel: "选择要启用的 %s 模型",
444
445 RemoteConnectingFmt: "正在连接 %s…",
446 RemoteConnectedFmt: "已连接到 %s",
447 RemoteReconnectingFmt: "正在重连 %s(第 %d 次)…",
448 RemoteDegradedFmt: "已连接到 %s,但部分端口转发未建立",
449 RemoteDisconnected: "已断开(远端 serve 仍在运行)",
450 RemoteServeReadyFmt: "远端 serve 就绪:%s",
451 RemoteHostKeyPromptFmt: "未知的主机密钥 %s\n 类型:%s\n 指纹:%s",
452 RemotePassphrasePromptFmt: "%s 的密钥口令:",
453 RemotePasswordPromptFmt: "%s 的登录密码:",
454 RemoteBootstrapStepFmt: "远端 serve:%s %s",
455 RemoteNoHostsHint: "尚未配置远程主机;用 `reasonix remote add <名称> [user@]host` 添加",
456
457 UnknownCommandFmt: "未知命令 %q",
458 UsageRunHint: "用法:reasonix -p [--model NAME] <task>",
459 ErrorPrefix: "错误:",
460 ReconfigureOnUnknownModel: "配置的模型已不可用 —— 重新运行引导配置。",
461 WriteConfigErr: "写入配置失败:",
462 WriteEnvErr: "写入 .env 失败:",
463
464 ProviderErrBadRequest: "请求格式错误 (HTTP 400):请求体被拒绝,通常是程序缺陷。若持续出现请反馈。",
465 ProviderErrAuth: "认证失败 (HTTP 401):未读到 API key(缺失或未设置)。请在 .env 中配置密钥,或运行 `reasonix setup`。",
466 ProviderErrAuthRejected: "认证失败 (HTTP 401):服务端拒绝了你的 API key。可能是 key 错误或已过期,也可能是服务端出现瞬时鉴权/额度问题——已退避重试仍失败。请稍后再试,或检查 .env 中的密钥 / 运行 `reasonix setup`。",
467 ProviderErrInsufficientBalance: "余额不足 (HTTP 402):账户余额不足,请前往充值后重试。",
468 ProviderErrUnprocessable: "参数错误 (HTTP 422):某个请求参数被拒绝,通常是程序缺陷。若持续出现请反馈。",
469 ProviderErrInputSensitive: "输入被 MiniMax 内容审查拒绝(错误码 1026)。审查对象可能包含会话历史和工具结果;请调整相关内容,或新建会话仅保留必要上下文。原样重试通常无效。",
470 ProviderErrOutputSensitive: "MiniMax 生成的内容被内容审查拒绝(错误码 1027)。请调整请求内容后重试;若持续出现,可改用其他服务商。",
471 ProviderErrRateLimited: "请求速率达到上限 (HTTP 429):请求过于频繁 (TPM/RPM)。已退避重试,请放慢速率或稍后再试。",
472 ProviderErrServer: "服务器故障 (HTTP 500):服务端内部错误。已退避重试;若持续失败请稍后再试。",
473 ProviderErrServerBusy: "服务器繁忙 (HTTP 503):服务端负载过高。已退避重试,请稍后再试。",
474
475 SelectOneHint: "(↑/↓ · Enter · q 取消;/ 搜索)",
476 SelectManyHint: "(↑/↓ · Space · Enter · q;/ 搜索)",
477
478 SelectMoreAboveFmt: " ↑ 上方还有 %d 个",
479 SelectMoreBelowFmt: " ↓ 下方还有 %d 个",
480 SelectSearchHint: "/ 搜索 · 输入关键词过滤 · Esc 取消搜索",
481
482 CmdProvider: "切换供应商",
483 ProviderListHeader: "供应商(/provider <名称> 切换)",
484 ProviderAlreadyOnFmt: "已经在使用供应商 %s",
485 ProviderUnknownFmt: "未知供应商 %q",
486 ProviderPickLabel: "选择 %s 的一个模型",
487 ProviderNoModelsFmt: "供应商 %s 没有已配置的模型",
488
489 // 自更新
490 UpgradeChecking: "正在检查更新…",
491 UpgradeChannelDeprecated: "发布渠道已停用;将使用最新正式版。",
492 UpgradeDevBuild: "开发版本无法自更新",
493 UpgradeFetchFailed: "检查更新失败:%v",
494 UpgradeInvalidVersion: "远程版本不是有效的 semver",
495 UpgradeAlreadyLatest: "已是最新版本。",
496 UpgradeForcing: "强制重新安装当前版本…",
497 UpgradeAvailableFmt: "当前:%s → 最新:%s",
498 UpgradeNoAssetFmt: "未找到 %s 的安装包",
499 UpgradeDownloadingFmt: "正在下载 %s(%s)…",
500 UpgradeDownloadFailed: "下载失败:%v",
501 UpgradeVerifying: "正在校验 SHA256…",
502 UpgradeChecksumFailed: "无法获取校验文件:%v",
503 UpgradeChecksumMismatchFmt: "SHA256 不匹配:得到 %s,期望 %s",
504 UpgradeChecksumNotFoundFmt: "SHA256SUMS 中未找到 %s",
505 UpgradeExtractFailed: "解压二进制文件失败:%v",
506 UpgradeApplying: "正在替换二进制文件…",
507 UpgradeApplyFailed: "应用更新失败:%v",
508 UpgradeSuccessFmt: "已更新 %s → %s",
509
510 ReportNoPending: "没有待处理的 CLI 崩溃报告。",
511 ReportHeaderFmt: "CLI 崩溃报告 %s",
512 ReportCapturedFmt: "捕获时间:%s",
513 ReportPreviewOnlyFmt: "当前仅预览。运行 `reasonix report send %s` 可发送这份报告。",
514 ReportSendPrompt: "将这份已脱敏报告发送到 crash.reasonix.io?",
515 ReportKept: "报告已保留在本地。",
516 ReportDeletedFmt: "已删除 CLI 崩溃报告 %s。",
517 ReportSentFmt: "已发送 CLI 崩溃报告 %s。",
518 ReportConfigFailedFmt: "无法加载网络配置:%v",
519 ReportUploadFailedFmt: "报告上传失败;本地报告已保留:%v",
520 ReportSentDeleteFailedFmt: "报告已发送,但无法删除本地副本:%v",
521 ReportUsageBody: `用法:
522 reasonix report 预览最新本地报告并确认是否发送
523 reasonix report list 列出本地 CLI 崩溃报告
524 reasonix report show [ID] 预览报告(省略 ID 时使用最新一份)
525 reasonix report send [ID] 发送已审阅报告,成功后删除本地副本
526 reasonix report delete [ID] 不发送,直接删除本地报告`,
527
528 CLITelemetryConsentNotice: "Reasonix 可以向 crash.reasonix.io 发送匿名、完全不含内容的 CLI 使用统计:随机安装 ID、版本、操作系统和固定质量分桶。绝不会发送 prompt、回答、代码、路径、模型或工具内容、环境变量。之后可运行 `reasonix config telemetry off` 关闭。",
529 CLITelemetryConsentPrompt: "允许发送匿名 CLI 使用统计吗?",
530 CLITelemetryConsentInvalid: "请输入 y 或 n。",
531 CLITelemetryConsentSaveFailedFmt: "由于无法保存偏好设置,CLI 使用统计仍保持关闭:%v",
532 CLITelemetryConsentCleanupFailedFmt: "CLI 使用统计已关闭,但无法删除待发送统计:%v",
533
534 UsageBody: `reasonix — 由配置和插件驱动的 coding agent(多模型)
535
536 用法:
537 reasonix [--model NAME] [-c|--continue] [-r|--resume [QUERY]] [--permission-mode MODE] [--effort LEVEL] [--add-dir PATH] 交互式会话
538 reasonix -p|--print [--model NAME] [--output-format text|json|stream-json] [--allowed-tools RULES] [--add-dir PATH] <task>
539 reasonix run [--model NAME] [--max-steps N] [-c|--continue] [--resume PATH] [--copy] [--output-format FORMAT] <task>
540 reasonix run --events-jsonl [--model NAME] <task> 输出脱敏结构化事件 JSONL
541 reasonix review [--base BRANCH] [--commit SHA] [--model NAME] AI 代码审查(基于本地 diff)
542 reasonix serve [--model NAME] [--addr HOST:PORT] [--auth none|token|password] [--token STR] [--password STR] [--hash-password] 通过 HTTP+SSE 提供服务(支持可选认证)
543 reasonix acp [--model NAME] 通过 stdio 提供 Agent Client Protocol(也可用:reasonix --acp)
544 reasonix setup [path] 交互式配置向导;生成 reasonix.toml(及 .env)
545 reasonix config reasoning-language [auto|zh|en] 配置可见思考语言
546 reasonix config compact-ratio [--local] [65..85] 配置自动压缩阈值
547 reasonix config telemetry [auto|on|off] 配置不含内容的 CLI 使用统计
548 reasonix report [list|show|send|delete] [ID] 审阅并明确发送本地 CLI 崩溃报告
549 reasonix mcp <add|remove|list|import> 管理 reasonix.toml 里的 MCP 服务器
550 reasonix subagent <list|create|edit|delete|try|run> 管理和运行隔离子智能体 profile
551 reasonix init 查看如何生成项目记忆(AGENTS.md)
552 reasonix doctor [--json] 输出脱敏的本地诊断信息
553 reasonix doctor session <branch-id> [--zip] [--out PATH] 导出会话冲突诊断 zip
554 reasonix session list --json [--dir PATH] 为机器客户端列出脱敏会话
555 reasonix session show|status <machine-session-id> --json [--dir PATH] 查询单个脱敏会话
556 reasonix session recovery [<machine-session-id>] --json [--dir PATH] 查询脱敏恢复状态
557 reasonix hook list|status --json [--dir PATH] 查看脱敏 Hook 状态
558 reasonix task list|show|status|events|stop|cancel|monitor|tmux --json [--dir PATH]
559 查看或控制脱敏 Task
560 reasonix bot start|doctor|weixin-login 多渠道 IM bot 网关
561 reasonix upgrade [--check] [--force] 更新到最新正式版(别名:reasonix update)
562 reasonix completion bash|zsh|fish 打印 shell 补全脚本到 stdout
563 reasonix version [--verbose|--json] 打印版本(单行)或构建元信息
564 reasonix --version | -v 单行版本(脚本安全)
565 reasonix help
566
567 示例:
568 reasonix
569 reasonix --continue
570 reasonix --resume provider-config
571 reasonix run "把 main.go 里的 TODO 实现掉"
572 reasonix run --model mimo-pro "给这个函数补单元测试"
573 reasonix -p "总结这个仓库" --output-format json
574 reasonix subagent run review "审查当前改动"
575 echo "解释这段代码" | reasonix run
576
577 配置:
578 优先级:flag > ./reasonix.toml > <Reasonix home>/config.toml > 内置默认值
579 密钥通过 api_key_env 从环境变量注入(如 DEEPSEEK_API_KEY)。
580 运行 'reasonix setup' 生成配置;详见 docs/SPEC.md。
581 `,
582 }
583
583 lines GO