ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从提示词到行为系统:自主代理AI的7个提示策略

从提示词到行为系统:自主代理AI的7个提示策略

提示工程这个词,在2024年以前容易被理解成一种“找咒语”的技能:把问题描述得足够细致,大模型就会给出好答案。但随着各类自主代理AI项目在真实业务里铺开,这个理解已经完全不够用了。自主代理不再是你问一句、模型答一句的单轮交互,而是让模型在给定目标下自行规划、调用工具、评估结果、修正路径,甚至在不同角色之间协作。设计这一整套行为方式的角色,也从“写提示词的人”变成了“提示工程架构师”。架构师要考虑的,不再是某条提示词是否巧妙,而是整份提示体系是否能让代理稳定、可控、可追溯地完成任务。这篇文章想跟你聊的,就是2024年自主代理AI领域里,我亲手在项目里验证过、也确实带来明显效果的7个提示策略,以及它们背后为什么能起作用的逻辑。

1. 为什么自主代理AI需要一套全新的提示语言

1.1 单轮对话与自主代理的提示差异

先说一个很直观的对比。以前我们用大模型,本质上是在跟一个“极聪明的临时工”对话:你布置一个任务,它给你一个答案,不满意就再布置一次。整个过程里,负责纠错的是你,负责判断结果好坏的是你,负责决定下一步怎么做的也是你。提示词只需要把任务描述清楚就行。

自主代理出现之后,这个关系变了。模型不再是一次性回答,而是被放进一个长周期的执行链条里:解析目标、拆解步骤、调用工具、处理返回结果、再决定下一步。整个过程可能持续几个小时,甚至几天,期间没有人盯着每一步。这时候,一条提示词再精妙也不够用,因为你不可能用一个句子覆盖所有分支、所有异常、所有决策。你需要设计的是一个“行为系统”。

下面这个表格,是我在给团队做内部培训时最常用来解释差异的对比,这里直接放出来:

对比维度传统单轮提示自主代理提示
交互周期一次提问、一次回答多步骤、长时程、异步运行
上下文使用只关注当前问题需要计划、记忆、反馈、日志
失败成本答错了重新问一次一步错可能导致整条链路报废
提示词作用表达任务意图定义目标、边界、路由、兜底策略
架构师关注点表达是否清晰准确行为规范是否完备、可执行

把这张表看懂,你就能理解为什么2024年团队招聘时开始强调“提示工程架构师”而不是“提示词工程师”。因为架构师做的不是润色文字,而是在设计代理的“行为规范书”。

1.2 提示工程架构师真正在做什么

在我参与的模拟项目X中,要做一个企业级的自动化客服代理系统。最初团队里每个人都觉得,提示工程嘛,就是把手头的客服话术模板整理得更像人话一点。真正跑起来才发现,最难的从来不是“怎么把话说好”,而是“代理在无人监督时会不会跑偏”。

当时我梳理下来,架构师的核心工作其实就四件事:

第一,定义目标链。把大目标拆成可验证的子目标,写清楚每个子目标的验收条件,而不是说“帮用户解决问题”这种模糊指令。

第二,设计记忆路由。代理运行过程中哪些信息要短期保存、哪些要写进任务上下文、哪些要沉淀为跨任务的长期经验,都需要在提示层面显式规定。

第三,制定授权边界。哪些动作代理可以自主执行,哪些动作必须先输出方案等确认,哪些动作被一票否决,必须写得分毫不差。

第四,编写降级路径。主路径失败时走什么备用方案,备用方案失败时如何上报,不能指望模型临场发挥。

所以,如果你也在做自己的代理项目,先把思路从“求模型好好干”切换到“给模型一套路书”。这套路书什么时候该指向什么、在哪里转弯、哪里刹车,才是提示工程架构师真正要交付的东西。

2. 七个策略全景图:先看整体,再选方案

先说明一点,下面这些策略名字并没有官方口径,它们是我在自己的项目文档和团队交流中使用的代号。这样起名只是为了沟通方便,否则每次都得说“让模型在执行前先评估自己认知的那套提示写法”,太啰嗦。

