Community编程与开发github.com

Baton

在一个共享的本地项目上协调多个编码代理,通过任务所有权、文件声明、Git检查点、上下文交接、独立审查和恢复机制实现协作。

Baton 是什么?

Baton 是一个专为 AI 编码代理(如 Codex、Claude Code 或 Antigravity)设计的协作技能。它利用一个捆绑的 Python 引擎作为权威的本地任务账本,通过明确的命令来管理任务生命周期,包括初始化、声明、检查点、交接、审查和完成。Baton 支持在单个 PC 上通过任务声明和 Git 工作树进行并行工作,并提供了原子化交接和独立审查流程,确保多个代理能安全有序地协作。该技能依赖于文件系统和 Shell 访问权限,主要通过在聊天中使用 `/baton` 或 `$baton` 等前缀进行交互。Baton 特别适用于需要多个编码代理在同一个项目中协作完成不同功能模块或修复任务,并希望实现清晰的任务分离、代码审查和上下文管理的场景。

兼容平台✓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-branch 进行 Git 工作和隔离的工作树。然后仅在用户要求实现时进行实现。
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 和路径。询问确实缺失的信息,例如新项目的密钥或模糊的协作者身份。始终将此对话的协作者 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 加入已初始化的工作区;通过用户的授权本地上下文获取项目密钥。对于新的工作区,使用选定的领导和项目密钥执行 InitFresh。将密钥和本地会话保留在 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。

相关技能