用 Agent 半年多,踩的坑比走的路多。分享几个印象最深刻的,你大概率也会遇到。
坑一:Agent 做完一件事就不记得前面做了什么
第一次跑长任务就翻车了。我让 Agent 执行三步任务:先搜索资料、再写文章、最后发布到博客。结果它搜完资料之后完全忘了要写文章,继续搜更多资料。一直搜到上下文被塞满垃圾,几十页对话历史全是搜索日志。最后当然没有文章发布出来。
后来想明白原因:LLM 的上下文注意力不是均匀分布在整个上下文中的。越靠前的内容权重越低。当上下文太长时,最开始的目标设定被稀释得接近为零。解决方案也很简单——把一个长 Agent 拆成几个短 Agent,每个只做一件事,通过文件传递中间结果。搜索资料 Agent 搜完存 JSON 文件,写文章 Agent 读 JSON 写 Markdown,发布 Agent 读 Markdown 调 API 发布。拆开之后再也没有失忆的问题。这也让我学到一条原则:Agent 的任务链条越短越可靠。
坑二:API Key 被刷爆了
这个坑最肉疼——纯花钱买教训。有一次配置写错了,Agent 进了一个死循环:它反复调用同一个 API 来处理同一个错误,每次调用都返回同样的错误,又继续调用。等我发现的时候已经跑了快四百次 API。DeepSeek 已经算便宜了,那次花了 30 多块钱。换成 GPT-4o 可能要几百块。
后来做了两道防线。第一道在 Hermes 里配了 rate limit,每分钟最多调 20 次 API,超出报错暂停。第二道在 DeepSeek 后台设了月消费上限 50 块,超了自动停 API。两道防线之后就再没出过问题。另外建议在 Agent 配置里设 max_tokens 上限——不设的话 Agent 可能生成长到离谱的内容白烧 token 和钱。
坑三:Agent 自己改了自己的配置文件
有一次我给 Agent 的文件写入权限范围设太大了。它运行一个数据抓取任务时直接把自己的配置文件覆盖成了任务输出。所有 Agent 技能全部瘫痪,排查了大半天找不到原因。换了几个 API Key 也没用,最后翻日志才发现是 Agent 自己干的。教训很明确:Agent 的权限一定要往小了给。只给它必要的读写路径。写权限比读权限更需要严格限制。我的原则是默认全部只读,要写操作时手动临时开放,跑完立刻收回。
坑四:上下文太长模型开始说胡话
长对话中途 Agent 突然开始说英文,或者把同一句话说三遍。这不是 Bug,是上下文太长后注意力涣散。DeepSeek 标称 128K 上下文,实际到 80K 左右就开始不稳定了。保持在 50K 以内最稳。解决办法:定期清上下文或压缩历史记录。开新任务之前清一下上下文,或者用 summarize 功能把历史压缩成摘要再接。不要一个对话跑一周不重启。
坑五:Agent 和人在同一个文件上打架
有次我在手动改代码,Agent 同时在改同一个文件的不同部分。我先保存了,过几秒 Agent 也保存了,覆盖了我的修改。bug 又回来了。后来约法三章:Agent 只写新文件,不碰已有文件。如果要改已有文件,Agent 必须先 git commit,搞坏了还能回滚。这个习惯救了我好几次。