折腾完一堆 Agent,我才认清楚这件事
说起来有点不好意思,我最早接触这类 AI 智能体的时候,是真的被惊艳到了。不管是通用的聊天 Agent,还是后来专门拿来干活的编程 Agent,比如 ZCode、CodeBuddy 这些,第一次用都给我一种“以后动动嘴就能把活干完”的错觉。我记得清清楚楚,头回拿 ZCode 让它给我弄个能记阅读进度的页面,我就随手丢了一句“帮我做一个能记录阅读进度的页面”,没多大一会儿,它真就跑出了一套说得过去的结构和样式。那一瞬间期待值是直接拉满的,满脑子都是:这下好了,后面那些查文档、调格式、对着报错发呆的破事儿,总算能甩给机器了。
后来我又陆续试了 CodeBuddy、Trae 这些编程 Agent,看它们自己读代码、自己改配置、自己把命令敲下去跑,越看越觉得 Agent 时代是真的来了,人只要负责开口提需求,剩下的都是它们的事。现在回头想,那种“它什么都会”的自信,在刚开始特别牢,牢到我甚至有点飘飘然。
可真把这帮 Agent 拉进日常正经干活,幻想很快就破灭了。问题倒不全在它们能力不够,更多时候是我自己没把话说清楚。一旦提示词写得含糊,它们马上就开始按自己的那套“默认逻辑”自由发挥,然后就是一连串的翻车现场。
最典型的就是需求被带偏。我只说了句“优化一下首页”,它倒好,自作主张把配色、布局、字号全翻新了一遍,做出来的根本不是我要的方向,我还得一句句把它拽回来。我要的明明只是“调一下首屏加载顺序”,它理解的全是“整体重做”,这种偏差越攒越多,返工花的时间比我自己手写还长。还有那种任务一长就露馅的情况:前面刚说“frontmatter 字段别动”,改着改着关键字段就给聊丢了;上一轮定好的 Git 身份、MCP 参数,多聊几轮就再也想不起来,输出东一块西一块,上下文明显在漂。更烦的是输出杂乱,你不给它定格式定边界,它就过度发挥,该用纯文本的地方硬塞一堆花哨 HTML,该精简的地方铺成流水账,甚至顺手加一堆我根本没要的功能。最后我收拾它烂摊子的时间,远远多过它替我省下的。这些坑我在 ZCode 和 CodeBuddy 上都踩过,尤其多轮协作改站点配置的时候,约束没写死,它真敢放飞自我。
踩多了我才慢慢想明白一件事:Agent 说到底只是个执行工具,人和 AI 之间真正的沟通,本质是一场提示词对抗。 这话说着绕,其实特别直白——你约束得越准,它跑得越对;你约束得越模糊,它就拿自己的逻辑去猜、去补、去发挥,把你没讲清楚的部分照单全收。所谓“对抗”,不是要和 AI 对着干,而是说你每漏一个边界、每含糊一句,它都会反将你一军,用跑偏的需求和杂乱的输出,把你没说清的地方原样还给你。
想通这点以后,我再看各类 Agent,就再也没了“它很强所以我可以偷懒”的念头。它的强,是把你已经想透的东西高效地落地;它从来不负责替你想透。把需求讲明白这件事,永远只能落在人肩上。
所以落到实处的感悟就一句话:好用的提示词,才是真正操控 Agent 的生产力,工具本身充其量算个载体。好 Agent 真正替你省掉的,是那些机械的、重复的、来回切上下文的执行摩擦,但它省不掉“你先想清楚自己到底要什么”。我现在养成个习惯,让 Agent 动手之前,先在脑子里、或者干脆在提示词里,把“要做什么、不要做什么、长什么样、怎么算做完”四件事捋明白。前面多花五分钟,后面能省半小时返工。工具没变,变的是我下指令的方式,出来的东西就完全不是一回事。
放到我这个博客项目上,感受尤其分明。同样是想把写作规范、目录结构、排版标准这些东西灌给 Agent,ZCode 和 CodeBuddy 的 Craft 模式给我的体感完全两样。在 ZCode 里,我会用 /goal 把“每段两个全角空格、标题用中文序号、标签只用 tags、别动主题核心配置”这些锚点,显式地写进每一轮约束里。因为它是常驻加载、每轮都带着,迭代就特别稳:改一篇不会把另一篇格式带歪,调配置也不会把定好的字段聊丢,规范始终钉在上下文里。可到了 CodeBuddy 的 Craft 模式,有阵子我图省事,没把这些约束锁成常驻规则,结果多聊几轮规范就被“聊忘”了——改着改着就自作主张加出 categories 这种没用的字段,站点配置还反复改错,前一轮刚对齐的约定,后一轮又得重新讲一遍。工具本身一点不弱,弱的是我对它的约束不够硬,迭代效果反而被我自己的含糊拖了后腿。
这一对比,反倒把前面的想法印证得更实在了:决定迭代效果上限的,从来不是工具多强,而是你给它的提示词约束够不够准、够不够硬。绕了一圈回到开头那句话——把 Agent 用顺的人,说白了都是把提示词磨到位的人。所谓的“智能”,不过是你精准表达之后,它忠实地替你执行罢了。这场提示词对抗里,赢的永远是把需求讲清楚的那个人。