新一代模型能连续数小时、甚至数天推进你的整个路线图而不丢失主线。正因如此,状态漂移变得更重要,而非更次要:代理在两个检查点之间做得越多,它所记录的状态就越可能悄然与 git 不再一致。casp check 是确定性闸门,一旦发生漂移便立即拦截 push —— 今天对接 Claude Code,明天对接后续推出的每一个模型。
隔了一周再回到某个项目 —— 或者你同时周旋于五个项目之间。代理读到一份不再与现实相符的状态文件,信心十足地着手做一件早已交付的工作,而你要花一个下午去收拾。
看板、卡片和电子表格救不了你:重建上下文全靠手动,而且代理一个都读不了。状态必须可被机器读取、git 原生 —— 而且可证明为真。
CASP 让每个项目都拥有一条跨会话存续的主线 —— 而且无法悄然漂移。{
"phase": "13 — camera streaming",
"next_prompt": "phases/14-camera.md",
// shipped in v13.4
"last_commit": "a1f3c9",
// not in git history
"migrations": ["0001"…"0007"],
// git stops at 0006
}
相邻领域 —— Mem0、Letta、Zep,以及新出现的 git 原生「记忆」项目 —— 全都存储已经发生的事。几乎没有谁会去核验所存储的状态是否仍与 git 的现实相符。这道核验,就是 casp check —— 而且在每一次 push 之前都是强制的。
你的 next_prompt 指向一个早已交付 —— 或根本不存在的文件。CASP 拒绝启动错误的会话。
last_commit 不在历史中、迁移列表失同步、状态未提交 —— 对照 git 本身核验,而非靠猜。
没有模糊的相似度评分。一道刚性、可复现的通过/失败闸门,只要状态在说谎,就拦下 push。
CASP 不替换你工作流中的任何东西。它填补的是别无他物覆盖的那一处空白 —— 一个项目经过校验的当下时态,以一种你的代理能读取并据以行动的形式呈现。
没有数据库。没有服务。没有向量库。三个朴素的文件,代理在任何会话的第一行就能读到。
可被机器读取,逐项目记录:当前阶段、下一阶段、要执行的确切 next-prompt、已交付的阶段、已应用的迁移、最后一次提交、上一会话 id。
一屏看尽的「我此刻在哪里」。打开它,五秒钟找回主线 —— 无需考古。
接下来要交付的 3 项,外加一块阶段记分板。代理始终清楚工作的先后顺序。
session-prompt、session-log 和 audit-brief 模板,使每一次会话 —— 无论由人还是代理执行 —— 都产出形态一致的产物。结构是被强制的,而非被建议的。真正的产品不是一个功能。它是横跨 API、web 客户端和 mobile 的数十个阶段,由轮替的会话与代理在数周内陆续交付。CASP 在这一切之上维持一份唯一的、经校验的次序 —— 让任何代理都清楚下一个是哪个阶段,并且永不重复交付一个已交付的阶段。
而且这个循环会自我闭合:在每次会话结束时,代理替你写好下一会话的提示词 —— 你只需调整一行,无需从零撰写 —— 追加一条会话日志,并递进状态。打开下一会话,它就从上一次停下的地方精确接续。路线图自行执行;你只负责监督。
下面每一个数字,都是直接从各项目的 state.json 读出的 —— 正是代理所读的那个文件,在最后一次 push 时对照 git 校验过。没有营销式的算术。
面向客户的车队管理 ERP,服务于科特迪瓦的一家运输公司 —— web + mobile,多模块、多角色:司机、车辆、合规、现金、车库、诉讼、会计。
每个模块都是一个经校验的阶段。代理读取座舱,从 next_prompt 运行下一阶段,并且从未重复交付一个已交付的模块 —— 即便在一天六次会话的日子里也是如此。
ZeroSuite 的内部运维与发布编排平台 —— 一份历时数月的路线图,由一支真实团队推进,配有发布模式门禁和一份受跟踪的发布后待办。
一条经校验的主线,贯穿40+ 个阶段、三个人 —— 外加58 项明确推迟到发布之后的事项,无一遗失。这正是 CASP 为之而生的「大型多用户项目」场景。
同一套协议,两款迥然不同的产品。座舱是它们唯一共享的东西。
记忆工具记住你是谁。CASP 跟踪你的项目处在何处 —— 并加以证明。不同的产物、不同的操作、所防范的也是不同的故障。
一个音节,没有同形异义词,在英语、法语和西班牙语中都一样。
state.next_prompt 自动启动下一会话。CASP 附带 Claude Code 斜杠命令,让状态就驻留在你早已工作的地方。
只读状态 —— 代理在写下任何一行之前,先读取当前主线。
直接从 state.next_prompt 自动启动下一会话。无需复制粘贴,无需猜测。
兼容 Claude Code · Cursor · Aider · Continue —— 任何能读取文件的工具。
一个代理做错一件事,代价是一个下午。一百个代理在一百个仓库里这么做,代价是一个季度。CASP 就是你嵌入自动化回路里的那道确定性护栏 —— 在每个项目里都是同一种形态。
casp check 与 lint 和测试占据同一个槽位。一个说谎的状态无法合并 —— 漂移在组织层面被拦下,而非交由任何人的自觉。
自主代理会成倍放大错误。CASP 交给它们每一个的,是同一条经校验的主线供其读取,以及在 push 前的同一道刚性闸门。要自动化,但不付重复劳动的税。
每一次状态转换都是一个 git 提交。一份完整、可比对、可回退的记录,刻画着每个项目如何推进 —— git log 就是你的合规轨迹。
纯本地、零遥测、无云端、无账户。没有什么要审查的,也没有什么可外泄的。这场安全评审只有一句话:它从不离开机器。
jobs: state-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: { fetch-depth: 0 } # casp checks against full git history - run: npx @justethales/casp check # ✗ fails the build the moment state drifts
一套协议,每一个仓库。同一种经校验的形态,贯穿整个组织。
一套协议靠可预测性赢得采用。这些原则不会让步。
CASP 核验你的仓库是什么,从不核验你本想做什么。每一次,都是对照 git 的事实。
规范的产物是被强制的,而非被建议的。每次会话都以同一种形态产出。
校验器不是可选项。一个说谎的状态永远到不了你的 remote。
确定性、git 原生、纯本地。零遥测。无云端、无账户、无账单。
安装、init,你的代理在它的第一行就读到真相。
$ npm i -g @justethales/casp $ casp init # scaffold the layer $ casp status # where am I right now $ casp check # prove the state is true