【让模型自己开车:Karpathy的Agent长跑指南】
很多人觉得Agent不好用是因为模型不够强,Andrej Karpathy指出了另一个真相:是你的“脚手架”搭得太烂。当模型已经能像高级开发一样写代码时,如果你还在凌晨三点反复调优那几句Prompt,说明你还没跨入Agent时代。
真正的Agent不是一段对话,而是一个能自主运行的Loop。这个循环的底层逻辑是“三权分立”:规划者定目标,生成者干活,评估者找茬。最忌讳让模型既当运动员又当裁判,那会导致系统在自我吹捧中产出垃圾。
Karpathy给出了几个极具实操性的判断:别把状态存在随时会“腐烂”的Context里,要写进磁盘文件,让模型敢于崩溃并能随时重启。开工前先让生成者和评估者反复拉锯,在磁盘上签好验收合同,这比写代码本身更关键。
1. 从“提示词”转向“流程”
提示词是你写一次就忘掉的东西,而循环(Loop)是你睡觉时仍在运行的东西。当前的杠杆点已经从 Prompt Engineering 转移到了 Procedure Design。如果你发现自己还在凌晨三点反复调整一段提示词,说明你还停留在提示词时代。真正的进步在于闭合循环:收集、思考、行动、验证、重复。
2. 角色分离:拒绝自我陶醉
智能体系统必须实现“三权分立”:- 规划者(Planner):将模糊的人类意图转化为详细的冲刺规范。- 生成者(Generator):只负责写代码,严禁自我评价。- 评估者(Evaluator):读取差异,运行测试,证明代码是坏的。一旦让生成者给自己打分,模型会立刻变得谄媚,系统会迅速滑向平庸的泥潭。
3. 契约先行,而非代码先行
在生成者写下第一行代码前,必须先与评估者达成“契约”。双方在磁盘上的 Markdown 文件中反复拉锯,直到对一组可测试的断言达成一致。这种契约是区分“破碎的演示”与“工作的劳动”的分水岭。没有契约的开发,只是在黑暗中乱撞。
4. 相信硬盘,不要相信上下文
上下文窗口会腐烂、会撒谎、会遗忘。磁盘上的文件永远不会撒谎。一个优秀的智能体系统应该能随时崩溃、丢失会话,并仅通过读取磁盘上的三个文件就能原地复活。如果你的状态无法用三个文件描述清楚,说明你的系统设计得太复杂了。
5. 优雅的重启胜过拙劣的修补
面对错误,顶级模型的表现是愿意推倒重来,而旧模型则倾向于在烂摊子上缝缝补补。当代码库变得像“考古现场”一样混乱时,最正确的逻辑是删除项目并在第十一次迭代中交付一个干净的版本。只有当契约本身出错时才需要人类介入,而不是当构建失败时。
6. 量化主观审美
审美是可以分级的,前提是你把它写下来。通过设计、原创性、工艺、功能四个维度对模型进行校准。模型不会发明品味,它只会向你描述的品味收敛。整个游戏的本质,就是写出一份足够精妙的红利准则,让模型在收敛过程中达到你想要的效果。
7. 阅读痕迹,而非运行实验
关于智能体循环的所有深刻见解,都来自于阅读原始转录稿(Trace),而不是运行另一场实验。这就像阅读堆栈追踪一样,是开发者的基本功。你需要观察模型在哪个瞬间背离了你的判断,然后在那个瞬间修改提示词。跳过这一步,你就是在凭感觉调优。
8. 瓶颈永远在移动
当代码编写不再是瓶颈,规划就成了瓶颈;当规划解决后,验证就成了瓶颈;当验证自动化后,审美就成了瓶颈。一个运行良好的循环,其存在的意义就是让下一个瓶颈显现出来。如果你觉得一切顺利,那说明你观察得还不够仔细。
Agent开发不是在驯服模型,而是在移动瓶颈。当代码写完不再是问题,瓶颈就变成了规划;规划解决了,瓶颈就是验证。如果你觉得系统跑得很顺,那通常是因为你还没发现下一个瓶颈在哪。优秀的开发者应该随着模型能力的进化,不断删掉那些过时的、用来补偿模型弱点的冗余代码。
人工智能AI创造营Agent编程思维