在详细展开之前,先给你一个全局表,方便你按图索骥:

策略一句话原理解决的核心问题适用场景
元认知检视执行前先评估自己的把握度减少幻觉和瞎答信息检索、复杂推理前
递归自我反思每一步之后自动纠偏长链路任务漂移多步骤自动化流程
规划与工具箱分离先画地图再开车工具调用污染推理链多工具调用场景
记忆金字塔按层级管理上下文窗口不足、信息混乱长期运行型代理
约束性自由正向授权替代否定清单自主边界失控有成本或安全限制的任务
意外路径迁移预设备用计划线性计划碰壁实时数据、外部依赖任务
多代理对话让不同角色互相挑错自我反思盲区事实核查、策略评审

需要提醒的是,正常的代理任务不会7个策略全部上阵。把7个策略全部塞进系统提示词,结果往往是提示词臃肿到连模型自己都抓不住重点,推理速度下降,输出质量反而不升。我自己的经验是,一个代理通常只需要组合其中两到四个策略,具体选哪些,取决于任务在哪一环节最容易出问题。

3. 策略详解(上):代理的“自我认知”与“记忆系统”

3.1 元认知检视——让代理知道它不知道什么

先给一个我在多个项目里反复使用的提示模板,你直接复制就能用:

在开始执行任务前,先输出一份认知检视单: 1. 完成本任务所依赖的3个关键假设; 2. 每个假设的确信度评分(0-100); 3. 低于60分的假设,先检索资料或请求补充信息,确认后再进入下一步。

这套提示的原理很朴素:单轮对话里,模型答错了你还能追问;但在自主代理的长链路里,一旦模型带着一个错误假设往下走,后面的每一步都是建立在错误地基上的,而且没有人及时发现。元认知检视就是在链条启动之前,强制模型先“检查自己的知识库存够不够”。

我在一次做自动化市场调研Demo时遇到过典型情况。代理需要汇总某行业近一年的公开数据,但它的训练数据并没能完全覆盖最近几个月的变动。传统提示词下,这个代理会凭借训练记忆“脑补”出一份看似完整、实则过时的报告。加入元认知检视之后,它在多个节点自动打出低于60分的把握度,触发了联网补充检索,最终报告的数据质量提升非常明显。

实操上有两个细节值得注意。一是这个检视节点要放在每个大的行动块之前,不要只放在系统提示词开头。模型是逐token推理的,只在开头检视一次的话,跑到中途早忘了。二是检视结果必须作为后续推理的一部分参与决策,不要让它走个形式。如果检视出来了60分以下的假设,却没有触发任何后续动作,那这个策略等于白写。

3.2 递归自我反思——没有人类纠偏时的自动校准

自主代理和人的最大区别是,它不会被“骂醒”。人做错了一步,旁边人提醒一下,马上就能改正;代理做错一步,它会顺着错误的输出继续往下执行,直到错误被放大到不可收拾。递归自我反思,就是给代理装上“每步自动回头看一眼”的机制。

下面是一个可以嵌入执行循环的反思模板:

每执行完一个步骤,输出一段“反思日志”: - 本步骤结果是否让主目标前进了? - 是否出现与初始计划矛盾的新信息? - 下一步保持、微调还是切换计划?给出具体变更。

这个策略和我们常说的“CoT”或者“ReAct”不太一样。ReAct要求模型在行动前“想一下”,思考的结果往往只是下一步决策。递归自我反思则强制它针对“已经发生的行动结果”产出结构化的偏差报告,而且输出必须落到日志里。为什么要强调日志?因为代理的短期记忆非常有限,如果不把反思结果写出来,过几个步骤它就会忘记自己刚刚发现过问题。

