DC娱乐网

从Trae转向Codex后,我先写死了5条AI规则

上一篇我写,我们用了 8 个月 Trae,最后还是把主力开发转向了 Codex。今天接着说更具体的一层:转向 Codex

上一篇我写,我们用了 8 个月 Trae,最后还是把主力开发转向了 Codex。

今天接着说更具体的一层:转向 Codex 后,我最先做的不是研究更多技巧,而是先把 5 条 AI 规则写死。

因为我越来越确定一件事:

AI 越能干,越不能把猜测权交给它。

Trae 到 Codex 的变化,不只是工具迁移。更深一层,是我对 AI 工作流的期待变了。

以前我会期待它“帮我做完”。

现在我更在意它“能不能在我写死的边界里,按真实工程规则和我一起做完”。

这背后其实是很朴素的第一性原理:一个稳定系统,不能靠每次临场发挥,它要靠确定入口、清晰边界、短反馈、真验收和失败留痕。

我现在给 Codex 写死的 5 条规则,基本都围着这几个东西转。

规则一:先收口,再执行

我现在很少直接对 Codex 说“帮我做一下这个”。

这句话太宽了。

宽到 AI 会自己替你补很多东西:它会猜范围,猜目标,猜你能接受的改动幅度,猜哪些文件可以碰,猜做到什么程度算完成。

猜得顺的时候,看起来效率很高。

但只要猜错一次,后面就全是人来兜底。

所以我现在做正式项目,第一步一定是先收口:

这次只做什么。

验收是什么。

哪些地方不能碰。

优先怎么做。

最后输出什么。

这看起来像多写了几句话,其实是在把 AI 的行动空间先圈出来。

先收口,不是为了让 AI 变慢,而是为了让它不要快到跑偏。

这也是我自己底层技能流里最重要的一层:输入先拆,任务先定边界,再进入执行。

很多 AI 协作的问题,不是模型不够强,而是人一开始给了一个太松的口子。

口子一松,后面所有“聪明”都可能变成失控。

规则二:先读现有入口,不准重新发明入口

我现在让 Codex 启动项目、联调前后端,或者进入一个陌生仓库,都会先写一条硬规则:

先读现有脚本、文档和配置。

不要自己发明入口。

这条规则是踩过坑之后才变硬的。

AI 很容易找到一条“看起来能跑”的路。

比如换一个更容易启动的 profile,绕过一段真实配置,用 mock 数据让页面先有返回,或者发现一条旧命令能跑,就顺手用了。

表面看,服务起来了。

但这不是我要的联调。

我要的是按项目本来的入口启动,按真实配置启动,按现有约束启动。

能跑只是第一层。

跑对才是关键。

Codex 可以替我按下开关,不能替我重新发明开关。

这也是为什么脚本和文档不是仪式感。

它们是单一真相源。

入口一旦不唯一,AI 就会在多个“可能可以”之间自己选路。可真实项目里,很多时候我们不需要它选路,我们需要它沿着已经确认过的路走。

规则三:不能用假通过替代真验收

这是我现在最在意的一条。

AI 做项目时,最危险的不是失败。

失败其实很好处理,报错、看日志、继续查。

真正危险的是“假通过”。

页面打开了,但接的是 mock。

接口返回了,但不是生产同构配置。

测试跑过了,但绕开了真实数据库。

服务启动了,但启动方式不是项目约定的那一套。

这些东西都很容易让人误判。

所以我现在会把禁令写得很死:

联调和验收不能用 local profile、mock 数据、本地临时库来冒充通过。

缺真实配置,就说缺真实配置。

缺真实数据库,就说缺真实数据库。

没有权限,就说没有权限。

真实世界里,失败不是问题,假通过才会把判断带歪。

这条规则背后的第一性原理也很简单:验收必须对应真实目标。

如果目标是验证真实业务链路,那本地模拟只能算自测,不能算验收。

AI 最容易犯的错,是太想把任务完成。

可对项目负责人来说,完成感不重要,可信度才重要。

规则四:每一步都要看得见、测得到、退得回

这点其实trae会更方便一些,codex需要通过git来完成。

先读仓库。

再说计划。

小步修改。

看 diff。

跑命令。

看报错。

再修。

最后说风险。

这套流程听起来不炫,但它踏实。

因为真实项目最怕的不是 AI 写不出来,而是它一口气改太多。

它一改多,影响面就变大。

影响面一大,人就要重新花时间兜底。

所以我现在会把规则写得很细:

不要无关重构。

不要顺手优化。

不要跨范围改动。

每次只处理一个问题。

同一个假设最多试两次,第三次必须换假设。

这些规则看起来限制了 AI,其实是在保护人的注意力。

真正可控的 AI 工作流,一定要让每一步都有证据。

证据可以是 diff,可以是日志,可以是测试结果,可以是明确的阻塞说明。

只要每一步看得见,问题就还能收住。

看不见的效率,最后往往会变成人的焦虑。

规则五:失败必须报告,不能偷偷换路

我最不想让 AI 做的一件事,就是为了完成任务偷偷换一条更容易成功的路。

比如原来应该按真实配置启动,它发现失败了,就换成 local。

原来应该连真实服务,它发现连不上,就换成 mock。

原来应该跑主链路,它发现卡住了,就跑一个更轻的替代命令。

这不叫解决问题。

这叫把问题藏起来。

所以我现在会明确告诉 Codex:

失败就报告。

说清楚检查过哪些路径。

卡在哪一步。

缺什么条件。

下一步建议怎么处理。

但不要自己换路,不要用容易成功的路径冒充目标路径完成。

成熟的 AI 协作,不是 AI 永远成功,而是 AI 失败时也能留下可信现场。

这条规则对我很重要。

因为只要失败现场可信,人就还能判断。

一旦 AI 自己改路,人看到的就不是现场,而是一个被包装过的结果。

那时你以为自己在验收,其实你在猜。

工具越强,越要把边界写清楚

回到 Trae 和 Codex。

我不是因为 Codex 更听话,才把这些规则写死。

恰恰相反,是因为 AI 越能做事,我越需要提前写清楚哪些事不能由它判断。

Trae 适合启动以及小范围代码直接修改,Codex 适合落地。

但不管用哪个工具,有一条线不能丢:

AI 可以替我省下重复劳动,但不能替我决定验收标准。

AI 可以帮我执行复杂流程,但不能替我拥有猜测权。

AI 可以加速,但不能失控。

这也是我现在理解的成熟 AI 工作流:

不是把所有动作都交给一个工具。

而是把任务拆清楚,把入口钉住,把验收写死,把失败暴露出来,然后让 AI 在这个框架里尽量发挥。

工具迁移只是表面,真正的迁移,是从“让 AI 帮我做完”,迁移到“让 AI 按规则和我一起做完”。

这比换哪个工具更重要。

因为工具还会变。

但你怎么保留判断权,怎么定义边界,怎么识别假通过,怎么要求失败留痕,这些东西会一直决定你能不能真的把 AI 用进项目里。

你现在让 AI 做项目时,最怕它在哪一步自作聪明:自己换入口、偷偷用 mock,还是一口气改太多?