Files
DeepSeek-Reasonix/internal/base/i18n/messages_zh_tw.go
T
YHH 23f0a011c4 fix(config): workspace configuration only narrows the user's settings (#11208)
A workspace's reasonix.toml and .reasonix/settings.json are read as
untrusted input.

- [sandbox]: bash may only move to enforce and network only to false;
  forbid_read and denied_domains add to the user's; allow_write entries
  and workspace_root apply only when they resolve inside the workspace.
  ${VAR} in sandbox and proxy paths expands from the process environment
  only.
- [permissions] mode, allow and allow_dynamic_bash, [network] proxy
  settings and [desktop] default_tool_approval_mode are read from the
  user config only; deny and ask add to the user's. An "always allow"
  given in a workspace is stored under the Reasonix home
  (project-grants.json) rather than in the checkout.
- Programs a workspace declares (hooks, language servers, providers,
  tools.search.rg_path, tools.shell.path, [browser], tools.system_one
  endpoints and the local Laya runtime) run only once approved for that
  folder. An approval records the declaration and a digest of the files
  it names, is kept under the Reasonix home, and is checked again before
  each start; a change refuses the start with ErrProjectProgramChanged.
  `reasonix trust` lists and approves them, and saving hooks from the
  hooks page approves the block written. Model settings that named only
  a held-back provider fall back to the user's choice.
- Single program paths may not point into the workspace, a temporary
  directory, an allow_write root or a toolchain cache.
- Sandbox write roots and host write directories keep the identity they
  had when first granted; a root whose identity changed is dropped with
  sandbox.write_root_redirected or sandbox.write_root_changed. The
  host-writable directory list lives in internal/base/hostwrite.
- Every ignored value is reported as a load warning with a typed reason
  (Config.IgnoredProjectSettings); held-back programs raise the
  project_programs_awaiting_approval notice.
2026-09-28 18:21:34 -07:00

