Community程式設計與開發github.com

Baton

在共享的本地專案中協調多個 AI 編碼代理(如 Codex、Claude Code 或 Antigravity),透過任務所有權、檔案聲明、Git 檢查點、情境交接與獨立審查來提升協作效率。

Baton 是什麼?

Baton 是一個專為 AI 編碼代理設計的協調技能,讓多個代理能在同一個本地專案中協作,就像樂團指揮拿著「指揮棒」一樣。它使用 Python 引擎作為任務帳本,支援在聊天中透過 `/baton handover TASK-01 to pc1-codex` 等指令進行任務初始化、檔案聲明、Git 檢查點、情境交接、獨立審查與復原。Baton 支援 Codex、Claude Code 與 Antigravity 等平台,並且透過 `SilentHandshake` 與 `AtomicHandoff` 等機制確保任務所有權明確,避免衝突。使用前需安裝 Python 3.10+ 與 Git,並透過 `scripts/bootstrap.py` 初始化專案。Baton 的運作以本機檔案系統與 shell 存取權為基礎,適用於需要多代理協作的開發場景。

相容平台✓Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/Harshit1garg1/Baton/tree/HEAD/skills/baton

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Baton 是做什麼的?

使用內建的 Python 引擎作為權威的本地任務帳本。需明確執行指令;此技能不會啟動守護行程、偵測模型用量限制,也不會自動聯絡其他代理。

解讀聊天動作

使用者通常會在聊天中呼叫此技能,例如 /baton handover TASK-01 to pc1-codex、$baton continue TASK-01 或 /baton:baton status,具體取決於主機平台。請將剩餘文字解讀為動作請求,並為使用者執行對應的引擎指令。這些是針對此單一技能的請求,而非獨立註冊的指令或終端機指令。

請求的動作引擎動作
init必要時進行啟動;檢查專案;僅在新白板時執行 InitFresh。
joinJoinExisting。
status、tasks、packet TASKStatus、Tasks、WebPacket。
add TASK "Title" with files ...AddTask,若有提供相依性則一併加入。
start TASK、claim TASKSilentHandshake;若請求使用 Git 則加上 --git-branch,以及當請求時使用隔離的工作樹。接著僅在使用者要求實作時進行實作。
checkpoint TASK with message ...Checkpoint;僅在使用者的上傳授權範圍內加上 --push。
progress TASK to 60 percentUpdateProgress,並提供真實的進度數值與備註。
handover TASK to AGENT、handoff TASK to AGENTAtomicHandoff;包含來自對話的當前提示、變更內容與剩餘工作。
continue TASK、resume TASKCheckOrContinue;在編輯前依據其所有權決策行動。
done TASK執行相關的專案檢查,然後在實作就緒時執行 Done。
review TASK以不同代理的身分檢查固定的變更與相關檢查,然後執行 SubmitReview。
reopen TASK、merge TASK、release TAG、revert TASK、recover TAG分別對應 ReopenTask、MergeTask、ReleaseTag、RevertTask、RecoverTag。
release files ... from TASK為指定的聲明執行 ReleaseFiles。
resolve recoveryResolveRecovery;若遭拒絕則保留未解決的工作及其日誌。
abandon recovery僅在明確要求放棄時執行 ResolveRecovery --abandon-recovery。回報剩餘的修復項目。
selftestSelfTest。
reset workspace僅在領導者明確授權重設時執行 ResetWorkspace --confirm-reset。

根據請求與當前白板解析任務 ID 與路徑。若遇到真正遺漏的資訊,例如新專案的 key 或模糊的協作者身分,則提出詢問。務必將此次對話的協作者 ID 明確傳遞給需要身分識別的引擎動作;其他代理可能已更改共用本地工作階段的儲存 ID。尊重對話中先前已授予的授權。MergeTask 和 ReleaseTag 會嘗試遠端上傳,因此當使用者的請求禁止上傳時,請勿對已設定的遠端使用這些動作。

設定專案

需求:Python 3.10+ 與 Git。選擇一個可用的 Python 3 直譯器(python3、python,或 Windows 上的 py -3);不要假設 Windows 上的 python3 別名可用。

在專案中執行第一個引擎指令之前,請找到此技能自身的 scripts/bootstrap.py,並使用所選的直譯器與 --project <absolute-project-path> 引數執行它。它會將內建的引擎複製到 .collab/collab_engine.py,並將 /.collab/ 加入專案的 .gitignore。它不會初始化帳本,也不會取代不同的現有引擎。若遇到拒絕,則另外處理升級事宜。

以下指令從專案根目錄執行。必要時將 python3 替換為所選的直譯器。對於使用 Git 備份的任務,請先確認專案是一個具有基準提交和已設定 Git 身分的 Git 儲存庫。當實際的基礎分支不是 main 時,請使用 --base-branch <branch>。

