Community写作与编辑github.com

netheremp/baton-pass-netheremp

一种低token交接技能,让Claude和Codex能互相接手工作——支持CLI和应用程序。基于 francisN21/baton-pass (MIT) 衍生。

baton-pass-netheremp 是什么?

这是一个面向多AI代理协作场景的低token工作流管理技能。它允许Claude Code和Codex等代理在token即将耗尽或需要交接任务时,以最少的文本量保存上下文并转移工作,从而避免重复描述项目历史。该技能支持CLI、桌面应用和IDE,包含七个核心命令:`new-game`(初始化)、`save-state`(本地暂停)、`baton-pass`(工作交接)、`foresight`(接收接力)、`dragon-dance`(流程改进)、`party-check`(状态检查)和`hindsight`(全链路审计)。它强调增量传输(delta),而非完整重述,并提供了严格的状态模型、验证词汇表和反模式指南。安装后可通过`npx github:netheremp/baton-pass-netheremp install`或插件市场部署,项目初始化后生成`baton-pass.config.json`、`docs/agent-handoff.md`等共享内存文件,确保多代理间的上下文连续性。

兼容平台✓Claude Code✓Codex CLI~Cursor
npx skills add netheremp/baton-pass-netheremp

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Baton Pass

目的:在多个代理之间以最少的文本量保持连续性。

这是一个低token工作流工具,而非文档仪式。

快速设置

在每个代理上安装(每台机器一次)

npx github:netheremp/baton-pass-netheremp install

将本技能安装到 ~/.claude 和每个 ~/.codex* 主目录中。然后:

  • Claude Code(CLI + IDE)——技能自动加载;可使用 /new-game /save-state /baton-pass /foresight /dragon-dance /party-check /hindsight
  • Codex CLI ——技能自动加载;显式运行 $baton-pass
  • Codex 桌面应用 ——技能自动加载;在 composer 中使用 /prompts:baton-pass

备选方案:/plugin marketplace add netheremp/baton-pass-netheremp(Claude Code)或 /plugins → 安装(Codex)。

初始化仓库以进行多代理工作

npx github:netheremp/baton-pass-netheremp init

添加 --track-state 可将交接状态提交到 git(需要共享历史的团队使用)。默认仅本地(已加入 .gitignore)。

这将创建:

  • baton-pass.config.json——工作流找到你的记忆文件的配置
  • baton-pass.state.json——轻量级共享所有权状态
  • docs/agent-handoff.md——所有代理的仓库级规则
  • docs/current-state.md——当前正在发生的事情
  • docs/next-task.md——谁拥有工作以及下一步做什么
  • docs/progress.md——运行会话日志(仅追加)

init 还会将 /move 斜杠命令放入仓库的 .claude/commands/ 目录。

指令集

  • new-game = 在新仓库中初始化工作流
  • save-state = 安全暂停而不交接
  • baton-pass = 在token不足或所有权变更时转移工作
  • foresight = 接收或恢复工作,验证一致性,然后继续
  • dragon-dance = 仅在真正学到经验时改进工作流
  • party-check = 检查最后谁在行动,谁应该下一步行动,以及当前仓库状态
  • hindsight = 审计完整的交接链——声称的里程碑、所做的验证、携带的风险、从未解决的项目

核心规则

默认为增量,而非重述。

除非接收方缺少这些信息就无法安全继续,否则不要重述稳定的项目历史。

何时使用每个指令

new-game

在仓库启动时使用,或者当将本工作流引入一个尚无共享记忆文件的仓库时使用。

save-state

在以下情况使用:

  • 必须突然停止
  • 暂停工作以便稍后继续
  • 所有权尚未变更

save-state 是一个本地检查点,不是一次转移。

baton-pass

在以下情况使用:

  • token不足
  • 另一个代理即将接手
  • 需要一个可转移的连续性包

baton-pass 是一个转移检查点。

foresight

在以下情况使用:

  • 接收一个接力棒
  • 从 save-state 恢复后
  • 对已写入的状态是否仍与仓库匹配有任何疑问时

dragon-dance

仅在以下情况使用:

  • 工作流本身学到了东西
  • 接收方发现了偏差
  • 接力棒遗漏了重要信息
  • 一个新规则可以明显防止重复的浪费

不要反射性地触发 dragon-dance。 不要默认将其包含在每个会话或 baton-pass 中。

party-check

在以下情况使用:

  • 忘记轮到谁了
  • 多个代理共享同一个仓库
  • 想在不支付完整 foresight 的情况下了解当前状态

party-check 是会话内指令。在纯终端(无代理,无token)下运行 baton-pass status——它会打印相同的所有权读取信息以及最近的接力链,而 baton-pass status --json 则提供机器可读的输出,供脚本和钩子使用。

hindsight

在以下情况使用:

  • 里程碑或主要功能完成,需要一份干净的记录
  • 感觉有些不对劲,需要追溯实际声称了什么与做了什么
  • 新代理加入,需要完整的历史信息,而不仅仅是最后一个接力棒
  • foresight 发现了严重偏差,需要了解偏差从多远之前开始
  • 项目正在被审查、移交给人类或归档

不要在每个接力后都运行 hindsight。 它是审计,而非例行检查点。

每个指令应写入的内容

save-state

最小输出:

  • 当前任务
  • 停止于何处
  • 涉及的文件
  • 下一个立即操作
  • 阻塞项或风险

baton-pass

