编码任务
编码看板将一份写下的任务简报,以你想要的最少繁文缛节,变成已合并的代码:写下你需要的东西,用交互式的规划代理将它 Plan(规划成可审阅的阶段),或用 One shot 一次搞定,看着代理在它自己的 git worktree 里工作,用固定到行的评论审阅 diff,然后合并。每个阶段是一列;每项任务是一张卡片。
侧边栏在靠近顶部保留一个纤细的 TASKS 区块——一条脉动行会概括看板(9 项已规划 · 1 项进行中 · 2 项待审阅),并以橙色徽章统计在 Testing/Review 中等待的卡片,以及当某个代理需要你的输入时的红色徽章。单击区块标题或该行即可打开看板,或在任何地方按 ⇧⌘T。
| 列 | 这里放什么 |
|---|---|
| Backlog | 你写好但尚未开始的任务简报。每张卡片提供 Plan 和 One shot。 |
| Plan | 规划代理从任务简报归档的阶段卡片——已编号、理清依赖、可多选。 |
| In Progress | 代理正在积极处理的阶段和 One shot 任务,各自位于自己的 worktree 中。 |
| Testing/Review | 等你处理的已完成工作:卡片会打开显示分支 diff 的审阅窗口。 |
| Done | 已合并、已开 pull request,或未合并即关闭的任务。 |
此页面上的一切在远程富客户端上运作方式完全相同——看板、规划窗口和审阅窗口全都通过控制 API 镜像。
撰写任务
新建任务(或单击某张 backlog 卡片)会打开编辑器:
- 一个标题,以及以 Markdown 撰写的描述,附有编辑 / 预览切换。任务简报会成为代理的提示,所以请像写提示那样写它。
- 工作区和代理——任务会在所选的工作区内,以其某个已配置的代理运行。
- 在此处启动代理——工作区内的一个文件夹。当它本身是一个 git 仓库时,任务会在那里于一个全新的 worktree 和分支中运行。
- 需要时创建文件夹和 git 仓库——用于全新开发:当文件夹尚非其自身的仓库时,开始或规划会先运行
mkdir+git init(附一个空的根提交)。对于现有仓库内的文件夹,请保持关闭。
Backlog 中的任务简报提供两个按钮:
- One shot 会将任务直接送入 In Progress:代理自主完成整件事,并在 Testing/Review 把 diff 交给你。
- Plan 会先打开一个规划会话。
规划
Plan 会启动一个可见且交互的规划会话并打开其窗口——一个原生的对话视图,无需终端。会话以你的任务简报开场,并以卡片形式呈现;代理以只读方式探索仓库、叙述它所发现的内容,并在任务简报留有真正抉择时提出问题。
问题会以分页卡片的形式抵达——每个问题一个分页,精确地镜像代理在它自己会话中所显示的选择器。答案在本地收集,并在你按下提交之前都可编辑,按下后会一次送出整组;误点永远不是定案。你也可以在窗口底部的输入框中键入自由格式的答案,或按打开终端观看原始会话。
当代理取得所需,它会将计划归档到看板上——在 Plan 列中排好序的阶段卡片,每张大约是一个可审阅的 pull request 的工作量,彼此之间带有依赖关系——并记录一份计划概览。窗口接着会显示计划就绪连同阶段数和一个关闭按钮,规划会话的分页会自行关闭,而任务简报会离开 Backlog(其阶段取代了它;把它们全部删除,它就会回来)。
规划受到看管:若工作区重新启动、代理被结束,或会话在阶段归档前死亡,卡片的旋转图标会以一个具体原因结束——单击 Plan 以重试——而不是永远转个不停。
Plan 列
阶段卡片按计划顺序编号,并带有:
- 当该阶段需要先让较早的阶段 Done 时的依赖徽章(一把附有阶段编号的锁)。
- 当你在其依赖关系完成前就启动它时的 queued 徽章——一旦它们全部 Done,它就会自动开始。
- 其母任务简报的名称。
用复选框选取多个阶段,选取栏便会出现:开始所选的 N 项会将每个都 One shot(受依赖关系管制的阶段会进入队列)、清除会放弃选取,而删除会在一次确认后移除整个选取。编辑某个阶段会显示其依赖于列表——每个同层阶段都附一个复选框,因此可以手动重新安排依赖关系。
阶段会完全自主地运行——一旦开始,就不预期任何交互输入。
In Progress
已启动的任务会在需要时启动工作区、创建仓库的一个全新 worktree,并以任务简报作为提示启动代理。卡片会显示实时的代理状态圆点、其开始时间,以及当代理卡在某个问题上时以红色显示的需要你的输入——单击卡片会跳至实时会话。侧边栏的 TASKS 徽章会统计这些,所以你绝不会漏掉任何一个。
当代理回报完成时,任务会移至 Testing/Review,其终端分页会自行关闭——一个已完成的会话不会被留着占用分页栏。若代理改为崩溃,卡片会转红,而不是假装在工作。
Testing/Review
Testing/Review 卡片会打开审阅窗口:该分支相对于其父级的完整 diff,从 VM 实时读取,附有每个文件的展开器、新增/删除计数,以及代理所记录的任何计划。
像审阅 pull request 一样审阅:
- 行内评论:将光标移到任何新增行或上下文行上,并单击边栏的气泡,即可将一条评论附到那确切的行上;固定的评论会呈现在其所属的行下方。文件级和一般性的评论也可运作。
- 退回 In Progress 会把每一条草拟的评论交付给代理——格式为 In
foo.js, line 196: use a different method——而任务会回到 In Progress 进行另一轮。代理会在同一个 worktree 和分支上恢复。 - 合并——这个分割按钮的默认值会合并进父分支;长按它可使用 Squash & Merge、创建 Pull Request…(当工作区有 GitHub token 时),或合并进任何其他分支。一次干净的合并会关闭它自己的终端分页;冲突则会改为打开一个解决冲突的会话。
- 不合并关闭会丢弃该轮,同时把记录保留在 Done 中。
提示: 同样的行内评论工作流程也存在于看板之外:当活动分页运行着一个编码代理时,文件浏览器的 diff 窗格会长出同样的边栏气泡,而发送给代理会把你的评论直接批量送进该会话——无需创建任何任务就能进行代码审阅。
移除卡片
每张卡片在光标移过时会长出一个 ✕(以及一个从看板移除的上下文菜单项),并置于一次确认之后。对于背后有真实工作的卡片,对话框会提供选择:停止代理并删除 worktree(In Progress)或删除 worktree 与分支(Testing/Review)会把一切拆除,而仅移除卡片会让会话与检出在工作区内原封不动。
存储与 API
任务会持久化在工作区存储旁的单个文件中,采用原子写入与 ISO-8601 日期:
~/Library/Application Support/BromureAC/tasks.json
整个看板会镜像到应用的控制套接字上,供富客户端和脚本使用:
| 端点 | 用途 |
|---|---|
GET /tasks | 列出每一项任务。 |
POST /tasks | 创建或更新(upsert)一份任务文档。 |
POST /tasks/<id>/start | 启动它(worktree + 代理)。 |
POST /tasks/<id>/plan | 启动规划会话。 |
POST /tasks/<id>/comment | 新增一条审阅评论(text,可选 file 与 line)。 |
POST /tasks/<id>/send-back | 交付未送出的评论并把任务退回 In Progress。 |
POST /tasks/<id>/merge | 合并(squash,可选 target)。 |
POST /tasks/<id>/open-pr | 创建 pull request 而非合并。 |
POST /tasks/<id>/to-testing, /to-in-progress | 手动移动它。 |
POST /tasks/<id>/destroy | 停止代理、删除 worktree 与分支、移除卡片。 |
DELETE /tasks/<id> | 仅移除卡片。 |
在底层,规划代理与任务代理会通过一个以会话为单位的看板 MCP 服务器(vsock,主机端)回话给看板:board_get_task、board_set_plan、board_create_subtasks 与 board_ready_for_review 就是阶段如何被归档、以及一项完成的任务如何宣告自己的方式——无需轮询、无需抓取。这些工具会为每个受支持的代理自动接线:Claude Code 加载以分支为单位的 MCP 配置,Codex 取得以每次调用为单位的 mcp_servers 覆盖,而 Grok 读取一份写入会话检出中(并排除于其 diff 之外)、以项目为范围的 .grok/settings.json。