Agent 开发笔记:工具调用之外的功课

AIAgent学习笔记

做 Agent 开发有一段时间了。入门时的快乐很简单:给模型接上几个工具,它就能自己查资料、写代码、跑命令,像魔法一样。但真要做到稳定可用,魔法背后的功课一点都不少。记三条最近最深的体会。

一、上下文工程比提示词工程重要

提示词写得好不如上下文喂得对。模型每一轮能看到什么,直接决定了它的发挥:

  • 工具返回的原始结果要裁剪,不要把几万 token 的日志整个塞回去
  • 中间结论要沉淀成结构化的状态,而不是依赖模型去翻长长的历史
  • 该遗忘就遗忘,上下文不是越久越好,噪声会累积

我现在更愿意把 Agent 看成一个「上下文编译器」:每一步都在为下一步准备最合适的输入。

二、为失败设计,而不是为成功设计

工具会超时、接口会返回奇怪的东西、模型会自信地胡说。Demo 里这些都不存在,生产里每天都会发生。所以现在写 Agent 流程时,我会先问:这一步失败了怎么办?

  • 工具调用要有明确的失败返回,而不是抛异常让模型去猜
  • 关键动作要有重试和降级路径
  • 不可逆的操作(发邮件、写数据库、删文件)一定要有人工确认或回滚方案

三、没有评估,就没有迭代

「感觉变好了」是最不可靠的指标。哪怕只是几十个手工攒的测试用例,跑一遍回归也比拍脑袋强。我的习惯是:每修一个 badcase,就把它变成评估集里的一个条目。评估集滚雪球一样变大,改 prompt、换模型的时候心里才有底。

小结

接上工具只是 Agent 的起点,上下文工程、失败设计和评估才是让它从玩具变成工具的三门必修课。后面有具体的实现细节再单独写。