让 Agent 写好项目,比让它写好代码更重要

分享今日内部技术分享内容,主题为:从让AI写好代码,到让AI写好项目。

我的判断很简单:AI 降低的是生成代码的成本,没有降低构建正确软件的成本。代码越来越便宜以后,错误代码、错误需求、错误上下文和没有验证的变更也会更快进入系统。

AI 是放大器

很多人第一次用 AI Coding,会自然产生一个错觉:既然 AI 会写代码,那软件工程是不是没那么重要了。

我现在越来越觉得,结论正好反过来。AI 让写代码变便宜,但没有让正确的软件变便宜。需求是否清楚、上下文是否准确、测试是否覆盖关键路径、review 是否有效、发布是否可回滚、出了问题谁负责,这些问题不会因为 Agent 会写代码就消失。

DORA 2025 把 AI 称为一种放大器。它会放大组织已有的优势,也会放大组织已有的问题。DORA 另一份关于 GenAI in Software Development 的研究还提到,AI 采用率每提升 25%,与交付吞吐下降 1.5%、交付稳定性下降 7.2% 存在相关性。局部编码效率提升,不等于系统级交付能力提升。

过去写代码贵,所以团队会小心拆需求、小心设计、小心排期。现在 Agent 可以很快生成代码、改代码、补测试、跑命令、修报错,初始实现成本被压低了。这当然是好事,但另一面也很明显:错误代码也变便宜了。

错误需求可以更快被实现,错误上下文可以更快被固化,错误架构可以更快扩散,没有 review 的代码可以更快进入主干,没有验证的功能可以更快上线。

工程师的责任变成设计控制系统

过去工程师的核心产出经常被理解成代码。到了 Agentic Coding 时代,这个理解不够了。工程师当然还要懂代码,但更关键的责任会变成:设计一个系统,让 Agent 在正确意图、正确上下文、正确边界和正确反馈环里,小步、可验证、可回滚地写代码。

工程师要负责定义正确问题,提供正确上下文,设计验证反馈环,控制变更风险,承担工程责任,并把失败沉淀回系统。

Linux kernel 对 AI coding assistants 的政策很直接:AI agent 不能添加 Signed-off-by,只有人类可以认证 Developer Certificate of Origin。人类提交者必须 review 所有 AI 生成代码,确保 license 合规,并对贡献承担责任。

AI can assist. Human owns the contribution. AI 可以辅助,人类负责签字、理解、合并、上线和后果。

最大的新债务是验证债

AI Coding 时代会多一个很危险的债:验证债。

AI 写得太快,人类验证跟不上,没有充分验证的代码进入系统。这个问题比传统技术债更隐蔽,因为 AI 写出来的东西经常看起来像对的。它有函数名,有注释,有测试,有错误处理,还有一段很自信的解释。但它可能解决了错问题,漏掉边界条件,绕过权限判断,或者引入安全漏洞。

Sonar 2026 State of Code 相关调查里,开发者报告当前 42% 的提交代码已经由 AI 生成或显著辅助,并预计到 2027 年到 65%。同时,96% 的开发者并不完全相信 AI 生成代码在功能上正确,只有 48% 表示总是在提交前检查 AI-assisted code。Veracode 2025 GenAI Code Security Report 测试了 100 多个大模型生成的代码,发现 45% 的代码样本未通过安全测试并引入 OWASP Top 10 漏洞。

Agentic Coding 里最重要的一句话不是”让 Agent 写完”,而是”让系统证明它真的对”。No evidence, no claim. 没有证据,不许声明完成。

给 Agent 加手铐脚铐

很多团队第一次接入 AI Coding,会把问题理解成模型还不够强,于是不断换模型、调 prompt、换 IDE、研究更强的工具。这些都重要,但不是最底层的问题。

Agentic Coding 的底层问题通常更工程化:意图不清,Agent 很认真地解决了错误问题;上下文不准,Agent 基于错误材料做了错误判断;步子太大,一次改太多,人类 review 跟不上;没有反馈环,代码看起来对,但没有测试、构建、运行时证据;自我相信太早,Agent 很快宣布完成,却没有独立审查;交付不可逆,没有 feature flag、rollback 和监控,一上线就是豪赌。

我会把 Agent 的软件工程收敛成一条主线:Clarify、Context、Specify、Slice、Implement、Verify、Review、Ship、Learn。中文说就是:澄清意图,治理上下文,写清规格,小步切片,实现功能,验证证据,独立审查,可控发布,复盘沉淀。

eng-init:把规则变成可执行约束

