esengine--deepseek-reasonix
511 行
32 KiB
Go
511 行
32 KiB
Go
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 <n> 切换)",
|
||
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 <auto|light|dark|style> 切换",
|
||
ThemeChangedFmt: "已切换主题为 %s / %s",
|
||
ThemeUnknownFmt: "未知主题 %q",
|
||
LanguageHeader: "语言:",
|
||
LanguageHint: "使用 /language <auto|en|zh> 切换",
|
||
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 <provider/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(项目,需信任后)或 <Reasonix home>/settings.json(全局)配置",
|
||
ListMcpHeader: "MCP 服务器",
|
||
ListMcpNone: "未连接 MCP 服务器 — 在 reasonix.toml([[plugins]])或项目 .mcp.json 中添加",
|
||
|
||
MemoryNone: "还没有加载任何记忆 — 输入 “/remember 内容” 可快速记录,也可以在项目根目录创建 REASONIX.md",
|
||
MemoryLoaded: "当前已加载的记忆:",
|
||
MemorySavedHeader: " 已记录的条目(用 “/forget <name>” 归档):",
|
||
MemoryStoredUnderFmt: " 存放于 %s",
|
||
MemoryEditHint: "可直接编辑记忆文档,或输入 “/remember 内容” 快速记录;文档改动会在下次会话生效",
|
||
ForgetUsage: "用法:/forget <name> — name 是 /memory 中显示的条目标识",
|
||
ForgetDoneFmt: "已归档记忆:%s",
|
||
QuickRememberEmpty: "没有要记录的内容",
|
||
QuickRememberDoneFmt: "已记住 → %s",
|
||
GoalEmpty: "目标:无 — 用 /goal <目标> 设置",
|
||
GoalCurrentFmt: "目标:%s",
|
||
GoalSetFmt: "目标已设置 → %s",
|
||
GoalCleared: "目标已清除",
|
||
ModelSwitchUnavailable: "本会话不支持切换模型",
|
||
ModelSwitchBusy: "请先完成或取消当前这一轮再切换模型",
|
||
ModelAlreadyOnFmt: "已经在使用 %s",
|
||
ModelSwitchingFmt: "正在切换到 %s…",
|
||
ModelSwitchedFmt: "已切换到 %s(会保留当前对话,但提示词缓存会重新计算)",
|
||
ModelListHeader: "模型(/model <provider/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] <task>",
|
||
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] <task> 执行单次任务后退出
|
||
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 <add|remove|list|import> 管理 reasonix.toml 里的 MCP 服务器
|
||
reasonix subagent <list|create|edit|delete|try|run> 管理和运行隔离子智能体 profile
|
||
reasonix init 查看如何生成项目记忆(AGENTS.md)
|
||
reasonix doctor [--json] 输出脱敏的本地诊断信息
|
||
reasonix doctor session <branch-id> [--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 > <Reasonix home>/config.toml > 内置默认值
|
||
密钥通过 api_key_env 从环境变量注入(如 DEEPSEEK_API_KEY)。
|
||
运行 'reasonix setup' 生成配置;详见 docs/SPEC.md。
|
||
`,
|
||
}
|