AI 开发最常见的风险,不是模型不会写代码,而是它太早开始写代码。

人在聊天里说“帮我修一下这个问题”,AI 很容易马上读文件、猜原因、改代码、跑测试,然后给出一个看似完整的总结。但对真实项目来说,执行前最重要的问题还没有回答:这个需求到底成熟吗?这次允许 AI 做到哪一步?

所以项目专用 AI 交付流水线的第一步,不是 implementation,而是 task intake 和 execution mode routing。

聊天不是任务合同

聊天适合讨论,但不适合直接作为执行合同。

一段聊天里可能混合了抱怨、猜测、目标、背景、临时想法和真正的验收标准。人类可以凭经验分辨哪些是事实,哪些只是表达。AI 不一定能稳定做到。

任务合同的作用,是把讨论压缩成可执行边界。

一个最小任务合同应该包含:

  • 用户问题是什么;
  • 期望行为是什么;
  • 当前证据是什么;
  • 验收标准是什么;
  • 这次不做什么;
  • 已知风险是什么;
  • 哪个文件、系统或产品状态是真相源;
  • 哪些情况必须停下来。

没有这些字段,AI 就是在模糊任务里自由发挥。

先分流,再执行

任务合同之后,必须决定执行模式。

我通常把模式分成四类。

auto-run 适合低风险、边界明确、可测试、可回滚的任务。例如小 UI 文案、明显 bug、文档修复、局部测试补充。

manual-triage 适合目标还不清楚,或者可能触碰资金、权限、安全、schema、生产状态、核心业务语义的任务。AI 可以分析,但不能默认实现。

guarded-full-speed 适合复杂但边界清楚的任务。AI 可以连续推进,但必须遵守停工条件、证据要求和人工门禁。

spike 适合探索。spike 的产物是判断材料,不是 production-ready delivery。

这四种模式的区别,不是 AI 能力大小,而是项目愿意给它多少执行权限。

为什么 auto-run 必须 opt-in

自动化不应该默认开启。

GitHub issue、产品讨论、项目笔记里有很多内容并不适合自动执行。可能是用户反馈,可能是产品想法,可能是线上事故,可能是合规疑问,也可能只是暂存材料。

只有明确标记进入自动化的任务,才应该允许 AI 自动 claim、分析、实现和开 PR。

这个 opt-in 不只是标签。它代表项目已经确认:这个任务的范围、风险和验收条件足够清楚,可以交给流水线处理。

停工条件比提示词更重要

很多人会在 prompt 里写“如果不确定就问我”。这不够。

项目应该把停工条件写进任务合同或执行规则里。例如:

  • 验收标准缺失;
  • 需求互相矛盾;
  • 需要改变核心业务语义;
  • 需要修改生产数据;
  • 涉及资金、交易、权限、安全或合规;
  • 证据门禁失败;
  • AI 找不到可靠真相源。

这些条件触发时,AI 不应该继续“努力完成”,而应该转入 needs-inputreview-requiredfailed-needs-human

任务合同不是官僚主义

任务合同看起来像增加流程,其实是在减少返工。

没有合同,AI 可能很快给你一个 patch,但你要花更多时间判断它有没有解决真实问题、有没有扩大范围、有没有破坏边界。

有合同,AI 的工作会更窄、更清楚、更容易验证。即使它失败,也能说明失败在需求、上下文、实现、测试还是证据上。

这就是交付流水线的第一条原则:先把需求变成可执行合同,再决定 AI 能不能动手。