最小输出:

  • 目标
  • 已完成项
  • 任务(如果使用了任务计划——列出每个任务及其状态:已完成 / 进行中 / 待处理)
  • 文件
  • 工作树(如果使用了 git 工作树,则写分支名和工作树路径)
  • 已验证项
  • 偏差(会话中做出的与原始计划不同的决策)
  • 环境(下一个代理必须确认的前提条件:运行中的服务、已设置的 .env 变量、测试数据库等)
  • 下一步
  • 风险
  • 下一个代理

提交纪律:

  • 交接前提交,或记录为何不提交。
  • 除非明确命名了未提交状态,否则永远不要交接一个脏工作树。
  • 如果验证未运行,请说明——不要暗示它通过了。

为什么任务、工作树、偏差和环境很重要: 会话内存在交接时丢失。如果你正在进行一个包含20个任务的计划,下一个代理无法仅通过 git 日志重建哪些任务已完成——请显式写入状态。如果你在工作树内工作,下一个代理需要确切的路径。如果你以与计划不同的方式修复了某个问题,请写下来——下一个代理会重新读取计划并以错误的方式重做。如果环境必须处于特定状态(数据库正在运行、.env 已填充),请指出——一个新的代理在没有这些信息的情况下会遇到同样的阻塞。

foresight

最小输出:

  • 一致或不一致
  • 如果不一致,哪些信息过时或缺失
  • 仅在需要时纠正的下一步

如果偏差严重(接力棒声称工作已完成,但仓库显示并非如此),在继续之前写一份结构化的偏差报告:

  • 声称了什么
  • 仓库实际显示什么
  • 必须重做什么
  • 这种偏差是否值得一次 dragon-dance

dragon-dance

最小输出:

  • 问题
  • 影响
  • 改进
  • 新约定

party-check

最小输出:

  • 状态
  • 上一个动作
  • 上一个代理
  • 下一个代理
  • 更新时间
  • 简短摘要

hindsight

最小输出:

  • 审计范围(完整链或限定范围)
  • 交接链表格(从 → 到,日期,目标摘要)
  • 每个代理声称的里程碑及其验证状态
  • 验证缺口(没有证据的声称)
  • 跨交接传递的风险
  • 跨交接发现的偏差
  • 从未解决的未完成项
  • 审计结论:clean、gaps found、risks unresolved 或 action required

检查来源:

  • docs/progress.md——完整会话日志
  • docs/next-task.md——轮次状态历史
  • baton-pass.state.json——程序化状态
  • git 日志——提交消息和日期
  • progress 中引用的任何已保存的接力或 save-state 文件

foresight 的接收流程

仅检查避免误操作所需的最少信息:

  • 当前用户目标
  • 工作树状态
  • 最新提交
  • current-state
  • next-task
  • 最新的 progress 条目
  • 已保存状态或接力中提及的文件
  • 如果计划正在进行中,检查任务列表状态

然后决定:

  • 如果一致,继续
  • 如果不一致,纠正接力并继续
  • 如果不一致揭示了一个可复用的经验,运行 dragon-dance

跨代理的技能发现

当技能以项目本地方式安装(到 .claude/commands/ 或通过插件安装到仓库)时,接手仓库的 Codex 和其他代理将找到相同的技能定义。技能文件随仓库一起传递。

哪些技能不会跨会话边界传递:

  • 来自内存任务管理器的任务状态(TaskCreate 列表在会话结束时丢失)
  • 子代理执行状态(哪些审查循环完成,哪些代理运行过)
  • 环境状态(哪些服务在运行,哪些 .env 变量已设置)

baton-pass 必须显式写入所有这些信息。技能告诉代理如何工作;接力告诉代理当前状况。

状态模型

使用共享状态文件跟踪:

  • 当前状态
  • 上一个动作
  • 上一个代理
  • 下一个代理
  • 更新时间
  • 摘要

推荐状态:

  • active
  • paused
  • handed-off
  • claimed
  • blocked

验证词汇

使用一致的语言,以便接收方确切知道检查了什么。

  • passed——本地运行,输出确认干净
  • passed outside sandbox——本地运行但未在 CI/构建环境中运行
  • not run — [reason]——跳过,说明原因
  • expected to pass, unverified——未运行,但相信是正确的

永远不要在使用 expected to pass, unverified 时写 passed。 仅此一个歧义就会导致最多的交接返工。

轮次状态

next-task 中的轮次状态块是主要的人类可读所有权信号。 baton-pass.state.json 镜像它以供程序化使用。

当更新其中一个时,同时更新另一个。如果它们不一致,next-task 优先。

两者中推荐的 state 值:

  • active——当前有人正在工作
  • paused——安全停止,同一代理将恢复
  • handed-off——已转移,等待接收方认领
  • claimed——接收方已运行 foresight 并继续工作
  • blocked——无法继续,原因应在 next-task 中

反模式

避免:

  • 为每个微小检查点使用 baton-pass
  • 在没有学到任何东西时使用 dragon-dance
  • 为琐碎的工作重写所有记忆文件
  • 每次都将 foresight 变成完整的仓库审计
  • 在每个接力后运行 hindsight——它是审计,不是例行步骤
  • 重述整个项目而不是增量
  • 在应该写 expected to pass, unverified 时写 passed
  • 带着脏工作树交接而不命名未提交状态
  • 在执行编号计划的中途省略任务状态
  • 当工作在 git 工作树内时省略工作树路径
  • 省略一个全新代理不会知道的环境前提条件

最佳实践流程

暂停:

  • save-state
  • 稍后 foresight

转移:

  • baton-pass
  • 接收方运行 foresight

改进:

  • 仅当 foresight 暴露了有意义的工作流问题时才 dragon-dance

检查轮次所有权:

  • party-check

审计完整链:

  • hindsight
  • 如果发现缺口或未解决的风险,运行 dragon-dance

相关技能