返回 CodeWhale
zh.json
根目录 / web / gt-catalog / zh.json
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
886 lines JSON