Codewhale 文档

查找准确的使用说明。

从新手指引和安装开始,或者直接查找产品名词、模式、权限、工具、提供商、Fleet、钩子、MCP 与运行时 API。这些页面就是正式的产品文档;每页都链接仓库中的源文档,方便查阅完整细节。

工作面板

Codewhale 的 TUI 侧栏有一块 Work 区域,显示当前工作的实时状态。它不只是视觉上的待办清单:同一份工作状态同时由模型可见的工具、会话接力(relay)和子 Agent 交接共同维护。Codewhale 只有一个 Work 面板——带计数的 To-do 执行台账。update_plan 是对话式的推理笔记,不是第二个进度面板。

To-do:唯一的执行台账

To-do 是具体工作的进度台账:一组带状态的条目(pending / in_progress / completed / cancelled),外加完成百分比和当前进行中的条目。模型通过 canonical 的 todo_write 工具替换活动线程或持久任务的 To-do 投影——这是模型可见的进度表面。旧的 checklist_*todo_* 名字仍是隐藏的兼容别名:它们对同一份 To-do 状态保持可派发,以便旧 transcript 回放,但不会出现在模型目录里。

策略是对话式推理:update_plan

update_plan 承载的是可选的高层策略,不是第二个台账。它的字段面向阶段级理解:标题、目标、上下文摘要、说明、来源、关键文件、约束、推荐方案、验证计划、风险与未知、交接包,以及一组步骤。它帮助父会话或后续 worker 理解“为什么这么做”;具体执行进度始终属于 To-do 台账。侧栏有意不把策略状态渲染成第二条进度列表,模型可见的 Work grounding 也不会包含它——只有 update_plan 而 To-do 为空时,不会产生任何 Work 状态。

延续性:同一份状态流向各处

同一份工作状态喂给多个出口,而且用的是同一个渲染器:每个父回合循环和子 Agent 步骤请求的尾部会附加一个瞬时的 <codewhale:work_state> 块;分叉(fork_context)的子 Agent 在其前缀的结构化状态块里收到同样的正文;/relay 把同样的正文写进交接指令。三处的 To-do 正文逐字节一致——子 Agent 与下一个线程因此从父级真实的进度位置继续,而不是从转述的摘要开始。侧栏的 To-do 区域则实时渲染同一份状态。

终端实拍(文本复原)

下面的文本块按 crates/tui/src/tui/sidebar.rs 的渲染逻辑逐行复原侧栏 Work 区域:目标是带 ◆ 图标的 Goal 行、耗时、token 预算条;然后是完成度计数和带编号的状态条目。

To-do
◆ Goal: Land the v0.9.2 website docs cluster
elapsed: 18m
[█████████░░░░░░░░░░░] 45%
50% settled (2/4)
[✓] #1 Read docs-map.ts and the Modes page pattern
[✓] #2 Draft the Fleet and Sandbox pages
[~] #3 Write the Work surface page
[ ] #4 Run check:docs, tests, and the build

条目前缀对应四种状态:[ ] 待办、[~] 进行中、[✓] 完成、[-] 取消。空间不够时侧栏窗口化到进行中条目附近,并用 “+N more To-do items” 标注被省略的条目。

哪些是模型可见的,哪些只是界面

已被实现和测试证实的模型可见路径有五条:todo_write 工具本身是模型目录里的活跃工具;每个父回合循环请求尾部的 <codewhale:work_state> 块(#3983);每个子 Agent 步骤请求尾部的同一个块——渲染自它自己的清单;分叉子 Agent 的结构化状态块(<codewhale:fork_state> 中的 Work 小节,在真正 fork 的那一刻解析);以及 /relay 输出。侧栏渲染是视觉呈现——它给人看,不注入模型上下文。

边界值得说清楚:这个块是瞬时的——它只属于当次请求,既不写进会话历史,也不进入稳定系统前缀,因此稳定的系统与工具前缀仍可参与前缀缓存;各提供商对最新用户消息的缓存方式仍以其自身协议为准。它会在每个父回合循环和子 Agent 步骤请求前重建,读取的是权威状态(有 work graph 时读它暂存的投影,而不是尚未发布的旧视图),所以工具循环中途的一次 todo_write 会在下一步出现。父回合循环的上下文预检按真正会发出的那一份尾部计费,因此不会先放行、再因为附加这个块而超限;离线计数一律偏保守。条目数与字符数都有硬上限,进行中的条目优先保留,被省略的部分带省略标记。To-do 为空时不输出任何块。渲染器只保证包裹结构、控制字符与上限这三件事——它不会审查条目文本的含义,任意 To-do 内容不因此变成可信指令。

来源文档:docs/TOOL_SURFACE.md, docs/TOOL_LIFECYCLE.md · 更新时请同步修改 docs-map.ts。