学习指南

你说要改什么,工作流由 agent 跑。

跑过 ait init 之后,照平常的话说你想要什么就行。 仓库里的说明会告诉懂 AIT 的编码 agent:这活怎么规划、怎么隔离、 怎么检查、怎么记录、怎么收尾。

  • 结果你定
  • 活 agent 干
  • 记录 AIT 留

分工

你负责的是需求,还有什么算做完。

你要给的

  • 想要的结果。
  • 不能变的行为。
  • 怎么判断它成了。
  • 需要你拿主意的地方。

你不用自己盯的

  • 写 sprint 卡。
  • 开 Task、进它的工作区。
  • 记住下一条工作流命令是什么。
  • Task 完成后回去把 sprint 条目关掉。

agent 执行

一次需求,换回一份你看得懂的记录。

  1. 写 sprint 卡。agent 记下要的结果、范围、什么算做完,以及一条确切的清单引用。
  2. 开 Task。AIT 把那条清单项绑上,并给它建一个隔离的工作区。
  3. 改代码。agent 只在那个工作区里动手,无关的工作碰不到。
  4. 跑检查。你项目自己的测试、构建、lint,或者你声明的其他检查——这就是证据。
  5. 建 Snapshot。AIT 记下通过这些检查的那个确切修订。
  6. 完成 Task。改动收进目标 Line,当初提出它的 sprint 条目跟着关掉。

交互演示把密码开关这个例子整个跑了一遍: sprint 条目、Task 回执、diff、测试输出、Snapshot,还有收尾回执。

真实案例

一个真的 session 留下的东西。

$ ait task start … --intent '…' --local --json
{
  "ok": true,
  "task_id": "LT-0001",
  "line_name": "feature/lt-0001",
  "next_action": { "code": "enter_worktree", "command": "cd …/workspace/lt-0001" }
}

$ npm test
AssertionError [ERR_ASSERTION]: cooldown must block rapid fire
2 !== 1

  # the agent edits src/game.js inside the worktree, then reruns the checks

$ npm test
{"contract":"ait-plane-shooter-self-test/v1","status":"pass"}

$ ait task finish LT-0001 --message 'Restore the 180 ms projectile cooldown
    and add exact boundary regression coverage; npm test passes.' --local --json
{
  "ok": true,
  "command": "task.finish",
  "task_id": "LT-0001",
  "target_line": "main",
  "closeout": { "task_status": "completed", "worktree_status": "removed", … }
}

节录但逐字:这些行来自已发布的 200 session 基准测试中被采计的 b001-gd-01(2026-08-26)。过长的运行路径有缩短、 省略的字段以 … 标记;显示的每一行都与记录相同。

AIT 留下来给你看的东西

沿革

这次改动是怎么来的

Task 一直挂在提出它的那条 sprint 条目上。

隔离

活是在哪儿干的

Task 有自己的工作区,不会跟无关的改动混在一起。

证据

过检查的是哪个修订

Snapshot 钉住跟那次检查结果对应的确切代码。

收尾

完成的是什么

Task、目标 Line、sprint 条目,最后说的是同一件事。

拿你自己的需求试一次

装上当前的稳定版,初始化一个仓库,让 agent 把你的第一次改动一路带到验证收尾。