我在模拟项目X里踩过一个坑:反思节点加得太多,导致代理每走一步都要停下来反思一大段,任务执行速度慢了一倍多。后来我把触发条件改成了“每完成一个工具调用之后必须反思”,纯文本推理步骤不再触发反思,速度和稳定性才恢复正常。反思不是越频繁越好,它有明确的触发条件才有意义。

3.3 记忆金字塔——像操作系统一样管理上下文

上下文窗口再大也有限度,而自主代理一旦跑长任务,信息量迟早会撑爆窗口。很多人遇到代理“越跑越笨”,以为是模型能力问题,其实是因为上下文里堆积了大量无用的中间信息,模型注意力被打散了。记忆金字塔的思路,是像操作系统管理内存一样管理信息。

我在项目里常用的记忆分层规则如下:

【SHORT】当前步骤输入输出摘要(仅保留本轮) 【WORK】任务目标、已完成步骤、待办清单、失败记录 【LONG】可复用的处理方案、历史经验条目 规则:每步更新WORK;遇到相似问题先检索LONG再执行;SHORT不跨步骤保留。

这套设计的核心逻辑,是让代理显式知道“什么信息放哪里”。在这个结构里,短期记忆只服务于当前步骤,一旦这步结束就丢弃;工作记忆承担整个任务的全局状态,每一步都要更新;长期记忆则是经验库,跨任务复用。没有这个分层的话,模型会把大量历史输出、工具返回原文统统当作有效上下文,越跑越乱。

配合向量库做检索时,我特别建议在提示词里补一条:“检索结果的摘要先写入WORK,再开始推理,不要把全文塞进上下文。”因为很多团队做了向量检索,却把检索结果原文直接拼接进提示词,结果上下文里多了一大堆噪音,反而干扰推理。摘要进工作记忆、原文进LONG层,是我在长期运行型代理上实测过比较稳的组合。

4. 策略详解(下):代理的“行动计划”与“协作机制”

4.1 规划与工具箱分离——先画地图再开车

多工具调用的任务里,最容易出的问题就是模型被工具返回值带偏。本来它的计划是A到B到C,结果调用了第一个工具之后,发现返回结果里有一个“看起来更值钱”的信息源,于是临时改道去做另一件事,导致主线任务被丢掉。规划与工具箱分离,就是为了防止这种“边走边改路”的行为。

我给一个三层提示结构:

阶段一:生成执行计划,每个节点只描述“目标与验收条件”。 阶段二:为每个节点分配工具,写清输入来源与输出去向。 阶段三:按节点顺序执行,工具返回值只写入当前节点上下文。 阶段三若某节点连续失败3次,回到阶段一重新规划,不要重复调用同一工具。

这里的关键在于,把“选择路线”和“踩油门”拆成两个阶段。计划阶段不触碰任何工具,模型只输出一份相对干净的路线图;执行阶段不重新规划,只专注于当前节点的输入输出。这样做的好处是,单个工具调用出错时,影响范围被限制在该节点内部,不会带崩整条主链路。

另外要提醒一句,“连续失败3次回到阶段一”这条兜底规则很重要。没有它的话,代理可能在前一个节点死磕几十次,白白消耗大量调用资源。这一点在接入真实外部API时尤其明显,外部服务偶尔波动很正常,关键是有没有快速重规划机制。

4.2 约束性自由——正向授权比否定清单更可靠

给自主代理划定边界,最常见的做法是列负面清单:“不要乱花钱”“不要删数据”“不要对外发消息”。听起来很直观,但在实际运行中,这类约束的效果非常有限。你永远无法枚举所有不该做的事,而且模型对否定词的重视程度往往低于你的预期。

更好的做法,是用正向授权来描述边界:

你被授权直接执行:任务A、任务B、任务C。 以下动作不得直接执行,先输出风险评估并等待确认:资金变动、跨系统写入、对外发送消息。 未列出的情况视为“未知动作”,一律上报,不回应用户也不臆测。

这个策略背后的逻辑,是把“自主权”显式地定义为一个范围。任何在授权范围内的动作,代理可以干脆利落地执行;不在范围内的动作,一律暂停并上报。这样代理面对模糊情况时,不需要自己“猜一个合理动作”,而是把决策权安全地交回给人类。

