package i18n // Chinese is the zh-Hans catalogue. Keep the %s placeholders in the same order // as English unless a phrase genuinely demands re-ordering — call sites pass // arguments positionally and won't reshuffle. var Chinese = Messages{ Subtitle: "配置与插件驱动的 coding agent", WelcomeTitleFmt: "欢迎使用 %s", NoConfigYet: "还没有配置 — 现在来设置一下吧。", StartingChatFmt: "正在启动 %s…", SetKeyHint: "设置好 API key 后运行 `reasonix`。", ConfigLabel: "配置", ModelsLabel: "模型", ConfigNotFound: "未找到 — 使用内置默认值", ConfigErrorFmt: "%s — 错误:%v", NoKey: "未设置 key", Ready: "已就绪", GetStarted: "开始使用", StepScaffold: "生成 reasonix.toml", StepSetKey: "设置 API key", InitHint: "项目记忆(AGENTS.md)在会话内由模型生成:运行 `reasonix`,然后 `/init` —— 模型会分析代码库并写入。配置请用 `reasonix setup`。", StepSetKeyHint: "运行 `reasonix setup`,或 export DEEPSEEK_API_KEY=…", StepChatDesc: "交互式会话", StepRunDesc: "执行单次任务", HelpFooter: "reasonix help · 查看全部命令", ChatTip: "对话上下文将跨轮保留。输入 'exit' 或按 Ctrl-D 退出。", TurnCancelled: "已取消 — 回到提示符", NoSessionToResume: "没有可恢复的会话 — 用 `reasonix` 开一个新的", ResumeRequiresTTY: "--resume 需要交互式终端;用 --continue 直接恢复最近一次", PickSessionLabel: "恢复哪个会话?", ResumeListHeader: "会话(/resume 切换)", ResumeBusy: "请先完成或取消当前这一轮再恢复会话", ResumeBadIndexFmt: "请选择 1–%d 的会话(用 /resume 查看列表)", ResumeAlreadyActive: "已在该会话中", ResumedTitle: "已恢复会话", RenameUsage: "用法:/rename <新名称> 或 /rename <序号> <新名称>", RenameNoSession: "当前没有活跃会话可重命名", RenameDoneFmt: "会话已重命名为 %q", ResumePickTitle: "选择要恢复的会话", ResumePickHint: "↑/↓ 移动 · Enter 恢复 · Esc 取消", ChatThinking: "思考中…", ChatThoughtForFmt: "思考了 %d 秒", ChatStatusThinkingFmt: "%s 思考中… (%d 秒 · Esc 取消)", ChatToolWorkingFmt: "%s 运行中 · %d 秒", ChatStatusRetryingFmt: "%s 正在重试 (%d/%d)… (Esc 取消)", ChatStatusCancellingFmt: "%s 正在停止… (%d 秒 · Ctrl+C 退出)", ChatStatusIdle: "就绪", ChatStatusYoloIdle: "已跳过工具批准", ChatStatusCycleHint: "shift+tab 切换计划 · ctrl+y yolo", ChatStatusCacheNowFmt: "本次命中 %s", ChatStatusCacheAvgFmt: "平均 %s", ChatStatusPlanApproval: "Enter/y 批准并执行 · n/Esc 继续规划 · PgUp/PgDn/Ctrl+Home/End 滚动", PlanApprovalPrompt: "计划已生成(见上方)— Enter/y 批准执行,n/Esc 继续规划", ChatStatusToolApproval: "1 本次允许 · 2 本会话允许此范围 · 提供时 3/4 为前缀或保存 · n/Esc 拒绝 · Ctrl-C 取消本轮", AskTypeSomething: "自己输入", AskTypingHint: "输入后按 Enter 确认", AskChatInstead: "先不选择,直接回复", ChatStatusQuestion: "↑/↓ 选 · 数字快选 · 空格多选 · Enter 确认 · ←/→ 切换问题 · Esc 取消", StatusResumePicker: "↑/↓ 移动 · Enter 恢复 · Esc 取消", AskSubmitTitle: "提交答案", AskUnanswered: "(未答)", AskSubmitHint: "Enter 提交 · ← 返回修改", ToolApprovalPromptFmt: "需要你的许可\n\n将调用工具 %s%s。\n%s\n%s", ToolApprovalChoices: "1. 本次允许\n2. 本会话允许 %s\n3. 总是允许 %s(保存到配置)\n4. 拒绝\n选择 [1/2/3/4](兼容 y/a/p/n)", BashPrefixChoices: "1. 本次允许\n2. 本会话允许 %s\n3. 总是允许 %s(保存到配置)\n4. 拒绝\n选择 [1/2/3/4](兼容 y/a/p/n)", PlanModeReadOnlyCommandChoices: "1. 本次信任\n2. 本会话信任此前缀\n3. 总是在计划模式信任此前缀(保存到配置)\n4. 拒绝\n选择 [1/2/3/4](兼容 y/a/p/n)", FreshHumanApprovalChoices: "1. 本次允许\n2. 拒绝\n选择 [1/2](兼容 y/n)", SandboxEscapeApprovalChoices: "1. 允许一次\n2. 本会话使用真实环境\n3. 拒绝\n选择 [1/2/3](兼容 y/a/n)", ApprovalNeededFmt: "需要审批:%s", ApprovalNeededWithSubjectFmt: "需要审批:%s %s", ToolApprovalSourceFmt: "来源: %s", ToolApprovalBuiltIn: "内置工具", ToolApprovalImageUse: "将读取提供的图片用于图像理解。", ApprovalToolLabelBash: "bash", ApprovalToolLabelEditFile: "编辑文件", ApprovalToolLabelWriteFile: "写入文件", ApprovalToolLabelMultiEdit: "批量编辑", ApprovalToolLabelMoveFile: "移动文件", ApprovalToolLabelWebFetch: "读取网页", ApprovalToolLabelRunSkill: "运行技能", ApprovalToolLabelRemember: "保存记忆", ApprovalToolLabelForget: "删除记忆", ApprovalToolLabelSandboxEscape: "bash 沙箱降级审批", ApprovalToolLabelPlanModeReadOnly: "计划模式只读命令", MemoryApprovalSaveUpdate: "保存/更新记忆", MemoryApprovalBodyLabel: "正文", MemoryApprovalArchiveFmt: "归档记忆 %q", PlanModeMCPTrustMetadataMissing: "这个 MCP 工具没有暴露足够的元数据,无法记住只读信任决策。", PlanModeMCPTrustSubjectFmt: "将 MCP %s/%s 作为计划/研究只读工具信任", PlanModeMCPTrustReason: "这个 MCP 工具声明自己是只读的,但外部只读提示需要你确认后,计划模式才能使用。选择总是允许可为后续计划和只读研究记住这份信任。", PlanModeMCPTrustDeclined: "用户拒绝信任这个 MCP 只读提示;不要重试它,请继续使用其它已信任的只读工具,或询问用户希望如何继续。", PlanModeBashTrustSubjectFmt: "在计划模式中信任 %q 为只读命令前缀\n命令:%s", PlanModeBashTrustReason: "这条 bash 命令不在 Reasonix 内置只读集合中。只有在确认这个精确前缀用于计划和研究时是只读的,才应批准。自动/YOLO 审批不能回答这个信任提示。", PlanModeBashTrustDeclined: "用户拒绝将这条 bash 命令信任为计划模式只读命令;不要重试它,请继续使用其它已信任的只读工具,或询问用户希望如何继续。", SandboxEscapeSubjectFallback: "仅本次不进沙箱运行 shell 命令", SandboxEscapeSubjectPrefix: "仅本次不进沙箱运行:", SandboxEscapeWrapReason: "Windows 沙箱无法包装这条命令。是否仅本次不进 OS 沙箱运行?这会只对此命令绕过 OS 沙箱。", SandboxEscapeRuntimeReason: "Windows 沙箱启动这条命令时失败。是否仅本次不进 OS 沙箱运行?这会只对此命令绕过 OS 沙箱。", SandboxEscapeDeclined: "用户拒绝在没有 OS 沙箱的情况下运行这条命令;不要不进沙箱重试,请询问用户希望如何继续。", ApprovalToolLabelConfigWrite: "Reasonix 配置写入审批", ConfigWriteSubjectPrefix: "写入 Reasonix 配置:", ConfigWriteReason: "这次写入的目标是工作区之外的 Reasonix 托管配置文件。它可以改变后续会话的模型服务商、沙箱规则、权限和 MCP 服务器,因此需要你的明确批准。", ConfigWriteDeclined: "用户拒绝了这次 Reasonix 配置写入;不要重试,请询问用户希望如何继续。", ConfigWriteApprovalChoices: "1. 允许一次\n2. 本会话允许\n3. 拒绝\n选择 [1/2/3](兼容 y/a/n)", PermissionSavedFmt: "授权已保存到 %s:%s", PermissionAlreadyAllowedFmt: "授权已由 %s 中的规则覆盖:%s", PermissionSaveFailedFmt: "保存授权 %s 失败:%v", MCPReadOnlyTrustSavedFmt: "MCP 只读信任已保存到 %s:%s/%s", MCPReadOnlyTrustAlreadyFmt: "MCP 只读信任已保存在 %s:%s/%s", MCPReadOnlyTrustFailedFmt: "保存 MCP 只读信任 %s/%s 失败:%v", PlanModeReadOnlyCommandTrustSavedFmt: "计划模式只读命令信任已保存到 %s:%s", PlanModeReadOnlyCommandTrustAlreadyFmt: "计划模式只读命令信任已保存在 %s:%s", PlanModeReadOnlyCommandTrustFailedFmt: "保存计划模式只读命令信任 %s 失败:%v", DiffFoldedFmt: "… 还有 %d 行", DiffFoldEnabledFmt: "diff 已折叠至 %d 行(/diff-fold 展开)", DiffFoldDisabled: "diff 已展开 — 显示全部行(/diff-fold 折叠)", OutputStyleNone: "没有可用的输出风格", OutputStyleHeader: "输出风格:", OutputStyleHint: "在 reasonix.toml 设置 agent.output_style 即可启用(下次会话生效)", ThemeHeader: "主题:", ThemeHint: "使用 /theme 切换", ThemeChangedFmt: "已切换主题为 %s / %s", ThemeUnknownFmt: "未知主题 %q", LanguageHeader: "语言:", LanguageHint: "使用 /language 切换", LanguageChangedFmt: "语言已设为 %s(当前解析为:%s)", CompactionWorking: "正在压缩对话…", CompactionTitle: "上下文已压缩", CompactionUnit: "条消息", CompactionAuto: "自动", CompactionManual: "手动", SlashCompactDone: "已压缩 — 旧的中段换成一段摘要,最近几轮保留原样", SlashCompactFailed: "压缩失败", SlashNewDone: "已开启新会话 — 之前的对话已存档", SlashNewFailed: "新建会话失败", SlashClearPrompt: "清空当前上下文且不保存?", SlashClearDone: "已清空当前上下文", SlashClearFailed: "清空当前上下文失败", SlashClsDone: "已清屏(LLM 上下文保留)", SlashUnavailable: "当前构建不支持该命令", SlashUnknown: "未知命令", SlashTodoCleared: "已清除任务清单", SlashHelp: "命令:/compact · /new · /clear · /resume · /rewind · /tree · /branch · /switch · /todo · /verbose · /model(切换模型)· /effort · /theme · /language · /mcp · /skills · /plugins · /hooks · /paste-image · /memory · /memory-v5 · /migrate · /goal · /remember · /quit · /help · 以及 skills(/init、/explore …)", SkillPickerTitle: "Skills", SkillPickerAvailableFmt: "%d 个可用", SkillPickerMatchingFmt: "%d 个匹配 · 共 %d 个", SkillPickerHint: "↑↓ 移动 · Space 开关 · Enter 保存 · / 搜索 · s 来源 · r 重新扫描 · Esc 取消", SkillPickerDetailHint: "↑↓ 移动 · Enter 选择 · Space 开关 · Esc 返回", SkillPickerSearchEmpty: "没有匹配的 skill", SkillPickerSearchPrompt: "搜索: ", SkillPickerSearchPlaceholder: "搜索 skills...", SkillPickerSourceTitle: "来源", SkillPickerSourceActiveFmt: "%d 个有效", SkillPickerSourceHint: "↑↓ 移动 · Enter 查看技能 · d 诊断 · s skills · r 重新扫描 · Esc 关闭", SkillPickerDiagHidden: "d 展开诊断", SkillPickerDiagShown: "d 收起诊断", SkillPickerBuiltinSource: "内置", SkillPickerRescanned: "已重新扫描 skills", SkillPickerNoDescription: "(无描述)", SkillPickerScopeProject: "项目", SkillPickerScopeCustom: "自定义", SkillPickerScopeGlobal: "全局", SkillPickerScopeBuiltin: "内置", SkillPickerSubagent: "子代理", SkillPickerAvailableLabel: "可用", SkillPickerDisabledLabel: "关闭", SkillPickerNoChanges: "Skills 对话框已关闭:没有更改", SkillPickerSourceSkillsHint: "↑↓ 移动 · Space 开关 · Enter 详情 · Esc 返回来源", SkillPickerSourceSkillsEmpty: "这个来源下没有 skill", SkillPickerActionToggle: "切换启用状态", SkillPickerActionDelete: "删除 skill", SkillPickerDeleteTitleFmt: "删除 skill /%s?", SkillPickerDeleteConfirm: "删除", SkillPickerDeleteCancel: "取消", SkillPickerDeleteHint: "Enter 确认 · y 删除 · n/Esc 取消", SkillPickerDeletedFmt: "已删除 skill %s", SkillPickerMoreAboveFmt: "↑ 上方还有 %d 个", SkillPickerMoreBelowFmt: "↓ 下方还有 %d 个", SkillPickerTokenFmt: "~%d tok", SkillPickerDetailMetaFmt: "范围: %s 运行方式: %s", SkillPickerSkillsUnit: "个 skill", SkillPickerLinesUnit: "行", SkillPickerStatusLabel: "技能选择器", SkillPickerStatusOK: "有效", SkillPickerStatusMissing: "缺失", SkillPickerStatusNotDir: "非目录", SkillPickerStatusUnreadable: "无权限", SlashPromptEmpty: "该 MCP prompt 没有返回可发送的内容", SlashMCPNone: "没有配置 MCP 服务器 — 在 reasonix.toml 加一个 [[plugins]] 条目", CtrlCQuitHint: "再按一次 Ctrl+C 退出", CompHintSlash: "↑/↓ 移动 · Tab/Enter 选中 · Esc 关闭", CompHintFile: "↑/↓ 移动 · Tab/Enter 进入文件夹或选中文件 · Esc 关闭", MouseCopiedHint: "已复制到剪贴板", MouseCaptureOnHint: "鼠标接管已开启 — 应用内拖拽选中/滚动条/滚轮生效", MouseCaptureOffHint: "鼠标接管已关闭 — 由终端原生处理选中和右键菜单", MouseCaptureTag: "终端原生鼠标", ShellExecEmpty: "用法:!<命令> (例如 !ls -la)", ShellExecFailedFmt: "Shell 命令执行失败:%v", ShellExecTimeoutFmt: "Shell 命令超时(>%s)", ShellModeHint: "Enter 执行 Shell · Esc 取消 · 点击输出展开", CmdNew: "开启新会话并保存历史", CmdClear: "丢弃当前上下文", CmdCls: "清屏(保留 LLM 上下文)", CmdCompact: "压缩上下文", CmdRewind: "回滚到更早的一轮", CmdTree: "查看对话分支树", CmdBranch: "创建对话分支", CmdSwitchBranch: "切换对话分支", CmdResume: "恢复已保存的会话", CmdRename: "重命名会话", CmdModel: "切换模型", CmdWorkMode: "切换工作模式", CmdMemory: "查看记忆文件", CmdMigrate: "重试旧数据迁移", CmdGoal: "设置或清除当前目标", CmdRemember: "保存一条记忆", CmdForget: "归档一条已存记忆", CmdMcp: "MCP 服务器", CmdHooks: "管理 hooks", CmdPlugins: "管理插件包", CmdPasteImage: "粘贴剪贴板图片", CmdOutputStyle: "列出输出风格", CmdTheme: "切换 CLI 主题", CmdLanguage: "切换 CLI 语言", CmdSkill: "管理 skills", CmdVerbose: "切换 thinking 原文显示", CmdReloadCmd: "重载自定义命令", CmdDiffFold: "切换 diff 折叠/展开", CmdSandbox: "查看沙箱状态", CmdEffort: "设置推理强度", CmdMouse: "切换鼠标接管(关闭后由终端原生处理选中/右键)", CmdAutoPlan: "配置自动计划模式", CmdReasonLang: "设置可见思考语言", CmdMemoryV5: "切换 Memory v5", CmdHelp: "查看命令列表", CmdTodo: "清除任务清单", CmdQuit: "退出会话", CmdCopy: "选择回复复制到剪贴板", CmdExport: "将会话导出为 Markdown", SlashCopyDone: "已复制到剪贴板", SlashCopyEmpty: "没有可复制的助手回复", SlashCopyListHeader: "选择要复制的回复:", SlashExportDoneFmt: "会话已导出到 %s", SlashExportEmpty: "没有可导出的消息", ArgSkillList: "列出 skills", ArgSkillShow: "查看 skill 内容", ArgSkillNew: "新建一个 skill", ArgSkillPaths: "显示发现路径", ArgMcpAdd: "连接一个服务器", ArgMcpRemove: "断开一个服务器", ArgMcpList: "显示已配置的服务器", ArgMcpConnected: "已连接", ArgHooksList: "列出生效的 hooks", ArgHooksTrust: "信任本项目的 hooks", ArgModelCurrent: "当前", ArgEffortAuto: "使用模型默认值", ArgEffortLow: "较轻推理", ArgEffortMedium: "均衡推理", ArgEffortHigh: "较深推理", ArgEffortXHigh: "超高推理", ArgEffortMax: "最高推理", ArgThemeCurrent: "当前", ArgLanguageAuto: "从 REASONIX_LANG / 系统 locale 自动检测", ArgLanguageEn: "English", ArgLanguageZh: "中文", ListModelsHeaderFmt: "模型(当前:%s)", ListModelsHint: "用底部的模型切换器,或输入 /model ", ListMemoryHeader: "记忆文件", ListMemorySaved: "保存的记忆", ListMemoryArchived: "归档的记忆", ListMemoryNone: "暂无记忆 — 用 “/remember <内容>” 添加,或运行 /init 生成 AGENTS.md", ListSkillsHeaderFmt: "skills(%d 个)", ListSkillsNone: "暂无 skill — 调用内置的(如 /init),或用 install_skill 创建一个", ListHooksHeaderFmt: "hooks(生效 %d 个)", ListHooksNone: "无生效 hooks — 在 .reasonix/settings.json(项目,需信任后)或 /settings.json(全局)配置", ListMcpHeader: "MCP 服务器", ListMcpNone: "未连接 MCP 服务器 — 在 reasonix.toml([[plugins]])或项目 .mcp.json 中添加", MemoryNone: "还没有加载任何记忆 — 输入 “/remember 内容” 可快速记录,也可以在项目根目录创建 REASONIX.md", MemoryLoaded: "当前已加载的记忆:", MemorySavedHeader: " 已记录的条目(用 “/forget ” 归档):", MemoryStoredUnderFmt: " 存放于 %s", MemoryEditHint: "可直接编辑记忆文档,或输入 “/remember 内容” 快速记录;文档改动会在下次会话生效", ForgetUsage: "用法:/forget — name 是 /memory 中显示的条目标识", ForgetDoneFmt: "已归档记忆:%s", QuickRememberEmpty: "没有要记录的内容", QuickRememberDoneFmt: "已记住 → %s", GoalEmpty: "目标:无 — 用 /goal <目标> 设置", GoalCurrentFmt: "目标:%s", GoalSetFmt: "目标已设置 → %s", GoalCleared: "目标已清除", ModelSwitchUnavailable: "本会话不支持切换模型", ModelSwitchBusy: "请先完成或取消当前这一轮再切换模型", ModelAlreadyOnFmt: "已经在使用 %s", ModelSwitchingFmt: "正在切换到 %s…", ModelSwitchedFmt: "已切换到 %s(会保留当前对话,但提示词缓存会重新计算)", ModelListHeader: "模型(/model 切换)", RuntimeSwitchPending: "请等待当前运行时切换完成", WorkModeStatusFmt: "工作 %s", WorkModeListHeaderFmt: "工作模式(当前:%s)", WorkModeListHint: "使用 /work-mode economy|balanced|delivery 切换(/profile 为兼容别名)", WorkModeEconomyDesc: "降低 Token 消耗,按需连接可选工具源", WorkModeBalancedDesc: "完整工具面,由模型判断所需工作量", WorkModeDeliveryDesc: "强调完整验证和交付,增强 skill 与插件调用", WorkModeUsage: "用法:/work-mode economy|balanced|delivery", WorkModeSwitchUnavailable: "本会话不支持切换工作模式", WorkModeSwitchBusy: "请先完成或取消当前工作,再切换工作模式", WorkModeAlreadyOnFmt: "当前已经是 %s 工作模式", WorkModeSwitchingFmt: "正在切换到 %s 工作模式…", WorkModeSwitchedFmt: "已切换到 %s 工作模式(保留当前对话,但提示词缓存会重新计算)", RewindNone: "暂无可回滚的内容", RewindCodeConversation: "代码 + 对话", RewindConversationOnly: "仅对话", RewindCodeOnly: "仅代码", RewindFork: "从这里分叉(保留当前代码)", RewindSummarizeFrom: "总结这一轮之后的内容", RewindSummarizeUpto: "总结到这一轮为止", RewindPickTitle: "⟲ 回滚 — 选择一轮", RewindPickHint: "↑/↓ 移动 · Enter 选择 · Esc 关闭", RewindRestoreTitleFmt: "⟲ 恢复到第 %d 轮 ", RewindApplyHint: "↑/↓ · Enter 应用 · Esc 返回", RewindEmpty: "(空)", SelectProvidersLabel: "选择要启用的 provider", EnterAPIKeysHeader: "输入 API key(回车跳过、稍后再设):", MissingKeyIntro: "reasonix.toml 已配置好 — 只差一个 API key 就可以开始。", WroteFileFmt: "已写入 %s", SetupComplete: "设置完成。", SetupCancelled: "设置已取消。", TryHintFmt: "试试: %s", NextHint: "下一步:设置 API key(运行 `reasonix setup` 或 export DEEPSEEK_API_KEY=...),然后运行 `reasonix run \"你的任务\"`。", ConfirmReconfigureFmt: "%s 已存在。重新配置并覆盖?", KeepingExisting: "保留原配置不变。", NotOverwritingFmt: "%s 已存在,不覆盖", SetupManagerTitle: "供应商配置", SetupAddOpenAI: "添加 OpenAI 兼容供应商", SetupAddAnthropic: "添加 Anthropic 兼容供应商", SetupProviderExistsFmt: "供应商 %q 已存在。请进入现有供应商管理来编辑模型或设置。", SetupSaveExit: "保存并退出", SetupSaveExitDesc: "写入当前暂存的修改", SetupCancel: "取消", SetupCancelDesc: "放弃全部暂存修改", SetupModelsUnit: "个模型", SetupKeySet: "已设置 Key", SetupKeyMissing: "缺少 Key", SetupDefaultBadge: "默认", SetupProviderActionsFmt: "管理 %s", SetupEditProvider: "编辑供应商", SetupUpdateKey: "更新 API Key", SetupTestRefresh: "测试连接 / 刷新模型列表", SetupSetDefault: "设置默认模型", SetupRemoveProvider: "删除供应商", SetupBack: "返回", SetupPromptModels: "模型列表(用逗号分隔)", SetupSharedKeyWarningFmt: "%s 已被 %s(%s)使用。确认共享这项凭据?", SetupPromptAPIKeyFmt: "输入 %s 的新值", SetupSelectDefaultModel: "选择默认模型", SetupConfirmRemoveFmt: "确认删除供应商 %s?", SetupSummaryTitle: "待保存修改:", SetupSummaryAddedFmt: "新增:%s", SetupSummaryEditedFmt: "编辑:%s", SetupSummaryRemovedFmt: "删除:%s", SetupSummaryDefaultFmt: "默认模型:%s", SetupSummaryKeysFmt: "更新 API Key:%d 项", SetupSummaryNoChanges: "没有修改", SetupConfirmSave: "保存这些修改?", SetupConcurrentChangeFmt: "setup 打开期间配置已被修改(%s)。本次暂存修改未写入,请重新运行 setup 检查最新配置。", // model fetching FetchingModelsFmt: "正在获取 %s 的模型列表...", FetchModelsSuccessFmt: "发现 %d 个 %s 模型", FetchModelsFailedFmt: "获取 %s 模型失败: %v", FetchModelsUsingPresetsFmt: "无法在线获取 %s 的模型,使用预设列表", FamilyKeyPromptFmt: "输入 %s 的 API key 以获取可用模型(回车跳过):", SelectModelsLabel: "选择要启用的 %s 模型", NoModelsAvailableFmt: "%s: 没有可用模型,跳过", CustomFetchEmpty: "/models 返回为空,回退到手动输入", AnthropicFetchEmpty: "/models 返回为空 — Anthropic 兼容服务通常不提供此端点,回退到手动输入", SkipStaleCustomEntryFmt: "跳过 reasonix.toml 里的旧 %q 条目(指向 %s)— 请手动从 [[providers]] 里删除", APIKeyAlreadySetFmt: "复用已设置的 %s", APIKeyResetPromptFmt: "重新输入 %s?", InvalidAPIKeyEnvFmt: "%q 不是有效的 API Key 变量名。只能使用字母、数字和下划线(例如 MY_PROVIDER_API_KEY);这里不要填写模型名。", RepairedAPIKeyEnvFmt: "provider %s:已将无效的 API Key 变量名 %q 修复为 %q", // custom provider CustomProviderLabel: "自定义模型", CustomProviderDesc: "添加第三方 OpenAI 兼容模型", CustomAddMethodLabel: "添加第三方 OpenAI 兼容模型 - 选择添加方式", CustomMethodManual: "手动输入模型名称", CustomMethodURL: "从 URL 获取模型列表", CustomPromptModel: "请输入模型名称", CustomPromptBaseURL: "请输入 Base URL", CustomPromptKeyEnv: "API Key 变量名(直接回车使用默认值,不是模型名)", CustomPromptAPIKey: "请输入 API Key", CustomAddedFmt: "已添加自定义模型: %s", // Anthropic 兼容 provider AnthropicProviderLabel: "自定义模型2", AnthropicProviderDesc: "添加第三方 Anthropic 兼容模型", AnthropicAddMethodLabel: "添加第三方 Anthropic 兼容模型 - 选择添加方式", AnthropicMethodManual: "手动输入模型名称", AnthropicMethodURL: "从 URL 获取模型列表", AnthropicPromptModel: "请输入模型名称", AnthropicPromptBaseURL: "请输入 Base URL", AnthropicPromptKeyEnv: "API Key 变量名(直接回车使用默认值,不是模型名)", AnthropicPromptAPIKey: "请输入 API Key", AnthropicAddedFmt: "已添加 Anthropic 兼容模型: %s", AnthropicFetchingModelsFmt: "正在获取 %s 的模型列表...", AnthropicFetchModelsSuccessFmt: "发现 %d 个 %s 模型", AnthropicFetchModelsFailedFmt: "获取 %s 模型失败: %v", AnthropicSelectModelsLabel: "选择要启用的 %s 模型", UnknownCommandFmt: "未知命令 %q", UsageRunHint: "用法:reasonix run [--model NAME] ", ErrorPrefix: "错误:", ReconfigureOnUnknownModel: "配置的模型已不可用 —— 重新运行引导配置。", WriteConfigErr: "写入配置失败:", WriteEnvErr: "写入 .env 失败:", ProviderErrBadRequest: "请求格式错误 (HTTP 400):请求体被拒绝,通常是程序缺陷。若持续出现请反馈。", ProviderErrAuth: "认证失败 (HTTP 401):未读到 API key(缺失或未设置)。请在 .env 中配置密钥,或运行 `reasonix setup`。", ProviderErrAuthRejected: "认证失败 (HTTP 401):服务端拒绝了你的 API key。可能是 key 错误或已过期,也可能是服务端出现瞬时鉴权/额度问题——已退避重试仍失败。请稍后再试,或检查 .env 中的密钥 / 运行 `reasonix setup`。", ProviderErrInsufficientBalance: "余额不足 (HTTP 402):账户余额不足,请前往充值后重试。", ProviderErrUnprocessable: "参数错误 (HTTP 422):某个请求参数被拒绝,通常是程序缺陷。若持续出现请反馈。", ProviderErrRateLimited: "请求速率达到上限 (HTTP 429):请求过于频繁 (TPM/RPM)。已退避重试,请放慢速率或稍后再试。", ProviderErrServer: "服务器故障 (HTTP 500):服务端内部错误。已退避重试;若持续失败请稍后再试。", ProviderErrServerBusy: "服务器繁忙 (HTTP 503):服务端负载过高。已退避重试,请稍后再试。", SelectOneHint: "(↑/↓ · Enter · q 取消;/ 搜索)", SelectManyHint: "(↑/↓ · Space · Enter · q;/ 搜索)", SelectMoreAboveFmt: " ↑ 上方还有 %d 个", SelectMoreBelowFmt: " ↓ 下方还有 %d 个", SelectSearchHint: "/ 搜索 · 输入关键词过滤 · Esc 取消搜索", CmdProvider: "切换供应商", ProviderListHeader: "供应商(/provider <名称> 切换)", ProviderAlreadyOnFmt: "已经在使用供应商 %s", ProviderUnknownFmt: "未知供应商 %q", ProviderPickLabel: "选择 %s 的一个模型", ProviderNoModelsFmt: "供应商 %s 没有已配置的模型", // 自更新 UpgradeChecking: "正在检查更新…", UpgradeDevBuild: "开发版本无法自更新", UpgradeFetchFailed: "检查更新失败:%v", UpgradeInvalidVersion: "远程版本不是有效的 semver", UpgradeAlreadyLatest: "已是最新版本。", UpgradeForcing: "强制重新安装当前版本…", UpgradeAvailableFmt: "当前:%s → 最新:%s", UpgradeNoAssetFmt: "未找到 %s 的安装包", UpgradeDownloadingFmt: "正在下载 %s(%s)…", UpgradeDownloadFailed: "下载失败:%v", UpgradeVerifying: "正在校验 SHA256…", UpgradeChecksumFailed: "无法获取校验文件:%v", UpgradeChecksumMismatchFmt: "SHA256 不匹配:得到 %s,期望 %s", UpgradeChecksumNotFoundFmt: "SHA256SUMS 中未找到 %s", UpgradeExtractFailed: "解压二进制文件失败:%v", UpgradeApplying: "正在替换二进制文件…", UpgradeApplyFailed: "应用更新失败:%v", UpgradeSuccessFmt: "已更新 %s → %s", UsageBody: `reasonix — 由配置和插件驱动的 coding agent(多模型) 用法: reasonix [--model NAME] [-c|--continue] [--resume] [--copy] [--yolo] [--dir PATH] 交互式会话(多轮;-c 恢复最近一次,--resume 选择一个,--copy 在副本中继续) reasonix run [--model NAME] [--max-steps N] [-c|--continue] [--resume PATH] [--copy] 执行单次任务后退出 reasonix review [--base BRANCH] [--commit SHA] [--model NAME] AI 代码审查(基于本地 diff) reasonix serve [--model NAME] [--addr HOST:PORT] [--auth none|token|password] [--token STR] [--password STR] [--hash-password] 通过 HTTP+SSE 提供服务(支持可选认证) reasonix acp [--model NAME] 通过 stdio 提供 Agent Client Protocol(也可用:reasonix --acp) reasonix setup [path] 交互式配置向导;生成 reasonix.toml(及 .env) reasonix config auto-plan [off|on] 配置自动计划模式 reasonix config memory-v5 [off|observe|compact|on|status] 配置 Memory v5 reasonix config reasoning-language [auto|zh|en] 配置可见思考语言 reasonix mcp 管理 reasonix.toml 里的 MCP 服务器 reasonix subagent 管理和运行隔离子智能体 profile reasonix init 查看如何生成项目记忆(AGENTS.md) reasonix doctor [--json] 输出脱敏的本地诊断信息 reasonix doctor session [--zip] [--out PATH] 导出会话冲突诊断 zip reasonix bot start|doctor|weixin-login 多渠道 IM bot 网关 reasonix upgrade [--check] [--force] 自更新到最新版本(也可用:reasonix update) reasonix version reasonix help 示例: reasonix reasonix --continue reasonix run "把 main.go 里的 TODO 实现掉" reasonix run --model mimo-pro "给这个函数补单元测试" reasonix subagent run review "审查当前改动" echo "解释这段代码" | reasonix run 配置: 优先级:flag > ./reasonix.toml > /config.toml > 内置默认值 密钥通过 api_key_env 从环境变量注入(如 DEEPSEEK_API_KEY)。 运行 'reasonix setup' 生成配置;详见 docs/SPEC.md。 `, }