學習指南

你說要改什麼,工作流程由 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 把你的第一次改動一路帶到驗證收尾。