| 1 | { |
| 2 | "chrome": { |
| 3 | "navDocs": "文档", |
| 4 | "navStart": "指引", |
| 5 | "navInstall": "安装", |
| 6 | "navFaq": "常见问题", |
| 7 | "navCommunity": "社区", |
| 8 | "navContribute": "贡献", |
| 9 | "navDocsSecondary": "Docs", |
| 10 | "navStartSecondary": "Start", |
| 11 | "navInstallSecondary": "Install", |
| 12 | "navFaqSecondary": "FAQ", |
| 13 | "navCommunitySecondary": "Community", |
| 14 | "navContributeSecondary": "Contribute", |
| 15 | "navProduct": "产品", |
| 16 | "navModels": "模型", |
| 17 | "navPlugins": "插件", |
| 18 | "navProductSecondary": "Product", |
| 19 | "navModelsSecondary": "Models", |
| 20 | "navPluginsSecondary": "Plugins", |
| 21 | "skipToContent": "跳转到主要内容", |
| 22 | "navPrimaryAria": "主导航", |
| 23 | "navHomeAria": "Codewhale 首页", |
| 24 | "installCta": "安装 →", |
| 25 | "authSignIn": "登录", |
| 26 | "authRegister": "创建账户", |
| 27 | "authGroupAria": "账户", |
| 28 | "wordmarkSeal": "深", |
| 29 | "wordmarkTag": "任意模型,本机运行", |
| 30 | "issueLabel": "第 {date} 期", |
| 31 | "dateLocale": "zh-CN", |
| 32 | "starsAria": "GitHub 星标数", |
| 33 | "githubFallback": "GitHub", |
| 34 | "tickerLiveLabel": "实 时", |
| 35 | "tickerLiveTag": "LIVE", |
| 36 | "tickerMerged": "已合并", |
| 37 | "tickerOpened": "已开启", |
| 38 | "tickerClosed": "已关闭", |
| 39 | "tickerReleased": "已发布", |
| 40 | "tickerFirstContribution": "首次贡献", |
| 41 | "tickerBy": "作者 {handle}", |
| 42 | "tickerAria": "仓库近期动态", |
| 43 | "traceLabel": "推理痕迹", |
| 44 | "traceTabsAria": "会话片段", |
| 45 | "menuOpen": "打开菜单", |
| 46 | "menuClose": "关闭菜单", |
| 47 | "themeAuto": "自动", |
| 48 | "themeLight": "浅色", |
| 49 | "themeDark": "深色", |
| 50 | "themeAria": "文档主题:{mode}(点击切换)", |
| 51 | "themeTitle": "文档主题 · 自动 / 浅色 / 深色", |
| 52 | "footerTagline": "用你选择的模型构建想做的项目,并自动处理日常工作。", |
| 53 | "footerProduct": "产品", |
| 54 | "footerProject": "项目", |
| 55 | "footerDocs": "文档", |
| 56 | "footerGuide": "新手指引", |
| 57 | "footerInstall": "安装", |
| 58 | "footerModels": "模型", |
| 59 | "footerRuntime": "运行时", |
| 60 | "footerFaq": "常见问题", |
| 61 | "footerIssues": "议题", |
| 62 | "footerContribute": "参与贡献", |
| 63 | "footerLicense": "MIT 许可证", |
| 64 | "footerTerms": "服务条款", |
| 65 | "footerPrivacy": "隐私政策", |
| 66 | "footerChangelog": "更新日志", |
| 67 | "footerCanonicalSource": "官方源码:", |
| 68 | "footerReleases": " · 发布:", |
| 69 | "footerReleasesLink": "GitHub 发布页", |
| 70 | "footerSecurity": "安全", |
| 71 | "switcherLabel": "语言", |
| 72 | "switcherSwitchTo": "切换到 {label}", |
| 73 | "partialBadge": "(部分)" |
| 74 | }, |
| 75 | "home": { |
| 76 | "metaTitle": "Codewhale — 用你选择的模型,完成开发和自动化任务", |
| 77 | "metaDescription": "借助开源智能体和你选择的云端或本地 AI 模型,开发软件、处理文件,并自动完成日常任务。", |
| 78 | "heroTitle": "用你选择的模型,完成开发和自动化任务", |
| 79 | "heroIntro": "{brand} 是一个开源智能体,能够读取文件、编辑代码、运行命令并检查结果。在终端或本地浏览器中使用它,连接你选择的云端或本地模型。工具和权限由你决定;对话与工具执行结果保存在会话中。", |
| 80 | "getCodewhale": "获取 Codewhale", |
| 81 | "exploreProduct": "了解产品", |
| 82 | "shotPreview": "终端预览", |
| 83 | "shotBuild": "v{version} 开发版本", |
| 84 | "screenshotAlt": "Codewhale v{version} 开发版本:鲸鱼标志、新会话、消息输入区、Ask 权限、Work 模式和模型状态。由隔离终端会话的实际画面渲染。", |
| 85 | "latestRelease": "最新发布 {tag}", |
| 86 | "releaseUnavailable": "发布状态暂不可用", |
| 87 | "currentSource": "源码", |
| 88 | "sourceCandidate": "未发布", |
| 89 | "providerRoutes": "{count} 个提供商", |
| 90 | "publishedRelease": "已发布", |
| 91 | "figcaptionSourceCandidate": "未发布", |
| 92 | "chapterTerminal": "你的终端", |
| 93 | "chapterTerminalTitle": "从你想做的项目开始", |
| 94 | "gainHeading": "你可以用 Codewhale 做什么", |
| 95 | "gainLede": "从具体目标开始:修复错误、理解项目,或把重复任务变成工作流程。先用一个智能体,需要时再拆分大型任务。", |
| 96 | "gain": [ |
| 97 | [ |
| 98 | "开发项目并验证结果", |
| 99 | "让智能体查看项目、完成修改,再运行测试。你可以在工作过程中查看文件变更和命令结果。" |
| 100 | ], |
| 101 | [ |
| 102 | "复用重复的工作", |
| 103 | "把重复任务变成脚本或保存的工作流程。在脚本和 CI 中使用 codewhale exec,也可以让多个智能体分担大型任务。" |
| 104 | ], |
| 105 | [ |
| 106 | "掌握执行过程", |
| 107 | "开始前设定权限,处理审批请求,随时中断正在运行的任务。查看对话与工具结果,再决定如何继续。" |
| 108 | ] |
| 109 | ], |
| 110 | "chapterModels": "你的模型", |
| 111 | "modelsHeading": "为每项任务选择合适的模型", |
| 112 | "modelsBody": "为每个会话选择提供商和模型:使用 API 密钥、受支持的提供商登录方式,或本地模型。Codewhale 账户与模型连接各有用途。", |
| 113 | "modelsFacts": [ |
| 114 | [ |
| 115 | "托管", |
| 116 | "你自己的 API 密钥,用 codewhale auth set --provider <id> 保存" |
| 117 | ], |
| 118 | [ |
| 119 | "网关", |
| 120 | "一个端点接多个模型,提供商仍由你选" |
| 121 | ], |
| 122 | [ |
| 123 | "本地", |
| 124 | "localhost 上的 vLLM、SGLang、Ollama——通常无需密钥" |
| 125 | ] |
| 126 | ], |
| 127 | "modelsLink": "了解模型与提供商", |
| 128 | "startHeading": "开始使用 Codewhale", |
| 129 | "startLede": "安装已发布版本,连接模型,然后在项目文件夹中尝试一项任务。智能体团队是可选的;先用一个智能体,等任务适合拆分时再增加。", |
| 130 | "startGuideLink": "阅读新手指引", |
| 131 | "startVocabularyLink": "查名词", |
| 132 | "chapterAccount": "获取 Codewhale", |
| 133 | "availabilityHeading": "你可以在哪里使用 Codewhale", |
| 134 | "availabilityLede": "终端与本地浏览器客户端现已可用。桌面和托管网页应用正基于同一会话模型开发;各端的开放状态分别列在下方。", |
| 135 | "availability": [ |
| 136 | [ |
| 137 | "终端与本地浏览器", |
| 138 | "已发布", |
| 139 | "支持 Linux、macOS 和 Windows。运行 codewhale 使用终端,或运行 codewhale web 打开本地浏览器客户端。也可通过 npm 或 Cargo 安装;Android 上的 Termux 版本为预览版。" |
| 140 | ], |
| 141 | [ |
| 142 | "托管网页应用", |
| 143 | "开发预览", |
| 144 | "开发预览版支持使用 Codewhale 账户登录并配对计算机。托管任务执行仍在验证中。" |
| 145 | ], |
| 146 | [ |
| 147 | "桌面端", |
| 148 | "开发版本", |
| 149 | "macOS 应用将文件夹、对话和模型连接整合在桌面窗口中,稍后将提供公开下载。" |
| 150 | ], |
| 151 | [ |
| 152 | "云端计算机", |
| 153 | "开发中", |
| 154 | "用于运行任务的托管计算机。" |
| 155 | ] |
| 156 | ], |
| 157 | "availabilityNote": "终端和本地浏览器不需要 Codewhale 账户。账户用于托管网页和桌面端访问,不能代替模型连接。使用自己的密钥调用云端模型时,费用由该提供商收取。", |
| 158 | "accountLink": "创建账户", |
| 159 | "surfacesHeading": "工具、应用连接与保存的工作", |
| 160 | "surfaces": [ |
| 161 | [ |
| 162 | "文件与命令", |
| 163 | "在你设定的权限内读取项目、编辑文件、运行测试并查看命令输出。" |
| 164 | ], |
| 165 | [ |
| 166 | "插件与 MCP", |
| 167 | "连接更多工具和服务。智能体使用插件前,需由你审核并启用。" |
| 168 | ], |
| 169 | [ |
| 170 | "Computer Use · 源码预览", |
| 171 | "当前源码包含用于查看和操作其他应用的插件,需主动启用并授予必要的系统权限。" |
| 172 | ], |
| 173 | [ |
| 174 | "保存的会话", |
| 175 | "将对话和工具结果保存在一起。本地浏览器连接到你电脑上的同一个 Codewhale 会话;继续保存的工作,无需从头开始。" |
| 176 | ], |
| 177 | [ |
| 178 | "Fleet", |
| 179 | "把任务分配给不同模型和角色的智能体,并跟踪它们的进度。" |
| 180 | ] |
| 181 | ], |
| 182 | "runtimeLink": "了解集成", |
| 183 | "installBandHeading": "在 macOS 或 Linux 上安装 Codewhale", |
| 184 | "copy": "复制", |
| 185 | "copied": "已复制 ✓", |
| 186 | "binaries": "预编译包", |
| 187 | "chinaMirrors": "中国镜像", |
| 188 | "installGuideLink": "阅读安装指南", |
| 189 | "communityHeading": "一起让 Codewhale 变得更好", |
| 190 | "communityBody": "无论你是发现了错误、有功能方面的想法,还是准备提交第一个 pull request,我们都希望听到你的意见,与你一起推进接下来的工作。", |
| 191 | "communityLinksAria": "社区链接", |
| 192 | "contribute": "提交 pull request" |
| 193 | }, |
| 194 | "docs-guide": { |
| 195 | "metaTitle": "新手指引 · Codewhale 文档", |
| 196 | "metaDescription": "安装 Codewhale、连接模型并开始第一项任务。需要模型与角色列表时,再配置 Fleet。", |
| 197 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 198 | "overviewTitle": "新手指引", |
| 199 | "overviewLead": "安装 Codewhale,连接模型,然后交给它一项任务。Fleet 配置为可选步骤。", |
| 200 | "sessionTitle": "看一次真实会话", |
| 201 | "sessionLead": "查看一项任务从首次请求到完成的全过程。", |
| 202 | "nextTitle": "接下来", |
| 203 | "sourceNote": "更多细节见文档中的用户指南与快捷键说明。" |
| 204 | }, |
| 205 | "docs-shell": { |
| 206 | "metaTitle": "文档 · Codewhale", |
| 207 | "metaDescription": "Codewhale 文档:安装、使用指南、配置、提供商、账户与密钥、云端计算机、安全与信任、核心概念、工具、MCP、技能、沙箱、运行时 API、排障。", |
| 208 | "portalMark": "Codewhale 文档", |
| 209 | "heroTitle": "查找准确的使用说明。", |
| 210 | "heroLead": "从一个任务或一个主题开始。每一页都说明它取自仓库中的哪份文档、描述的是哪个版本。", |
| 211 | "installCta": "安装 Codewhale", |
| 212 | "sourceDocsCta": "浏览源文档 ↗", |
| 213 | "releaseLabel": "版本事实", |
| 214 | "releasePublished": "最新发布 {tag} · {date}", |
| 215 | "releaseCandidate": "本站文档描述的是尚未发布的 {version} 源码候选版。", |
| 216 | "releaseMatches": "本站文档描述的是已发布的 {tag}。", |
| 217 | "releaseChangelog": "更新日志 →", |
| 218 | "searchLabel": "搜索文档", |
| 219 | "searchPlaceholder": "按任务或主题搜索…(按 / 快速聚焦)", |
| 220 | "searchClear": "清除", |
| 221 | "searchMatches": "{matched} / {total} 条匹配 “{query}”", |
| 222 | "searchNoMatches": "没有条目匹配 “{query}”", |
| 223 | "tasksHeading": "按任务", |
| 224 | "tasksLead": "从你想完成的事情开始。", |
| 225 | "topicsHeading": "按主题", |
| 226 | "webGuideTag": "网页", |
| 227 | "sourceDocTag": "源文档", |
| 228 | "emptyTitle": "没有匹配的条目", |
| 229 | "emptyBody": "换一个关键词试试——中英文都可以搜索——或浏览 GitHub 上的完整文档目录。", |
| 230 | "emptyCta": "GitHub 文档目录 ↗", |
| 231 | "indexNote": "“网页”条目提供站内指南;“源文档”条目直接打开 GitHub 仓库中的完整参考资料。任务来自 docs-tasks.ts,主题来自 docs-map.ts,两份注册表都在仓库中维护。", |
| 232 | "sidebarHeading": "文档目录", |
| 233 | "sidebarAria": "文档目录", |
| 234 | "breadcrumbAria": "面包屑导航", |
| 235 | "breadcrumbHome": "首页", |
| 236 | "breadcrumbDocs": "文档", |
| 237 | "helpTitle": "这一页还不够?", |
| 238 | "helpLead": "每份指南都取自仓库中的一份文档。如果它写错了或缺了什么,最快的办法是在维护者能看到的地方说出来。", |
| 239 | "helpSource": "来源:{name}", |
| 240 | "helpTroubleshooting": "排障", |
| 241 | "helpFaq": "常见问题", |
| 242 | "helpDiscord": "到 Discord 提问 ↗", |
| 243 | "helpIssue": "报告文档问题 ↗" |
| 244 | }, |
| 245 | "docs-hooks": { |
| 246 | "metaTitle": "钩子 · Codewhale 文档", |
| 247 | "metaDescription": "已发布的生命周期钩子:可变 message_submit、tool_call_before 决策、turn_end 与子 Agent 观察事件。", |
| 248 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 249 | "overviewTitle": "钩子", |
| 250 | "overviewLead": "钩子让你把自己的命令挂进 Codewhale 的生命周期:在消息提交前注入上下文、在工具调用前执行策略、在回合结束或子 Agent 启停时做审计。本页描述当前已发布的行为;docs/rfcs/1364-hooks-lifecycle.md 是这组能力的设计 RFC,完整配置 schema 见 docs/CONFIGURATION.md。", |
| 251 | "configIntro": "钩子配置在 config.toml 的 {hooksTable} 条目下;TUI 里运行 {hooksCommand} 可以按事件分组查看每个钩子的名称、命令预览、超时和条件,以及 {enabledKey} 的全局开关状态。", |
| 252 | "events": [ |
| 253 | [ |
| 254 | "message_submit(可变)", |
| 255 | "在用户消息进入历史或发给模型之前运行。钩子从 stdin 收到 JSON;exit 0 且 stdout 打印含非空 text 字段的 JSON 时替换提交文本;exit 2 在回合开始前阻止提交。多个钩子按配置顺序串行执行,每个钩子收到上一个钩子的输出文本。标记 background = true 的钩子只能观察,不能改写或阻止。" |
| 256 | ], |
| 257 | [ |
| 258 | "tool_call_before(决策)", |
| 259 | "在每次工具调用执行前运行。除 exit 2 硬拒绝(始终生效)外,前台钩子可在 exit 0 时用 stdout JSON 给出决策:allow / deny / ask,并可附带 updatedInput 改写工具输入、additionalContext 追加进给模型的工具结果。多个钩子命中时优先级为 deny > ask > allow;tool_name 条件支持 * 通配(如 mcp__* 匹配所有 MCP 工具)。Full Access 不打开工具审批提示,因此 ask 不会降低该姿态。" |
| 260 | ], |
| 261 | [ |
| 262 | "turn_end(观察)", |
| 263 | "在每个模型回合结束后触发,此时用量、成本、通知、收据和队列恢复状态都已更新。stdin 收到包含 status、duration_ms、usage、totals、queued_message_count 等字段的 JSON。stdout 被忽略,失败只记警告——不能阻止输入、改写 transcript 或改变下一个排队消息。" |
| 264 | ], |
| 265 | [ |
| 266 | "subagent_spawn / subagent_complete(观察)", |
| 267 | "观察子 Agent 的启动与完成,stdin 收到有界的 JSON 元数据(agent_id、状态、截断后的 prompt/result 预览)。失败只记警告,不阻塞调度、不改 prompt 或结果;需要完整细节时使用 agent 返回的 transcript 句柄。" |
| 268 | ] |
| 269 | ], |
| 270 | "projectTitle": "项目级钩子", |
| 271 | "projectLead": "仓库可以在 <workspace>/.codewhale/hooks.toml 中携带策略。因为项目钩子是可执行的 shell 配置,Codewhale 只有在工作区通过信任提示或用户配置中的 trust_level = \"trusted\" 被信任后才加载它们——会话内的 /trust on 和旧版 .deepseek/trusted 标记都不会单独启用项目钩子。受信任后,项目钩子追加在 config.toml 的全局钩子之后运行,因此对 updatedInput 而言最后生效。格式错误但已受信任的项目文件会记警告并回退到只用全局钩子。", |
| 272 | "sourceNote": "来源文档:docs/rfcs/1364-hooks-lifecycle.md(设计 RFC), docs/CONFIGURATION.md(配置 schema)· 更新时请同步修改 docs-map.ts。" |
| 273 | }, |
| 274 | "docs-troubleshooting": { |
| 275 | "metaTitle": "排障 · Codewhale 文档", |
| 276 | "metaDescription": "常见问题的快速分诊:挂起的回合、离线队列、崩溃恢复、schema 错误、MCP 故障与 Docker 说明。", |
| 277 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 278 | "overviewTitle": "排障", |
| 279 | "overviewLead": "先快速分诊:确认二进制与配置(codewhale --version、~/.codewhale/config.toml),需要更详细日志时用 RUST_LOG=deepseek_cli=debug 启动(HTTP 重试/重连用 RUST_LOG=deepseek_cli::client=debug),并看一眼 ~/.codewhale/sessions 与 ~/.codewhale/tasks 的当前状态。", |
| 280 | "incidents": [ |
| 281 | [ |
| 282 | "回合挂起或流停止", |
| 283 | "前台 shell 命令还在跑时按 Ctrl+B 把它移到后台(回合继续,命令变成 /jobs 下的后台任务);想取消回合本身用 Esc 或 Ctrl+C。检查 deepseek_cli::client 的重试日志和端点连通性,重启后确认此前在途的回合被标记为中断,而不是停在运行态。" |
| 284 | ], |
| 285 | [ |
| 286 | "网络中断 / 离线行为", |
| 287 | "离线时新提示词会排队,队列持久化在 ~/.codewhale/sessions/checkpoints/offline_queue.json。用 /queue list 查看,恢复连接后重新发送(/queue edit <n> 加回车,或走正常输入流程),队列清空后文件随之清除。" |
| 288 | ], |
| 289 | [ |
| 290 | "崩溃恢复", |
| 291 | "检查点保存在 ~/.codewhale/sessions/checkpoints/latest.json;除非传入 --resume/--continue,启动会开新会话。用 codewhale --resume <id> 或 TUI 里的 Ctrl+R 显式恢复;若检查点 schema 比二进制新,升级二进制或移除过期检查点。" |
| 292 | ], |
| 293 | [ |
| 294 | "持久状态 schema 错误", |
| 295 | "形如 schema vX is newer than supported vY 的错误涉及 sessions、运行时 thread/turn/item 记录和 tasks。先确认二进制版本,编辑前备份状态目录,然后用更新的兼容二进制运行,或归档不兼容记录并重建状态。" |
| 296 | ], |
| 297 | [ |
| 298 | "MCP / 工具执行失败", |
| 299 | "校验 ~/.codewhale/mcp.json 的 schema 和服务器命令路径,手动确认服务器进程能启动,并在 TUI 历史/日志中检查沙箱拒绝。用 /mcp validate 诊断,可暂时禁用出问题的服务器隔离原因,验证后再启用。" |
| 300 | ] |
| 301 | ], |
| 302 | "dockerTitle": "Docker 说明", |
| 303 | "dockerLead": "每个发布都会向 GitHub Container Registry 推送多架构 Linux 镜像。默认镜像是保守的运行时镜像:以非 root 的 codewhale 用户(UID/GID 1000:1000)运行,不授予免密 sudo,用户状态放在挂载到 /home/codewhale/.codewhale 的卷里。可复现的安装请固定发布标签而不是 latest。", |
| 304 | "dockerToolboxNote": "需要在容器内使用 apt-get、编译工具链或包管理器时,不要改默认镜像约定——基于 docs/examples/Dockerfile.toolbox 构建显式的 toolbox 镜像,并为每个项目使用独立的命名状态卷,避免会话、配置和离线队列跨工作区串扰。不要把 API 密钥或 SSH 私钥烘进自定义镜像。", |
| 305 | "sourceNote": "来源文档:docs/OPERATIONS_RUNBOOK.md, docs/DOCKER.md · 更新时请同步修改 docs-map.ts。" |
| 306 | }, |
| 307 | "docs-configuration": { |
| 308 | "metaTitle": "配置 · Codewhale 文档", |
| 309 | "metaDescription": "config.toml 的查找顺序、项目级覆盖、凭据优先级和旧版路径迁移。", |
| 310 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 311 | "overviewTitle": "配置", |
| 312 | "overviewLead": "Codewhale 从 ~/.codewhale/config.toml 读取配置(旧版 ~/.deepseek/config.toml 仍作为回退读取)。--config 标志和 CODEWHALE_CONFIG_PATH 环境变量可以指定别的路径,两者同时设置时 --config 优先;文件加载之后再应用环境变量覆盖。", |
| 313 | "auditLead": "在 TUI 里运行 {auditCommand} 可以查看哪些文档化的键能在当前会话修改、哪些能持久化、哪些只能改文件或需要重启——改动前以它输出的“Command / reason”列为准。", |
| 314 | "overlayTitle": "项目级覆盖", |
| 315 | "overlayLead": "当工作区包含常规文件 <workspace>/.codewhale/config.toml 时,其中声明的安全取值会合并到全局配置之上(旧版 <workspace>/.deepseek/config.toml 在新路径缺失时仍会读取;符号链接的项目配置会被拒绝)。这让仓库可以建议模型或收紧本地安全姿态,而不动用户的全局配置。单次启动可用 --no-project-config 跳过覆盖。", |
| 316 | "overlayLimits": "覆盖层有意保持狭窄:支持 model、reasoning_effort、approval_policy 与 sandbox_mode(只能收紧)、notes_path、max_subagents(夹紧到 1..=20)、allow_shell(false 生效,true 被忽略)。凭据、端点、提供商选择、MCP 配置、hooks、skills 和 instructions = [...] 始终属于用户全局配置——仓库里的 config.toml 声明 api_key、base_url 或 provider 会被忽略,克隆的仓库无法借此选择任意本地文件进入提示词。", |
| 317 | "credentialsTitle": "凭据查找", |
| 318 | "credentialsLead": "在显式 {apiKey} 之后,凭据按 config → keyring → env 的顺序解析。{authStatus} 可以查看当前提供商的配置文件、系统 keyring 后端、环境变量、生效来源和末四位标签,而不会打印密钥本身。托管、OpenAI 兼容、自托管或 Anthropic 原生路由用 {providerConfig} 或 {providerFlag} 选择;完整注册表见模型与提供商页和 docs/PROVIDERS.md。", |
| 319 | "legacyTitle": "旧版 .deepseek/ 路径", |
| 320 | "legacyLead": "Codewhale 由 DeepSeek-TUI 更名而来。为了不破坏既有安装,运行时从新的 ~/.codewhale/ 位置读取状态,但在只有旧目录存在时回退到 ~/.deepseek/,并且始终写入 ~/.codewhale/——读取带回退、写入新位置。状态目录解析集中在 crates/config/src/lib.rs 的 resolve_state_dir / ensure_state_dir 中,每一处旧路径引用都有审计过的保留决定。", |
| 321 | "sourceNote": "来源文档:docs/CONFIGURATION.md, docs/LEGACY_PATHS.md · 更新时请同步修改 docs-map.ts。" |
| 322 | }, |
| 323 | "docs-constitution": { |
| 324 | "metaTitle": "宪章与 /constitution · Codewhale 文档", |
| 325 | "metaDescription": "用户全局宪章、仓库本地法、项目说明和运行时边界。", |
| 326 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 327 | "overviewTitle": "宪章与 /constitution", |
| 328 | "overviewTitleAside": "Constitution", |
| 329 | "overviewLead": "Codewhale 先给 Agent 一个可追责的地址,再给上下文冲突一套法律。{constitutionCommand} 是管理个人常驻宪章的主入口: 它把结构化的用户全局设置保存在 {homeConfig}, 再渲染成模型可读的 prose block。仓库仍可通过 {repoConfig} 增加本地 law;runtime policy 独立负责模式、审批、沙箱、成本和工具边界。", |
| 330 | "principles": [ |
| 331 | [ |
| 332 | "userGlobal", |
| 333 | "用 /constitution 管理跨项目个人常驻法。它是结构化数据渲染成 prose,不是裸 prompt 编辑器。" |
| 334 | ], |
| 335 | [ |
| 336 | "repoLocal", |
| 337 | ".codewhale/constitution.json 是可选项目 law,用于不变量、分支规则、验证和升级条件。" |
| 338 | ], |
| 339 | [ |
| 340 | "runtime", |
| 341 | "宪章文本可以表达偏好;审批、沙箱、Shell、网络、信任和 MCP 权限仍由运行时配置强制执行。" |
| 342 | ] |
| 343 | ], |
| 344 | "authorityNote": "普通项目说明仍放在 AGENTS.md;记忆和交接低于宪章与项目说明;完整 base prompt Markdown 覆盖只是专家逃生口,不是普通设置路径。详见 {configDocs}。", |
| 345 | "configDocsLabel": "配置文档", |
| 346 | "sourceNote": "来源文档:docs/ARCHITECTURE.md · 更新时请同步修改 docs-map.ts。" |
| 347 | }, |
| 348 | "docs-fleet": { |
| 349 | "metaTitle": "Fleet 与 Workflow · Codewhale 文档", |
| 350 | "metaDescription": "持久 Agent 花名册与成员选择层,以及可选的 Workflow 编排层。", |
| 351 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 352 | "overviewTitle": "Fleet 与 Workflow", |
| 353 | "overviewLead": "Fleet 是持久花名册:记录有哪些成员以及选中了哪一位。它不是执行或权限引擎。Runtime 将选定成员作为无头 codewhale exec 运行来启动和跟踪,负责重试与远程放置,并写入持久收据和台账投影。台账文件、已保存花名册、配置表和 Workflow 的 --fleet 标志都使用 Fleet 名称。", |
| 354 | "runTitle": "运行一次 fleet", |
| 355 | "runLead": "Runtime 的 fleet 运行投影存放在工作区的 .codewhale/fleet.jsonl 台账中,worker 日志在 .codewhale/fleet/ 下。codewhale fleet resume <run-id> 会让 Runtime 重放台账并调和过期租约;该操作幂等,可在管理进程退出、笔记本睡眠或运行时重启后安全执行。", |
| 356 | "statusLead": "TUI 命令 {fleetStatusTui} 与 shell 命令 {fleetStatusShell} 读取同一份持久 fleet 台账。若要查看仅附着于当前交互会话的子 Agent,请使用 {fleetWorkers}(或 {subagents})。", |
| 357 | "profilesTitle": "已保存 fleet、角色与 /fleet setup", |
| 358 | "profilesLead": "{fleetSaved} 打开已命名保存 fleet 的选择器;裸 /fleet 打开当前所选 fleet 的成员花名册。在 v0.9.11 中,/fleet setup 编辑当前选中的命名 fleet。未选中命名 fleet 时,它打开角色档案设置:选择角色与模型、按需调整思考设置,然后核对并保存。档案可写在项目级(.codewhale/agents/<role>.toml)或个人级($CODEWHALE_HOME/agents/<role>.toml);同 ID 的项目档案优先。Runtime 另行负责信任、文件系统/网络范围、密钥、审批、沙箱和工具,因此档案存储范围不会扩大执行权限。", |
| 359 | "workflowTitle": "Workflow 编排", |
| 360 | "workflowLead": "普通多 Agent 工作不需要 Workflow:在 Operate 里直接发消息,需要并行、隔离或长时间工作时让 Codewhale 优先委派后台 worker 即可。只有当工作需要有序阶段、门禁、共享预算、回放或确定性汇总时才用 Workflow。Workflow 脚本只负责协调:它选择 fleet 成员,但没有自己的文件系统或 shell;Runtime 在实时权限策略下启动真正的 worker。脚本使用编译专用的声明式 JS 子集,降低到类型化 WorkflowSpec 后由 Rust 校验与执行;import、fetch、process、eval、async/await 会被拒绝。", |
| 361 | "workflowLimits": "默认校验边界:每次 Workflow 运行最多 1,000 个 worker Agent、Workflow IR 结构嵌套深度不超过 5、循环必须声明 max_iterations、动态 expand 节点必须声明 max_children 和模板。Runtime 的子委派是独立执行预算:默认 3 层,可选择启用的硬上限为 8 层。这些是数量与结构上限,而非并发要求:Runtime 每个运行最多接纳 16 个存活 worker,其余排队。省略 max_steps 或设为 0 都保持无界;只有正值才增加模型轮次上限。", |
| 362 | "sourceNote": "来源文档:docs/FLEET.md, docs/WORKFLOW_AUTHORING.md · 更新时请同步修改 docs-map.ts。" |
| 363 | }, |
| 364 | "docs-mcp": { |
| 365 | "metaTitle": "MCP · Codewhale 文档", |
| 366 | "metaDescription": "通过 Model Context Protocol 消费外部工具服务器,或把 Codewhale 作为 MCP 服务器暴露。", |
| 367 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 368 | "overviewLead": "Codewhale 可以通过 MCP(Model Context Protocol)加载额外的工具。MCP 服务器可以是由 TUI 启动的本地 stdio 进程,也可以是远程 URL 服务器(Streamable HTTP,带旧版 SSE 回退)。连接成功的服务器会把工具注册进模型目录;失败或被禁用的服务器不会作为可用工具呈现给模型。", |
| 369 | "overviewConfig": "配置文件默认在 {configPath}(新文件缺失时仍读取旧版 {legacyConfigPath}),可用 {configPathOption} 或 {configEnvVar} 覆盖。也兼容其他客户端使用的 {serversKey} 键名。", |
| 370 | "setupTitle": "配置与管理", |
| 371 | "setupLead": "用 {initCommand} 生成初始配置;TUI 内的 {mcpCommand} 打开紧凑管理器,显示每个服务器的启用状态、传输方式、命令或 URL、超时和连接错误。常用命令:", |
| 372 | "setupReload": "在 TUI 里做的配置编辑会立即写盘,但模型可见的 MCP 工具池不会热加载——管理器会把它标记为需要重启。/mcp validate 和 /mcp reload 会重新连接以刷新界面快照。", |
| 373 | "authTitle": "远程认证", |
| 374 | "authLead": "URL 服务器可以使用静态 headers、从环境变量派生的 env_headers、bearer_token_env_var 或 OAuth。优先级是保守的:先应用 headers 和 env_headers;bearer_token_env_var 只在尚未设置 Authorization 时添加;OAuth 登录获取的令牌同样不会覆盖已有的显式 header。应避免提交字面量 Authorization header——优先用 env_headers、bearer_token_env_var 或 OAuth 登录,让秘密留在 MCP 文件之外。", |
| 375 | "toolsTitle": "工具命名与安全", |
| 376 | "toolsLead": "发现的 MCP 工具以 {toolNamePattern} 的形式暴露给模型——例如名为 {gitServer} 的服务器的 {statusTool} 工具会变成 {gitStatusTool}。MCP 工具和内置工具走同一套审批框架:只读的 MCP 辅助工具在策略允许时可免提示运行,有副作用的 MCP 工具需要审批,Full Access 也不会绕过硬策略拦截。", |
| 377 | "toolsTrust": "只配置你信任的 MCP 服务器,并把 MCP 服务器配置视为等同于在本机运行代码。经过审查的本地插件包也可以贡献 MCP 服务器:它们复用同一个 MCP 管理器、审批和网络策略路径,以 <plugin>-<server> 的命名空间身份出现,边界比手写的 mcp.json 更严格。", |
| 378 | "serverTitle": "把 Codewhale 作为 MCP 服务器", |
| 379 | "serverLead": "{serveMcp} 会把 Codewhale 作为 stdio MCP 服务器运行,让其他会话(或任何 MCP 客户端)调用它的工具;{mcpServerCommand} 是 dispatcher 暴露的等价入口。{addSelfCommand} 会自动解析当前二进制路径并把服务器写进你的 MCP 配置。注意区分:{serveHttp} 是运行时 HTTP/SSE API,是另一种模式。", |
| 380 | "sourceNote": "来源文档:docs/MCP.md · 更新时请同步修改 docs-map.ts。" |
| 381 | }, |
| 382 | "docs-modes": { |
| 383 | "metaTitle": "模式 · Codewhale 文档", |
| 384 | "metaDescription": "Plan、Work、Operate 三种运行模式与独立的权限姿态。", |
| 385 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 386 | "overviewTitle": "模式", |
| 387 | "overviewLead": "模式决定 Codewhale 如何组织工作;权限姿态决定它如何处理具有后果的工具调用。两者相互独立。", |
| 388 | "modes": [ |
| 389 | [ |
| 390 | "Plan", |
| 391 | "用于只读调查与规划。Codewhale 可以检查工作区,但不能执行 Shell 命令或修改文件。" |
| 392 | ], |
| 393 | [ |
| 394 | "Act", |
| 395 | "用于常规交互式编码。Codewhale 可以检查、编辑并使用工具;Shell 是否可用以及何时请求批准,取决于当前配置和权限姿态。" |
| 396 | ], |
| 397 | [ |
| 398 | "Operate", |
| 399 | "用于从同一个输入区协调多项任务。父回合可以直接检查、编辑并使用 Shell 或 MCP 工具,其权限姿态、沙箱和安全规则与 Act 相同。独立、并行、后台或长时间工作会优先交给 fleet worker,但并非所有可执行步骤都必须委派。只有需要有序阶段、门禁或确定性汇总时才需要 Workflow。" |
| 400 | ] |
| 401 | ], |
| 402 | "switchingTitle": "切换模式", |
| 403 | "switchingLead": "输入区空闲时,按 {tab} 循环 Plan → Act → Operate。补全菜单打开时,Tab 接受补全;回合运行时,它可以把当前草稿排入下一个跟进消息。", |
| 404 | "switchingCommandLead": "运行 /mode 打开模式选择器,或使用以下命令直接切换:", |
| 405 | "permissionsTitle": "权限姿态", |
| 406 | "permissionsLead": "Plan 始终为只读。在 Act 或 Operate 中且输入区空闲时,按 {shiftTab} 循环 Ask → Auto-Review → Full Access。运行 {configCommand} 可查看或编辑当前会话权限;项目或托管策略可能会锁定或收紧它。", |
| 407 | "postures": [ |
| 408 | [ |
| 409 | "Ask", |
| 410 | "在可能产生重要后果的工具执行前询问你。" |
| 411 | ], |
| 412 | [ |
| 413 | "Auto-Review", |
| 414 | "自动评估工具风险,只在确实需要你决定时询问。" |
| 415 | ], |
| 416 | [ |
| 417 | "Full Access", |
| 418 | "无需批准提示即可运行工具,并启用受信任工作区访问。仓库规则和托管约束仍然有效;仅在你信任的工作区中使用。" |
| 419 | ] |
| 420 | ], |
| 421 | "sourceNote": "来源文档:docs/MODES.md · 更新时请同步修改 docs-map.ts。" |
| 422 | }, |
| 423 | "docs-runtime-api": { |
| 424 | "metaTitle": "运行时 API · Codewhale 文档", |
| 425 | "metaDescription": "面向集成、桥接和自动化的本地 HTTP/SSE、JSON-RPC stdio 与 ACP 入口。", |
| 426 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 427 | "overviewTitle": "运行时 API", |
| 428 | "overviewLead": "codewhale app-server 是 canonical 的本地运行时 API 与控制平面。本地 SDK、移动/远控客户端和编辑器集成直接与它对话,而不是抓终端输出。引擎只作为本地进程运行:所有 API 默认绑定 localhost——没有托管中继,不托管 provider 令牌,不泄露秘密。codewhale serve --http / --mobile 保留为 app-server --http / --mobile 的兼容别名,启动的是同一个服务器;新集成应面向 app-server。", |
| 429 | "entries": [ |
| 430 | [ |
| 431 | "http", |
| 432 | "完整 /v1/* HTTP/SSE 运行时 API(canonical 入口),默认 127.0.0.1:7878。" |
| 433 | ], |
| 434 | [ |
| 435 | "mobile", |
| 436 | "运行时 API 加 /mobile 手机控制页。" |
| 437 | ], |
| 438 | [ |
| 439 | "stdio", |
| 440 | "换行分隔的 JSON-RPC 2.0 控制传输,无监听端口,适合本地 SDK 和探针。" |
| 441 | ], |
| 442 | [ |
| 443 | "web", |
| 444 | "仅回环的浏览器客户端,内嵌于二进制并打开默认浏览器。" |
| 445 | ], |
| 446 | [ |
| 447 | "doctor", |
| 448 | "机器可读的健康与能力报告。" |
| 449 | ], |
| 450 | [ |
| 451 | "acp", |
| 452 | "面向 Zed 等编辑器的 ACP(Agent Client Protocol)stdio 适配器。" |
| 453 | ], |
| 454 | [ |
| 455 | "exec", |
| 456 | "一次性无头 worker(stream-json、fleet 子进程、CI 原语)——不属于本 API,但共享同一运行时与事件词汇。" |
| 457 | ] |
| 458 | ], |
| 459 | "stdioTitle": "零成本探测", |
| 460 | "stdioLead": "stdio 控制传输可以不花模型 token 地探测。capabilities 返回声明的方法族(thread/*、app/*、prompt/*)和完整方法列表;方法集由 crates/app-server/src/lib.rs 中的漂移测试固定,SDK 和本地集成可以放心依赖它不会悄悄变化。", |
| 461 | "interruptNote": "进行中的回合可以用 thread/interrupt(或 HTTP 的 POST /v1/threads/{id}/turns/{turn_id}/interrupt)请求中断;没有正在流式输出的回合时返回 interrupted: false——这不是错误,只是没有可停的东西。", |
| 462 | "securityTitle": "安全边界", |
| 463 | "securityLead": "运行时 API 令牌按 {authToken}、{runtimeTokenEnv}、{legacyTokenEnv} 的顺序读取;{insecureFlag} 只允许与回环绑定一起使用。浏览器侧的跨源请求会被 CORS 允许列表拒绝。选择非回环绑定(尤其是 {mobileFlag})之前,请阅读 docs/RUNTIME_API.md 的完整部署与认证约定。", |
| 464 | "sourceNote": "来源文档:docs/RUNTIME_API.md · 更新时请同步修改 docs-map.ts。" |
| 465 | }, |
| 466 | "docs-sandbox": { |
| 467 | "metaTitle": "沙箱与审批 · Codewhale 文档", |
| 468 | "metaDescription": "macOS Seatbelt、Linux 可选 bubblewrap、平台缺口和审批策略的真实边界。", |
| 469 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 470 | "overviewTitle": "沙箱与审批", |
| 471 | "overviewLead": "Codewhale 可以启动由模型提出的 shell 命令。审批策略、感知工作区的文件工具和操作系统命令包装器是三个独立的控制:一次审批不是沙箱,选择 workspace-write 也不代表当前平台有可用的 OS 包装器。本页只描述已经接入命令执行路径的行为。", |
| 472 | "platforms": [ |
| 473 | [ |
| 474 | "macOS · Seatbelt", |
| 475 | "Codewhale 探测 /usr/bin/sandbox-exec;探测成功且策略要求沙箱时,子命令会被包上运行时生成的 Seatbelt profile:广泛的文件系统读取、按策略限制的写入、仅在策略允许时放行网络。探测失败则如实报告无 OS 沙箱。" |
| 476 | ], |
| 477 | [ |
| 478 | "Linux · 可选 bubblewrap", |
| 479 | "Linux 命令沙箱是显式启用的:设置 prefer_bwrap = true,且 /usr/bin/bwrap 是可执行文件时才选用。子命令得到只读根视图,writable 挂载来自解析后的策略;默认隔离网络命名空间,仅在策略开启 network_access 时加 --share-net。未启用或未安装 bwrap 时报告 none。" |
| 480 | ], |
| 481 | [ |
| 482 | "Windows · 无 OS 沙箱", |
| 483 | "Windows 命令路径目前报告无 OS 沙箱。主机权限和审批策略仍然有效,但它们不是 Codewhale 的 OS 命令沙箱。" |
| 484 | ], |
| 485 | [ |
| 486 | "外部 OpenSandbox 执行", |
| 487 | "配置 sandbox_backend = \"opensandbox\" 后,shell 执行会发往配置的 OpenSandbox 兼容 HTTP 端点,而不是启动本地子进程。隔离保证属于所配置的服务及其运营者。" |
| 488 | ] |
| 489 | ], |
| 490 | "policiesTitle": "策略与回退", |
| 491 | "policiesLead": "本地 {sandboxMode} 取值为 {readOnly}、{workspaceWrite}、{dangerFullAccess} 或 {externalSandbox}。前两者只在选中且可用的 Seatbelt 或 bubblewrap 包装器下被强制执行;{dangerFullAccess} 有意绕过本地 OS 包装器;{externalSandbox} 声明执行已被外部隔离。没有选中包装器时,shell 命令在没有 Codewhale OS 隔离的情况下运行——审批规则和感知工作区的原生文件工具仍是独立的控制。", |
| 492 | "diagnosticsTitle": "诊断与限制", |
| 493 | "diagnosticsLead": "codewhale setup --status、codewhale doctor、codewhale doctor --json 和 diagnostics 工具会报告应用 bubblewrap 偏好后本地可用的包装器。拒绝归因是保守的:子命令的通用 Permission denied 本身并不能证明是 Codewhale 的沙箱拦截了它,未沙箱化的命令失败永远不会被标记为沙箱拒绝。", |
| 494 | "diagnosticsLimits": "限制同样如实说明:可用性在启动前检查,选中的包装器仍可能因主机策略、容器限制或竞态而失败;bubblewrap 会忽略缺失或不是目录的可写根;没有任何沙箱能防御内核漏洞或所有资源耗尽与侧信道攻击。", |
| 495 | "sourceNote": "来源文档:docs/SANDBOX.md · 更新时请同步修改 docs-map.ts。" |
| 496 | }, |
| 497 | "docs-subagents": { |
| 498 | "metaTitle": "子 Agent · Codewhale 文档", |
| 499 | "metaDescription": "agent 工具、fleet 角色、上下文分叉、worktree 隔离和并发上限。", |
| 500 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 501 | "overviewTitle": "子 Agent", |
| 502 | "overviewLead": "父会话通过 agent 工具启动一个有明确职责的子 Agent,并立即拿回 agent_id、compact 收据和 transcript 句柄;子 Agent 在后台运行。子 Agent 默认继承父级的工具注册表,但它们是叶子 worker:不会再拿到 agent 或嵌套生命周期工具。agent 启动的是分离的后台工作——取消父回合会停止父级的等待路径,但不会杀死已经启动的子运行。", |
| 503 | "overviewFleetNote": "对于必须跨进程重启、睡眠或远程执行存活的工作,优先选择 fleet 或 Workflow 支撑的 fleet 运行,而不是会话内的短寿命 agent 调用。", |
| 504 | "roles": [ |
| 505 | [ |
| 506 | "worker", |
| 507 | "灵活执行父级交代的多步任务;可写、可用 shell。默认角色。" |
| 508 | ], |
| 509 | [ |
| 510 | "scout", |
| 511 | "只读,快速摸清相关代码——例如“找出 Foo 的所有调用点”。" |
| 512 | ], |
| 513 | [ |
| 514 | "planner", |
| 515 | "分析并产出策略,不执行——“设计迁移方案,不要动手”。" |
| 516 | ], |
| 517 | [ |
| 518 | "reviewer", |
| 519 | "只读审查并按严重度打分——“审一遍这个 PR 的 bug”。" |
| 520 | ], |
| 521 | [ |
| 522 | "builder", |
| 523 | "以最小改动落地一个明确的变更;可写、可用 shell。" |
| 524 | ], |
| 525 | [ |
| 526 | "verifier", |
| 527 | "运行测试和校验并汇报结果,不写代码。" |
| 528 | ], |
| 529 | [ |
| 530 | "consultant", |
| 531 | "只读的高推理力度顾问,用于判断类问题和设计评审。" |
| 532 | ], |
| 533 | [ |
| 534 | "custom", |
| 535 | "手工指定狭窄的工具白名单,用于锁定的派发。" |
| 536 | ] |
| 537 | ], |
| 538 | "forkTitle": "上下文分叉", |
| 539 | "forkLead": "{agentTool} 默认开启全新会话:子 Agent 只拿到角色提示词和你给的任务。当任务依赖父 transcript 里已有的决定、文件、待办或计划状态时,用 {forkContext}——运行时在可用时保持父级前缀逐字节一致(保留前缀缓存复用),追加一份结构化状态快照,再把子 Agent 的角色说明和任务放在末尾。独立探索用新会话,延续、审查、总结或压缩类工作用分叉会话。", |
| 540 | "worktreeTitle": "Worktree 隔离", |
| 541 | "worktreeLead": "并行编辑通道用 {worktreeFlag} 启动:Codewhale 为子 Agent 创建新的 git worktree 和分支(默认 {branchPattern},检出在父仓库旁的 {worktreeDir} 下),父检出保持干净。隔离不等于写权限:只带 prompt 的 worker 从只读开始;要写代码的子 Agent 还需声明 {writeAuthority} 和至少一个规范化的 {writeRoots}、{exactFiles} 或 {coordinationContracts}值;重叠的共享写声明会在任何改动之前失败。", |
| 542 | "capacityTitle": "并发上限", |
| 543 | "capacityLead": "子 Agent 容量的权威来源是 crates/tui/src/config/subagent_limits.rs:默认配置并发 64,最大配置并发 128,运行加排队的最大准入 1024。这些是容量上限,不是建议把每个槽位都派出去——管理者应使用最小的有效扇出,保持单一汇总负责人,并在汇报整体完成前验证 worker 收据。", |
| 544 | "sourceNote": "来源文档:docs/SUBAGENTS.md · 更新时请同步修改 docs-map.ts。" |
| 545 | }, |
| 546 | "docs-web": { |
| 547 | "metaTitle": "浏览器客户端 · Codewhale 文档", |
| 548 | "metaDescription": "仅回环的内嵌浏览器客户端:一次性引导、会话 Cookie 与本地信任边界。", |
| 549 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 550 | "overviewTitle": "浏览器客户端", |
| 551 | "overviewLead": "{webCommand} 在 canonical 运行时 API 之上打开 Codewhale 内嵌的浏览器客户端。它是一个纯本地界面:服务器始终绑定 {loopbackHost},无法改绑到局域网地址,也无法在关闭运行时认证的情况下运行。默认地址是 {defaultUrl};端口冲突时用 {portExample} 换一个回环端口。Ctrl+C 停止进程,浏览器会话随之结束。", |
| 552 | "overviewBody": "当前客户端提供响应式的线程与搜索侧栏、由运行时持有的会话事实、transcript 与工具收据,以及输入区。它可以创建、选择、重命名和归档线程;发起或引导回合;中断工作;处理审批;回答运行时的用户输入请求。浏览器只是同一个本地运行时的另一视图——不会创建第二个云账号,不会把 provider 凭据复制进浏览器存储,也不会削弱已配置的审批与沙箱策略。", |
| 553 | "authTitle": "认证边界", |
| 554 | "authLead": "启动 URL 携带的是一个随机、短寿命、一次性的引导凭证——绝不是运行时 bearer 令牌。一次回环请求把它换成 HttpOnly、SameSite=Strict、进程本地的会话 Cookie,并立即使该凭证失效。重用、过期、畸形或非回环的引导尝试都会失败关闭。运行时令牌不会出现在渲染的 HTML、浏览器存储、URL 查询或片段、或浏览器启动参数中。携带 Cookie 的状态变更请求还必须出示精确的本地 web 源;跨源浏览器请求会被拒绝。", |
| 555 | "localTitle": "本地就是本地", |
| 556 | "localLead": "{webCommand} 只接受 {portFlag}——没有 {hostFlag},也没有关闭认证的选项。不要把它当公开网站,也不要通过路由器转发、公开反向代理或隧道暴露它的端口。单独的 {mobileCommand} 和 {httpFlag} 模式有不同的部署与认证约定,操作它们(尤其是选择非回环绑定)之前请阅读运行时 API 文档。", |
| 557 | "remoteTitle": "从网页应用远程控制", |
| 558 | "remoteLead": "现已可用。要在已登录的 Codewhale 网页应用中继续正在运行的本地会话,请在该会话里输入 /rc,或用 codewhale rc 启动,然后在浏览器中批准一次性代码。租约有效期间,浏览器接管新的提示与审批,终端保持为可读的安全界面;两端都仍可中断。", |
| 559 | "remoteBody": "连接后,横幅和一条文字稿说明会显示实时会话链接。/rc open 在浏览器中打开它,/rc link 打印它,/rc status 显示会话归属,/rc stop 把会话交还给终端。连接中断时,本地输入会保持锁定,直到最后一个网页租约过期,因此两个控制端永远不会争抢。从同一终端登记的每个文件夹共享一个稳定的设备 ID,所以网页应用按机器而不是按会话列出计算机。这与上面的本机浏览器客户端不同:/rc 把本地会话与你的账户配对;codewhale web 只是提供一个不需要账户的本地页面。", |
| 560 | "troubleshootingTitle": "常见问题", |
| 561 | "troubleshootingLead": "端口 7878 被占用时用 --port 换一个。浏览器无法打开时命令会报错退出,而不会留下可重用的引导凭证;检查系统默认浏览器设置后重新启动。页面能打开但 provider 不可用时,查 codewhale doctor 和 /provider——web 命令不配置也不迁移 provider 凭据。会话过期后重启 codewhale web 以签发新的进程本地会话;重用旧的引导 URL 本来就会失败。", |
| 562 | "sourceNote": "来源文档:docs/WEB.md · 更新时请同步修改 docs-map.ts。" |
| 563 | }, |
| 564 | "docs-computers": { |
| 565 | "metaTitle": "云端计算机 · Codewhale 文档", |
| 566 | "metaDescription": "本地 Codewhale 会话如何在 Daytona 计算机上提议、确认并跟踪一个云端 Agent——显式指定代码托管平台、凭证缺失即拒绝,以及哪些部分尚未实现。", |
| 567 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 568 | "overviewTitle": "云端计算机", |
| 569 | "overviewLead": "本地会话可以把一项编码任务卸载到云端计算机,就像编辑器派出一个云端 Agent:远程任务创建分支,并计划向明确指定的代码托管平台发起 pull request。本地保持响应。花费与推送不会悄悄发生——先写入提议,在你确认之前不会创建沙箱,也不会推送分支。", |
| 570 | "proposeTitle": "先提议,再确认", |
| 571 | "proposeLead": "第一条命令写入提议并退出。第二条按 id 确认。TUI 中有同样的两步斜杠命令,{cloudAgent} 是 {dispatch} 的别名。", |
| 572 | "jobsLead": "云端任务作为 {kind} 在现有的任务面板上是一等公民。可以在 TUI 或 CLI 中列出、查看和取消:", |
| 573 | "remotesTitle": "显式指定托管平台", |
| 574 | "remotesLead": "远程仓库不会被默认当作 GitHub。以平台命名的远程就是该平台;其他远程按 URL 主机判定。如果存在多个平台,请传入 {remoteFlag}。", |
| 575 | "remotes": [ |
| 576 | [ |
| 577 | "github · cnb · gitee(按远程名)", |
| 578 | "对应平台,与 URL 无关" |
| 579 | ], |
| 580 | [ |
| 581 | "origin 或其他 → github.com", |
| 582 | "github" |
| 583 | ], |
| 584 | [ |
| 585 | "origin 或其他 → cnb.cool", |
| 586 | "cnb" |
| 587 | ], |
| 588 | [ |
| 589 | "origin 或其他 → gitee.com", |
| 590 | "gitee" |
| 591 | ] |
| 592 | ], |
| 593 | "enableTitle": "启用 Daytona 计算机", |
| 594 | "enableLead": "凭证只存在于进程环境或 Codewhale 密钥存储中——绝不写进 config.toml 或 models.toml,也绝不提交到仓库。", |
| 595 | "enableSteps": [ |
| 596 | [ |
| 597 | "创建 API 密钥", |
| 598 | "在 Daytona 控制台的 API keys 页面。" |
| 599 | ], |
| 600 | [ |
| 601 | "为本次会话导出", |
| 602 | "{apiKey};如需非默认端点,可选设置 {apiUrl}。" |
| 603 | ], |
| 604 | [ |
| 605 | "或一次性保存", |
| 606 | "存入 Codewhale 密钥槽 {slot}(OS 钥匙串或 $CODEWHALE_HOME 密钥文件)。也接受 {alias} 别名。" |
| 607 | ] |
| 608 | ], |
| 609 | "cliNote": "安装了 daytona CLI 并不等于有凭证。{status} 和不带参数的 {bare} 会分别报告 CLI 是否存在与凭证是否存在。", |
| 610 | "rulesTitle": "缺失即拒绝的规则", |
| 611 | "rules": [ |
| 612 | [ |
| 613 | "未确认", |
| 614 | "写入 {proposed} 任务;命令成功退出;不调用 Daytona;不推送任何内容。" |
| 615 | ], |
| 616 | [ |
| 617 | "已确认但无凭证", |
| 618 | "写入 {refused} 任务;命令失败退出;不存在沙箱。" |
| 619 | ], |
| 620 | [ |
| 621 | "已确认且有凭证", |
| 622 | "创建 Daytona 沙箱,并以任务 id 和平台打标签。此版本不会声称任何 GitHub、CNB 或 Gitee 的 PR 地址;缺少平台令牌时同样拒绝。" |
| 623 | ] |
| 624 | ], |
| 625 | "membershipTitle": "谁可以派发", |
| 626 | "membershipLead": "托管 Agent 界面使用同一个 Codewhale 会员身份认证——即 {login} 的账户会话。会员资格决定云端 Agent,而不是本地派发:只要有 Daytona 与托管平台凭证,`codewhale dispatch` 无需账户即可运行。提供商品牌保持内部不可见,安装和运行本地 Runtime 完全不需要账户。", |
| 627 | "leftoverTitle": "尚未实现", |
| 628 | "leftover": [ |
| 629 | [ |
| 630 | "实时查看", |
| 631 | "正在运行的沙箱的日志跟随。" |
| 632 | ], |
| 633 | [ |
| 634 | "真正的取消", |
| 635 | "从任务面板销毁付费的 Daytona 沙箱。" |
| 636 | ], |
| 637 | [ |
| 638 | "自动决定", |
| 639 | "Codewhale 可以提议派发,但不能自己确认自己的提议。" |
| 640 | ], |
| 641 | [ |
| 642 | "远程执行器", |
| 643 | "真正创建分支并发起 pull request 的 Agent。" |
| 644 | ] |
| 645 | ], |
| 646 | "sourceNote": "源文档:docs/DAYTONA_CLOUD_DISPATCH.md、docs/CODEWHALE_AGENT.md · 修改时请同步更新 docs-map.ts。" |
| 647 | }, |
| 648 | "docs-auth": { |
| 649 | "metaTitle": "账户与密钥 · Codewhale 文档", |
| 650 | "metaDescription": "提供商密钥与可选的 Codewhale 账户:各自如何设置、存放在哪里,以及哪些操作完全不需要账户。", |
| 651 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 652 | "overviewTitle": "账户与密钥", |
| 653 | "overviewLead": "Codewhale 持有两种互不相关的凭证,把它们分开会更清楚。提供商密钥让模型能够回答。Codewhale 账户是可选的,它决定能否使用托管界面——云端 Agent 和聊天渠道。安装和运行本地 Runtime 既不需要账户,也不需要密钥。", |
| 654 | "credentials": [ |
| 655 | [ |
| 656 | "提供商密钥(BYOK)", |
| 657 | "你自己的 DeepSeek、OpenAI、Anthropic、OpenRouter、本地运行时或任何其他路由的密钥。用 {authSet} 设置。模型回复需要它。" |
| 658 | ], |
| 659 | [ |
| 660 | "Codewhale 账户", |
| 661 | "由 {login} 发起的浏览器设备授权会话。可选。决定能否使用云端 Agent 与 Codewhale Agent 界面;本地从不需要。" |
| 662 | ] |
| 663 | ], |
| 664 | "providerTitle": "提供商密钥", |
| 665 | "providerLead": "{authSet} 保存某一个提供商的密钥。进程级的 {apiKeyFlag} 仍然在单次运行中优先。{login} 不是提供商密钥命令:提供商凭证只能通过 {authSet} 配置。", |
| 666 | "accountTitle": "账户会话", |
| 667 | "accountLead": "{login} 与 {accountLogin} 是同一个浏览器设备授权流程。会话按所选的 {profile} 区分,旧的 {cloud} 写法仍然是别名。", |
| 668 | "accountCommands": [ |
| 669 | [ |
| 670 | "codewhale login", |
| 671 | "通过浏览器设备授权流程登录。" |
| 672 | ], |
| 673 | [ |
| 674 | "codewhale account status", |
| 675 | "显示所选 profile 的会话。" |
| 676 | ], |
| 677 | [ |
| 678 | "codewhale account logout", |
| 679 | "移除该会话。" |
| 680 | ] |
| 681 | ], |
| 682 | "storageTitle": "会话存放在哪里", |
| 683 | "storageLead": "账户会话优先使用操作系统的凭证管理器;在没有凭证管理器的环境(无头主机、SSH、容器)中自动回退到权限为 0600 的私有 Codewhale 密钥文件。", |
| 684 | "vaultTitle": "账户自己的密钥库", |
| 685 | "vaultLead": "{keys} 管理已登录账户的自带密钥(BYOK)库,且永远不会显示密钥内容。", |
| 686 | "portableTitle": "迁移到另一台机器", |
| 687 | "portableLead": "{portable} 输出一个不含密钥的配置包:凭证和机器相关的键会被直接删除,而不是用打码占位符替代,因此这个文件可以安全携带,里面没有任何内容能以你的身份登录。", |
| 688 | "appTitle": "在网页上登录", |
| 689 | "appLead": "托管的 Codewhale 应用使用同一个账户。可以在那里登录或注册;本地 Runtime 没有它也照常工作。", |
| 690 | "appSignIn": "登录 →", |
| 691 | "appRegister": "注册 →", |
| 692 | "sourceNote": "源文档:docs/CONFIGURATION.md、docs/CODEWHALE_AGENT.md、docs/PROVIDERS.md · 修改时请同步更新 docs-map.ts。" |
| 693 | }, |
| 694 | "docs-trust": { |
| 695 | "metaTitle": "安全与信任 · Codewhale 文档", |
| 696 | "metaDescription": "哪些内容留在你的机器上、托管提供商会收到什么、审批与 OS 沙箱有何区别、遥测发送什么以及如何关闭,以及在哪里报告安全漏洞。", |
| 697 | "bodyClassName": "text-ink-soft leading-[1.9] tracking-wide", |
| 698 | "overviewTitle": "安全与信任", |
| 699 | "overviewLead": "这一页说明 Codewhale 如何处理你的代码、命令和数据——按实际实现来写,而不是按意图来写。每一条都取自仓库中的文档,事实门禁会在每次构建时核对。", |
| 700 | "boundaryTitle": "你的数据去了哪里", |
| 701 | "boundaries": [ |
| 702 | [ |
| 703 | "本地 Runtime", |
| 704 | "Runtime、工作区状态和审计日志都留在你的机器上。" |
| 705 | ], |
| 706 | [ |
| 707 | "托管提供商", |
| 708 | "你选择的托管提供商会收到本轮推理所需的上下文。中间没有强制经过 Codewhale 的中继。" |
| 709 | ], |
| 710 | [ |
| 711 | "本地推理", |
| 712 | "回环地址的本地模型路由(vLLM、Ollama、SGLang)可以让推理完全留在本机。" |
| 713 | ], |
| 714 | [ |
| 715 | "账户", |
| 716 | "本地 Runtime 不需要账户。" |
| 717 | ], |
| 718 | [ |
| 719 | "Plan 模式", |
| 720 | "Plan 是只读的。" |
| 721 | ] |
| 722 | ], |
| 723 | "approvalTitle": "审批不是沙箱", |
| 724 | "approvalLead": "审批姿态——Ask、Auto-Review、Full Access——决定一条被提议的命令在执行前是否先展示给你。某一层的批准从来不是全局放行:后面的层仍然可以要求审查或阻止调用,而且批准也不等于操作系统级的沙箱授权。完整的模型工具调用流水线有九个有序的层,从有效配置、钩子、类型化权限规则、仓库法则、人工审批,直到执行沙箱。", |
| 725 | "sandboxTitle": "各平台的 OS 沙箱", |
| 726 | "sandboxLead": "这里只描述已接入命令执行路径的行为,Codewhale 会报告它实际选用的机制。", |
| 727 | "sandboxes": [ |
| 728 | [ |
| 729 | "macOS — Seatbelt", |
| 730 | "sandbox-exec 的运行时探测成功时自动启用。报告为 {seatbelt}。" |
| 731 | ], |
| 732 | [ |
| 733 | "Linux — bubblewrap", |
| 734 | "需显式启用:{preferBwrap} 且 /usr/bin/bwrap 可执行。报告为 {bwrap}。" |
| 735 | ], |
| 736 | [ |
| 737 | "没有 bwrap 的 Linux", |
| 738 | "默认没有 OS 包装层。报告为 {none}。" |
| 739 | ], |
| 740 | [ |
| 741 | "Windows", |
| 742 | "当前实现没有 OS 包装层。报告为 {none}。" |
| 743 | ], |
| 744 | [ |
| 745 | "外部服务", |
| 746 | "{opensandbox} 会把执行路由到兼容 OpenSandbox 的服务。" |
| 747 | ] |
| 748 | ], |
| 749 | "sandboxNote": "仓库中还有一个 seccomp 模块和一份未来的 Windows 辅助程序契约。两者都没有接入子命令启动,所以 Codewhale 不会宣传它们:只存在于源码中的沙箱代码不能证明某条命令受到了限制。", |
| 750 | "telemetryTitle": "遥测,精确到每一项", |
| 751 | "telemetryLead": "Codewhale 0.9.13 默认统计匿名使用量,并在首次启动时告知你;早先的 0.9.11 版本会先询问。关闭是会被后续版本保留的选择,在早先的自愿开启政策下记录的关闭也始终有效。显示告知绝不会代你记录任何同意;处理方为 Codewhale 和 PostHog。", |
| 752 | "telemetry": [ |
| 753 | [ |
| 754 | "永远不收集", |
| 755 | "对话、代码、prompt、文件、文件/仓库/分支名、模型内容、凭据,以及任何逐轮或逐工具的时间线。" |
| 756 | ], |
| 757 | [ |
| 758 | "开启时发送", |
| 759 | "版本与平台类别、会话时长与结果、功能与错误计数、封闭枚举,以及一个每 90 天轮换的随机安装 id。" |
| 760 | ], |
| 761 | [ |
| 762 | "端点", |
| 763 | "{endpoint}——第一方 Cloudflare Worker,源码在仓库的 telemetry-ingest/ 目录下。" |
| 764 | ], |
| 765 | [ |
| 766 | "第一方存储", |
| 767 | "没有 IP、国家或地理位置列。不记录请求日志。保留期固定为三个月。" |
| 768 | ], |
| 769 | [ |
| 770 | "PostHog", |
| 771 | "可选转发需要运营方单独配置,并验证出口不会转发客户端 IP。PostHog 保留期由项目另行设置;源码支持不代表该处理方已启用。" |
| 772 | ], |
| 773 | [ |
| 774 | "自己审计", |
| 775 | "设置 {dryRun}:批次会追加写入你机器上的 {dryRunFile},与服务器本应收到的内容逐字节一致,且不会构造任何 HTTP 客户端。" |
| 776 | ], |
| 777 | [ |
| 778 | "关闭", |
| 779 | "{configOff} 或 {envOff}。" |
| 780 | ] |
| 781 | ], |
| 782 | "auditTitle": "本地审计日志", |
| 783 | "auditLead": "敏感事件——凭证、审批和提权事件——会尽力追加写入 {auditLog}。写入失败会被记录而不是隐藏。提供商的 token 与缓存用量在可用时会在本地显示。", |
| 784 | "reportTitle": "报告安全漏洞", |
| 785 | "reportLead": "安全报告请通过邮件发给维护者,而不是提交公开 issue。请附上页眉中的版本号,如有复现步骤也请一并提供。", |
| 786 | "reportCta": "给维护者发邮件", |
| 787 | "sourceNote": "源文档:docs/SANDBOX.md、docs/AUTHORIZATION_ORDER.md、docs/TELEMETRY.md、docs/public-surface-facts.json · 修改时请同步更新 docs-map.ts。" |
| 788 | }, |
| 789 | "states": { |
| 790 | "loadingLabel": "加载中…", |
| 791 | "emptyTitle": "这里还没有内容", |
| 792 | "emptyBody": "暂时没有可显示的记录。这里不会用编造的内容填充。", |
| 793 | "errorTitle": "页面没有加载完成", |
| 794 | "errorBody": "中途出了问题。你的操作没有丢失;请重试,如果持续失败,请报告给我们。", |
| 795 | "retry": "重试", |
| 796 | "reload": "重新加载页面", |
| 797 | "homeLink": "返回首页", |
| 798 | "docsIndexLink": "打开文档目录", |
| 799 | "notFoundTitle": "这个地址没有页面", |
| 800 | "notFoundBody": "链接可能已过期,或页面已迁移。文档目录列出了当前所有页面。", |
| 801 | "unavailableTitle": "实时记录尚未加载", |
| 802 | "unavailableBody": "数据源没有响应上一次刷新,或者此页面自构建以来尚未刷新。这里不会用编造的内容填充。", |
| 803 | "offlineTitle": "你已离线", |
| 804 | "offlineBody": "操作已暂停,直到网络恢复。此处显示的内容不会刷新。", |
| 805 | "reconnectingTitle": "正在重新连接…", |
| 806 | "reconnectingBody": "正在检查连接(第 {attempt} 次)。", |
| 807 | "degradedTitle": "连接不稳定", |
| 808 | "degradedBody": "服务器没有响应上一次检查。你看到的内容可能已过时。", |
| 809 | "onlineTitle": "已恢复在线", |
| 810 | "onlineBody": "连接已恢复。", |
| 811 | "retryNow": "立即重试", |
| 812 | "dismiss": "关闭", |
| 813 | "lastChecked": "上次检查 {time}" |
| 814 | }, |
| 815 | "changelog": { |
| 816 | "metaTitle": "更新日志 · Codewhale", |
| 817 | "metaDescription": "Codewhale 发布记录:最新已发布版本、尚未发布的源码候选版,以及每个版本的说明,均取自仓库中的 CHANGELOG.md。", |
| 818 | "kicker": "发布记录", |
| 819 | "title": "改了什么,在哪个版本。", |
| 820 | "lead": "页面顶部是两个事实:最新发布的版本,以及源码树当前声明的版本。下面的内容逐节来自仓库自己的 CHANGELOG.md。", |
| 821 | "publishedLabel": "最新已发布版本", |
| 822 | "publishedValue": "{tag} · 发布于 {date}", |
| 823 | "candidateLabel": "源码候选版", |
| 824 | "candidateValue": "{version} · 未发布", |
| 825 | "candidateMatches": "{version} · 与已发布版本一致", |
| 826 | "releasesLink": "GitHub Releases ↗", |
| 827 | "unreleasedHeading": "未发布", |
| 828 | "unreleasedNote": "自上一个标签以来合并到主分支的改动。它们属于源码候选版,不属于任何已发布的包。", |
| 829 | "compareLink": "在 GitHub 上比较 ↗", |
| 830 | "releasePageLink": "发布页 ↗", |
| 831 | "moreEntries": "显示 {shown} / {total} 条", |
| 832 | "fullNotes": "完整说明见 CHANGELOG.md ↗", |
| 833 | "releaseNotesLink": "{version} 完整说明 ↗", |
| 834 | "emptyTitle": "没有解析出发布说明", |
| 835 | "emptyBody": "构建时没有找到可解析的 CHANGELOG.md。GitHub 的发布列表仍然是权威记录。" |
| 836 | }, |
| 837 | "computer-use": { |
| 838 | "metaTitle": "Mac 版 Computer Use · Codewhale", |
| 839 | "metaDescription": "下载并设置 Mac 版 Codewhale Computer Use。提供应用后台操作、权限设置,以及由用户控制的暂停和停止功能。", |
| 840 | "title": "Computer Use", |
| 841 | "lead": "让 Codewhale 在应用中完成操作,你也可以继续工作。Mac 助手将权限设置、应用后台操作,以及暂停或停止输入的控制集中在菜单栏中。", |
| 842 | "publisher": "由 Codewhale 开发", |
| 843 | "download": "下载 Mac 版", |
| 844 | "downloadZip": "ZIP 压缩包(供应用内更新使用)", |
| 845 | "requirements": "macOS 13.5 或更高版本 · Apple 芯片与 Intel", |
| 846 | "included": "只需下载一个应用,无需另行安装 Node 或编译器。", |
| 847 | "pendingTitle": "Mac 下载包准备中", |
| 848 | "pendingBody": "完成 Apple 公证和发布检查后,正式安装包将在此提供。", |
| 849 | "unavailableTitle": "暂时无法查询下载状态", |
| 850 | "unavailableBody": "请刷新页面重试,或通过下方链接查看已发布版本。", |
| 851 | "releases": "已发布版本", |
| 852 | "receipt": "下载校验信息", |
| 853 | "setup": "设置你的 Mac", |
| 854 | "steps": [ |
| 855 | { |
| 856 | "title": "安装应用", |
| 857 | "body": "打开下载的磁盘映像,将 Codewhale Computer Use 拖入“应用程序”。从“应用程序”中打开它,然后点击菜单栏中的鲸鱼图标,选择 Computer Use。" |
| 858 | }, |
| 859 | { |
| 860 | "title": "检查权限", |
| 861 | "body": "通过设置按钮打开系统设置中的“辅助功能”和“屏幕录制”。由你决定授予哪些权限。" |
| 862 | }, |
| 863 | { |
| 864 | "title": "运行后台检查", |
| 865 | "body": "助手会打开一个临时练习窗口,输入文本并截取该窗口,同时检查运行期间指针或前台应用是否发生变化。" |
| 866 | }, |
| 867 | { |
| 868 | "title": "连接 Codewhale", |
| 869 | "body": "在 Codewhale 插件市场中审查、信任并启用 Computer Use。请使用 0.3.1 或更高版本,确保本地操作受助手的暂停和停止控制。" |
| 870 | } |
| 871 | ], |
| 872 | "controlsTitle": "继续工作,掌握控制权。", |
| 873 | "controlsBody": "受支持的操作可在选定应用的后台完成。需要前台控制的应用或手势必须得到你的授权。菜单会显示目标应用与输入模式;Pause 暂停助手输入,Stop 结束助手的现有会话。", |
| 874 | "updateTitle": "由你决定何时更新", |
| 875 | "updateBody": "在应用中选择 Check for updates。安装更新前,助手会校验下载文件、Codewhale 签名和 Apple 公证,并保留旧版应用以便恢复。", |
| 876 | "help": "设置与故障排查", |
| 877 | "notes": "版本说明", |
| 878 | "demo": "查看后台检查演示", |
| 879 | "source": "源码与其他平台", |
| 880 | "platforms": "此下载适用于 Mac。Windows 和 Linux 目前通过源码插件及宿主端设置使用。", |
| 881 | "installTitle": "Mac 版 Computer Use", |
| 882 | "installLead": "通过 Computer Use 助手添加应用后台操作能力。设置 Mac 权限、运行后台检查,并从菜单栏暂停或停止助手输入。", |
| 883 | "installLink": "Computer Use 下载与设置" |
| 884 | } |
| 885 | } |
| 886 |