Baton 是做什麼的?
使用內建的 Python 引擎作為權威的本地任務帳本。需明確執行指令;此技能不會啟動守護行程、偵測模型用量限制,也不會自動聯絡其他代理。
解讀聊天動作
使用者通常會在聊天中呼叫此技能,例如 /baton handover TASK-01 to pc1-codex、$baton continue TASK-01 或 /baton:baton status,具體取決於主機平台。請將剩餘文字解讀為動作請求,並為使用者執行對應的引擎指令。這些是針對此單一技能的請求,而非獨立註冊的指令或終端機指令。
| 請求的動作 | 引擎動作 |
|---|---|
init | 必要時進行啟動;檢查專案;僅在新白板時執行 InitFresh。 |
join | JoinExisting。 |
status、tasks、packet TASK | Status、Tasks、WebPacket。 |
add TASK "Title" with files ... | AddTask,若有提供相依性則一併加入。 |
start TASK、claim TASK | SilentHandshake;若請求使用 Git 則加上 --git-branch,以及當請求時使用隔離的工作樹。接著僅在使用者要求實作時進行實作。 |
checkpoint TASK with message ... | Checkpoint;僅在使用者的上傳授權範圍內加上 --push。 |
progress TASK to 60 percent | UpdateProgress,並提供真實的進度數值與備註。 |
handover TASK to AGENT、handoff TASK to AGENT | AtomicHandoff;包含來自對話的當前提示、變更內容與剩餘工作。 |
continue TASK、resume TASK | CheckOrContinue;在編輯前依據其所有權決策行動。 |
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 recovery | ResolveRecovery;若遭拒絕則保留未解決的工作及其日誌。 |
abandon recovery | 僅在明確要求放棄時執行 ResolveRecovery --abandon-recovery。回報剩餘的修復項目。 |
selftest | SelfTest。 |
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>。
在編輯前建立所有權
- 執行
Status。使用一個不同的協作者 ID 加入已初始化的工作區;透過使用者授權的本地上下文取得專案 key。對於新的工作區,請使用InitFresh,並指定所選的領導者與專案 key。將 key 與本地工作階段保留在 Git 之外。 - 如果任務不存在,請加入一個任務及其預期的檔案路徑與相依性。
- 在編輯前執行
SilentHandshake。BUSY_REDIRECT 表示拒絕認領該任務;請選擇一個符合條件的替代任務。對於共享同一個專案的並行分支備份任務,請使用--use-worktree。 - 為有意義的進度建立檢查點。當轉移所有權時,請使用 AtomicHandoff;接收代理會執行 CheckOrContinue。已交接的代理必須尊重 SKIP_ALREADY_HANDED_OFF。
- 當實作就緒時執行 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。