651 lines
43 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package i18n
// ChineseTraditional is the zh-Hant 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 ChineseTraditional = Messages{
WelcomeTitleFmt: "歡迎使用 %s",
NoConfigYet: "還沒有設定 — 現在來設定一下吧。",
PickWorkspaceTitle: "選擇工作目錄 · 也可以在這裡新建一個",
TrayOpen: "打開 Reasonix Studio",
TrayCloseToTray: "關掉視窗也繼續跑",
TrayQuit: "離開 Reasonix",
TrayIdle: "沒有在跑的",
TrayWorking: "%d 個在跑",
TrayAttention: "%d 個在等你",
TrayJobs: "%d 個背景工作在跑",
InitHint: "專案記憶(AGENTS.md)在會話內由模型生成:執行 `reasonix`,然後 `/init` —— 模型會分析程式碼庫並寫入。設定請用 `reasonix setup`。",
ChatTip: "對話上下文將跨輪保留。輸入 'exit' 或按 Ctrl-D 退出。",
TurnCancelled: "已取消 — 回到提示符",
InterruptedRecovery: "本輪已中斷。部分輸出會永久保留供查看;只有完整工具呼叫及結果和有界恢復摘要會進入模型下一輪。繼續或回復前請先檢查目前工作區。",
RecoveryPaused: "已暫停自動重試。Reasonix 已停止重複嘗試,並保留已完成的工作。傳送「繼續」即可開始新一輪,也可以補充要求來調整方向。",
ReceiptVerified: "沒有未經驗證的部分",
ReceiptGapsHeader: "未驗證:",
ReceiptRisksHeader: "已申報的風險:",
ReceiptUnverifiedHeader: "這一輪自己說明的:",
ReceiptMore: "另有 %d 項",
ReceiptChangedFmt: "改動 %d 個檔案",
ReceiptGapKinds: map[string]string{
"unbacked_claim": "聲稱過但帳本不支持",
"unproven_criterion": "驗收項沒有證據",
"missing_check": "預期的檢查從未通過",
"failed_verification": "驗證失敗",
"stale_verification": "驗證早於最後一次改動",
"inconclusive_verification": "跑過,但退出碼是命令裡另一段的",
"unverified_change": "有改動;沒有主機能讀作證據的檢查",
"unreviewed_change": "改動後再沒看過",
"declared_unverified": "自己申報未驗證",
},
NoSessionToResume: "沒有可恢復的會話 — 用 `reasonix` 開一個新的",
NoSessionToResumeStartingNew: "沒有可恢復的會話 — 開一個新的會話",
ResumeRequiresTTY: "--resume 需要互動式終端;用 --continue 直接恢復最近一次",
PickSessionLabel: "恢復哪個會話?",
AmbiguousResumeHint: "用上面的某個 id 重新執行 `--resume <id>`",
ResumeBusy: "請先完成或取消當前這一輪再恢復會話",
ResumeBadIndexFmt: "請選擇 1–%d 的會話(用 /resume 檢視列表)",
ResumeAlreadyActive: "已在該會話中",
ResumedTitle: "已恢復會話",
InterruptedAdjudicationPrefix: "上一輪在等待你的回答時被中斷,問題是:",
ResumePickTitle: "選擇要恢復的會話",
ResumePickHint: "↑/↓ 移動 · Enter 恢復 · Esc 取消",
ResumeRecoveryBadgeFmt: "[衝突副本 · 父會話 %s]",
ChatThinking: "思考中…",
ChatThoughtForFmt: "思考了 %d 秒",
ChatStatusThinkingFmt: "%s 思考中… (%d 秒 · %s 取消)",
TurnPhaseWorking: "工作中",
TurnPhaseChecking: "檢查中",
TurnPhaseVerifying: "驗證中",
TurnPhaseReviewing: "複審中",
CompletionSummaryBlocked: "本輪任務受阻,請查看變更詳情。",
CompletionSummaryNeedsAttention: "本輪仍有驗證或複審缺口。",
ChatToolWorkingFmt: "%s 執行中 · %d 秒",
ChatSubagentPhaseQueued: "排隊中",
ChatSubagentPhaseRunning: "執行中",
ChatSubagentPhaseReasoning: "思考中",
ChatSubagentPhaseResponding: "生成中",
ChatSubagentPhaseTool: "使用工具",
ChatSubagentPhaseRetrying: "重試中",
ChatSubagentPhaseCompleted: "已完成",
ChatSubagentPhaseFailed: "失敗",
ChatSubagentPhaseCancelled: "已取消",
ChatSubagentProgressFmt: "%s · %d 秒 · %d 秒前",
ChatSubagentProgressDoneFmt: "%s · %d 秒",
ChatSubagentPreviewLabel: "▎",
ChatStatusRetryingFmt: "%s 正在重試 (%d/%d)… (Esc 取消)",
ChatStatusCancellingFmt: "%s 正在停止… (%d 秒 · Ctrl+C 退出)",
ChatStatusCancellingViFmt: "%s 正在停止… (%d 秒)",
ChatStatusIdle: "就緒",
ChatStatusYoloIdle: "已跳過核准",
ChatStatusCycleHint: "Shift+Tab 循環詢問/自動/計畫 · Ctrl+Y YOLO",
ChatStatusCycleHintCompact: "Shift+Tab 詢問/自動/計畫 · Ctrl+Y YOLO",
ChatTurnReceiptLabel: "本輪",
ChatStatusModelLabel: "模型",
ChatStatusEffortLabel: "強度",
ChatStatusWorkLabel: "模式",
ChatStatusCacheLabel: "快取",
ChatStatusContextLabel: "上下文",
ChatStatusCompactLabel: "距壓縮",
ChatStatusJobsLabel: "任務",
ChatStatusBalanceLabel: "餘額",
ChatStatusCostLabel: "費用",
ChatStatusCacheNowFmt: "本次命中 %s",
ChatStatusCacheAvgFmt: "平均 %s",
ChatStatusPlanApproval: "1 開始執行 · 2 修改計畫 · 3 暫不執行並退出 · n/Esc 繼續規劃 · PgUp/PgDn/Ctrl+Home/End 捲動",
ChatStatusPlanApprovalVi: "1 開始執行 · 2 修改計畫 · 3 暫不執行並退出 · n 繼續規劃 · PgUp/PgDn/Ctrl+Home/End 捲動",
PlanApprovalPrompt: "計畫已生成(見上方)— 請選擇下一步操作",
ApprovalChoiceHint: "↑/↓ 選擇 · Enter 確認 · y/a/p/n 快速鍵",
PlanApprovalChoices: "1. 開始執行\n2. 修改計畫(繼續規劃)\n3. 暫不執行,退出計畫模式\n選擇 [1/2/3](y 開始執行;n/Esc 繼續規劃)",
PlanApprovalChoicesVi: "1. 開始執行\n2. 修改計畫(繼續規劃)\n3. 暫不執行,退出計畫模式\n選擇 [1/2/3](y 開始執行;n 繼續規劃)",
ChatStatusToolApproval: "1 本次允許 · 2 本會話允許此範圍 · 提供時 3/4 為前綴或儲存 · n/Esc 拒絕 · Ctrl-C 取消本輪",
ChatStatusToolApprovalVi: "1 本次允許 · 2 本會話允許此範圍 · 提供時 3/4 為前綴或儲存 · n 拒絕 · Ctrl-C 取消本輪",
AskTypeSomething: "自己輸入",
AskTypingHint: "輸入後按 Enter 確認",
AskNoteHint: "在下方為此項補充說明,Enter 確認",
AskChatInstead: "先不選擇,直接回覆",
ChatStatusQuestion: "↑/↓ 選 · 數字快選 · 空格多選 · Tab 選中並補充說明 · Enter 確認 · ←/→ 切換問題 · Esc 取消",
ChatStatusQuestionVi: "↑/↓ 選 · 數字快選 · 空格多選 · Tab 選中並補充說明 · Enter 確認 · ←/→ 切換問題 · Ctrl+C 取消",
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)",
FreshHumanApprovalChoices: "1. 本次允許\n2. 拒絕\n選擇 [1/2](相容 y/n)",
RecoveryApprovalChoices: "1. 繼續一次\n2. 換個方案",
RecoveryPlanChangeChoices: "1. 採用新計畫並繼續\n2. 不採用,讓 Auto 調整",
RecoveryPlanDecisionPrompt: "執行計畫需要你的決定",
RecoveryPlanBeforeFmt: "原計畫:%s",
RecoveryPlanAfterFmt: "新計畫:%s",
RecoveryTaskGrantChoices: "1. 繼續一次\n2. 繼續,並在本任務內允許同類操作\n3. 換個方案",
SandboxEscapeApprovalChoices: "1. 允許一次\n2. 本會話使用真實環境\n3. 拒絕\n選擇 [1/2/3](相容 y/a/n)",
NotifyTitle: "Reasonix",
NotifyTurnDone: "這一輪結束了",
NotifyTurnFailed: "這一輪失敗了",
NotifyApproval: "有操作在等你核准",
NotifyAsk: "模型問了你一個問題",
ApprovalNeededFmt: "需要核准:%s",
ApprovalNeededWithSubjectFmt: "需要核准:%s %s",
AnswerNeededFmt: "需要回答:%s",
AnswerNeededFromFmt: "需要回答(MCP %s):%s",
ToolApprovalSourceFmt: "來源: %s",
ToolApprovalBuiltIn: "內建工具",
ToolApprovalImageUse: "將讀取提供的圖片用於圖像理解。",
ApprovalToolLabelBash: "bash",
ApprovalToolLabelEditFile: "編輯檔案",
ApprovalToolLabelWriteFile: "寫入檔案",
ApprovalToolLabelMultiEdit: "批次編輯",
ApprovalToolLabelMoveFile: "移動檔案",
ApprovalToolLabelWebFetch: "讀取網頁",
ApprovalToolLabelRunSkill: "執行技能",
ApprovalToolLabelRemember: "儲存記憶",
ApprovalToolLabelForget: "刪除記憶",
ApprovalToolLabelSandboxEscape: "bash 沙箱降級核准",
MemoryApprovalSaveUpdate: "儲存/更新記憶",
MemoryApprovalBodyLabel: "正文",
MemoryApprovalArchiveFmt: "封存記憶 %q",
SandboxEscapeSubjectFallback: "僅本次不進沙箱執行 shell 命令",
SandboxEscapeSubjectPrefix: "僅本次不進沙箱執行:",
SandboxEscapeWrapReason: "Windows 不提供這條命令所需的 OS 級 Bash 沙箱。是否僅本次不受限執行?這只會對此命令繞過 OS 隔離。",
SandboxEscapeRuntimeReason: "OS 沙箱無法啟動這條命令。是否僅本次不受限執行?這只會對此命令繞過 OS 隔離。",
SandboxEscapeDeclined: "使用者拒絕在沒有 OS 沙箱的情況下執行這條命令;不要不進沙箱重試,請詢問使用者希望如何繼續。",
EgressApprovalReasonFmt: "一條 bash 命令要存取 %s,它不在 [sandbox] allowed_domains 中。是否允許?",
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",
DiffFoldedFmt: "… 還有 %d 行",
OutputStyleNone: "沒有可用的輸出風格",
ThemeHeader: "主題:",
ThemeHint: "使用 /theme <auto|light|dark|style> 切換",
ThemeChangedFmt: "已切換主題為 %s / %s",
ThemeUnknownFmt: "未知主題 %q",
LanguageHeader: "語言:",
LanguageHint: "使用 /language <auto|en|zh|zh-TW> 切換",
LanguageChangedFmt: "語言已設為 %s(目前解析為:%s)",
CurrencyHeader: "費用展示幣種:",
CurrencyHint: "使用 /currency <auto|CNY|USD> 切換",
CurrencyChangedFmt: "費用展示幣種已設為 %s(目前解析為:%s)",
RuntimeRefreshBusy: "請先完成或取消目前工作,並停止背景任務後再修改此設定",
RuntimeRefreshUnavailable: "本會話不支援重新整理執行階段",
CompactionWorking: "正在壓縮對話…",
CompactionTitle: "上下文已壓縮",
CompactionUnit: "條訊息",
CompactionAuto: "自動",
CompactionManual: "手動",
CompactionChangesKept: "處變更已保留",
CompactionBackstopped: "由主機保留",
ReadinessContinuing: "這一輪還欠東西,繼續把它做完",
ExtFormFieldsHint: "欄位將透過逐項提問收集",
ExtRunActionFmt: "執行 %s",
SlashRevokeNone: "本次會話除規則檔案外沒有額外授權。",
SlashRevokeHint: "用 /sandbox revoke <規則> 收回一項,或 /sandbox revoke all 全部收回。",
SlashRevokeUnknown: "本次會話沒有 %q 這一項授權。",
SlashRevokeDone: "已收回 %d 項,還剩 %d 項。",
SlashCompactFailed: "壓縮失敗",
SlashCompactDeclined: "暫時不用整理",
SlashNewDone: "已開啟新會話 — 之前的對話已存檔",
SlashNewFailed: "新建會話失敗",
SlashUnknown: "未知命令",
SlashUnknownSentAsMessage: "已作為普通訊息發送",
SlashTodoCleared: "已清除任務清單",
SkillPickerAvailableFmt: "%d 個可用",
SkillPickerMatchingFmt: "%d 個匹配 · 共 %d 個",
SkillPickerHint: "↑↓ 移動 · Space 開關 · Enter 儲存 · / 搜尋 · s 來源 · r 重新掃描 · Esc 取消",
SkillPickerDetailHint: "↑↓ 移動 · Enter 選擇 · Space 開關 · Esc 返回",
SkillPickerSearchEmpty: "沒有匹配的 skill",
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: "已複製到剪貼簿",
ClipboardCopyOSC52Hint: "已透過 OSC 52 請求複製 — 可能需要終端授權",
ClipboardCopyFallbackHint: "系統剪貼簿無法使用 — 已改用 OSC 52",
ClipboardTextPasteRemoteHint: "SSH 下滑鼠貼上無法讀取本機剪貼簿或 PRIMARY 選取區 — 請使用終端貼上快捷鍵或 /mouse",
ClipboardTextPasteFailedFmt: "貼上文字失敗:%v",
ClipboardImagePastingHint: "正在貼上圖片…",
ClipboardImagePasteFailedFmt: "貼上圖片失敗:%v",
MouseCaptureOnHint: "滑鼠接管已開啟 — 應用內拖拽選取/捲軸/滾輪生效",
MouseCaptureOffHint: "滑鼠接管已關閉 — 由終端原生處理選取與右鍵選單",
MouseCaptureTag: "終端原生滑鼠",
ShellWaitsForTurn: "Shell 指令在兩輪之間執行;請等這一輪結束",
StreamReloaded: "事件串流有跳躍,已從紀錄重新載入對話",
AskDeclined: "未作答",
ShellExecEmpty: "用法:!<命令> (例如 !ls -la)",
ShellExecFailedFmt: "Shell 命令執行失敗:%v",
ShellExecTimeoutFmt: "Shell 命令逾時(>%s)",
ShellModeHint: "Enter 執行 Shell · Esc 取消 · 點擊輸出展開",
CmdNew: "清空上下文並儲存歷史",
CmdCls: "清除畫面(保留 LLM 上下文)",
CmdCompact: "壓縮上下文",
CmdContext: "檢視上下文視窗、閾值與上次維護結果",
CmdGraph: "檢視本工作階段委派了什麼,以及每一項的狀態",
CmdRewind: "回滾到更早的一輪",
CmdTree: "檢視對話分支樹",
CmdBranch: "建立對話分支",
CmdBrowser: "在工作階段瀏覽器開啟網頁",
CmdSwitchBranch: "切換對話分支",
CmdResume: "恢復已儲存的會話",
CmdModel: "切換模型",
CmdStatus: "顯示工作階段狀態",
CmdVersion: "顯示已安裝版本",
CmdWorkMode: "切換執行設定",
CmdDocs: "搜尋與目前版本匹配的內建文件",
CmdMemory: "檢視指令、記憶與復原狀態",
CmdMigrate: "重試舊資料遷移",
CmdRemember: "儲存一條記憶",
CmdForget: "刪除一條已存記憶",
CmdMcp: "MCP 伺服器",
CmdRemote: "遠端 SSH 主機",
CmdHooks: "管理 hooks",
CmdPlugins: "管理插件包",
CmdPasteImage: "貼上剪貼簿圖片",
CmdOutputStyle: "列出輸出風格",
CmdTheme: "切換 CLI 主題",
CmdLanguage: "切換 CLI 語言",
CmdCurrency: "切換費用展示幣種",
CmdSkill: "管理 skills",
CmdVerbose: "切換 thinking 原文顯示",
CmdReloadCmd: "重載自定義命令",
CmdReload: "重載 agent 執行階段(工具、技能、命令、鉤子、模型供應商),保留目前會話",
CmdSandbox: "檢視沙箱狀態",
CmdEffort: "設定推理強度",
CmdMouse: "切換滑鼠接管(關閉後由終端原生處理選取/右鍵)",
CmdReasonLang: "設定可見思考語言",
CmdHelp: "檢視命令列表",
CmdWeb: "在 Web UI 中繼續目前工作階段",
CmdTodo: "清除任務清單",
CmdQuit: "退出會話",
CmdCopy: "選擇回覆複製到剪貼簿",
CmdExport: "將會話匯出為 Markdown",
SlashCopyDone: "已複製到剪貼簿",
SlashCopyEmpty: "沒有可複製的助手回覆",
SlashCopyListHeader: "選擇要複製的回覆:",
SlashExportDoneFmt: "會話已匯出到 %s",
SlashExportEmpty: "沒有可匯出的訊息",
ArgSkillShow: "檢視 skill 內容",
ArgSkillNew: "新建一個 skill",
ArgSkillPaths: "顯示發現路徑",
ArgMcpAdd: "連線一個伺服器",
ArgMcpRemove: "斷開一個伺服器",
ArgMcpConnected: "已連線",
ArgHooksList: "列出生效的 hooks",
ArgModelCurrent: "當前",
ArgEffortAuto: "使用模型預設值",
ArgEffortLow: "較輕推理",
ArgEffortMedium: "均衡推理",
ArgEffortHigh: "較深推理",
ArgEffortXHigh: "超高推理",
ArgEffortMax: "最高推理",
ArgThemeCurrent: "當前",
ArgLanguageAuto: "從 REASONIX_LANG / 系統 locale 自動偵測",
ArgLanguageEn: "English",
ArgLanguageZh: "中文",
ListModelsHeaderFmt: "模型(當前:%s)",
ListModelsHint: "用底部的模型切換器,或輸入 /model <provider/model>",
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 中新增",
MemoryEditHint: "可直接編輯記憶文件,或輸入 “/remember 內容” 快速記錄;文件變動會在下次會話生效",
ForgetUsage: "用法:/forget <name> — name 是 /memory 中顯示的條目標識",
ForgetDoneFmt: "已刪除記憶:%s",
QuickRememberEmpty: "沒有要記錄的內容",
QuickRememberDoneFmt: "已記住 → %s",
ModelSwitchUnavailable: "本會話不支援切換模型",
ModelSwitchBusy: "請先完成或取消目前工作,並停止背景任務後再切換模型",
ModelAlreadyOnFmt: "已經在使用 %s",
ModelSwitchingFmt: "正在切換到 %s…",
ModelSwitchedFmt: "已切換到 %s(會保留當前對話,但提示詞快取會重新計算)",
ModelListHeader: "模型(/model <provider/model> 切換)",
RuntimeSwitchPending: "請等待目前執行階段切換完成",
RuntimeReloadQueued: "已加入重載佇列——目前工作完成後執行",
RuntimeReloaded: "執行階段已重載",
RuntimeReloadedGenerationFmt: "執行階段已重載(構建代號 %d)",
WorkModeStatusFmt: "執行設定 %s",
WorkModeListHeaderFmt: "執行設定(目前:%s)",
WorkModeListHint: "使用 /preset balanced|delivery 切換(/work-mode、/profile 為相容別名)",
WorkModeBalancedLabel: "均衡",
WorkModeDeliveryLabel: "交付",
WorkModeBalancedDesc: "均衡 · 智能適配:自動規劃執行 · 風險分級驗證",
WorkModeDeliveryDesc: "交付 · 證據閉環:完整驗收 · 驗證與獨立複查",
WorkModeUsage: "用法:/preset balanced|delivery",
WorkModeSwitchUnavailable: "本會話不支援切換執行設定",
WorkModeSwitchBusy: "請先完成或取消目前工作,再切換執行設定",
WorkModeAlreadyOnFmt: "目前執行設定已經是 %s",
WorkModeSwitchingFmt: "正在將執行設定切換為 %s…",
WorkModeSwitchedFmt: "執行設定已切換為 %s(後續回合生效,不重建會話)",
WorkModeDeprecatedNotice: "提示:/work-mode 與 /profile 已棄用,請使用 /preset balanced|delivery",
RewindNone: "暫無可回滾的內容",
RewindCodeConversation: "程式碼 + 對話",
RewindConversationOnly: "僅對話",
RewindCodeOnly: "僅程式碼",
RewindSummarizeFrom: "壓縮此處之後(保留歷史)",
RewindSummarizeUpto: "壓縮此處之前(保留歷史)",
RewindPickTitle: "⟲ 回滾 — 選擇一輪",
RewindPickHint: "↑/↓ 移動 · Enter 選擇 · Esc 關閉",
RewindRestoreTitleFmt: "⟲ 恢復到第 %d 輪 ",
RewindApplyHint: "↑/↓ · Enter 套用 · Esc 返回",
RewindCoverageTitle: "⚠ 檔案覆蓋不完整",
RewindCoverageWarningFmt: "偵測到 %d 個覆蓋缺口,部分檔案修改可能無法恢復。",
RewindConfirmHint: "Enter/y 確認 · Esc 返回",
RewindUnavailableFmt: "無法回滾:%s",
RewindEmpty: "(空)",
EnterAPIKeysHeader: "輸入 API key(Enter 跳過、稍後再設):",
WroteFileFmt: "已寫入 %s",
SetupComplete: "設定完成。",
SetupCancelled: "設定已取消。",
TryHintFmt: "試試: %s",
NextHint: "下一步:設定 API key(執行 `reasonix setup` 或 export DEEPSEEK_API_KEY=...),然後執行 `reasonix run \"你的任務\"`。",
ConfirmReconfigureFmt: "%s 已存在。重新設定並覆蓋?",
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 的模型,使用預設列表",
SelectModelsLabel: "選擇要啟用的 %s 模型",
CustomFetchEmpty: "/models 返回為空,回退到手動輸入",
AnthropicFetchEmpty: "/models 返回為空 — Anthropic 相容服務通常不提供此端點,回退到手動輸入",
APIKeyAlreadySetFmt: "復用已設定的 %s",
APIKeyResetPromptFmt: "重新輸入 %s?",
InvalidAPIKeyEnvFmt: "%q 不是有效的 API Key 變數名稱。只能使用字母、數字和底線(例如 MY_PROVIDER_API_KEY);請勿在此填寫模型名稱。",
RepairedAPIKeyEnvFmt: "provider %s:已將無效的 API Key 變數名稱 %q 修復為 %q",
// custom provider
CustomProviderDesc: "新增第三方 OpenAI 相容模型",
CustomAddMethodLabel: "新增第三方 OpenAI 相容模型 - 選擇新增方式",
CustomMethodManual: "手動輸入模型名稱",
CustomMethodURL: "從 URL 取得模型列表",
CustomPromptModel: "請輸入模型名稱",
CustomPromptBaseURL: "請輸入 Base URL",
CustomPromptKeyEnv: "API Key 變數名稱(直接按 Enter 使用預設值,不是模型名稱)",
CustomPromptAPIKey: "請輸入 API Key",
CustomPromptWindow: "上下文視窗(tokens,填得比模型真實視窗小會導致過早壓縮)",
CustomAddedFmt: "已新增自訂模型: %s",
ProtocolChooseLabel: "這個位址按哪種協定驅動?",
ProtocolOpenAIName: "OpenAI Chat Completions",
ProtocolOpenAIDesc: "最常見的那條線;這條線上供應商不跑聯網搜尋",
ProtocolResponsesName: "OpenAI Responses",
ProtocolResponsesDesc: "無狀態;聯網搜尋由供應商自己跑",
ProtocolAnthropicName: "Anthropic Messages",
ProtocolAnthropicDesc: "聯網搜尋由供應商自己跑",
// Anthropic 相容 provider
AnthropicProviderDesc: "新增第三方 Anthropic 相容模型",
AnthropicAddMethodLabel: "新增第三方 Anthropic 相容模型 - 選擇新增方式",
AnthropicMethodManual: "手動輸入模型名稱",
AnthropicMethodURL: "從 URL 取得模型列表",
AnthropicPromptModel: "請輸入模型名稱",
AnthropicPromptBaseURL: "請輸入 Base URL",
AnthropicPromptKeyEnv: "API Key 變數名稱(直接按 Enter 使用預設值,不是模型名稱)",
AnthropicPromptAPIKey: "請輸入 API Key",
AnthropicAddedFmt: "已新增 Anthropic 相容模型: %s",
AnthropicFetchingModelsFmt: "正在取得 %s 的模型列表...",
AnthropicFetchModelsSuccessFmt: "發現 %d 個 %s 模型",
AnthropicFetchModelsFailedFmt: "取得 %s 模型失敗: %v",
AnthropicSelectModelsLabel: "選擇要啟用的 %s 模型",
RemoteConnectingFmt: "正在連線 %s…",
RemoteConnectedFmt: "已連線到 %s",
RemoteReconnectingFmt: "正在重新連線 %s(第 %d 次)…",
RemoteDegradedFmt: "已連線到 %s,但部分連接埠轉送未建立",
RemoteDisconnected: "已中斷(遠端 serve 仍在執行)",
RemoteServeReadyFmt: "遠端 serve 就緒:%s",
RemoteHostKeyPromptFmt: "未知的主機金鑰 %s\n 類型:%s\n 指紋:%s",
RemotePassphrasePromptFmt: "%s 的金鑰通關密語:",
RemotePasswordPromptFmt: "%s 的登入密碼:",
RemoteBootstrapStepFmt: "遠端 serve:%s %s",
RemoteNoHostsHint: "尚未設定遠端主機;用 `reasonix remote add <名稱> [user@]host` 新增",
UnknownCommandFmt: "未知命令 %q",
UsageRunHint: "用法:reasonix -p [--model NAME] <task>",
ErrorPrefix: "錯誤:",
ReconfigureOnUnknownModel: "設定的模型已不可用 —— 重新執行引導設定。",
WriteConfigErr: "寫入設定失敗:",
WriteEnvErr: "寫入 .env 失敗:",
ProviderErrBadRequest: "請求格式錯誤 (HTTP 400):請求體被拒絕,通常是程式缺陷。若持續出現請回報。",
ProviderErrDroppedReasoning: "端點拒絕了請求體:它要求把助手的思考內容隨工具呼叫一併回傳,而這個連線沒有宣告思考協定,於是這部分沒有送出去。把連線的思考參數設成它後面那個模型所用的協定,再重試。",
ProviderErrAuth: "認證失敗 (HTTP 401):未讀到 API key(缺失或未設定)。請在 .env 中設定金鑰,或執行 `reasonix setup`。",
ProviderErrInsufficientBalance: "餘額不足 (HTTP 402):帳戶餘額不足,請前往儲值後重試。",
ProviderErrUnprocessable: "參數錯誤 (HTTP 422):某個請求參數被拒絕,通常是程式缺陷。若持續出現請回報。",
ProviderErrInputSensitive: "輸入被 MiniMax 內容審查拒絕(錯誤碼 1026)。審查對象可能包含對話歷史和工具結果;請調整相關內容,或建立新對話只保留必要上下文。原樣重試通常無效。",
ProviderErrOutputSensitive: "MiniMax 產生的內容被內容審查拒絕(錯誤碼 1027)。請調整請求內容後重試;若持續出現,可改用其他服務商。",
ProviderErrRateLimited: "請求速率達到上限 (HTTP 429):請求過於頻繁 (TPM/RPM)。已退避重試,請放慢速率或稍後再試。",
ProviderErrServer: "伺服器故障 (HTTP 500):服務端內部錯誤。已退避重試;若持續失敗請稍後再試。",
ProviderErrServerBusy: "伺服器繁忙 (HTTP 503):服務端負載過高。已退避重試,請稍後再試。",
SelectOneHint: "(↑/↓ · Enter · q 取消)",
SelectManyHint: "(↑/↓ · Space · Enter · q)",
ReportNoPending: "沒有待處理的 CLI 當機報告。",
ReportHeaderFmt: "CLI 當機報告 %s",
ReportCapturedFmt: "擷取時間:%s",
ReportPreviewOnlyFmt: "目前僅預覽。執行 `reasonix report send %s` 可傳送這份報告。",
ReportSendPrompt: "將這份已脫敏報告傳送到 crash.reasonix.io?",
ReportKept: "報告已保留在本機。",
ReportDeletedFmt: "已刪除 CLI 當機報告 %s。",
ReportSentFmt: "已傳送 CLI 當機報告 %s。",
ReportConfigFailedFmt: "無法載入網路設定:%v",
ReportUploadFailedFmt: "報告上傳失敗;本機報告已保留:%v",
ReportSentDeleteFailedFmt: "報告已傳送,但無法刪除本機副本:%v",
ReportUsageBody: `用法:
reasonix report 預覽最新本機報告並確認是否傳送
reasonix report list 列出本機 CLI 當機報告
reasonix report show [ID] 預覽報告(省略 ID 時使用最新一份)
reasonix report send [ID] 傳送已審閱報告,成功後刪除本機副本
reasonix report delete [ID] 不傳送,直接刪除本機報告`,
CLITelemetryConsentNotice: "Reasonix 可以向 crash.reasonix.io 傳送匿名、完全不含內容的 CLI 使用統計:隨機安裝 ID、版本、作業系統和固定品質分桶。絕不會傳送 prompt、回答、程式碼、路徑、模型或工具內容、環境變數。之後可執行 `reasonix config telemetry off` 關閉。",
CLITelemetryConsentPrompt: "允許傳送匿名 CLI 使用統計嗎?",
CLITelemetryConsentInvalid: "請輸入 y 或 n。",
CLITelemetryConsentSaveFailedFmt: "由於無法儲存偏好設定,CLI 使用統計仍維持關閉:%v",
CLITelemetryConsentCleanupFailedFmt: "CLI 使用統計已關閉,但無法刪除待傳送統計:%v",
StandaloneConsoleHint: "這是 Reasonix 命令列工具,需要在 PowerShell 等終端機裡執行。\n要使用桌面應用程式,請安裝 Reasonix Studio(ReasonixStudio-windows-amd64-installer.exe):\n https://github.com/esengine/DeepSeek-Reasonix/releases?q=studio-v&expanded=true\n\n按 Enter 關閉此視窗。\n",
UsageBody: `reasonix — 由設定和插件驅動的 coding agent(多模型)
用法:
reasonix [--model NAME] [-c|--continue] [-r|--resume [QUERY]] [--permission-mode MODE] [--effort LEVEL] [--add-dir PATH] 互動式會話(終端介面,同 reasonix tui)
reasonix -p|--print [--model NAME] [--output-format text|json|stream-json] [--allowed-tools RULES] [--add-dir PATH] <task>
reasonix run [--model NAME] [--max-steps N] [-c|--continue] [--resume PATH] [--copy] [--output-format FORMAT] <task>
reasonix run --events-jsonl [--model NAME] <task> 輸出脫敏結構化事件 JSONL
reasonix review [--base BRANCH] [--commit SHA] [--model NAME] AI 程式碼審查(基於本機 diff)
reasonix web [--model NAME] [--addr HOST:PORT] [--no-open] 啟動本機 Web UI 並用預設瀏覽器開啟
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 reasoning-language [auto|zh|en] 設定可見思考語言
reasonix config compact-ratio [--local] [65..85] 設定自動壓縮閾值
reasonix config telemetry [auto|on|off] 設定不含內容的 CLI 使用統計
reasonix report [list|show|send|delete] [ID] 審閱並明確傳送本機 CLI 當機報告
reasonix mcp <add|remove|list|import> 管理 reasonix.toml 裡的 MCP 伺服器
reasonix login | whoami | logout 登入 reasonix.io(僅用於社群和當機追蹤)
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 session list --json [--dir PATH] 為機器客戶列出脫敏會話
reasonix session show|status <machine-session-id> --json [--dir PATH] 查詢單一脫敏會話
reasonix session recovery [<machine-session-id>] --json [--dir PATH] 查詢脫敏復原狀態
reasonix hook list|status --json [--dir PATH] 檢視脫敏 Hook 狀態
reasonix trust [--dir PATH] [--yes|--revoke] 審閱並核准本專案要執行的程式
reasonix task list|show|status|events|stop|cancel|monitor|tmux --json [--dir PATH]
檢視或控制脫敏 Task
reasonix upgrade [--check] [--force] 更新到最新正式版(別名:reasonix update)
reasonix completion bash|zsh|fish 列印 shell 補全腳本到 stdout
reasonix version [--verbose|--json] 列印版本(單行)或建置元資訊
reasonix --version | -v 單行版本(腳本安全)
reasonix help
範例:
reasonix web
reasonix run "把 main.go 裡的 TODO 實現掉"
reasonix run --model mimo-pro "給這個函式補單元測試"
reasonix -p "總結這個倉庫" --output-format json
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。
`,
RenameUsage: "用法:/rename <新名稱> 或 /rename <序號> <新名稱>",
RenameNoSession: "當前沒有活躍會話可重新命名",
RenameDoneFmt: "會話已重新命名為 %q",
DiffFoldEnabledFmt: "diff 已摺疊至 %d 行(/diff-fold 展開)",
DiffFoldDisabled: "diff 已展開 — 顯示全部行(/diff-fold 摺疊)",
SlashClearPrompt: "清空當前上下文且不儲存?",
SlashClearDone: "已清空當前上下文",
SlashClearFailed: "清空當前上下文失敗",
SlashClsDone: "已清除畫面(LLM 上下文保留)",
CmdClear: "丟棄當前上下文",
CmdRename: "重新命名會話",
CmdGoal: "設定或清除當前目標",
CmdDiffFold: "切換 diff 摺疊/展開",
ListMemorySaved: "儲存的記憶",
ListMemoryArchived: "歸檔的記憶",
GoalEmpty: "目標:無 — 用 /goal <目標> 設定",
GoalCurrentFmt: "目標:%s",
GoalSetFmt: "目標已設定 → %s",
GoalCleared: "目標已清除",
GoalNotRunning: "沒有執行中的目標可暫停",
GoalNotPaused: "沒有已暫停或被阻擋的目標可恢復",
GoalPaused: "目標已暫停 — /goal resume 可繼續",
AwaitingUserFmt: "等待你的輸入:%s",
ImagesNotReadable: "當前模型不讀圖 — 已附 %d 張,改由委派的子代理去看",
ImagesNeedVisionRole: "當前模型不讀圖 — 已附 %d 張,現在沒人讀得了。%s 能讀圖:到 設定 › 模型 › 分工 裡把「看圖」指給它。",
ImagesDropped: "當前模型不讀圖 — 已附 %d 張,會在送出去之前被丟掉。設定裡沒有任何模型能讀圖。",
ImagesUnfit: "有 %d 張附件沒有送出去,因為任何模型都不會接收它:%s",
GoalPausedReason: "使用者手動暫停",
GoalPausedFmt: "目標已暫停(%s)— 使用 /goal resume 繼續",
GoalRuntimeFmt: "執行狀態:輪次 %d · 請求 %d · token %d · 工作時間 %s",
GoalRuntimeLastReason: "最近原因",
ProviderErrAuthRejected: "認證失敗 (HTTP 401):服務端拒絕了你的 API key。可能是 key 錯誤或已過期,也可能是服務端出現瞬時鑑權/額度問題——已退避重試仍失敗。請稍後再試,或檢查 .env 中的金鑰 / 執行 `reasonix setup`。",
SelectMoreAboveFmt: " ↑ 上方還有 %d 個",
SelectMoreBelowFmt: " ↓ 下方還有 %d 個",
SelectSearchHint: "/ 搜尋 · 輸入關鍵詞過濾 · Esc 取消搜尋",
CmdProvider: "切換供應商",
ProviderListHeader: "供應商(/provider <名稱> 切換)",
ProviderAlreadyOnFmt: "已經在使用供應商 %s",
ProviderUnknownFmt: "未知供應商 %q",
ProviderPickLabel: "選擇 %s 的一個模型",
ProviderNoModelsFmt: "供應商 %s 沒有已配置的模型",
UpgradeChecking: "正在檢查更新…",
UpgradeChannelDeprecated: "發布渠道已停用;將使用最新正式版。",
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",
}