我实际操作中发现,正向授权还有一个隐藏好处:它会倒逼你认真梳理业务流程。当你必须写清楚“代理能自主做什么”时,你自然会去审视哪些环节本来就不该让模型自己拍板。这个边界的清晰度,比提示词本身的措辞更重要。

4.3 意外路径迁移——为计划绑上备胎

自主代理最尴尬的处境,是计划做得很详细,结果第一步就碰到异常,然后整个系统卡在那里。你当然可以在提示词里说“遇到问题要灵活处理”,可这种话对模型来说约等于没说——因为“灵活”没有一个可操作的定义。意外路径迁移,就是提前在提示词里埋好几条高频异常时的备用路径。

模板示例:

主路径:步骤X → 步骤Y → 步骤Z。 备用路径:若步骤Y连续2次无有效结果,切换为“方案B:步骤Y1 → 步骤Z1”。 每次切换路径前,先输出“路径切换说明:原因、预计差异、新步骤验收条件”。

这个策略的本质,是把提示工程从“任务设计”扩展到了“风险预案设计”。它不是告诉模型“出错时怎么办”,而是告诉模型“出错时已给你铺好哪条路”。在遇到计划外情况时,代理的第一反应不再是硬着头皮往后跑,而是先确认当前处于主路径还是备用路径,再做决策。

用的时候要控制分支数量。我见过有人在一个提示词里写了十几个异常分支,结果模型在执行过程中不断检查“我还有哪些分支没走到”,任务推进反而变慢。一般情况下预埋三到五个高概率异常分支就足够了,更低频的异常交给上报机制处理。

4.4 多代理对话——让不同角色互相挑错

前六个策略都在想办法让同一个代理变得更可靠,但实际上,单代理的自我反思有一个绕不开的盲区:它很难发现自己思维框架里的根本性问题。模型会顺着自己生成的上下文继续推理,自我质疑时也容易陷入“自圆其说”的循环。多代理对话策略,是引入另一个角色来完成交叉验证。

一个比较通用的角色分配模板:

设立三个角色: 研究员:提供结论、依据和证据链; 审计员:只负责挑错,从数据来源、逻辑自洽、边界条件三个角度抛出质疑; 决策者:在研究员回应质疑后,给出最终结论与置信度。 审计员每轮必须提出至少3条可验证的质疑。 研究员每轮最多回应2轮,超过2轮后由决策者强制给出结论。

核心设计在于两个角色之间的信息隔离。在实际实现中,要尽量让研究员看不到审计员的原始质疑文本,只能看到结构化的质疑摘要。如果研究员能看到审计员的完整措辞,它很容易顺着质疑的“语气”去调整自己的答案,而不是真正基于逻辑去回应。我们开发内部程序时有个简单办法:把两轮对话放在不同的临时上下文快照里,研究员每轮只接收“审计意见编号+要点摘要”,这样才能保证辩论的真实性。

另外,要给审计员设定“挑刺指标”。如果不强制“至少提出3条可验证的质疑”,这个角色很快就会因为“扮演成本高”而变得敷衍,最后两个代理互相客气,辩论流于形式。这种对抗性设计,才是多代理方案真正出效果的地方。

5. 把我踩过的坑整理成一份排查手册

上面这些策略看起来思路清晰,但实际用起来,每个策略都有对应的坑。这里我把在模拟项目X和相关项目里踩到的典型故障整理了一下,供你排查时参考。

5.1 故障一:代理陷入“计划-反思-再计划”的无限循环

这是我在加递归自我反思策略时最先遇到的问题。代理每走一步都要反思,反思完觉得“计划还不够完善”,于是重新计划,计划完又开始反思新计划是否合理……最后任务没有推进,反而把调用次数烧光了。

