ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

上下文工程、任务分解与工具编排:Agent时代三大核心能力

上下文工程、任务分解与工具编排:Agent时代三大核心能力

最近在技术社群里潜水,看到一种很分裂的现象:一边是大家都在聊Agent、multi-agent、自主规划这些新概念,另一边还有一大批人被“提示词工程”这个词困在原地,每天研究的是“system prompt要怎么写才完美”“温度参数调到0.7还是0.3”“few-shot给几个例子效果最好”。不是说这些完全没用,而是——在Agentic AI时代,单纯死磕基础提示词,边际收益已经低到可以忽略不计了。

我这两年做了不少大模型应用落地项目,从简单的对话机器人到需要多工具调用的Agent系统,最大的感受是:提示词架构师这个岗位的重心正在发生剧烈转移。以前比拼的是谁能写出更精巧的prompt模板,现在比拼的是谁能搭出一个让模型稳定工作的系统。这篇想认真聊聊Agentic AI时代提示工程架构师真正需要重视的三种能力:上下文工程、任务分解与工具编排、评估与可观测性。如果你正准备从提示词选手往Agent方向转型,或者正带着团队做LLM应用落地、天天头疼“为什么我的Agent总是不听话”,这篇值得看完。

1. 先搞清楚为什么死磕基础提示词会越学越亏

1.1 基础提示词并没有消失,只是变成了“门槛”

我得先说句公道话:基础提示词能力不是没用了,而是从“核心竞争力”降级成了“入行门槛”。

早几年大模型刚开放出来的时候,模型的指令遵循能力确实不行。那时候“请一步步思考”能显著提升推理准确率,多给几个few-shot示例模型才明白你要什么格式,角色扮演类prompt也确实能改变回答风格。这些技巧在过去是实打实有效果的,我也靠这些解决了当时很多实际问题。但问题是,很多人把这些经验当成了一生的手艺,停在原地反复打磨。

我自己私下做过对比实验:把当年效果很好的一套CoT模板拿过来,用到现在的主流模型上,同一个推理任务,准确率的提升从过去的接近20个百分点掉到了1-2个百分点。更扎心的是,因为老模板写得太长,白白占用了上下文窗口,综合效果反而还不如直接问。

这不是模型的错,是时代变了。基础提示词的作用边界在快速收窄,你花一晚上精心设计的“魔法词”,可能还不如把问题本身的表述说清楚。我们得接受一个事实:提示词工程的基础技巧正在变成一种通用素养,就像你会打字、会用搜索引擎一样,它很重要,但不再稀缺。

1.2 从“写剧本”到“搭系统”:真正发生变化的开发范式

我看过太多人陷入“死磕基础提示词”的典型状态:整理几百条提示词模板库,研究“请仔细思考”和“让我们一步步来”的细微差别,反复调temperature期待找到黄金参数。这些努力不能说毫无价值,但方向确实是偏了。

为什么?因为基础提示词的思维模式是“写剧本”:你精心设计每一句台词,期望模型按剧本演出一段高质量输出。这在单轮交互、输入输出都比较固定的场景下是成立的。但Agentic AI时代的开发范式完全是另一回事——你面对的是一个自主决策的系统,它要自己理解任务、拆解步骤、调用工具、处理异常、决定什么时候结束。你没法给每一个分支都写好台词,因为路径组合多到根本写不完。

打个比方:以前你是编剧,把每一幕戏都写死,演员照着念就行。现在你更像剧组搭建者加导演,要给演员(模型)搭好场景、配好道具(工具)、定好流程(工作流),然后让他在框架内自己发挥。这个转变看着不大,但实际操作完全不是一回事。很多团队把过去写prompt的那套方法直接搬到Agent项目上,结果就是:给Agent写了一个特别长的角色设定和一堆规则,指望它自己“悟”出该干什么,最后产出稀烂,还不知道问题出在哪。

所以要转型,第一件事是把脑子里“提示词是核心”的锚点拔掉,换成“系统才是核心”。下面要聊的三种能力,都是围绕系统视角展开的。

2. 能力一:上下文工程——给Agent搭一个靠谱的“工作台”

2.1 上下文窗口是稀缺资源,信息架构决定Agent上限

先说一个容易被忽略的事实:模型的能力上限由参数决定,但一次任务里它“表现”出来的能力上限,很大程度上由上下文里有什么决定。人也是一样,能力再强,如果办公桌上堆满了垃圾文件、找不到关键资料,活儿照样干不好。Agent的“办公桌”就是上下文窗口。

所以上下文工程的核心问题不是“提示词怎么写”,而是:什么信息该进上下文、以什么格式进、什么时候该清出去。这本质上是信息架构设计。

