开源 · 本地优先 · 不绑定 AI 平台

换 AI,
别换项目记忆。

Baton 把进度、任务、决策、设计规范与 Git 状态留在项目里。Claude Code、Codex、Cursor 或 DeepSeek Harness 接手时,读到的是同一份项目事实,而不是上一段聊天记录。

不上传聊天记录。项目真相以普通 Markdown、JSON 与 Git 留在你的仓库里。

一套项目事实,贯穿整个接力链路
4个支持的工作端
2层项目状态
16个 DSH 增强工具
Claude CodeCodexCursorDeepSeek Harness
01 / WHY

切换工具不贵。
重建项目上下文才贵。

真正拖慢项目的,往往不是写代码,而是每次换电脑、换会话、换 AI 后重新拼凑:做到哪了、为什么这么做、哪些不能动、远端到底有没有更新。

01

接手,从猜开始

新会话看不见昨天的分支、决定和卡点。你先复述半小时,AI 再重复探索一遍。

隐性成本重复解释 + 重复施工
02

“完成了”,但远端没有

本地提交不等于交付。第二台电脑拉不到代码,直到下一次开工才发现 push 从未成功。

隐性成本口头完成 ≠ Git 事实
03

做着做着,边界消失

确认过的原型和设计规范被忘记;一个小改动越做越大,几小时后才发现已经跑偏。

隐性成本返工 + 不可控变更

Baton 不试图保存一段永不结束的聊天。它让项目本身成为下一位执行者能读、能验证、能继续的共同记忆。

PROJECT, NOT CHAT
02 / PROJECT TRUTH

聊天会结束。
项目事实不会。

Baton 用两层清晰分工的状态,把“所有人都该知道的事实”与“只属于当前机器的证据”分开。

随 Git 同步 docs/ai_memory/

长期项目记忆

进度、交接、任务、决策、踩坑与设计规范都使用普通 Markdown / JSON。换工具、换电脑,跟着仓库一起到达。

  • current.md当前工作摘要
  • handoff_current.md最后一棒的交接事实
  • state/tasks.json任务与验收状态
  • knowledge/ · ui_spec/决策、坑点与冻结规范
AI-agnostic · Human-readable · Versioned
本机私有 .baton/

本地运行状态

