assemble 是做什麼的?
四個模型,一個答案,多輪反覆。每一回合讀取當前最佳答案,從指定角色提出批評,然後寫出改良版本。進度存放在檔案中而非對話脈絡,因此每個回合都是全新的開始(Ralph Wiggum 技巧)。
命令
| 命令 | 行為 |
|---|---|
assemble <task> | 以預設排程(36 回合)開始一次執行。 |
assemble --quick <task> | 一個區塊,2 輪 x 4 個模型(8 回合)。 |
assemble resume [<slug>] | 繼續最近(或指定名稱)未完成的執行。 |
assemble cancel [<slug>] | 在狀態檔中設定 status: cancelled 並停止。 |
assemble status | 顯示當前迭代、區塊、開放 MUST 事項以及使用的模型。 |
開始之前
- 若
.assemble/config.json存在則載入,否則使用assets/config.example.json。 - 選取模型適配器(見下文),告知使用者將運行哪四個模型,以及他們的任務文字將被傳送到何處。如果有任何模型不在
allowedModels中,或者localOnly為 true 但模型為遠端,則捨棄該模型並告知使用者。 - 用一個簡短段落重新說明任務與接受條件。如果任務不明確,請在使用者花費任何回合之前提出疑問。
- 建立
.assemble/<slug>/目錄,包含task.md、answer.md(空白)與state.md(格式請參閱references/state-format.md)。確保.assemble/已在.gitignore中。
排程
一個回合就是一次模型輪次。一輪是所有四個模型各輪一次,依序進行。
| 區塊 | 輪數 | 回合數 | 累計總數 |
|---|---|---|---|
| 1 | 4 | 16 | 16 |
| 2 | 3 | 12 | 28 |
| 3 | 2 | 8 | 36 |
第 36 回合後,顯示報告並詢問使用者是否要再執行一個區塊。在沒有使用者同意的情況下,絕不超過 36 回合。
每輪角色輪換,讓每個模型都扮演過所有角色:在第 p 輪(從 0 開始),模型 m 扮演 roles[(m + p) % 4](角色定義請參閱 references/roles.md)。
每個回合
僅從檔案建立回合提示,使用 references/handoff-format.md 格式:
task.md- 目前的
answer.md - 前一回合的批評(來自最新的
round-NN.md) - 本回合的角色卡片
不要包含更早的回合,也不要說出哪個模型寫了當前的答案。然後:
- 使用選定的適配器將提示傳送給本回合的模型。
- 將回覆解析為批評(每個問題標記為
MUST或NICE)、修改後的答案以及最終判定。 - 如果任務是程式碼並且已設定
checks,則在暫存副本中套用修改後的答案,執行檢查,並將任何失敗新增到批評中作為MUST項目。 - 寫入
round-NN.md(角色、模型 ID、批評、檢查結果、判定、行數差異大小),並用修改後的答案覆寫answer.md。 - 更新
state.md:迭代次數、區塊、輪次、開放MUST計數以及無變更連續次數。 - 給使用者一行進度提示:
回合 7/36 · 質疑者 · 2 個 MUST, 1 個 NICE · 差異 14 行。
如果模型發生錯誤或逾時,將它記錄在 round-NN.md 中,跳過該回合,然後繼續。如果連續兩個模型失敗,暫停並告知使用者。
停止條件
當一個回合未提出任何 MUST 項目,且對 answer.md 的變更少於 noChangeLines 行時,該回合計為無變更。
在以下任一情況提前停止:
- 連續四個回合(整整一輪)都是無變更,或
- 一個回合以
<promise>CONVERGED</promise>結束,且下一個回合確認沒有MUST項目。
如果開放 MUST 計數在整個區塊內都沒有下降,則停止並寫入一段簡短的「卡住」說明:阻塞的原因、嘗試過的方法,以及使用者可以如何決定來解除阻塞。
報告
當執行結束時,寫入 .assemble/<slug>/report.md 並顯示:
- 最終答案
- 已執行的回合數以及停止原因
- 每個區塊的主要變更
- 任何開放的
NICE項目 - 使用的模型,包含失敗次數
- 粗略的 token 與成本估算(提示與回覆大小的總和,若設定則乘以配置中的價格)
模型適配器
使用第一個可用的適配器,並告知使用者你選擇了哪一個。
- 工具內部子代理人。 如果主機可以生成子代理人並選擇其模型,則每個回合使用一個。Cursor 可以混合不同供應商。Claude Code 和 Kiro 在此只能提供 Claude 模型,因此四個模型將是 Claude 的變體。
- 廠商 CLI。 每個回合執行一次
scripts/run-model.sh <model-id> <prompt-file>。這是真正的多供應商選項。在執行開始前,請確認每個 CLI 都存在(command -v)。 - 單一模型。 自己執行每個回合,扮演該回合的角色。只讀取該回合的檔案,並將每個回合視為全新的開始。
選用的工具特定輔助程式,例如用於無人值守執行的 Claude Code 停止鉤子,存放在儲存庫的 adapters/ 資料夾中。