我见过最典型的反面教材是:团队为了让客服Agent回答更准确,把几千条FAQ全部塞进system prompt里,结果上下文爆掉不说,模型反而开始胡言乱语,因为关键信息被淹没在冗余文本里了。后来我们改成设计了一个轻量检索层:用户提问后,先从知识库检索出最相关的3-5条内容,按统一结构拼进上下文。就这么一个改动,回答准确率提升了不止一个档次。

这个案例想说明的是:上下文工程的重心在“上下文”而不是“提示词”。好的上下文结构应该像一份排版清晰的简报,而不是一本杂乱无章的百科全书。数据要结构化、结论要前置、冗余要剔除。 我给内部团队定过一个原则:凡是超过两屏还能往上堆内容的system prompt,先别急着优化措辞,回去重构信息架构。

2.2 工具描述怎么写,模型才“听得懂”

Agent和普通对话机器人最大的区别就是能调用工具。工具一多,一个新的瓶颈就冒出来了:模型可能不会用、用错工具、或者给了错误参数。这时候你会发现,工具描述的本质也是一种“提示词”——它是写给模型看的“使用说明书”。

实操中我总结出几个经验。首先,工具命名要动词开头、语义明确。getOrderStatus比orderStatusQuery好,sendEmailToCustomer比emailOperation好。模型在决策时是靠语义理解来选工具的,名字越接近自然语言,选错的概率越低。

其次,description里要写清楚“什么时候该用、什么时候不该用”,而不仅是一句“获取订单状态”。比如你可以写:“当用户询问订单配送进度或物流异常时使用;当用户想退货时不要使用,请调用returnOrder”。 这种“负例”说明在传统prompt里很少见,但在工具描述里特别管用,能显著降低模型误用工具的几率。

另外,参数定义要严格。模型不是人,它不会“猜”你的意思,nullable、枚举范围、格式约束这些都要写清楚。很多Agent运行报错,最后查下来不是模型笨,是工具的参数schema写得太含糊,模型只能瞎填。

2.3 状态管理:多轮任务里最容易被忽视的坑

基础对话场景下,上下文管理很简单:把历史消息都堆上去就行。但Agent执行一个多步骤任务时,历史消息里会混入大量中间过程信息——工具返回的原始数据、中间推理过程、已经失效的临时状态。这些垃圾信息如果一直堆在上下文里,轻则浪费token,重则让模型产生混乱,忘掉真正的目标。

我踩过最深的坑就是让Agent做一个批量处理任务:它需要在多轮里处理几十条记录。跑着跑着,模型突然开始重复处理同一条数据,或者把上一轮的处理结果当成新的输入。原因就是上下文里堆了太多中间状态,模型已经分不清“当前该做什么”了。

后来我们引进了状态管理的思路:上下文里只保留目标的长期信息(任务目标、已完成事项清单、当前待办),中间过程数据处理完就丢,最多保留一个压缩后的摘要。效果立竿见影,任务完成率明显提升,token消耗也降下来了。 这其实就是一种简单的记忆分层:短期工作记忆和长期记忆分开管理。现在做Agent设计,我会在架构图里专门画一块“状态管理”模块,而不是把所有东西都丢给上下文窗口硬扛。

3. 能力二:任务分解与工具编排——把模糊目标变成动作链

3.1 任务分解的本质是“可验证性”

上下文工程解决的是“输入侧”问题,任务分解与工具编排解决的则是“过程侧”问题。这是第二个关键能力,也是很多人从单轮prompt转向Agent时最不适应的部分。

单轮prompt时代,你只需要写清楚“请你做什么”,模型直接给结果。Agent时代不行。模型本身不擅长自动把一个宏大目标拆得很精细,如果你给一个模糊指令,比如“帮我把客户投诉分析一下”,它很可能随便抓一把数据就开始输出,中间不做校验,结果自然不靠谱。

任务分解的本质是:把模糊目标拆成一串可验证的子步骤,每一步都有明确的输入、动作和产出标准。做饭是最好的类比——你说“做一顿晚餐”很模糊,但如果拆成买菜、洗菜切菜、炒菜、装盘,每一步都有完工标准,执行的人就不会乱。Agent的任务分解逻辑一模一样。

我在设计Agent时有一个习惯:先不开电脑写代码,先用纸笔画出“如果是一个人来干这件事,他会按什么顺序操作、每一步需要什么信息、每一步怎么判断做得对不对”。 等人肉流程清晰了,再把它翻译成Agent的工具调用链。跳过这个步骤直接写代码,大概率做出来的Agent是“花架子”。