配置、执行指标与机械证据留在当前机器,并通过 gitignore 排除。凭据不进入项目记忆、Git 或日志。

  • config.json模型规则与保护路径
  • local/本地执行指标
  • local/*验证与发布证据
  • .gitignore不随仓库公开
Local-first · Gitignored · Credential-safe
ONE SOURCE OF PROJECT TRUTH

交棒时,传的是可验证的项目状态。

每一位执行者都先读同一份状态,再在明确范围内工作,最后留下下一棒需要的事实。

03 / WORK CYCLE

四个动作,
串起一个工作周期。

口令只是入口。真正发生的是:先恢复事实,再约束执行,任务完成后等待你验收,最后用 Git 证据关掉这一棒。

先确认现在在哪里

恢复现场,不靠猜。

检查分支、HEAD 与工作区;在安全条件下同步;读取最新交接与待办,再把可选任务列给你。

  • 分叉、脏工作区或他人持有时停止写入
  • 任务不擅自排序,回复编号再开始
在边界内继续

接着做,不重做。

恢复当前任务、约束、卡点与唯一下一步。工作中可以随时保存设计规范、记录决策或写入交接检查点。

  • 冻结需求、允许路径与保护路径共同防跑偏
  • 先查索引,只读取命中的历史片段
任务完成,不等于替你验收

先转“待验收”。

记录 DoD 验证证据与结果,把任务置为“待验收”,交给你确认。这里不会默认执行整日收尾,也不会擅自 commit 或 push。

  • 用户验收前,不伪装成 completed
  • 给出下一任务或唯一下一步
用证据结束这一棒

远端一致,才算交棒。

核对改动范围,运行必要验证,更新进度、交接与指标,提交并推送;只有远端 SHA 与本地 HEAD 一致,才报告收尾成功。

  • 命中保护路径或越界改动立即阻断
  • 禁止 force push、reset --hard 与危险 clean
04 / COMPATIBILITY

同一套规则。
两种执行层。

Baton 的核心是 skill 与项目状态目录。DSH 插件是可选的机械增强层,不是使用 Baton 的前提。

01
CORE / ALL SUPPORTED TOOLS

Baton 核心层

Claude Code、Codex、Cursor 与 DSH 都能读取同一套规则和普通文本状态,完成接力、记忆、防跑偏与 Git 闭环。

Claude CodeCodexCursorDSH
  • 项目状态与统一交接
  • 长期记忆、索引与设计规范
  • 任务边界、Git 纪律与安全红线
  • 模型路由规则(由各平台机制执行)
02
OPTIONAL / DEEPSEEK HARNESS

DSH 机械增强层

16 个 baton_* 工具把格式、索引、范围核验、验收和路由读取做成机械动作,减少手工自检,但不替代主会话的 Git 权限与最终判断。

16个专属工具
  • +机械格式与索引维护
  • +范围、保护路径与验收检查
  • +模型路由表读取与指标汇总
  • +宿主支持时记录更强的模型身份证据
能力 Claude Code / Codex / Cursor DeepSeek Harness + Plugin
项目接力与长期记忆 完整可用 完整可用
防跑偏与 Git 闭环 按 skill 手工执行等价流程 工具机械检查 + 主会话执行 Git
代理分派 使用各平台原生机制 使用 DSH subagent 机制
实际模型记录 requested / unknown 宿主可用时读取 descriptor,否则 unknown
baton_* tools 16

!规则跨平台一致;执行方式取决于平台。无法确认实际模型时,Baton 记录 unknown,不编造一个看起来更漂亮的答案。

05 / GUARDRAILS

速度之前,
先把边界说清楚。

Baton 的优势不是让 AI “更会说完成”,而是把容易被忽略的协作约束,变成每一棒都能遵守和验证的项目规则。

A / SCOPE

范围不是提示,是契约。

FROZEN / BOUNDED / OPEN 明确约束等级;allowed paths、protected paths 与验收标准共同决定“能改什么、不能改什么、怎样才算过”。

FROZENALLOWED PATHSDoD
B / GIT

Git 证据,不是口头保证。

ff-only 同步,分叉即停。收尾时比较远端 SHA 与本地 HEAD;不一致,就不报告成功。

C / MEMORY

记忆有索引,不靠全量重读。

决策、坑点和规范先进入索引。需要时只读命中的片段,长项目也不必把整段历史重新塞进上下文。

D / HONESTY

不知道,就明确写 unknown。

推荐模型与实际模型分开记录;身份无法核实时不猜、不包装,让指标保持可用。

E / OWNERSHIP

一份工作区,只允许一个写入者。

所有权未释放时,下一位执行者保持只读并报告,避免多个 AI 同时改同一工作区,把“接力”变成“抢方向盘”。

F / SAFETY

危险 Git 不进入流程。

force push、reset --hard、危险 clean 与未授权 rebase 被明确禁止;冲突不会被自动“解决”。

06 / GET BATON

选择你的工作端,
开始第一棒。

DeepSeek Harness 用一行插件命令。Codex、Claude Code 与 Cursor 通过安装脚本接入同一份 skill 与项目状态。

ONE LINE / DSH PLUGIN

一行安装,16 个工具就位。

01条命令

已安装 DSH CLI?复制下面这行,重启 dsh 即可。插件会加入当前 web profile。

POWERSHELL复制后回车
dsh plugin --profile web add @kakadeka/dsh-baton
01

首次使用先运行 npm i -g @deepseek-ai/dsh

02

也可从 GitHub 安装:dsh plugin --profile web add github:kakadeka/Baton

03

重启 dsh 后,16 个 baton_* 工具在该 profile 中生效

安装后只验证一句
上班啦

看到分支、HEAD、工作区状态与任务表,就说明 Baton 已接管工作流程。

07 / PRINCIPLES

该继续时继续。
该停时一定停。

可靠的接力系统,不只会自动执行。遇到无法安全判断的情况,它必须把风险原样交给人。

查看完整规则源码
01

分叉不自动合并

只允许 ff-only 安全同步;发现 divergence,停止并报告。

STOP
02

越界不偷偷修正

改动超出 allowed paths 或命中 protected paths,收尾直接失败。

BLOCK
03

凭据不进入记忆

API Key、Token 与机器私有信息不写入 Git、Memory、Metrics 或日志。

PRIVATE
04

历史不被静默改写

记录只追加,旧结论需要更新时标记“已取代”,保留来路。

TRACE
08 / FAQ

接棒之前,
你可能还想知道。

不需要。Baton 的核心是 skill 与项目里的普通文本状态,Claude Code、Codex、Cursor 都可以按同一套规则运行。DSH 插件只是提供 16 个机械增强工具。

不会。Baton 保存的是项目需要的结构化事实:进度、任务、决策、约束、交接与验证结果。聊天记录和私人上下文不是接力载荷。

不会。“完成”是任务级动作:记录证据并转为“待验收”。“下班啦”才执行工作日收尾,包括范围核对、文档更新、提交、推送与远端 SHA 核验。

分类与路由规则一致,执行方式不同:每个平台使用自己的代理机制。DSH 能提供更多宿主证据;其他平台无法确认实际模型时会记录 requested 或 unknown。

不会引入 Baton 自有云。需要共享的项目事实可以随“下班啦”推送到你自己配置的 Git remote;是否同步、同步到哪里,由你的仓库配置决定。本机运行数据仍留在 .baton/。

PASS YOUR PROJECT, NOT YOUR CONTEXT.

下一次换 AI,
不用再从头解释。

把接力机制装进项目,让每一棒都知道从哪里继续、哪些不能动,以及怎样才算真正交付。