ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

从提示词到Agent Skills:掌握反思、工具调用与规划的核心技能

从提示词到Agent Skills:掌握反思、工具调用与规划的核心技能 最近很多开发者在聊一件事ChatGPT已经用得挺顺了提示词也能写得很漂亮但真要做一个能自动完成任务的 Agent却不知道从哪里下手。这个困惑不是个例。过去一年里我见过不少类似的情况工具文档啃了很多示例代码也跑通了最后卡住的往往不是“模型不够聪明”而是“不知道一个 Agent 应该怎么拆、怎么搭、怎么验证”。所以当“Agent Skills”这个概念被单独提出来的时候我特意留意了一下。它并不是要发明一个新框架而是把 Agent 开发中出现频率最高的几类能力单独拎出来逐个讲清楚底层逻辑和练习方法。尤其是吴恩达在 DeepLearning.AI 上的 Agent 系列内容他把这类问题拆得很细很适合按“技能”而不是“概念”去学。我的判断是Agent Skills 真正有价值的点不是让你记住几个模式名字而是帮你完成一次思维转换——从“教模型回答一个问题”变成“设计一套能稳定完成任务的流程”。1. 先搞清楚Agent Skills 区别于普通提示词的关键在哪里1.1 从“单次问答”到“多步任务”的范式变化很多人一开始会困惑Agent Skills 和提示词工程有什么区别它们当然有重叠但核心目标完全不同。提示词工程优化的是“单次生成的回答质量”。你给模型一段上下文、一个指令模型给你一次输出。你通过调整措辞、提供示例、拆分指令来提高这一轮输出的质量。它解决的是“一次对话中模型是否准确理解了你”。Agent Skills 优化的是“多步骤任务的整体完成率”。你给 Agent 一个目标Agent 需要自己决定先做什么、后做什么、中间要不要调用工具、拿到结果之后怎么校验、失败了怎么重试。这里每一步都会调用模型也可能调用外部系统。举一个具体例子。假设你想让 AI 写一份竞品分析报告。普通提示词的做法一次性把“请分析竞品A和竞品B的定位、功能、市场表现写一份报告”丢给模型等它生成。Agent 的做法先让模型拆出子任务比如“搜索产品A的公开资料”“搜索产品B的公开资料”“整理功能对比表”“提炼市场表现结论”每个子任务可能独立执行中间可能需要调用搜索工具或读取文件最后再汇总成报告。后者明显更接近一个真实团队的工作方式而不是一次“请发挥你的知识储备”。这也是 Agent 类应用越来越受关注的原因——它把 AI 从“对话窗口里的能力”变成了“可编排的工程组件”。1.2 Agent Skills 的分层模型模型、工具、流程要理解 Agent Skills建议把它放在一个分层的结构里看。最底层是模型能力包括推理能力、指令跟随能力、代码理解能力。没有好的基础模型上层所有设计都是空中楼阁。中间层是工具能力包括函数调用、API 调用、数据库访问、文件读写、搜索引擎等。这一层让模型有机会接触外部信息而不仅仅依赖训练数据里的记忆。最上层是流程能力包括任务规划、反思校验、多步骤编排、多角色协作等。这一层解决的是“怎么把一件复杂事情拆成可管理的步骤并让每一步都产出一致结果”。Agent Skills 主要关注中间层和上层的组合方式。工具是手流程是做事的方法模型是大脑。这三者缺一不可。很多人学习时只盯着模型榜单觉得换一个更强的大模型就能解决 Agent 效果不稳定的问题。实际落地时你会很快发现光有强大模型没有清晰的工具定义和流程设计Agent 一样会迷路。这也是我建议把 Agent Skills 当作独立主题来学习的原因。2. 和这类框架关联最密切的四个底层技能在 Agent 开发里有几个技能出现的频率非常高。它们不是理论概念而是可以直接落地、可以单独验证、可以反复调优的工程单元。2.1 反思Reflection给输出加一道自检阀反思的意思是让模型在生成一次结果之后带着明确标准重新检查自己的输出发现问题再修正。为什么有效因为模型对“整体评价”的敏感度往往高于“逐字生成”。你让模型直接写一段代码它可能一次性产出一个小瑕疵但如果你让它“检查这段代码里的边界条件是否正确、有没有潜在的异常分支”它往往能准确地指出自己的问题。实际使用时可以给反思定义一个检查清单。比如代码是否覆盖了空值输入报告是否有明确结论计划是否包含风险应对方案不建议让模型“随便重新生成一遍”那样通常只会得到一个意思相近但略有变化的版本而不是一个真正修正后的结果。代价也必须正视每次反思都意味着额外一次模型调用token 和延迟都会增加。我的经验是不是每个环节都需要反思。只对关键产出做一次自检比如最终代码、最终报告、最终计划。中间过程反复反思很容易让整个链路变得又慢又贵。2.2 工具调用Tool Use让 Agent 接上真实系统工具调用解决的是 Agent 的“手”的问题。没有工具的 Agent只能基于训练数据和上下文生成文本有了工具它才能查天气、搜资料、写数据库、调用内部 API。这里最核心的工程点不是“模型会不会调用 API”而是“工具定义是否清晰”。工具的名称、描述、参数 schema 都会直接影响模型能否正确调用。一个常见错误是工具描述写得模糊比如一个函数叫get_data(url)没有说明它返回什么格式、需要哪些权限、有哪些限制。模型可以调用它但很可能给出错误参数或者调用后不知道怎么处理返回结果。我建议每个工具都遵循单一职责原则一个工具只做一件事情并明确说明输入输出。多用途的“万能工具”反而会让模型的决策变得更难因为模型无法准确判断什么情况下该用、怎么用。2.3 规划Planning把大任务拆成可管理的颗粒度规划能力解决的是“面对一个复杂目标Agent 怎么组织自己”。常见的做法是模型先把大任务拆成子任务列表然后逐个执行每执行一步再根据中间结果调整后续计划。拆得好不好取决于模型本身的推理能力。对简单模型来说拆完计划之后很容易忘记上下文对更强模型来说每一步都能保持目标感。工程上有一个常见顺序先做粗计划再根据执行情况动态调整。不要强求模型在一开始就把所有细节想好。真实项目的需求本来就是逐步明确的Agent 也需要在执行中迭代。如果任务本身不需要拆就不要强行拆。把一句话能说清楚的请求拆成五个步骤只会增加延迟和错误概率。2.4 多 Agent 协作Multi-Agent Collaboration用角色分工提高稳定性多 Agent 协作是现在讨论热度最高的方向之一。它让多个 Agent 扮演不同角色比如一个负责搜集资料、一个负责分析、一个负责审查最后把结果汇总。这个模式适合复杂任务尤其是“不同子任务需要不同能力模型”的场景。例如让一个擅长结构化输出的模型搭框架另一个擅长推理的模型做分析。但它也有明显代价多个 Agent 之间的通信会额外消耗 token错误会在协作链路上传播调试难度明显上升而且整体响应时间通常会变长。所以我的建议会比较保守当单 Agent 加反思已经能满足需求时不要为了“看起来更聪明”而升级成多 Agent 架构。技术上的复杂度和稳定性往往是反比关系你需要有足够明确的收益才值得支付这份复杂性。技能核心作用主要代价适合场景不适合场景反思提高输出质量额外模型调用代码生成、长文本、计划制定实时交互、低成本任务工具调用接入外部数据与系统需要维护工具定义查数据、写库、调 API纯对话任务规划拆解复杂任务依赖模型推理能力调研报告、项目方案简单问题不值得拆多 Agent 协作多角色分工配合调试难、成本高跨领域复杂任务已有稳定方案时不建议3. 从入门到进阶我把学习顺序整理成了四步学习 Agent Skills 最容易犯的错误是反着学。很多人一上来就研究多 Agent 框架连最基础的工具调用还没跑通就开始折腾编排逻辑结果一调试就卡住了。我比较推荐下面这个顺序先跑通最小单元再逐层叠加能力。3.1 第一步先跑通一个最小 Agent 循环不要一开始就上 LangChain、CrewAI 这类成熟框架。先用底层 API 把“工具调用”的最小循环跑通。这里给出一个伪代码级别的示例结构用来展示 Tool Calling 的基本思路# 一个最小Agent循环的示例结构 # 伪代码以 Function Calling 风格为例 tools [ { name: get_current_time, description: 获取当前时间, parameters: {type: object, properties: {}} } ] messages [ {role: user, content: 现在几点了} ] # 第一次调用让模型决定是否需要工具 response model.chat(messages, toolstools) # 如果模型返回工具调用意图 if response.tool_calls: # 执行工具把结果追加回消息 messages.append(response_message) messages.append(tool_result) # 第二次调用让模型基于工具结果生成最终回答 final model.chat(messages)这段代码不是为了直接运行而是为了说明一个关键机制Agent 并不是“命令模型去调工具”而是模型先判断“自己缺什么信息”然后表达“我想调用某个工具”系统执行完工具后再把结果交还给模型。你可以把它理解成一次对话闭环模型提出需求系统执行操作结果回到模型手中模型最终作答。先把这个闭环跑通后续所有复杂能力才有基础。3.2 第二步加入记忆和反思最小循环跑通后再叠加两个能力。第一个是记忆。记忆不是简单地把所有历史信息都塞进上下文而是有取舍地保存和检索。常见做法是使用向量数据库把过去的信息向量化需要时按相关性取回。这里要特别控制检索范围不然很容易把无关的历史信息卷入模型上下文造成干扰。第二个是反思。反思可以作为一个“后处理步骤”加在关键输出之后。例如让模型先写一版方案再带着检查清单自检一遍最后输出修正版。这个阶段仍然不要碰复杂的编排框架。你的目标是把每个能力各自验证好记忆检索是否准确、反思是否真正改善了结果。3.3 第三步建立能观察 Agent 的“仪表盘”Agent 应用和普通 API 应用有一个本质区别它不是单次请求而是一个多轮、多工具、多分支的执行过程。没有可观测性几乎不可能定位问题。我建议在第二步之后立刻做工程化建设至少包括四类数据任务层面每次任务的输入、输出、最终成功或失败状态。调用链层面每一步调了哪个模型、哪个工具、耗时多少、token 消耗多少。中间结果每一步模型的中间输出方便复盘。评估指标你定义的成功标准例如“结果是否包含必需字段”“答案是否正确调用工具”。这些数据会直接决定你能不能持续优化 Agent。否则你只会得到一个“貌似合理但不知道它为什么对、为什么错”的黑盒。3.4 第四步再考虑复杂协作当单 Agent 流程稳定、评估指标清晰、日志完整之后再考虑多 Agent 协作或者更复杂的规划链路。到这里你会更容易判断是应该引入一个“研究 Agent”负责搜索还是应该让主 Agent 直接调用搜索工具是应该让两个 Agent 相互审查还是只对最终结果做一次反思这些判断需要建立在前面几步的实践之上而不是凭感觉选。一个可复用的学习顺序先跑通最小工具调用循环再逐步添加记忆、反思、评估和协作。每加一层都要先验证当前层不会拖垮前一层。4. 实际落地时最容易踩的 5 个坑4.1 把技能学成了概念收藏我见过不少开发者提到 Agent 设计模式时能熟练说出“Reflection、Tool Use、Planning、Multi-Agent”但一问“你最近的 Agent 项目里哪一步用了反思为什么用”就答不上来了。这本质上是被概念裹挟了。Agent Skills 是拿来用的不是拿来囤的。每学一个技能最好都配一个亲手跑过的案例。哪怕是个非常小的例子也比整理一百页笔记有价值。4.2 一上手就追求复杂编排另一个常见反面案例第一个 Agent 项目就上多 Agent、外部数据库、多个工具结果调试了一周还在处理“为什么第二个 Agent 拿到的是空数据”。复杂度是要挣来的不是一开始就有的。先做能覆盖核心流程的最小闭环确认每一步都稳定后再逐步加编排。每加一个环节都要能回答“它解决什么问题”以及“它会引入什么新问题”。4.3 忽视了上下文长度和 token 成本Agent 是多轮调用成本不是“一次问答”的简单叠加。一次任务里可能包含多次模型调用每次调用都会重复携带历史消息再叠加反思、规划一个任务消耗十几万 token 并不夸张。建议从一开始就建立成本意识设置单次任务 token 上限。对非必要的中间输出尽量减少内容冗余。反思只用在关键产出上。规划结果不要全文一次性丢给下一步只传递真正需要的部分。4.4 没有定义“什么结果算好”没有评估指标的 Agent 项目最后很容易陷入“看起来很智能但没法判断是否可用”的状态。哪怕是先做人工评估也要明确每条产出的评判标准。例如信息完整度是否包含所有必需字段。工具调用成功率工具是否被正确调用。最终答案正确性是否得出了可验证的结论。稳定度同一个任务跑十次结果波动有多大。只有先定义“什么算好”你才能判断一次改动是在变好还是在变差。4.5 把模型能力误当成工程能力模型生成一次正确结果不代表你的系统稳定。生产环境里输入会变、接口会断、工具会挂模型偶尔也会输出异常。Agent 工程需要把“单次正确”转化为“系统可靠”。至少要有三层兜底失败重试模型调用失败或工具调用异常时能否自动重试。降级方案工具不可用时能否退回到不调用工具的流程。人工兜底关键步骤是否保留了人工确认的入口。不要因为一次demo跑通了就急着上生产。先把失败路径和兜底机制写完稳定性是设计出来的不是运气撞出来的。5. 一个可复用的 Agent Skills 自检框架前面讲了很多概念和踩坑点容易散。最后我把自己排查 Agent 问题的顺序总结成一个框架分四层来问。5.1 先看任务定义是否清晰如果一个任务还处在“帮我想想”的模糊状态不要急着写 Agent。先问自己能不能把任务拆成三到五个有明确输入输出的子任务能拆说明这是一个适合 Agent 的任务。拆不出来说明需求本身还没被定义清楚应该先人工把需求梳理明白再考虑自动化。5.2 再判断能力瓶颈在哪一层Agent 出现问题常见的排查顺序是看日志确认是哪一步断了。看输入检查模型拿到的信息是否完整、格式是否正确。看工具定义确认工具描述是否清晰、参数是否正确。看流程设计确认任务拆解是否合理、步骤顺序是否违背依赖关系。这里最怕一种思维遇到问题先怪模型。实际上很多 Agent 失败问题出在中间层比如工具定义模糊、上下文拼接错误、任务拆解跳跃。5.3 工程基线日志、评估、成本长期使用的 Agent 项目至少要满足三个基线每次运行都有完整日志包括输入、输出、中间工具调用、错误信息。有明确定义的评估指标哪怕只是人工标注的“通过/不通过”。有 token 和成本统计能看出每个任务平均花费多少。这三样东西决定了你有没有资格谈优化。没有数据所有判断都靠猜。5.4 边界确认不要为了 Agent 而 Agent最后一步也是最容易被忽视的一步确认这个任务到底适不适合用 Agent。更适合用 Agent不适合用 Agent多步骤任务需要调用外部工具简单问答一次生成即可答案可以通过流程验证高精度数值计算一点不能错允许一定延迟不追求毫秒级响应强实时控制延迟不可接受非敏感数据可以写入模型上下文隐私数据不适合直接传给外部模型这个边界不是固定不变的。随着工具链和模型能力提升以前不适合自动化的任务可能会变得适合。但至少每个项目启动前都应该做一次这个判断。6. 回到长期视角Agent Skills 会怎样改变开发方式如果把 Agent Skills 放到更长的时间维度来看它真正改变的其实是开发方式本身。过去我们使用 AI主要是在“调用一个更聪明的问答接口”。你把问题发过去模型把答案返回给你任务结束。这个模式下开发者的核心工作是写好提示词。Agent 开发则完全不同。你设计的是系统一个能拆解任务、调用工具、自我检查、甚至在异常情况下自动恢复的系统。提示词依然重要但它只是这个系统里的一个组件。这种变化对开发者的能力要求也变了。你需要懂一点任务拆解、懂一点工具设计、懂一点评估方法、懂一点成本控制。这些能力合在一起才是 Agent Skills 的含义。所以我才会在一开始说它真正有价值的地方不是几个模式名词而是帮你完成思维转换从“让模型回答问题”到“设计一套稳定完成任务的流程”。如果你正准备开始学习我的建议很直接先不要囤课程也不要收藏更多笔记。选一个你最常做的重复任务哪怕只是“整理一份会议纪要并提取待办事项”先做一个最小 Agent跑通然后看它在哪里失败。那个失败点就是你真正要花时间练的 Agent Skill。正文完
RELATED READING

延伸阅读

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