3.2 工具粒度:给Agent少而精的选择题

任务分解好之后,接下来要设计的是:每一步用什么工具执行、工具的数量和粒度怎么定。这里有个黄金平衡问题,实操中非常微妙。

工具太少,Agent任务完不成,只能干看着;工具太多太细,模型的选择压力剧增,误用率飙升。我自己的实践体感是,一个Agent同时面对的工具数量控制在6-10个左右比较理想,超过这个数,工具选择的错误率会明显上升。与其设计一堆小工具,不如把相关操作合并成几个语义更完整的工具,让Agent做“选择题”而不是“填空题”。

工具粒度的另一个维度是“原子性”:工具要做到什么程度算完。比如“发送营销邮件”这个工具,是只负责发送,还是连内容生成、收件人筛选、发送记录都包了?我的建议是,一个工具只做一件跨领域的事,职责边界要清晰。工具返回结果要结构化成三部分:成功/失败状态、返回数据、以及给模型的下一步建议(比如失败原因和重试条件)。写清楚“下一步建议”是很多团队忽视的细节,但它恰恰是Agent决策链持续运转的关键润滑剂。

3.3 反馈回路设计:每一步都要让模型知道“接下来怎么办”

Agent和剧本最大的不同在于:它是实时感知反馈、动态调整的。反馈回路设计得好不好,直接决定Agent是“越跑越顺”还是“原地打转”。

什么叫反馈回路?简单说,就是每一次工具调用之后,模型能不能清楚地知道“刚才发生了什么、结果是否正常、如果异常我接下来有哪些选择”。这里最忌讳的是工具返回一堆原始数据然后沉默。模型拿到大段JSON不知道哪个字段有用、下一步该干什么,于是开始瞎猜。

正确做法是:工具返回信息要做“面向决策的加工”。 比如一个查询工具返回时,不仅给原始数据,还要带上一句“当前共检索到5条投诉记录,其中有2条属于物流类,可按用户要求生成汇总”。这句话就像给模型递了一个台阶,它顺着就能走下一步。另一个常见的反馈设计是失败处理:工具调用失败时,返回的错误信息里要明确指出是“参数错误”“权限不足”还是“服务暂时不可用”,并建议“重试”还是“换一条路径”。 没有这层设计,模型遇到错误只会反复调用同一个失败的工具,死循环就是这么来的。

4. 能力三:评估与可观测性——没有度量衡的Agent项目迟早翻车

4.1 从单轮打分到任务成功率:评估范式要换

第三个关键能力,我个人认为也是Agent项目落地时最被低估的能力:评估与可观测性。很多团队把Agent做出来之后,测试方式还停留在“问几个问题,看回答顺不顺眼”,这跟盲人摸象没什么区别。

传统prompt项目的评估相对简单:准备一批标注好的输入输出样例,对比模型输出和标准答案的差异,算个准确率或让大模型打分。但Agent项目的评估完全是另一个维度:不仅要看最终结果对不对,还要看过程合不合理、有没有绕弯路、有没有死循环、成本超没超。

我建议所有Agent项目第一件事就是定义“任务成功率”。 什么叫成功?对一个客服Agent来说,不是“回答了用户问题”就算成功,而是“用户诉求被正确解决,且调用工具路径合理,且没有触发越权操作”。这个定义要在项目开始时就写清楚,否则后面所有优化都没有标尺。

4.2 轨迹分析:Agent跑飞之后怎么复现“事故现场”

评估提升过程中,我学到最重要的一课是:一定要能复现失败的“事故现场”。普通模型调用失败,你拿着输入输出就能排查。Agent失败呢?它可能跑了十几轮工具调用才产出错误结果,中间还做了大量推理。不看完整轨迹,你根本不知道问题出在第一步选错工具、第二步参数传错、还是最后一步总结跑偏。

所以Agent系统从第一天就要做轨迹日志。 每一步都要记录:当前的输入目标、模型调用了哪个工具、传了什么参数、工具返回了什么结果、模型当时的状态是什么。这些日志平时看着啰嗦,一旦Agent在线上出问题,回放轨迹就是你最可靠的debug工具。

我印象最深的一次排查:一个多工具Agent偶尔会把客户的订单金额算错,复现还很不稳定。纯粹从输入输出看,完全找不到规律。后来回放了几十条成功和失败轨迹,才发现是模型在处理“折扣叠加”时,偶尔会漏读工具返回里的一个枚举字段,导致计算逻辑跳错分支。这个问题如果不看中间轨迹,调再多的提示词都发现不了。