根因是反思触发的频度设置不合理。反思的目的是纠偏,不是每步都必须改计划。我用两处修正解决了这个问题:一是将反思触发条件改成“每完成一个工具调用后”,纯思考步骤不再触发;二是给反思结果加上明确的处置规则——“如果反思结论是‘保持计划’,直接继续执行,不再输出额外内容;如果确实需要修改,才输出新版计划”。这样一来,反思变成了一个轻量动作,而不是一层沉重的额外思考。

5.2 故障二:检索结果把上下文打爆,代理开始胡言乱语

这个问题的现象很明显:代理跑到中途,输出开始文不对题,甚至把不同来源的信息混在一起编造事实。排查上下文才发现,检索模块把几十页文档原文全部拼进了提示词,模型的注意力早就被稀释完了。

解决方案就是我前面提到的记忆金字塔。强制规定检索结果先提炼成摘要,再写入WORK;原始内容存进LONG层,通过编号引用,而不是全文拼接。如果你还没做记忆分层,只是临时救急,可以在提示词里加一条“每次检索后,用不超过200字的摘要总结关键信息,再继续推理”,很多上下文爆炸的问题都能缓解一大半。

5.3 故障三:多代理辩论变成彬彬有礼的互相认同

多代理方案在实验环境里效果不错,但放到真实任务后,研究员和审计员经常一边倒地“达成一致”。我看了几轮对话记录,发现审计员输出的质疑都非常温和,甚至直接说“我同意研究员的判断”。问题不在模型能力,而在没有给审计员足够的对抗动机。

给这个方法注入对抗性的方法是:明确量化审计员的输出要求;把审计员的判断结果与最终结论的逻辑一致性挂钩。比如审计员如果连续多轮没有提出任何有效质疑,决策者可以直接判定本轮审计无效,要求重新审查。这么一设计,这个角色才会真正去挑毛病,而不是走过场。

5.4 故障四:策略堆满,提示词越长,模型反应越差

有些团队喜欢把七个策略全部写进一套系统提示词里,以为这样是最全面最稳定的。实测下来,这类代理往往表现为:响应速度明显变慢,执行过程中频繁检查各种规则,甚至出现一些意料之外的自相矛盾。

策略组合的取舍,我的建议是困果导向:只选当前任务最需要补强的策略。低风险的单步任务,用元认知检视就够;长链路多工具任务,加记忆金字塔和意外路径迁移;事实核查类任务,直接上多代理对话。每一套组合之间要预留清晰的触发条件,不要同时让所有规则常驻在上下文里。

5.5 一张故障速查表

故障现象根因优先排查项快速修复手段
代理死循环、不推进反思或重规划太频繁反思触发条件、重规划上限固定触发点,加次数上限
上下文过长、输出混乱未做记忆分层WORK是否被无关内容塞满摘要进WORK,原文外存储
多代理辩论无实质内容审计角色缺乏对抗性审计员的质疑数量与质量强制质疑量化,独立上下文
提示词过长、效率下降策略堆叠过多系统提示词总长度按任务目标瘦身策略组合
代理在一个节点反复失败没有重规划兜底失败重试上限逻辑连续失败N次后重新规划

这些坑不是白踩的。每踩一个,我对“提示工程架构师”这个角色的理解就更清晰一点:这个职业的核心竞争力,不在于记住多少漂亮的提示模板,而在于能从失败日志里定位“模型在哪个环节悄悄偏离了目标”,并针对性地设计一套约束和兜底机制。

最后再分享一个我个人的习惯:调试自主代理时,先看日志,再改提示词。大多数提示问题都会在执行日志里留下痕迹——某一步突然偏离目标、某次工具调用反复失败、某个角色输出明显敷衍。先根据日志定位到具体节点,再回到对应的提示块上做小步调整,效率远高于对着系统提示词做全局重写。如果你也在跟自主代理的提示词搏斗,我建议你不要一上来就想集齐七种策略,先把元认知检视和约束性自由这两块地基打好,跑通一个最小闭环,然后根据实际暴露出来的问题,再一步步引入其他策略。这条路我走过,稳。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进