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