你的 Agent 总是跑偏?因为你把它当 Prompt 在用

我让 Agent 帮我整理竞品报告,它跑了 20 步之后开始给我写小说——不是比喻,是真的开始编故事。

那次翻车经历我记得很清楚。任务描述写的是:"帮我搜索并汇总竞品的产品功能、定价和用户评价,整理成报告。"看起来很清晰对吧?结果 Agent 先搜了几个关键词,然后开始"分析",然后开始"推断",然后在第 17 步的时候,它已经在根据"推断"生成"可能的用户反馈"——全是编的。

我盯着那份报告看了三秒钟,意识到问题不在模型,在我自己。

不是模型不行,是你的任务描述写法根本就不对。

---

第一章:为什么你的 Agent 总是跑偏?

普通 Prompt 和 Agent 任务描述,看起来都是"给模型的文字输入",但它们的运行机制完全不同。

普通 Prompt 是单次射击:你问一个问题,模型回答,结束。整个过程只有一个决策点,就算跑偏了,也就一步之遥。

Agent 是持续决策循环:模型要在没有人介入的情况下,连续做出几十个决策——调用哪个工具、怎么解读返回结果、下一步去哪、遇到错误怎么办……每一步都是一个岔路口。

这就是问题所在。你用写普通 Prompt 的思维写 Agent 描述,等于给一个要独立工作三天的员工,只留了一张写着"帮我整理竞品报告"的便利贴。

员工会怎么做?他会按自己的理解去发挥。模型也一样。

---

第二章:普通 Prompt vs Agent 任务描述,到底差在哪?

用一张表说清楚:

| 维度 | 普通 Prompt | Agent 任务描述 | | 意图表达 | 描述你想要什么结果 | 定义它是谁、目标是什么、成功标准是什么 | | 角色定义 | 通常没有,或只有简单 "你是一个助手" | 需要明确能力边界、专业背景、行为风格 | | 边界约束 | 基本没有 | 必须写清楚"不能做什么"和"遇到边界怎么处理" | | 工具调用意识 | 不涉及 | 必须说明有哪些工具、每个工具的适用场景和调用规范 | | 失败处理机制 | 不需要 | 必须定义异常情况下的回退策略,否则模型会自由发挥 |
一句话总结:普通 Prompt 是"告诉它答案长什么样",Agent 描述是"给一个会持续行动的员工写岗位说明书"。

岗位说明书和便利贴,信息密度差了一个数量级。

---

第三章:我试了 4 种写法,复盘每种的实际表现

同一个任务:"自动搜索并汇总 3 个竞品的产品功能、定价、用户评价,输出结构化报告"

