你的Agent总在转圈?问题不在AI,在你写的Prompt
本文最后更新于 2026-05-21,文章内容可能已经过时。
你的Agent总在转圈?问题不在AI,在你写的Prompt
fchollet(Keras作者、前Google Brain研究员)在X上发了一条让很多人沉默的推文,大意是:当前大多数Agent系统就像一只撞墙的盲松鼠——它在动,它在"努力",但它根本不知道自己在干什么。
同一周,Google发布了Gemini 2.5 Flash,官方重点宣传的场景之一就是Agent任务:更快的推理速度、更低的延迟、更强的工具调用能力,专门为自动化工作流优化。
两条新闻放在一起,看起来像是在互相打脸。
但仔细想想,他们说的根本不是同一件事。fchollet说的是Agent的使用现状,Google说的是模型的能力边界。而你踩的坑,两边都有份——模型能力确实在提升,但大多数人给Agent写的Prompt,还停留在"给普通ChatGPT下命令"的水平。
这篇文章不是新闻综述。我想拆解一个更具体的问题:为什么你的Agent总在转圈,明明模型很聪明,但就是干不成事?
答案几乎每次都指向同一个地方:Prompt。
---
一、最容易搞混的地方①:目标 vs. 指令
先建立一个直觉。
普通模型交互,像点餐:你说"来一份宫保鸡丁",服务员记下来,厨房做,端上来,结束。
Agent,更像餐厅经理:你告诉他"今晚要保证后厨效率",他需要自己决定排班怎么调、哪道菜备料要补、顾客投诉怎么处理——你给的是目标,他来拆解执行路径。
问题来了:大多数人给Agent写Prompt,用的还是"点餐"的思路。
来看一个真实对比。同样的任务——"帮我整理竞品信息":
# 普通Prompt写法
你是一个市场分析助手。
请帮我整理竞品A、B、C的产品功能、定价和用户评价。
# Agent Prompt写法
角色
你是一个市场情报Agent,可以调用网络搜索工具和数据提取工具。
最终目标
生成一份结构化的竞品对比报告,覆盖竞品A、B、C。
终止条件
满足以下任一条件时停止并输出报告:
- 三家竞品的功能、定价、近期用户评价均已收集完毕
- 搜索工具连续失败超过3次(输出已有数据+失败说明)
- 距离任务开始超过10分钟(输出当前进度)
执行约束
- 每次工具调用前,先说明调用目的
- 不得推测未经工具验证的数据
- 定价信息必须标注来源URL和获取时间
差异显而易见。但更重要的是行为差异:
普通Prompt下,模型会根据训练数据直接生成一份报告,里面的数据可能是过时的,甚至是编造的,但它会写得很自信。
Agent Prompt下,模型会逐步调用工具、验证数据、在遇到障碍时按规则处理——而不是自己"脑补"一个答案。
核心结论:给Agent的目标必须包含终止条件。没有终止条件的Agent,会永远处于"努力中"的状态——它不知道什么叫"完成了"。
这不是模型的问题,是你没告诉它边界在哪。
---
二、最容易搞混的地方②:上下文管理 vs. 一次性输入
普通Prompt有一个隐含假设:模型一次读完所有信息,然后输出答案,结束。
Agent不一样。Agent是一个持续运行的系统,它会多轮调用工具、累积信息、做决策,然后继续。这意味着"上下文"不再是静态的——它在每一步都在变化。
如果你没有显式设计"记忆边界",Agent会出现三种经典症状:
| 症状 | 表现 | 根本原因 | | 失忆症 | 每轮都在重复之前已经做过的事 | 没有持久化的任务状态 | | 重复踩坑 | 同一个工具报错,连续调用10次 | 没有错误记录机制,每次都当新情况处理 | | 工具调用爆炸 | Token消耗飙升,上下文窗口被塞满 | 工具返回的原始数据全部堆进上下文,没有过滤 |解决方案是上下文分层设计。一个简洁的三层模板:
## 系统层(每次调用都保持不变)
- Agent角色定义
- 可用工具清单
- 核心约束规则
- 错误处理协议
任务层(本次任务的动态状态)
- 当前任务目标
- 已完成的步骤摘要(注意:是摘要,不是原始记录)
- 当前卡点或待决策项
工具返回层(每次工具调用后更新)
- 本次工具调用结果(原始数据)
- 提取的关键信息(压缩后的精华)
- 下一步行动建议
关键在任务层的"已完成步骤摘要"。很多人犯的错误是把工具的原始返回结果全部堆进上下文,导致几轮之后上下文窗口就被塞满了。正确做法是:每次工具返回后,先提取关键信息,压缩成摘要,只把摘要传入下一轮。
这个设计让Agent知道"我走到哪了",而不是每轮都从零开始理解世界。
---
三、最容易搞混的地方③:错误处理 vs. 默认成功
这是最容易被忽视、但造成翻车最惨的一个差异。
普通Prompt写的是Happy Path——假设一切顺利,直接给答案。这没问题,因为普通对话本来就是一次性的,失败了重新问就行。
但Agent不一样。Agent在执行过程中会遇到各种异常:工具报错、文件不存在、API限流、权限不足、返回数据格式不对……如果你的Prompt里没有写错误处理,Agent会做两件事之一:
1. 幻觉填坑:工具拿不到数据,它自己编一个,继续往下走
2. 无限重试:同一个失败的工具调用,重复执行几十次,直到Token耗尽
来看一个代码Agent的典型翻车场景。
# 没有错误处理的Prompt(节选)
你是一个代码执行Agent。
请读取 /data/report.csv,分析其中的销售数据,生成可视化图表。
实际执行时,如果 /data/report.csv 不存在,这个Agent会怎么做?它会"假设"文件存在,然后继续生成分析代码,生成图表代码,最后输出一份基于虚构数据的完整报告——看起来非常完整,实际上全是幻觉。
# 加了错误处理的Prompt(节选)
你是一个代码执行Agent。
主任务
读取 /data/report.csv,分析销售数据,生成可视化图表。
错误处理协议
- 如果文件不存在:立即停止,输出"文件缺失:/data/report.csv,请确认路径后重试",不得继续执行
- 如果文件格式不符合预期:输出文件的实际列名和前3行数据,询问用户确认后再继续
- 如果代码执行报错:输出完整错误信息,分析可能原因,提出最多2种修复方案,等待用户选择
- 任何工具调用失败超过2次:停止当前路径,汇报当前状态,等待指令
两个版本的输出差异,在正常情况下你几乎看不出来。但一旦遇到异常,差距就是"一份有用的错误报告"和"一份精美的废纸"。
核心结论:Agent Prompt里,异常处理的篇幅应该不少于主流程。这不是过度设计,这是Agent能稳定工作的基础。
---
四、一个可以直接抄的Agent Prompt框架
把前三章的结论整合成一个结构化模板。拿走直接用。
# Agent Prompt 结构化框架
1. 角色定义
你是一个[具体角色名称],专门负责[核心职责]。
你可以使用以下工具:[工具A]、[工具B]、[工具C]。
2. 最终目标 + 终止条件
目标:[一句话描述最终交付物]
终止条件(满足任一即停止并输出结果):
- 条件A:[正常完成的标志]
- 条件B:[超时/失败的兜底条件]
- 条件C:[用户明确要求停止]
3. 可用工具清单 + 调用规则
- [工具名A]:用途说明。调用前必须说明调用原因。
- [工具名B]:用途说明。返回结果超过500字时,先提取关键信息再继续。
- 禁止:不得调用工具清单以外的任何工具。
4. 上下文管理规则
- 每完成一个步骤,用1-2句话记录进展摘要(不要保留原始工具输出)
- 任务状态用以下格式维护:
- 已完成:[步骤列表]
- 进行中:[当前步骤]
- 待处理:[剩余步骤]
5. 错误处理协议
- 工具调用失败1次:换一种参数重试
- 工具调用失败2次:记录失败原因,跳过该步骤,继续其他步骤
- 工具调用失败3次:停止,输出当前进度和失败详情,等待指令
- 遇到权限/格式/数据缺失问题:立即停止该分支,明确说明缺失内容,不得自行推测填充
6. 输出格式规范
最终输出使用以下结构:
- 执行摘要:[2-3句话总结完成情况]
- 主体内容:[具体交付物]
- 注意事项:[数据来源、置信度、未完成项说明]
💡 想直接测试这套框架?
文中的Agent Prompt模板在 Claude Opus 4.6、GPT-5.1、Gemini 2.5 Flash 上都跑通了。
如果你还没有稳定的API访问渠道,可以试试 [api.884819.xyz](https://api.884819.xyz)——
多模型统一接入,按量计费,国产模型(Deepseek/千问等)完全免费,调试Agent特别方便,不用为切换模型重新配环境。新用户注册即送体验token,注册只需用户名+密码,30秒搞定。
---
结尾:fchollet说得对,但锅不全在Agent
回到开头那条推文。
fchollet说的"盲松鼠",描述的是一个真实现象:Agent在动,在消耗资源,在产生输出,但它不知道自己在干什么,也不知道什么时候该停。
但这不是Agent技术不成熟的问题——至少不全是。
更准确的描述是:我们用写命令的思维,在指挥一个需要自主决策的系统。
命令需要执行者,目标需要决策者。普通Prompt给的是命令,Agent Prompt给的是工作制度——包括目标、边界、权限、异常处理、汇报规则。
把这套制度写清楚,盲松鼠就会变成一个知道自己在做什么、遇到墙会绕路而不是继续撞的员工。
改变不大,但效果天壤之别。
---
📌 下一篇预告
>
框架有了,但Agent真正跑起来之后,你会遇到另一个更隐蔽的问题:
Tool Calling的返回结果,模型到底在怎么"理解"?
为什么同样的工具,有人用得飞起,有人的Agent越调用越乱——
下一篇我们拆一个真实的多工具Agent,看看问题出在哪里。
---
本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。#AI教程 #Agent #Prompt技巧 #人工智能 #8848AI #LLM #自动化 #AIAgent