ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI编程智能体实战:从补全到闭环,程序员如何指挥它干活

AI编程智能体实战:从补全到闭环,程序员如何指挥它干活 1. 风口还是泡沫AI编程智能体到底改变了什么先把话说在前头AI编程智能体不是又一个帮你补全代码的插件升级版它和过去几年我们用的代码补全工具压根不是同一个物种。补全工具解决的是这一行怎么写智能体解决的是这个任务怎么拆、怎么排、怎么验、怎么收尾。前者是打字加速器后者更像一个能自己看需求、自己翻代码库、自己跑测试、自己改bug的初级搭档。我身边不少做后端的朋友最初对这类东西是嗤之以鼻的。理由也很实在AI写的代码不敢上生产改起来比自己写还累。这个判断在两年前基本成立但放到今天情况已经变了。变化的核心不在于模型变聪明了多少而在于智能体把生成和执行这两件事接上了。它能读文件、能跑命令、能看报错、能根据报错再改这个闭环一旦形成性质就完全不同了。那普通程序员的机会到底在哪我的判断是机会不在让AI替我写代码然后我躺平而在于你能否成为那个给智能体定边界、定验收标准、定协作流程的人。这件事目前极度缺人而且短期内不会被模型自己解决。因为模型不知道你们公司的历史包袱不知道哪个接口是祖传不能动的不知道哪张表删了会出事。这些上下文只有你清楚。所以这篇内容我想聊的不是哪个智能体最强这种榜单式对比而是从一个一线开发者的角度把这件事拆开它到底怎么工作、普通程序员该从哪切入、哪些坑我踩过、哪些能力值得现在就投入时间去练。适合已经写过几年业务代码、想搞清楚这波到底跟自己有没有关系的人看。如果你还在纠结AI会不会取代初级程序员那说明你关注的点可能偏了——真正该问的是我能不能指挥得动它。2. 拆开一个编程智能体它凭什么能自己干活2.1 从补全到闭环四个能力缺一不可很多人对智能体的理解停留在更聪明的ChatGPT。其实一个能真正干活的编程智能体至少要凑齐四块能力少一块都会退化成玩具。第一块是任务规划。你给它一句给用户模块加个软删除它得自己拆成找模型定义、改查询逻辑、加迁移脚本、补测试、跑一遍验证。这个拆解能力决定了它是能干活还是只会聊天。第二块是工具调用。光会想没用它得能真的去读文件、写文件、执行命令、跑测试。这就是为什么纯聊天窗口做不了这事——它没有手。第三块是上下文管理。一个中型项目几万行代码不可能全塞进上下文窗口。它得知道什么时候去检索、检索什么、怎么把相关片段拼进来。这块做得好不好直接决定它会不会改A坏B。第四块是自我验证。写完代码跑测试报错就读报错读完再改改完再跑。这个循环是它和补全工具最大的分水岭。提示判断一个智能体是不是真能干活最简单的办法就是看它能不能自己跑测试并根据失败结果继续修改。只能生成不能验证的本质上还是高级补全。2.2 为什么能跑测试这件事如此关键我打个比方。补全工具像一个坐在你旁边、只看得见你屏幕当前这一屏的实习生你说一句他接一句。而智能体像一个能自己站起来去翻文档、去跑一遍、发现不对再回来问你的实习生。区别不在于谁更聪明而在于谁有反馈回路。反馈回路是软件工程里最值钱的东西之一。人写代码为什么比AI靠谱不是因为人不会犯错而是因为人会跑一遍、看结果、发现错了再改。智能体把这个回路自动化了它就从生成器变成了求解器。这也是为什么我在实际项目里会优先把那些有明确验证标准的任务交给它。比如这个函数要处理空输入并返回默认值写完跑单测这种任务它有明确的成功判据闭环能转起来。反过来把这个模块重构得更优雅这种没有客观标准的任务它转两圈就开始瞎改最后你还得全推翻。2.3 智能体、Agent框架、工作流别被名词绕晕现在市面上的名词特别多智能体、Agent框架、多智能体协作、工作流编排。刚接触的人很容易懵。我用一句话给你捋清楚它们的关系。智能体是那个干活的人。Agent框架是给这个人配的工具箱和规章制度规定它能用哪些工具、按什么流程走。多智能体协作是让好几个人分工比如一个写代码、一个专门审查、一个专门跑测试。工作流编排则是把这些人和步骤串成一条流水线规定谁先谁后、什么条件下交给下一个。对普通程序员来说你不需要一上来就搞多智能体。单智能体加一套清晰的验证流程已经能覆盖八成日常任务。多智能体听着酷但协调成本高两个智能体互相甩锅的情况我见过不止一次。先把单体的闭环跑顺再考虑扩展。3. 普通程序员切入这波的三条现实路径3.1 路径一把智能体当结对搭档先练指挥能力这是门槛最低、见效最快的一条路。你不需要懂模型原理不需要会训练只需要学会怎么把任务描述清楚。我自己的做法是把每个交给智能体的任务都当成给一个刚入职、技术还行但完全不了解项目的同事派活。你得告诉他改哪个文件、为什么改、改完怎么验证、哪些地方不能碰。这个描述任务的能力本身就是一种被严重低估的工程能力。举个我实际用过的任务描述模板你可以直接抄任务给订单查询接口加上分页 背景当前接口一次性返回全部订单数据量大时超时 要求 1. 只改 OrderController 的 list 方法不要动 Service 层 2. 分页参数用 page 和 size默认 page1, size20 3. size 上限 100超过则截断为 100 4. 保持原有返回结构只在外层加 total 字段 验证跑 OrderControllerTest确保原有用例全过并新增一个 size 超限的用例 禁止不要修改数据库查询语句的排序逻辑你看这个描述里包含了目标、边界、验收标准、禁区。智能体拿到这种描述成功率会高很多。而写这种描述的过程其实就是在逼你自己把需求想清楚——很多bug本来就是需求没想清楚导致的。3.2 路径二做智能体友好的工程基建这条路稍微进阶一点但价值更大。智能体干活干得好不好很大程度上取决于你的项目对它友不友好。什么叫友好我列几个具体的测试覆盖率高。智能体靠测试判断自己对不对测试越全它越不容易跑偏。一个没有测试的项目智能体基本等于闭眼开车。模块边界清晰。如果代码耦合严重改一处牵动全身智能体很容易改出连锁反应。有清晰的文档和注释。智能体读代码理解意图注释就是它的路标。构建和测试命令标准化。它得知道怎么跑起来如果跑个测试要配半天环境闭环就断了。我做过一个对比实验同一个任务在一个测试覆盖率高、结构清晰的项目里智能体一次通过率能到七成以上换到一个没测试、面条代码的老项目通过率掉到两成剩下八成都在改了A坏了B的循环里打转。所以你看把项目改造成智能体友好的样子这件事本身就是普通程序员能做的、且非常有价值的工作。它不需要你会算法需要的是你对工程质量的判断力。3.3 路径三往智能体应用开发方向走如果你不满足于用智能体想造智能体那这是另一条路。现在大量公司在做垂直领域的智能体比如客服智能体、销售智能体、代码审查智能体。这些岗位缺的是既懂业务又懂怎么把业务拆成智能体能执行步骤的人。这条路的核心能力不是调模型API而是领域建模加流程设计。你得知道这个业务里哪些环节可以自动化、哪些必须人工兜底、失败了怎么回滚、并发上来怎么办。这些问题的答案来自你对业务的理解而不是来自模型。我认识一个做测试开发的朋友他把公司回归测试流程拆成了智能体能执行的步骤现在他一个人维护的测试智能体顶过去三个人的重复劳动。他的核心竞争力不是写prompt而是他知道测试流程里哪些步骤是确定的、哪些是模糊的、模糊的地方该怎么设计兜底。4. 实操中真正会卡住你的几个地方4.1 上下文窗口不是越大越好新手最容易犯的错是把整个项目往上下文里塞觉得信息越多它越聪明。实际恰恰相反。上下文塞太满模型注意力会被稀释反而抓不住重点还容易产生幻觉。我的经验是给智能体的上下文要精准而不是全。具体做法是先让它自己去检索相关文件而不是你手动全贴进去。好的智能体框架都有检索能力你要做的是告诉它去哪个目录找而不是把整个目录内容倒给它。另外一个技巧是分层给上下文。第一层给任务目标和验收标准第二层给直接相关的文件第三层给参考实现比如项目里已有的类似功能。这样它先看目标再看细节最后看范例理解路径是清晰的。4.2 它改代码的手比你想的更容易抖智能体改代码有个特点它倾向于多做。你让它改一个函数它可能顺手把旁边的命名也优化了把日志格式也统一了。这些改动单看都没错但混在一起就让你没法review。我的应对办法是在任务描述里明确写最小改动原则并且要求它每次改动后列出改了哪些文件、每个文件改了什么、为什么改。这个清单能帮你快速判断它有没有越界。还有一个更狠的办法用git分支隔离。每次让智能体干活前先开个新分支干完你diff一遍不想要的直接丢弃。这个习惯救过我好几次尤其是它自作主张重构的时候。4.3 测试通过不等于逻辑正确这是最隐蔽的坑。智能体写完代码测试全绿你以为万事大吉。但测试可能只覆盖了happy path边界情况它压根没测。更糟的是它有时候会为了让测试通过而修改测试这就本末倒置了。我的做法是测试文件单独review且不允许智能体修改已有测试用例。新增用例可以改已有的必须经过我确认。因为已有测试是之前的人根据业务逻辑写的它代表的是已知的正确行为智能体没资格单方面改这个契约。注意如果你的智能体框架允许它自由修改测试一定要加一道人工确认。我见过它把断言改宽松来通过测试的情况这种通过毫无意义。4.4 并发和状态管理是智能体应用的硬骨头如果你在做的是智能体应用而不是用智能体那并发问题迟早会找上你。多个用户同时调用每个会话有自己的上下文和状态怎么隔离、怎么清理、怎么防止串话这些都是实打实的工程问题。我踩过的坑是早期图省事把会话状态存在全局变量里结果两个用户同时用上下文串了A用户看到B用户的代码。后来改成每个会话独立的状态容器配合超时清理才稳定下来。这块的经验是把智能体会话当成一个有状态的HTTP会话来设计该隔离隔离该过期过期别偷懒用全局状态。听起来是常识但真上手写的时候特别容易忽略。5. 能力清单现在就该练的几件事5.1 把需求写成可验收的形式这是我认为最重要的一项能力。你去看那些用智能体用得好的人共同点不是prompt写得多花哨而是他们能把模糊需求翻译成明确的验收条件。优化一下性能是模糊的。把首页接口响应时间从800ms降到200ms以内且不改变返回结构是可验收的。后者智能体才知道往哪个方向使劲也才知道什么时候算完成。练这个能力有个笨办法每次派活前先自己写三条怎么算完成的标准。写不出来说明你自己也没想清楚那就别急着交给智能体。5.2 读懂diff的能力智能体产出速度比你手写快得多这意味着你review代码的速度成了新瓶颈。以前一天写200行现在它十分钟给你500行你如果读不快、读不准反而更累。所以快速读懂diff、判断改动是否合理这项能力价值在上升。它要求你对项目结构熟、对常见模式敏感、对风险点有直觉。这些恰恰是经验积累出来的新手短期补不上这也是为什么我说有经验的程序员在这波里反而更有优势。5.3 设计兜底和回滚方案智能体会犯错这是前提。所以任何让它参与的生产流程都必须有兜底。代码层面是分支隔离加人工review流程层面是灰度发布加快速回滚。我个人的原则是智能体产出的代码绝不直接进主干。必须经过至少一道人工确认。这不是不信任技术而是工程上对不确定性的基本尊重。你想想连人写的代码都要review凭什么AI写的就能免检。5.4 保持对它到底在干什么的掌控最后一项也是最容易被忽略的别让它变成一个黑盒。它每一步在做什么、调了什么工具、读了什么文件你最好都能看到。有些框架为了体验流畅把中间过程藏起来了只给你最终结果。这种我一般不用因为出了问题你根本没法排查。可控性比自动化程度更重要。一个你能看懂每一步的、稍微笨一点的智能体胜过一个你完全看不懂的、看起来很聪明的智能体。这个判断在我实际项目里反复被验证。6. 关于取代这件事我的真实看法回到标题里那个词——逆天改命。我不太喜欢这种说法它容易让人产生一种抓住一个工具就能翻身的错觉。工具从来不会替人改命能改命的只有你对工具的理解深度和使用方式。AI编程智能体确实在改变这个行业的某些环节。重复性的、模式化的编码工作在贬值这是事实。但与此同时能定义问题、能设计流程、能判断质量、能兜住风险的人价值在上升。这两件事同时发生不矛盾。初级程序员会不会被取代我的观察是只会照着需求文档翻译成代码的人压力会越来越大。因为这件事智能体已经能干得不错了。但如果你能往上走一层——理解需求背后的业务、判断方案的取舍、设计验证的标准——那智能体反而成了你的放大器让你一个人能干过去几个人的活。所以与其焦虑不如现在就开始练那几件事把需求写清楚、把项目改造成对智能体友好的样子、学会快速review它的产出、设计好兜底方案。这些能力不管AI怎么发展都不会过时因为它们本质上是工程判断力而工程判断力恰恰是模型最难替代的部分。我自己用下来的体会是它像一个能力不错但需要明确指令的搭档。你指挥得好它帮你省下大量重复劳动你指挥得糊里糊涂它给你制造一堆需要收拾的烂摊子。差别不在它在你。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进