Acai.sh 这次开源的东西,看起来很朴素:把功能需求写进 feature.yaml,给每条验收标准一个可追踪 ID,再让代码、测试和评审围着这些 ID 转。

有意思的地方不在 YAML。

真正反常的是,AI agent 已经能很快写出一大坨代码,但团队反而更难回答一个老问题:这次改动到底满足了哪些需求,哪些只是模型顺手补出来的?

我的判断是,AI 编程越快,软件开发里更值钱的资产会从 prompt 和代码片段,转向可验证、可追踪的验收标准。Acai.sh 不是证明这条路已经跑通了,但它把这个问题摆得很清楚。

AI 编程的真实瓶颈:不是不会写,而是需求会丢

作者有一个判断:Peak Slop 已经过了。

这句话不用理解成 AI 代码质量已经没问题。更准确地说,最粗糙、最失控的那段体验正在改善。Claude、Cursor、OpenCode 这类工具,已经能把很多局部编码任务做得很快。

但另一个问题冒出来了:上下文不稳定。

一次会话里说过的边界条件,换个窗口可能就没了。某个临时 prompt 里补过的约束,交给同事 review 时未必还看得见。agent 改了十几个文件,reviewer 面对的常常不是“需求清单”,而是一屏又一屏 diff。

这就是 Acai.sh 想切的口子:不要只追着模型补 prompt,而是把验收标准变成工程流程里的对象。

它的核心组件并不复杂:

对象作用解决的问题
feature.yaml记录功能、组件、约束和编号验收标准把临时对话变成可保存的需求清单
ACIDAcceptance Criteria ID,用来标记每条验收标准让需求能被代码和测试引用
CLI接入本地、CI 或 agent 流程让追踪动作进入开发流程
Dashboard / JSON REST API汇总 spec、代码引用和评审状态让 reviewer 从需求项看进度和风险

项目采用 Apache 2.0 许可证。CLI 可通过 npm 或 GitHub release 获取。作者也提到 hosted version 暂时免费,甚至可能一直免费。

但这里要压住期待:这还是早期工具,不是一个已经被大规模验证的商业平台。

Acai.sh 的关键变化:review 不只看 diff,也看 ACID

Acai.sh 把每条验收标准编号,作者称为 ACID,也就是 Acceptance Criteria ID。

比如一条登录需求可以叫 AUTH-1。agent 在实现代码和测试注释里引用它。评审时,团队看的就不只是某个文件改了什么,还可以看 AUTH-1 有没有对应实现、有没有验证线索、有没有被遗漏。

这会改变 review 的入口。

传统 AI 编程流程里,需求往往散在 prompt、README、聊天记录和 PR 描述里。到了评审阶段,reviewer 要靠经验从 diff 里倒推意图。人少、改动小还行;一旦 agent 生成的 PR 变大,就很容易顾此失彼。

Acai.sh 想把入口换成需求项。

评审问题传统做法Acai.sh 的做法
这次要实现什么看 prompt、PR 描述、difffeature.yaml 的验收项
某条需求落在哪里人肉搜索代码用 ACID 连接需求、代码、测试
测试是否足够看 test coverage 和测试文件看 acceptance coverage
大 PR 怎么审按文件逐段看按需求项逐条核对

这里最容易误解的是 acceptance coverage。

它不是传统 test coverage 的替代品。test coverage 关心代码路径有没有被执行。acceptance coverage 关心需求项有没有实现和验证线索。

前者回答“代码跑到了哪里”。后者回答“承诺有没有被覆盖”。

两者不能互相冒充。一个需求写错了,coverage 再高也只是把错误执行得更完整。一个测试体系很薄,ACID 标得再整齐,也只能说明追踪更清楚,不能说明质量更好。

这也是我不太买账“spec 工具能解决 AI 代码质量”的地方。它解决的是追踪和评审问题,不是替团队做架构判断、安全审计和端到端验证。

谁该现在用:开发者先改习惯,负责人先选场景

对用 Claude、Cursor、OpenCode 写代码的开发者,Acai.sh 的现实意义不是多装一个工具,而是少把关键约束塞在聊天框里。

更可行的动作是:

  • 新功能开始前,先写 5 到 10 条验收标准;
  • 每条标准给一个稳定 ID;
  • 让 agent 实现时引用这些 ID;
  • review 时按 ID 核对,而不是只问“这段代码看起来对不对”。

这不会让开发变轻松到哪里去。它只是把一部分返工,提前挪到写 spec 的时候。前面多花一点力气,后面少猜一点意图。

对负责代码评审、测试和工程流程的技术负责人,动作应该更谨慎。

不建议一上来全团队迁移,也不建议把它包装成流程革命。更现实的是挑高风险场景试:权限、计费、数据迁移、关键业务状态机,或者 agent 容易生成大 PR 的模块。

这些地方最怕的不是代码少写几行,而是某个边界需求没人记得。

Acai.sh 和 GitHub SpecKit、OpenSpec 等方向有相近的问题意识:把开发从临时 prompt 拉回 spec-first。作者也承认,spec-driven development 并不是新概念。敏捷、BDD、PRD、测试用例,早就讲过需求要可验证。

差异在于,过去 spec 主要给人看。现在 spec 还要给 agent 执行、引用、回传状态。

接下来我会看三个变量,而不是看它口号有多顺:

  • ACID 标注能不能长期维护,还是几周后就变成新债务;
  • Dashboard 能不能适配多仓库、多分支和真实 PR 流程;
  • QA、CI、线上告警触发 agent 自动修复时,是减少噪音,还是制造更多不确定改动。

作者把后面这个方向叫 Testmaxxing 和 reactive software factories。翻成直白话,就是测试失败、告警出现、QA 反馈进来后,agent 自动尝试修复。

这个设想并不遥远。一些工程能力强、预算充足的团队已经在做类似内部系统。

但门槛也在这里。spec 如果含糊,测试如果不可信,自动修复只会把问题跑得更快。工欲善其事,先利其器;但器具磨快之前,尺子要先准。