只写一份规则说明书不够。Agent 不会因为文档写得好就天然安全,规则必须变成它真的会遇到的约束。

eng-init 做的不是”写个 AGENTS.md 就完事”,而是按阶段把一个仓库变成 Agent 可以进入的工程工作场。

先扫描仓库事实:规则文件、命令入口、测试、CI、guardrails。然后判断当前仓库是 greenfield、bootstrap、incremental、audit 还是 repair。接着追问缺口,选择严格度 L1 到 L4,任何降级都必须显式确认。再给预览,列清楚产物清单、门禁、非目标和 readiness gaps。最后只写授权产物,禁止 _v2_new_backup 这类平行实现,运行 check 和 guardrail self-test,没有证据不声明完成。

No phantom enforcement。每条规则必须指向真实配置、命令、hook 或 CI。否则它只能标成 review-only,不能伪装成已经被系统强制执行。

eng-init 交付的是控制面。AGENTS.md 记录项目命令、边界、验证矩阵、禁止动作和人类门禁;CONTEXT.md 固定领域术语、不变量和禁止逻辑;统一命令入口把 setup、dev、check、lint、typecheck、test、build 收到 justmake 或 scripts 里;Verification Matrix 把每个 surface 绑定到命令和证据,比如 HTTP、CLI、截图、日志、数据;机械 guardrails 用 lint、typecheck、CI、pre-commit、naming guard、constraints.yaml 把规则变成真正会拦截的门禁。

Droid 和 OMP:工具要放进工程系统里看

Droid 值得看,是因为它代表了专业 Coding Agent 团队在任务闭环上的探索。Missions 的价值不在单次补丁,而在把 Agent 放进一条任务链路里:接收目标,拆解计划,执行,验证,调整,逐步逼近完成状态。回过头看,它很像比较早的 Loop Engineering 实现。

OMP 的价值在另一侧。它是开源、可自定义、可扩展的 Agent Harness,基于 Pi 实现,用 TS 和 Rust 写。它的重点不是只和模型聊天,而是通过 Skill、工具、子 Agent、验证回路来约束行为并沉淀能力。对团队来说,这类 Harness 最有价值的地方,是可以把自己的工程经验变成可复用的动作和规则,接入 Git 平台、Code Review、任务系统和内部工作流。

一个偏任务自治,一个偏 Harness 可编排。

四段闭环:从想法到可验证交付

我今天给出的工作流可以压成四段。

定义任务阶段,用 grill-with-docsto-spec 澄清目标、非目标,输出可验证 PRD 和执行规格。建立约束阶段,用 eng-initinstall-e2e 建立 AGENTS.mdCONTEXT.md、统一命令、QA 地图和证据要求。执行验证阶段,用 missionstdd 和 E2E 拆 WorkUnit,小步红绿重构,遇到失败先建反馈环。质量闭环阶段,用 code-reviewreview-tdd-loop 做 fresh-context 审查,发现问题后诊断、TDD 修复、再审查。

工具职责要分清楚。eng-init 不是切片工具,它负责建立仓库约束。mission 才负责拆 WorkUnit。mission 也不是单纯实现工具,真正的实现要和 TDD、E2E、diagnosing-bugs 这些反馈环绑在一起。review 也不是最后夸一句”看起来不错”,而是 fresh-context 重新审查、找反例、对照规格、逼着问题回到修复循环。

展开就是九步:澄清用 grill-with-docs,上下文落到 AGENTS.mdCONTEXT.md,规格用 to-spec,拆分用 missions,实施用 missionstdd,验证用 install-e2e 建好证据路径,审查用 code-review,发布要有 feature flag 和 rollback,最后把经验写回 AGENTS.mdCONTEXT.md 或进入 self-evolution。

三条铁律

如果只能保留三句话,我会保留这三句:

Evidence before claim. 没有证据,不许声明完成。

Review before merge. 没有审查,不许合并。

Rollback before ship. 没有回滚,不许发布。

未来代码会越来越便宜。样板代码、CRUD、重构、补测试、写脚本、查文档,都会越来越便宜。但构建正确软件没有一起变便宜。

真正稀缺的能力会变成:定义正确问题的能力,提供正确上下文的能力,设计验证反馈环的能力,控制变更风险的能力,承担工程责任的能力,以及把失败沉淀成系统能力的能力。

AI makes coding cheaper, not software engineering cheaper.

AI 让写代码变便宜,但没有让构建正确软件变便宜。能安全放大 AI 的,不是更自由的 Agent,而是更清楚的工程控制面。