接手,从猜开始
新会话看不见昨天的分支、决定和卡点。你先复述半小时,AI 再重复探索一遍。
真正拖慢项目的,往往不是写代码,而是每次换电脑、换会话、换 AI 后重新拼凑:做到哪了、为什么这么做、哪些不能动、远端到底有没有更新。
新会话看不见昨天的分支、决定和卡点。你先复述半小时,AI 再重复探索一遍。
本地提交不等于交付。第二台电脑拉不到代码,直到下一次开工才发现 push 从未成功。
确认过的原型和设计规范被忘记;一个小改动越做越大,几小时后才发现已经跑偏。
Baton 不试图保存一段永不结束的聊天。它让项目本身成为下一位执行者能读、能验证、能继续的共同记忆。
PROJECT, NOT CHATBaton 用两层清晰分工的状态,把“所有人都该知道的事实”与“只属于当前机器的证据”分开。
进度、交接、任务、决策、踩坑与设计规范都使用普通 Markdown / JSON。换工具、换电脑,跟着仓库一起到达。
current.md当前工作摘要handoff_current.md最后一棒的交接事实state/tasks.json任务与验收状态knowledge/ · ui_spec/决策、坑点与冻结规范配置、执行指标与机械证据留在当前机器,并通过 gitignore 排除。凭据不进入项目记忆、Git 或日志。
config.json模型规则与保护路径local/本地执行指标local/*验证与发布证据.gitignore不随仓库公开每一位执行者都先读同一份状态,再在明确范围内工作,最后留下下一棒需要的事实。
口令只是入口。真正发生的是:先恢复事实,再约束执行,任务完成后等待你验收,最后用 Git 证据关掉这一棒。
检查分支、HEAD 与工作区;在安全条件下同步;读取最新交接与待办,再把可选任务列给你。
恢复当前任务、约束、卡点与唯一下一步。工作中可以随时保存设计规范、记录决策或写入交接检查点。
记录 DoD 验证证据与结果,把任务置为“待验收”,交给你确认。这里不会默认执行整日收尾,也不会擅自 commit 或 push。
核对改动范围,运行必要验证,更新进度、交接与指标,提交并推送;只有远端 SHA 与本地 HEAD 一致,才报告收尾成功。
Baton 的核心是 skill 与项目状态目录。DSH 插件是可选的机械增强层,不是使用 Baton 的前提。
Claude Code、Codex、Cursor 与 DSH 都能读取同一套规则和普通文本状态,完成接力、记忆、防跑偏与 Git 闭环。
16 个 baton_* 工具把格式、索引、范围核验、验收和路由读取做成机械动作,减少手工自检,但不替代主会话的 Git 权限与最终判断。
| 能力 | Claude Code / Codex / Cursor | DeepSeek Harness + Plugin |
|---|---|---|
| 项目接力与长期记忆 | 完整可用 | 完整可用 |
| 防跑偏与 Git 闭环 | 按 skill 手工执行等价流程 | 工具机械检查 + 主会话执行 Git |
| 代理分派 | 使用各平台原生机制 | 使用 DSH subagent 机制 |
| 实际模型记录 | requested / unknown |
宿主可用时读取 descriptor,否则 unknown |
baton_* tools |
— | 16 |
!规则跨平台一致;执行方式取决于平台。无法确认实际模型时,Baton 记录 unknown,不编造一个看起来更漂亮的答案。
Baton 的优势不是让 AI “更会说完成”,而是把容易被忽略的协作约束,变成每一棒都能遵守和验证的项目规则。
FROZEN / BOUNDED / OPEN 明确约束等级;allowed paths、protected paths 与验收标准共同决定“能改什么、不能改什么、怎样才算过”。
ff-only 同步,分叉即停。收尾时比较远端 SHA 与本地 HEAD;不一致,就不报告成功。
决策、坑点和规范先进入索引。需要时只读命中的片段,长项目也不必把整段历史重新塞进上下文。
推荐模型与实际模型分开记录;身份无法核实时不猜、不包装,让指标保持可用。
所有权未释放时,下一位执行者保持只读并报告,避免多个 AI 同时改同一工作区,把“接力”变成“抢方向盘”。
force push、reset --hard、危险 clean 与未授权 rebase 被明确禁止;冲突不会被自动“解决”。
DeepSeek Harness 用一行插件命令。Codex、Claude Code 与 Cursor 通过安装脚本接入同一份 skill 与项目状态。
已安装 DSH CLI?复制下面这行,重启 dsh 即可。插件会加入当前 web profile。
dsh plugin --profile web add @kakadeka/dsh-baton
首次使用先运行 npm i -g @deepseek-ai/dsh
也可从 GitHub 安装:dsh plugin --profile web add github:kakadeka/Baton
重启 dsh 后,16 个 baton_* 工具在该 profile 中生效
推荐先做用户级安装,再在真实项目里做项目级安装:前者让三个 AI 工具识别口令,后者让项目携带记忆骨架与入口。
git clone https://github.com/kakadeka/Baton.git $HOME\Baton
pwsh -File $HOME\Baton\scripts\baton-install.ps1 -Scope User
pwsh -File $HOME\Baton\scripts\baton-install.ps1 -Scope Project
→运行项目级命令前,先在 PowerShell 中 cd 到你的项目目录。脚本幂等,不覆盖已有规则与文档。
上班啦
看到分支、HEAD、工作区状态与任务表,就说明 Baton 已接管工作流程。
只允许 ff-only 安全同步;发现 divergence,停止并报告。
改动超出 allowed paths 或命中 protected paths,收尾直接失败。
API Key、Token 与机器私有信息不写入 Git、Memory、Metrics 或日志。
记录只追加,旧结论需要更新时标记“已取代”,保留来路。
不需要。Baton 的核心是 skill 与项目里的普通文本状态,Claude Code、Codex、Cursor 都可以按同一套规则运行。DSH 插件只是提供 16 个机械增强工具。
不会。Baton 保存的是项目需要的结构化事实:进度、任务、决策、约束、交接与验证结果。聊天记录和私人上下文不是接力载荷。
不会。“完成”是任务级动作:记录证据并转为“待验收”。“下班啦”才执行工作日收尾,包括范围核对、文档更新、提交、推送与远端 SHA 核验。
分类与路由规则一致,执行方式不同:每个平台使用自己的代理机制。DSH 能提供更多宿主证据;其他平台无法确认实际模型时会记录 requested 或 unknown。
不会引入 Baton 自有云。需要共享的项目事实可以随“下班啦”推送到你自己配置的 Git remote;是否同步、同步到哪里,由你的仓库配置决定。本机运行数据仍留在 .baton/。
把接力机制装进项目,让每一棒都知道从哪里继续、哪些不能动,以及怎样才算真正交付。