用AI编程助手写点简单的小功能,谁不会?可一旦要动点“大手术”——比如新功能开发、系统集成——不少人就会陷入一种“我是不是智商税交多了”的无力感。
本来目标很明确,AI一开始也挺聪明,左看看右看看代码,问几个问题,甚至还给出点靠谱方案。可一到真动手写代码,画风突变:代码集成得四不像,边界条件忘得一干二净,AI还一本正经提出些能直接把系统搞崩的改动建议。
于是你发现,自己不是在写功能,而是在debug AI的迷之思路……
其实,问题不是AI不行,而是我们用错了方法。别把AI当实习生,什么都记得牢牢的。它们更像天赋异禀但记性极差的咨询顾问——短时记忆就那么点,还经常“跑题”。
明白这一点,开发流程就该升级了。
真正的难题:上下文越积越乱
和AI助手聊得越久,问题越大。每一次“走错路”,每一个被推翻的假设,每个查过的无关文件——对AI来说,都是不可磨灭的“历史遗留”。不像人类能自我总结、自动遗忘,AI只会越背越重,还全都塞在短期记忆里。
想象一下你专心写作时,有个人把你所有草稿、废话、删掉的段落都大声朗读一遍。信噪比越来越低,最后脑袋瓜子只剩“乱”。
这也是为什么有时候你和AI规划得头头是道,真到实现阶段却步步踩坑。AI虽然最后想明白了,但所有的歧路亡羊都还“留在脑子里”——一不小心就又走回老路。
解决办法不是少用AI,而是让你的开发流程更适合AI的“脑回路”。
双代理模式登场
最靠谱的做法很简单:一人(代理)负责探索,一人(代理)专职实现,各司其职,分工明确。
第一个AI代理,姑且叫“探索者”:它就像项目里的“侦查兵”,专注于搞清楚代码结构、问关键问题、梳理集成点,最后输出一份清晰明了的开发方案。这步的核心是“把问题想透、把方案写清”。
第二个AI代理,叫“实现者”:它啥都不带入,只接受探索者的成果文档,干净利落地写代码。没有历史包袱,没有莫名其妙的上下文污染。
其实,这不就是高级工程师和开发小组的惯用套路吗?架构师负责搞清楚全局、制定方案,开发同学根据方案实现。哪怕同一个人,方案和实现也是“两副面孔”——前半场思考,后半场执行。
第一阶段:带约束的探索
首先,你要清晰地描述清需求。别小看这一步,后面一切的质量都靠它打地基。
给探索者AI指明方向:要查什么模块,只看相关代码,别瞎溜达。比如要给用户认证系统加OAuth,就请它“专注查auth相关文件”,别让它在全仓库里迷路,把宝贵的上下文窗口全浪费在无关代码上。
还得加一句“魔法提示”:“如果你有任何不确定,先问清楚,别自己脑补。”
这句话的力量堪比“防脱发洗发水”——大模型如果不被约束,最喜欢自作聪明地瞎猜,但你明确要求它“有疑问就问”,它反而会提出不少专业、靠谱的问题。
这些问题要认真答,别怕麻烦。比如它问“软删除用户还能登陆吗”,你别只回答“不行”,而是把用户删除的整个生命周期讲透,顺带把相关联的系统规则都说清楚。
随着探索推进,AI会不断提问、查代码、细化理解。直到有一天,它自信地宣布:“我明白了,这就是完整方案。”
关键交接点
大部分人到这步就掉坑里了——一看到计划靠谱,立刻喊:“好,直接在这个对话里实现吧!”
千万别!这一步是分水岭。
你要让探索者AI不是写“操作指南”,而是写“开发文档”给另一个开发者看。二者差别大得很。
“操作指南”像是:“给User模型加个deleted_at字段,把UserService.get_active_users()方法改成排除已删除用户。”
“开发文档”则是:“models/user.py里的User模型,当前没有软删除机制,delete()方法会直接删除。要做软删除,可以加个deleted_at时间戳。services/user_service.py的UserService负责返回用户集合,这里需要过滤掉已删除用户。admin/users.py是管理后台用户列表,数据来源于UserService。”
前者是“照做”,后者是“指导思路”——既指出重点位置,又保留实现灵活性,方便后续开发者(AI)独立思考。
交接文档里最好有:
- 相关文件路径和大致内容
- 集成点以及原因
- 可能的实现方案和权衡
- 具体需求、业务约束
- 你的代码风格偏好
这就是“交接文档”。
第二阶段:清爽实现
新开个对话,把交接文档和最初的需求一起贴进去。
你会看到有趣的变化:
如果探索者AI的文档写得够好,实现者AI通常会很快领会架构,认认真真看了相关文件后说:“我可以开始写啦。”
这句话其实是个“质量信号”:能顺利开工,说明文档清晰全面。如果还要追问一堆细节,说明探索阶段还差点火候。
此时实现者AI有如下优势:
- 上下文极为干净,只关注核心信息
- 没有探索阶段的“杂音记忆”
- 站在“局外人”的新视角,容易发现集成盲点
- 可以自主做实现决策
通常写出来的代码,更贴合现有架构,风格一致,集成自然。
为什么这招真管用?
大模型不像人类“选择性遗忘”,它会把上下文窗口里的每个token都平均权重地处理。你30条消息前的迷惑发言,和刚刚描述的需求影响力几乎一样大。
重置上下文,不只是省点token,更是把那些“误导信号”一锅端,避免影响实现。
这就像两种会议:
- 一种东拉西扯两小时,每条歪路都讨论一遍,最后还要带着一堆废话来做决策
- 一种是有人拿一页纸,清清楚楚总结了重点,大家直接讨论执行
后者的决策效率和质量,自然高出一大截。
实战举例
比如你要给数据平台做数据导出功能。系统里权限复杂,数据格式多,敏感信息边界一堆。
“探索者”AI就要:
- 仔细梳理权限系统,弄明白各项控制规则
- 查现有导出代码,保证风格一致
- 找出敏感数据的过滤点
- 问清导出需求:格式?大小?异步还是同步?
- 看看类似功能怎么做错误处理和日志
- 最后出一份覆盖数据流、权限、格式转换、异常处理的开发计划
交接文档可能会写:“services/reports.py里的报表生成用的是Celery异步任务,大数据集建议也用这个模式,防止请求超时。权限校验在服务层,不是在API层,参照ReportService.get_report()。数据脱敏统一用utils/sanitize.py。”
“实现者”AI看了文档和相关代码,照着现有架构写导出功能:用Celery做异步、在服务层校验权限、用统一的脱敏工具。
如果让同一个AI从头到尾搞,很容易出现风格错乱:权限校验位置不对、处理方式不统一、同步异步混用……这些细节虽然不致命,但积累多了,代码库就会越来越难维护。
什么时候适合用双代理?
不是所有需求都需要这么大阵仗。加个小工具函数、修个显眼bug,让AI单兵作战就够。
这套流程特别适合:
- 涉及多个系统模块的新功能
- 集成比“单点突破”更重要
- 需要新代码无缝融入既有体系
- 对架构理解有要求
- 你已经反复给AI补充上下文,依然沟通不畅
一个简单判断:如果你觉得“这活儿最好有高级工程师先审设计”,那就用双代理。
模式变种
有些团队更“花哨”——
- Architect(架构师)代理专门做方案评审
- Reviewer(评审员)代理专门挑刺
- Documenter(文档员)代理专门写用户文档
核心原则不变:每个代理只关心自己那一块,脑子越干净越好。
隐藏的好处
除了代码质量提升,这个模式还有个隐形福利:逼着你自己把需求想明白。
要写出合格的交接文档,自己必须先厘清思路。探索者AI问得越细,你越不能蒙混过关,反而提前发现了需求歧义和漏洞。
很多bug其实不是AI写得差,而是“设计阶段就没想明白”,这个流程刚好把问题提前暴露了。
实用建议
实际用的时候还有几点小窍门:
- 一开始就告诉探索者你的需求和相关目录,别让它全仓库乱跑
- 探索阶段AI问的问题一定要认真答,哪怕看起来“很傻”,有些问题其实暴露了隐含冲突
- 交接文档不用长,三四段就行,重在清晰,不必面面俱到
- 如果实现者AI还追问很多细节,说明探索阶段还欠火候,可以考虑补充
- 你的代码风格(格式、文档、命名)要明说,AI不会“耳濡目染”吸收
局限性
这套方法不是万能的。实现者AI照样可能写出bug,集成阶段也还是会有意外。代码评审依然必不可少。
但它至少解决了“上下文污染”这个大难题,让复杂功能开发变得可靠许多。
拓展思路:不只有编程
只要是复杂任务,AI都适合用这个分阶段流程:先调研/探索,产出清晰文档,再执行/实现。
领域不同,模式可变,但核心铁律不会变——认知清晰,远胜于“模型参数大”。一个“中等资质”模型,拿着干净简洁的上下文,往往能干掉“天赋型选手”却被上下文垃圾拖后腿的“天才”。
(本文由人类原创,并在部分环节借助AI润色。)
