工作面板
Codewhale 的 TUI 侧栏有一块 Work 区域,显示当前工作的实时状态。它不只是视觉上的待办清单:同一份工作状态同时由模型可见的工具、会话接力(relay)和子 Agent 交接共同维护。它由两层构成——一个带计数的执行台账(To-do),和一层可选的策略上下文(update_plan 元数据)。
To-do:带计数的执行台账
To-do 是具体工作的进度台账:一组带状态的条目(pending / in_progress / completed / cancelled),外加完成百分比和当前进行中的条目。模型通过 canonical 的 work_update 工具替换活动线程或持久任务的 To-do 投影——这是模型可见的进度表面。旧的 checklist_* 和 todo_* 名字仍是隐藏的兼容别名:它们对同一份 To-do 状态保持可派发,以便旧 transcript 回放,但不会出现在模型目录里。
策略上下文:update_plan 元数据
update_plan 承载的是可选的高层策略,不是第二个清单。它的字段面向阶段级理解:标题、目标、上下文摘要、说明、来源、关键文件、约束、推荐方案、验证计划、风险与未知、交接包,以及一组步骤。它帮助父会话或后续 worker 理解“为什么这么做”;具体执行进度始终属于 To-do 台账。侧栏有意不把策略状态渲染成第二条进度列表——两份进度并存只会制造歧义。
延续性:同一份状态流向各处
同一份工作状态喂给多个出口:侧栏的 To-do 区域实时渲染它;/relay 让模型把 To-do 快照和 update_plan 策略元数据写进交接文件,供下一个线程接续;分叉(fork_context)的子 Agent 会在其前缀里收到一份结构化状态块,其中的 Work 小节就是这份 To-do 快照——子 Agent 因此从父级真实的进度位置继续,而不是从转述的摘要开始。
终端实拍(文本复原)
下面的文本块按 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” 标注被省略的条目。
哪些是模型可见的,哪些只是界面
已被实现和测试证实的模型可见路径有三条:work_update 工具本身是模型目录里的活跃工具;分叉子 Agent 的结构化状态块(<codewhale:fork_state> 中的 Work 小节,有针对它的引擎测试);以及 /relay 输出,它把同一份 To-do 快照和策略元数据注入交接指令。侧栏渲染是视觉呈现——它给人看,不注入模型上下文。
有一项能力我们刻意不宣称:把当前 Work 状态注入普通父回合的模型上下文(父回合级 grounding)。它取决于 issue #3983 的运行时测试落地;在那之前,本页只描述已证实的行为。
来源文档:docs/TOOL_SURFACE.md, docs/TOOL_LIFECYCLE.md · 更新时请同步修改 docs-map.ts。