4.3 给Agent建立“体检指标”:成本、延迟、成功率

评估和可观测性做好的一个副产品,是你终于可以科学地回答一个灵魂拷问:Agent方案到底比传统流程好在哪里?我接触过不少团队,Agent上线后成本飙升,却说不出来换来了什么。根源就是没有指标。

我建议大家给Agent建立一套基础“体检指标”,至少包括三类:成功率(任务完成比例、单轮完成比例、重试次数)、效率(完成一个任务的平均工具调用轮数、平均延迟)、成本(平均token消耗、平均费用)。 这三类指标要持续跟踪,而不是上线时看一眼。

做完这一套,你会发现自己对Agent的态度会从“玄学调优”变成“科学迭代”。每一项改动——不管是调prompt、改工具描述、还是优化检索策略——都能用指标说话。有个很直观的例子:团队里某位同学想给Agent的system prompt加一段很长的“业务背景介绍”,我让他先跑一下基线指标再说。结果加了之后,成功率没升,成本倒是涨了一截,这段文案就被毙掉了。这比任何“我觉得这样更好”的争论都有效。

5. 转型实操:从提示词选手到Agent架构师的几条实在建议

5.1 先把“系统思维”补上,再碰Agent

前面聊了三种能力,最后落实到行动上,怎么转型?我的第一条建议:先补系统思维,再碰Agent。

系统思维是传统软件工程里很成熟的东西,分散到具体点就是:状态管理、流程编排、错误处理、可观测性、模块解耦。这些名词听起来很后端,但在Agent时代全部变成了刚需。你不需要成为资深后端开发,但至少要理解这些概念为什么存在、解决什么问题。

举个例子,前面提到的“状态管理”,传统后端工程师对session管理和分布式状态早就形成了肌肉记忆,做Agent时天然就会想到“把临时状态和持久状态分开”。而只做过prompt的人,很容易把一切信息都塞进上下文里,然后被各种灵异问题折磨到怀疑人生。 想转型的朋友,建议先补一补这套基础课,不用啃大部头,理解核心原理和设计动机就够用。

5.2 练手项目按这个顺序来,少走弯路

理论说得再多,还是要动手。练手项目的选择顺序也很关键,我建议按下面的路径来,可以少踩很多坑:

第一阶段,做单工具Agent。 找一个很小的场景,比如“根据天气信息决定是否提醒用户带伞”。这个阶段的目标是熟悉Agent的基本循环:理解意图、调用工具、处理结果、组织回答。不要贪多,一个工具就够。

第二阶段,做多工具工作流Agent。 比如“自动生成周报”:读取工作记录、汇总重点、生成周报草稿、发送给指定人。这个阶段的重点是练习任务分解和工具编排,体会多工具之间的状态衔接和反馈回路设计。

第三阶段,做角色分工的多Agent协作。 比如让一个Agent做规划、一个做执行、一个做质检。这个阶段最考验工程能力,包括Agent之间的通信协议、上下文隔离、结果仲裁。能走完这一步,你对Agent架构的理解基本就通了。

5.3 三个能救命的工作习惯

最后分享三个我在实际项目里被“教训”出来的工作习惯,希望对你有用。

第一个习惯:任何改动前先记基线。 你即将调整system prompt或者工具描述时,先记录当前的评估指标是多少,改完再对比。没有基线,你永远说不清某个改动到底有没有效果、是变好了还是变差了。

第二个习惯:用版本管理管好prompt和工具配置。 把Agent的提示词、工具描述、参数配置都纳入版本管理,每次改动留一个可回滚的节点。听起来很麻烦,但Agent系统的行为是非线性的,一次无心改动可能两天后才暴露问题,没有版本记录你会发现连回退都不知道改了什么。

第三个习惯:给每个失败的案例建立“病历”。 不管是开发还是线上运营,只要Agent出现一次明显的错误,就把轨迹日志、当时的上下文、失败原因分析归档。积累几十个“病历”之后,你会对自己系统的弱点有非常清晰的认识,也知道下一步该优化什么。

说句实在话,我自己也是从“死磕基础提示词”那个阶段过来的,当年也没少囤模板、调温度参数。但Agentic AI时代这个转向,不是靠多背几条技巧就能跟上的。把注意力从“怎么把一句prompt写到完美”转到“怎么搭一个稳定的系统”,这条路我走了很久,也还在走。希望这篇关于上下文工程、任务分解与工具编排、评估与可观测性的经验梳理,能帮你少走几步弯路。如果读完你觉得“系统思维确实比堆提示词重要”,那我的目的就达到了。

RELATED READING

延伸阅读

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