我用 4 种不同的写法测试,以下是真实结果。(测试使用 GPT-5.1 和 Claude Sonnet 4.6,平台用的是 [api.884819.xyz](https://api.884819.xyz),延迟和稳定性都还不错,按量计费。)

---

写法 A:直接描述任务目标(最常见,最容易跑偏)

帮我搜索并汇总竞品信息,包括产品功能、定价和用户评价,整理成报告。
实际表现:

Agent 开始搜索,前几步正常。但很快,它在没有找到明确定价信息的情况下,开始"推断"定价——"根据其产品定位,预计定价在 XX 元左右"。用户评价部分更糟,直接开始生成"典型用户可能会说……"。

最终报告里,真实数据和编造内容混在一起,没有任何区分标注。

问题根源: 没有定义"搜不到信息怎么办",模型选择了对它最简单的路——编。

---

写法 B:加角色定义 + 任务目标(有改善,但边界模糊)

你是一个专业的市场研究分析师。

你的任务是搜索并汇总竞品信息,包括产品功能、定价和用户评价,输出结构化报告。

实际表现:

有了角色定义之后,输出的语气和格式明显更专业。但问题依然存在:当搜索结果不理想时,"分析师"开始用专业语气编造数据,反而更有迷惑性。

问题根源: 角色定义解决了"风格问题",但没有解决"边界问题"。

---

写法 C:角色 + 目标 + 约束清单 + 工具说明(明显更稳)

## 角色

你是一个专业的市场研究分析师,专注于 SaaS 产品竞品分析。

任务目标

搜索并汇总指定竞品的以下信息:产品核心功能、官方定价方案、真实用户评价。

可用工具

  • web_search:用于搜索公开信息
  • 仅使用上述工具,不得使用其他方式获取信息

约束规则

  • 所有数据必须来自真实搜索结果,禁止推断或编造
  • 如果某项信息无法找到,明确标注"未找到公开信息"
  • 不得在报告中混入主观判断,除非明确标注为"分析"

输出格式

按竞品逐一输出,每个竞品包含:功能摘要、定价信息、用户评价摘录(附来源链接)

实际表现:

这次 Agent 的行为明显收敛。在找不到定价信息时,它如实标注了"未找到公开定价,建议直接访问官网确认"。没有编造,没有推断混入正文。

报告结构清晰,可信度大幅提升。

改善关键: 约束清单 + 明确的"搜不到怎么办"策略。

---

写法 D:结构化系统提示词(含状态感知 + 失败回退逻辑)(表现最优)

## 系统角色

你是一个市场情报采集 Agent,专门负责竞品信息的结构化采集与汇总。

你的工作产出将直接用于商业决策,因此准确性优先于完整性。

任务定义

采集目标竞品列表中每个产品的以下信息:

1. 核心产品功能(来源:官网/产品文档)

2. 定价方案(来源:官网定价页)

3. 用户评价(来源:G2/Capterra/AppStore 等第三方平台)

工具使用规范

  • web_search:每次搜索聚焦单一信息点,不得一次搜索多个维度
  • 每条信息必须记录来源 URL 和采集时间

行为准则

  • 信息可信度分级:官网信息 > 第三方平台 > 新闻报道 > 社交媒体
  • 遇到信息冲突时,保留所有版本并标注来源,不得自行裁决
  • 禁止任何形式的推断、预测或主观填充

异常处理(重要)

  • 若某项信息经 3 次搜索仍未找到:标注"[数据缺失]"并停止该项搜索
  • 若工具调用失败:记录错误,跳过该步骤,在报告末尾汇总所有失败项
  • 若任务无法完成超过 50%:暂停并向用户报告当前进度,等待指令

输出规范

最终报告结构:

  • 执行摘要(采集完成度、数据质量评估)
  • 竞品详情(按模板逐一填写)
  • 数据缺失清单(列出所有未采集成功的信息项)
  • 建议后续行动
实际表现:

这是四种写法里表现最稳定的一个。Agent 在整个执行过程中行为可预测:该搜的搜,搜不到的明确标注,工具失败的有记录。最终报告里有一个"数据缺失清单",清楚列出了哪些信息没有采集到。

更重要的是:它没有一次编造数据

文中所有 Prompt 示例可以直接在支持 GPT-5.1 / Claude Sonnet 4.6 的 API 环境里跑。如果你还没有稳定的 API 访问渠道,可以试试 [api.884819.xyz](https://api.884819.xyz)——新用户注册即送体验 token,国产模型(Deepseek/千问等)完全免费,按量计费不用担心浪费。

---

第四章:Agent 任务描述的最佳实践模板(可直接复用)

根据上面的实验,我提炼了一套可复用的结构化模板:

## [角色声明]

你是一个 [专业领域] 的 [角色名称]。

你的工作产出将用于 [使用场景],因此 [核心优先级,如"准确性优先于完整性"]。

[任务目标]

你需要完成以下任务:

1. [具体任务步骤1]

2. [具体任务步骤2]

成功标准:[明确定义什么叫"完成"]

[能力边界]

你可以做:[列出允许的操作]

你不可以做:[列出禁止的操作]

[工具清单]

  • [工具名称1]:[适用场景] / [调用规范]
  • [工具名称2]:[适用场景] / [调用规范]

[行为准则]

  • [规则1,越具体越好]
  • [规则2]
  • [信息冲突时的处理方式]

[异常处理]

  • 若 [异常情况A]:[执行动作A]
  • 若 [异常情况B]:[执行动作B]
  • 若任务无法推进:[回退策略]

[输出规范]

[明确定义输出格式、结构、必须包含的字段]

什么时候用精简版:
  • 任务链路短(5步以内)
  • 工具调用单一
  • 失败影响可控

精简版可以省略"行为准则"的细节,但异常处理永远不能省

什么时候必须用完整版:
  • 任务链路长(10步以上)
  • 涉及多工具协同
  • 输出结果将直接用于决策或对外发布

---

第五章:三个容易踩的坑,以及我的判断标准

坑一:把工具描述写进目标里,导致幻觉调用

错误写法: "使用搜索工具查找竞品信息,然后用分析工具生成报告"

问题在于:如果"分析工具"不存在,模型会凭空"调用"它——然后用自己的推理假装是工具输出。

正确做法: 目标只描述"要达成什么",工具清单单独列出"有什么可用",两者严格分离。

---

坑二:约束写得太模糊,模型自由发挥

错误写法: "不要编造信息"

这句话没有操作性。模型不知道什么叫"编造"——它认为基于搜索结果的推断不算编造。

正确做法: 写具体的行为规范,比如"所有数据点必须附带来源 URL,无法提供来源的信息禁止写入报告"。

---

坑三:只写"该做什么",忘了写"不该做什么"

大多数人写 Agent 描述时,花了 90% 的篇幅描述正常流程,对异常情况只字不提。

但 Agent 在真实执行中,遇到异常的概率远比你想象的高。没有明确的"不该做",模型会选择对它最省力的路——通常是编造或跳过。

正确做法: 每写完一个"该做什么",问自己:"如果这步失败了,它应该怎么办?" 把答案也写进去。

---

自检清单:写完 Agent 描述后,对照这 5 个问题

  • [ ] 1. 角色是否明确? 它知道自己是谁、在做什么场景下的工作吗?
  • [ ] 2. 成功标准是否可验证? 它知道什么时候算"完成"吗?
  • [ ] 3. 工具边界是否清晰? 每个工具的适用场景和禁止场景都写了吗?
  • [ ] 4. 异常情况是否覆盖? 至少覆盖了"信息找不到"和"工具调用失败"两种情况吗?
  • [ ] 5. 禁止行为是否明确? 有没有明确写"不能做什么",而不只是"要做什么"?

---

最后:如果你只记住一件事

不要做大而空的总结。就一句话:

写 Agent 描述之前,先问自己——"如果这是一个真人员工,我这段话够不够让他独立工作三天?"

如果答案是"不够",继续补。

现在打开你手边的 Agent 项目,把它的系统提示词拿出来,对着上面那个自检清单过一遍。大概率你会发现至少两个漏洞。

---

这篇我们聊的是单个 Agent 的任务描述怎么写。

>

但如果你要搭的是多个 Agent 协作的系统——比如一个 Agent 负责搜索、一个负责分析、一个负责写报告——它们之间怎么"交接工作",上下文怎么传递,Prompt 又该怎么设计?

>

下一篇我会拆一个真实的多 Agent 流水线案例,踩过的坑比这篇还多。敬请期待。

---

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI Agent #Prompt技巧 #AI教程 #ChatGPT #Claude #8848AI #AI工作流 #大模型实战