| 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 |