在編輯前建立所有權

  1. 執行 Status。使用一個不同的協作者 ID 加入已初始化的工作區;透過使用者授權的本地上下文取得專案 key。對於新的工作區,請使用 InitFresh,並指定所選的領導者與專案 key。將 key 與本地工作階段保留在 Git 之外。
  2. 如果任務不存在,請加入一個任務及其預期的檔案路徑與相依性。
  3. 在編輯前執行 SilentHandshake。BUSY_REDIRECT 表示拒絕認領該任務;請選擇一個符合條件的替代任務。對於共享同一個專案的並行分支備份任務,請使用 --use-worktree。
  4. 為有意義的進度建立檢查點。當轉移所有權時,請使用 AtomicHandoff;接收代理會執行 CheckOrContinue。已交接的代理必須尊重 SKIP_ALREADY_HANDED_OFF。
  5. 當實作就緒時執行 Done,然後讓不同的代理審查固定的提交。真正的審查意味著在提交判決之前檢查變更與相關的檢查項目。

尊重使用者對提交、上傳、合併與發佈的範圍與現有授權。同儕核准本身並不授權外部發佈。未經授權,請勿向其他代理或人員發送訊息;交接記錄可供下一個代理在執行時使用。

引擎指令

每行指令前綴為 python3 .collab/collab_engine.py --local-path .。在適用的情況下提供穩定的 --collaborator-id <agent>。

動作引數與行為
InitFresh--project-key <key> --collaborator-id <lead>;拒絕已存在的帳本。
JoinExisting--project-key <key> --collaborator-id <agent> --device-cluster-id <cluster> --same-device true 用於同一台 PC 的協作。
Status / Tasks檢查所有權、進度與交付。Status 接受 --render-format CLI 或 Markdown。
AddTask--task-id T1 --task-title "Implement feature" --files src/feature.py;可選 --depends-on T0。
SilentHandshake--task-id T1 --collaborator-id <owner> --git-branch;可選 --use-worktree。
Checkpoint--task-id T1 --collaborator-id <owner> --commit-message "checkpoint: meaningful progress";可選 --push。提交目前擁有的檔案。
ReleaseFiles--task-id T1 --collaborator-id <owner> --files <paths> 用於有意的聲明釋放。
AtomicHandoff--task-id T1 --collaborator-id <owner> --target-agent-id <receiver> --reason "Continue implementation";使用 --last-prompt、--changes-summary、--remaining-todo 添加上下文;可選 --push。
CheckOrContinue--task-id T1 --collaborator-id <agent>;載入交接內容或尊重恢復/跳過保護。
Done--task-id T1 --collaborator-id <owner>;固定乾淨的工作以供審查;可選 --push。
SubmitReview`--task-id T1 --collaborator-id --review-verdict APPROVED
ReopenTask--task-id T1 --collaborator-id <owner-or-lead> 用於修訂待處理或已還原的工作。
MergeTask--task-id T1 --collaborator-id <agent> --squash;嘗試推送。使用 --use-worktree 來保留另一個任務的共用檢出;--reapply 明確地重新套用已還原的工作。
ReleaseTag--tag v1.0.0 --tag-message "Accepted milestone" --collaborator-id <agent>;標記已驗證的基礎分支並嘗試上傳。
RevertTask--task-id T1 --collaborator-id <agent>;建立一個還原提交;可選 --push 和 --use-worktree。
RecoverTag--tag v1.0.0 --recovery-branch recover/v1.0.0 從里程碑建立分支。
ResolveRecovery僅在受影響的檢出已修復後才進行解析。--abandon-recovery 明確地歸檔日誌並列出手動修復項目;它不會執行這些修復。
SelfTest在可拋棄的測試環境中執行引擎的 42 階段測試套件。

對於使用工作樹且由分支備份的任務,請在任務記錄的 worktreePath 內編輯並執行專案檢查。

限制與復原

  • 聲明是協作型的引擎層級檢查;編輯器與任意 Git 指令可以繞過它們。協作者 ID 是標籤,而非經過驗證的身分。
  • 單一 PC 的白板是本地權威。不同的 PC 使用分支與 Git 同步;同步的白板複本不提供分散式鎖定。請勿將磁碟資料夾視為共用的交易帳本。
  • --backup-path <local-synced-folder> 寫入單向白板快照。同步用戶端處理雲端上傳;引擎沒有原生 Drive、OneDrive 或 TeraBox API 適配器。
  • 審查核准會將任務標記為完成並釋放其聲明;驗證後的合併/交付是另一個單獨的操作。僅在引擎驗證遠端推送時回報 DELIVERY: COMPLETE;當回傳 LOCAL_ONLY 或 INCOMPLETE 時則保留。
  • 如果復原回報 UNRESOLVED,請保留日誌與本地檔案。檢查指定的檢出、儲存相關的編輯,並在清理後重試。請勿將放棄當作保留檔案的替代方案。
  • ResetWorkspace 會存檔白板,需要領導者身分加上 --confirm-reset;僅在使用者的請求包含重設工作區時使用。

此技能需要一個具有檔案系統與 shell 存取權限的編碼代理。請使用主機實際的技能呼叫方式;/baton 並非普遍註冊的終端機或聊天機器人 API。

相關技能