如何做好一个智能体项目?只是通过 vibe coding 吗?
我觉得不是。
vibe coding 确实提供了很大的便利。借助大模型、AI IDE 和各种 Agent 框架,现在很多人都可以在比较短的时间内做出一个看起来还不错的智能体项目。它可以调用工具,可以做 RAG,可以有一个完整的前后端页面,也可以给出一个像样的回答。
但问题也在这里:当每个人都能做出一个像样的“成品”时,只是做出来本身,就很难体现出不同人的差距了。
很多人,包括我自己,在完成一个 Agent 项目时,评测思想可能还停留在过去做普通项目的阶段:只要项目没报错,流程能跑通,结果看起来差不多,那就算成功了。
但 Agent 项目其实不太一样。
因为 Agent 的核心不是简单地“能不能跑”,而是它在复杂任务下能不能稳定完成目标。比如 RAG 的召回到底好不好,tool calling 有没有调用对工具,规划是不是有效,token 消耗是否可控,失败样例能不能被定位和复现。
所以我现在越来越觉得,真正开始做一个 Agent 项目,应该不是从“我把功能跑通了”开始,而是从“我怎么证明它真的有效”开始。
做 Agent 评测
第一个很重要的点,是要有评测意识。
比如做 RAG,不应该只看最终回答像不像,而应该进一步看召回效果。可以用 recall、precision、MRR 等指标去判断:正确文档有没有被召回,排在第几位,检索结果里有多少是真的有用的。
比如做 tool calling,也不能只看某一次工具有没有调成功,而应该统计工具使用的准确性、召回率、参数填写是否正确、是否出现不该调用工具却调用了工具的情况。
这和传统后端项目不太一样。传统项目很多时候关注接口是否稳定、页面是否可用、数据库是否正常。但 Agent 项目更需要一套指标,去证明它不是一个“只要没报错就算成功”的玩具项目。
我觉得想到这一步,才算真正开始进入 Agent 项目的核心。
构建一个像样的 Benchmark
第二步,也是最重要、最难的一步,是构建 benchmark。
很多人做 Agent 项目,其实做到功能跑通就停下来了。因为构建 benchmark 是很麻烦的,它没有写页面、接接口那么有即时反馈,也不像让模型跑出一个漂亮回答那样有成就感。
但 benchmark 往往才是最重要的部分。
因为只有有了 benchmark,你才能知道项目到底哪里做得好,哪里做得差;也只有有了 benchmark,你才能持续优化,而不是靠感觉判断系统有没有变好。
我之前也有类似的问题。比如我之前做过一个 skill,用来拆解项目,也做了一个项目拆解的数据集,并让 GPT 去打分。但后面又忙别的事情,就没有继续系统地做下去。现在回头看,其实这一步很关键。
因为 benchmark 不只是为了“评测”,它更像是整个 Agent 项目的地基。
有了 benchmark,你就可以不断回答这些问题:这个 Agent 在什么类型的任务上表现好?在哪些任务上容易失败?是检索失败,还是规划失败?是工具调用错了,还是最终总结错了?修改 prompt 后有没有提升?换 embedding 模型后有没有提升?加 rerank 后有没有提升?减少工具调用后有没有损失效果?
这些问题如果没有 benchmark,就只能靠主观感觉。但如果有了 benchmark,项目就开始有了可迭代的方向。
这也是我觉得它能区别出普通 vibe coding 项目和真正 Agent 项目的地方。
关注 Agent 效率和 Token 优化
当 benchmark 有了以后,下一步就可以开始考虑效率和 token 优化。
因为很多 Agent 项目刚做出来时,往往是“能完成任务,但很笨重”。比如为了回答一个问题,反复 ReAct,反复检索,反复反思,反复调用工具。最后结果可能还行,但 token 消耗很高,延迟也很高。
这时就需要思考:哪些步骤是真的必要的?哪些步骤只是模型在“自我感动”?哪些反思可以合并?哪些证据收集可以提前剪枝?哪些工具调用其实可以通过规则或缓存减少?
比如在 ReAct 过程中,模型可能会多次进行类似的证据收集;在 RAG 场景下,可能会召回大量重复文档;在工具调用场景中,可能会频繁调用不必要的工具。
这些都需要通过日志、指标和 benchmark 去发现,而不是只靠直觉。
所以一个 Agent 项目不应该只记录“结果是什么”,还应该记录:每次任务用了多少 token;调用了几次模型;调用了哪些工具;每一步耗时多少;哪些步骤失败了;哪些检索结果被最终答案使用了;哪些工具调用其实是冗余的。
当这些数据被记录下来以后,Agent 项目才真的有了优化空间。
小模型后训练
还有一个容易被忽略的点是:做 Agent 和部分小模型后训练,其实不是完全割裂的。
当你开始关注 Agent 的 token 消耗、调用延迟和稳定性时,你会发现,并不是所有步骤都必须交给最强的大模型来完成。很多 Agent 中的子任务,本质上并不复杂,比如 query 改写、意图识别、工具路由、记忆写入判断、结构化摘要、结果格式检查等。
这些任务如果全部交给大模型 API 处理,当然能做,但成本会比较高,延迟也会比较大。而且在一些需要稳定格式输出的场景下,大模型虽然能力强,但每次输出仍然可能有波动。
这时,小模型后训练就变得有意义了。
比如可以用 Qwen2.5-1.5B / 3B 这类小模型,针对 Agent 中的某些固定子任务做 SFT,让它学会稳定输出指定格式;也可以在有偏好数据的情况下做 DPO,让它更倾向于输出符合项目规范的结果;如果任务涉及多步决策或者工具选择,甚至可以进一步探索 GRPO 这类强化学习方法。
但这里的重点不是“我会后训练”,而是要讲清楚:为什么这个 Agent 项目需要小模型后训练。
比如:
如果是工具路由任务,小模型可以学习在不同 query 下选择正确工具,减少大模型反复 ReAct 的成本。
如果是记忆写入任务,小模型可以判断哪些信息值得写入长期记忆,避免记忆污染。
如果是结构化摘要任务,小模型可以稳定输出指定 JSON schema,减少后处理和格式错误。
如果是 query rewrite 任务,小模型可以把用户的模糊问题改写成更适合检索的查询。
如果是结果校验任务,小模型可以对最终答案做轻量检查,判断是否缺少证据或格式不合规。
这样一来,小模型后训练就不是一个孤立的“模型训练项目”,而是 Agent 系统中的一个成本优化模块。
更重要的是,它也可以和前面提到的 benchmark 结合起来。你可以先基于 Agent 运行日志收集失败样例和高频子任务,再把这些数据整理成 SFT / DPO 数据格式,用小模型去拟合这些稳定、重复、边界清晰的任务。训练完成后,再回到 benchmark 上比较:工具调用准确率有没有提升,结构化输出错误率有没有下降,token 消耗有没有减少,整体延迟有没有变低。
这就形成了一个更完整的闭环:
先做 Agent,记录 trace → 基于 trace 构建 benchmark → 从 benchmark 和失败样例中发现高频、稳定、可替代的子任务 → 用这些数据训练小模型 → 再把小模型接回 Agent 系统 → 最后用同一套 benchmark 评估效果和成本变化。
我觉得这也是 Agent 项目里很能体现个人差异的地方。
因为很多人只是把 Agent 接上大模型 API,让它能跑通;但如果你能进一步说明,哪些环节可以由小模型承担,数据怎么构建,SFT / DPO / GRPO 分别解决什么问题,接入后指标如何变化,那这个项目就不只是一个应用 Demo,而是有了模型、数据、评测和工程优化的完整链路。
最后讲一下怎么开始一个agent项目吧
在真正开始做 Agent 项目前,我觉得还有一个很重要的前提:不要为了做 Agent 而做 Agent,而是先从自己现在正在做的事情里,找有没有值得被自动化解决的问题。
很多时候,好的 Agent 项目不是凭空想出来的,而是从自己的真实场景里长出来的。
比如我最近在准备简历和面试,那我就会想到:能不能做一个根据公司、岗位名称和 JD,自动搜索相关面试题、整理高频问题、生成模拟面试题的 Agent?
又比如我想快速了解一个开源项目,但一个项目里文件很多、调用链很复杂,自己一点点看会比较慢,那我就会想到:能不能做一个项目拆解 skill,让它帮我分析项目结构、核心模块、调用链路和学习路线?
这些项目的共同点是,它们不是为了“展示我会做 Agent”而强行想出来的,而是来自我自己真实遇到的问题。
从真实场景出发,边做边用,边用边找问题,再把这些问题转化成评测和迭代方向,这样做出来的 Agent 才更不容易变成一个只适合演示的玩具 Demo。
1 个帖子 - 1 位参与者