Skip to content
Alex Lee
Go back

现在用 AI 开发有什么好方法:一个老兵的 11 条实战经验

有人问我,现在用 AI 开发有什么好方法。我说这主要看你把 AI 用到什么程度了,是新项目还是维护旧项目。真要展开来说,篇幅会非常大,这里简单说一下我个人的几点经验:

  1. 需求、详细设计可以 AI 来做,但是架构一定要自己把关。

  2. 核心约束一定要有四个: 一是要求文档、对话都要说人话; 二是任何文档的新建、改写,都不要压缩任何信息,不以节省 token 为导向; 三是代码必须要有注释,任何函数、类、接口以及重要的逻辑,必须要有注释。 这三点其实说白了,就是解决你文档看不看得懂、代码看不看得懂的问题。 最后一个,就是能复用现有代码就复用,能有成熟的开源项目和第三方库就使用,不要重复造轮子。这一点也很重要,否则你会发现 AI 写了大量代码,实际效果不如一个成熟的库有用。

  3. 第一批 AI 写的文档,一定要仔细阅读,哪怕看着很不耐烦也要仔细阅读,尽量把问题在文档阶段就解决掉。否则随着 AI 写的代码越来越多、文档越来越多,你会越来越不想看文档,不想去阅读代码。很多的漂移和边界扩大,都是因为这一点。

  4. 在需求、架构、设计阶段,访谈式很好用。你可以让 agent 采用访谈式方式和你共同编写,也可以让 agent 和子 agent 自问自答来替代你做。但是每一步都要 append 到一个 list,不要相信它的上下文压缩机制足够好。

  5. 单元测试、门禁都是需要的,特别是项目越来越大时,更加需要。但是要定好规则,一个是单元测试和门禁的编写和使用时机,一个是不要每次都跑全量。这能决定开发进度和 token 的浪费,同时避免过早进入优化的泥潭。

  6. 无论一个 agent 编写你的项目,还是多个子 agent 并行开发,都会有一个很明显的问题出现:那就是重复代码、重复逻辑。这个当前很难避免,哪怕像我第 2 点写了约束也一样。Ponytail 这个 skill 库有一定的作用,但是不能用原版,要修改,否则效果并不会很好。整个项目看下来,仍旧会有大量的、本可以合并或者抽象化的代码,实际上写了多个版本存在。而且使用不当,会导致你的代码质量出现问题。

  7. review 一定要,不管每次的任务大小都需要,而且 review 一定要独立且严格。什么叫做独立?就是不要开发者自审,而是交给其他的子 agent,如果有条件,甚至可以交给其他的大模型。review 一般来说要进行多轮,而且看复杂程度,简单的一个 agent 去审,复杂的多个 agent 从不同的角度、或者分配不同的模块去审,然后主 agent 负责去重、交叉验证以及终审调研。这一步非常重要,因为很多的 issue 都需要交叉验证才能找到根因,否则就是不断的打补丁式开发,修复只是解决了标,但是不治本。你让它修好了,然后再次 review 又会发现新的问题,多轮下来修复了一大堆,但是实际上根因可能只有一个。另外一个就是要注意 review 是否存在过度审查,这点可以写提示词或者自己写一个技能,但是最终还是要依靠你自己的能力,任何的提示词和技能无法保证不会出现过度审查。最后就是不要一句“你给我 review”就完事了,要指出重点审查的方面,比如审查内存是否出现越界、溢出、泄漏等内存问题,是否存在过度设计,是否线程所有权和异步线程的使用方式正确等。

  8. skills 的使用,我不建议在当前这些顶级模型上开启诸如 superpowers 之类的强约束技能组。这类效果是有,但是不见得收益有那么大。个人来说,内置的 skill 和几个自己修改过的足够;团队来说,工程化的 skill 一两个足够。再多就是负担了。说句大白话,就算你用了 TDD、DDD 等等的玩意,实际产出的还是 AI 在审查,项目越大,人类审查的难度越大。

  9. 最重要是,就算你的项目跑了成千上万的门禁,并且通过了,也不代表你的项目就可以上线了。这本身就是一个伪命题。因为门禁再多,单元测试覆盖再完整,不代表本身项目不会出问题。这些最多保证在有限的、已经验证的前提下,项目是正常的。至于如何做,每个公司有自己的方式,比如我们一个小项目,全量门禁超过 10 万个,跑一次要 30 分钟,但是我们仍旧让另外的 agent 根据设计文档重新写了一套攻击程序,加在 CI 的最后一个环节。

  10. 其他的还有一些技巧,可能网上很多人都说了,就是 AGENTS.md、CLAUDE.md 只写不超过 100 行核心提示,其他都是只做索引。内部文档采用结构化目录保存,每个目录有入口索引,测试要有台账,每次测试都要 append 台账。文档的管理不要用编号,而是依靠 git 仓库管理。等等之类的,就不多说了,网上到处都是。

  11. 哦,差点忘记了,还有大模型的选型。国内的模型我不是很了解,也基本上没有用过。光从 Claude 和 GPT 来说,他们适合不同的领域,Claude 的分析能力非常强,在项目的架构、设计等阶段执行的非常好,比 GPT 强非常多,唯一算是缺点的,就是自主能力太强了,你约束不好,它就会帮你做很多不必要的事情。GPT 在解决复杂问题上的确比 Claude 差很多,但是在干活上就比较听话,所以看你怎么用了,我一般复杂的问题交给 Claude,简单的局部的代码编写交给 GPT。另外很多时候我是用 Claude 来指挥 GPT 干活,这样效果很不错,Claude Code 中它会监督 GPT 去做具体的任务,并及时地纠正和调整。至于模型切换,我不建议网上人说的换来换去,比如先让它分析使用最强模型,干活使用次级模型,一个连续的任务最好不要换来换去,除非本身就是主任务和子任务。这不是上下文的问题,而是大模型本身 cache 命中的问题。

其他的一时半会要么想不起来,要么要展开说才行。总之上面这些就是简单的我的一些经验。真正如果展开说,这是非常大的一块内容,不是简单几条就能说清楚的。正好你问起来了,我就简单地说了下我的经验,可能因为是临时起意,有些不完整和不对的地方,仅供参考。


在 X 上讨论→

评论都在 X 上——回复、引用和讨论都在那边进行。