Agent Plan × DeepSeek Harness|Agent 的本质:从大模型到自主智能体的跃迁
Agent Plan × DeepSeek Harness|Agent 的本质:从大模型到自主智能体的跃迁
一、引言:为什么 Agent 在 2024—2025 年突然爆发
如果要在过去两年的 AI 行业里选出一个被讨论得最多、被误解得也最多的词,那一定是 Agent。2023 年,所有人都在谈论 ChatGPT 和大模型的"涌现能力";而到了 2024 年底至 2025 年,话题的中心悄然转移——人们不再满足于一个"会聊天"的模型,而是想要一个"会干活"的系统。这个能干活的系统,就是 Agent(智能体)。
爆发并非偶然,它是三条技术曲线交汇的结果。
第一条曲线是模型能力的跃迁。2024 年下半年开始,前沿模型在函数调用(Function Calling)、结构化输出、长上下文理解等"工程友好"能力上出现了质的飞跃。模型不再只是生成流畅的文本,而是能够稳定地输出合法的 JSON、准确判断何时该调用哪个工具、在多轮交互中保持指令的一致性。没有这一步,任何 Agent 框架都是空中楼阁。
第二条曲线是推理模型的登场。以 OpenAI 的 o1、DeepSeek 的 R1 为代表的推理模型,通过思维链显式化和强化学习训练,让模型学会了"先思考再行动"。这一能力对 Agent 至关重要:Agent 的每一次工具调用本质上都是一次决策,而决策质量取决于模型对当前状态的深度分析能力。R1 用极低的成本把这种深度推理能力民主化了,这是 DeepSeek 对整个 Agent 生态最重要的贡献之一,我们会在后文详细展开。
第三条曲线是成本的结构性下降。2024 年到 2025 年,头部模型的 API 价格下降了不止一个数量级。DeepSeek V3 以远低于同行的价格提供了对标第一梯队的通用能力,这意味着:过去只敢让 GPT-4 回答一次问题的预算,现在足以支撑一个 Agent 进行几十轮"思考—调用—观察—修正"的完整循环。Agent 是Token 的重度消费者,没有低成本就没有实用的 Agent。
于是我们看到:Manus 引发了通用 Agent 的全民讨论,Claude Code 和 Codex 让"AI 自主写代码"成为日常,各种 Multi-Agent 框架层出不穷。但喧嚣背后,一个根本问题往往被回避了:Agent 到底是什么?它和 Chatbot 的本质区别在哪里? 不搞清楚这个问题,开发者就会陷入"套壳崇拜"——把任何带 prompt 的小程序都叫 Agent,把任何调用了一次 API 的脚本都当作"智能化改造"。
这篇文章的目标,就是把 Agent 的概念地基打牢。我们会从经典的人工智能与强化学习定义出发,拆解 Agent 的五大组件,分析 LLM 与 Agent 的本质分野,并给出一个基于 DeepSeek API 的最小可运行 Agent 实现。读完这一篇,你应该能够回答三个问题:Agent 是什么、它凭什么自主、它为什么还会失败。
先给出一个提纲挈领的判断:LLM 是一个函数,Agent 是一个循环。 大模型把输入的 token 映射为输出的 token,它本身没有状态、没有目标、没有对世界的干预能力;而 Agent 把这个函数放进一个带反馈的循环里,配上记忆、工具和规划能力,让它能够持续地感知环境、做出决策、执行动作,直到任务完成。函数到循环的跃迁,就是从大模型到自主智能体的跃迁。这个判断将在后文反复得到印证。
二、Agent 的经典定义:感知—决策—行动循环
Agent 并不是一个新概念。在强化学习(Reinforcement Learning, RL)的教科书里,Agent 的定义已经存在了三十年:Agent 是能够感知环境(Perceive)、做出决策(Decide)并采取行动(Act)以最大化某个目标或奖励信号的实体。 这个定义来自 Russell 和 Norvig 的经典教材《人工智能:一种现代方法》,也是整个 RL 领域的公理式起点。
在 RL 的语境下,Agent 与环境的交互构成一个马尔可夫决策过程(MDP):在每个时间步,Agent 观察到状态,根据策略选择一个动作,环境返回奖励并转移到新状态。围棋程序是 Agent,机械臂是 Agent,自动驾驶汽车也是 Agent。它们的共同特征是:闭环——行动会改变环境,改变后的环境又被感知到,从而影响下一步决策。
LLM Agent 完整地继承了这个循环,只是每个环节的介质变了:
这个"感知—决策—行动—观察"的闭环,就是 LLM Agent 的心跳。每一圈循环,模型都会把新观察到的工具结果纳入上下文,重新推理,决定下一步。循环何时终止?要么模型判断任务已完成,要么触发外部的安全阈值(最大循环次数、Token 上限、时间预算)。
对比一下 Chatbot 的形态:Chatbot 是一个开环系统——用户提问,模型回答,交互结束。模型的行为不会改变任何外部状态,下一轮对话的走向完全由用户决定。而 Agent 是闭环的:它自己产生的动作(工具调用)会改变环境(文件系统、数据库、网络、甚至另一个模型的输入),环境的变化又反过来成为它下一步决策的依据。开环与闭环、被动响应与主动干预,这是 Chatbot 与 Agent 的第一道分水岭。
用一个直观的例子说明。你对 Chatbot 说"帮我查一下明天北京的天气,如果下雨就提醒我带伞",它最多会生成一段"我无法访问实时数据,但你可以……“的道歉文本。而对一个接入了天气工具的 Agent 说同样的话,它会:解析出意图与参数(城市=北京、日期=明天)→ 调用天气 API → 读到"降水概率 70%” → 判断需要提醒 → 生成"明天北京有雨,记得带伞"。三步之内,它完成了感知、决策、行动的完整循环,而且它的行动(调用 API)真实地触碰了外部世界。
值得强调的是,这个循环里有一个容易被忽视的关键角色:环境对动作的反馈必须是真实且有信息量的。如果工具返回的是错误信息、空结果或者被劫持的内容,Agent 的决策基础就会被污染。RL 领域有个术语叫"奖励黑客"(Reward Hacking),在 LLM Agent 领域对应的则是"工具滥用"与"观察污染"。一个健壮的 Agent 系统,必须在循环的每个环节设计校验机制。这一点我们在第八节讨论失败模式时还会回来。
三、从 Chatbot 到 Agent:能力跃迁的四个层级
如果只记住一个框架,我建议记住这一节。从 Chatbot 到成熟的自主 Agent,能力跃迁可以划分为四个层级,构成一座金字塔:
第一层:对话能力。 这是 LLM 的原生能力——理解自然语言、生成自然语言、在多轮交互中保持连贯。金字塔的这一层在 2023 年就已经被充分解决。值得注意的是,对话能力是后续所有层级的载体:无论多复杂的工具调用与规划,其输入输出最终都要用自然语言或结构化文本表达。一个连指令都听不准的模型,谈不上做 Agent 的大脑。
第二层:工具使用能力。 这一层的标志是 Function Calling 的成熟。模型不再是"知识的黑箱",而成为"行动的发起者":它可以在对话中主动声明"我需要调用搜索工具,参数是……",由外部执行器完成真实动作后,再把结果喂回来。工具使用本质上是给模型装上了手和脚——搜索是眼睛的延伸,代码解释器是计算能力的延伸,文件系统是记忆的延伸。2024 年之后,工具调用准确率成为衡量模型 Agent 潜力的核心指标,各大模型在这个能力上展开了激烈竞赛。
第三层:规划能力。 单次工具调用解决不了复杂任务。当用户说"帮我调研竞品并写一份分析报告"时,模型需要把这个模糊的宏观目标分解为有序的子任务:确定竞品名单 → 逐一收集资料 → 提炼对比维度 → 撰写报告 → 自查修订。这就是规划(Planning)。ReAct(Reasoning + Acting)范式是这一层的经典实现:模型在每一步先显式写出推理过程(Thought),再决定行动(Action),观察结果(Observation)后进入下一轮。思维链的质量,直接决定了规划的质量。推理模型的出现把这一层的能力上限大幅推高——R1 类模型的长思维链,本质上就是规划能力的规模化。
第四层:自主性。 金字塔的顶端是自主性(Autonomy):Agent 能够在没有人类逐步指令的情况下,自主设定中间目标、评估自身进展、在失败时调整策略。这一层与前两层的区别在于反馈信号的来源——第二、三层的 Agent 依赖外部(用户或环境)告诉它"对不对",而自主 Agent 能够自己生成评价标准:写完代码自己跑测试,测试不过自己改,改完再跑,直到全绿。这种自我闭环的纠错能力,是"工具增强的 Chatbot"与"真正 Agent"的最后一步跨越。
一个常见的认知误区是把"能调用工具"等同于"是 Agent"。按照这个金字塔,只能调用工具的系统处于第二层,它依然是"用户驱动的"——每一步都等着人类下指令。真正的分水岭在第三层以上:任务驱动而非指令驱动。用户给出的是目标而不是步骤,Agent 自己找到步骤。实践中评估一个"Agent 产品"的成色,最有效的问题就是:把任务描述得模糊一些、把步骤全部隐去,看它还能不能走完全程。
这四层不是替代关系,而是叠加关系。第四层的自主性建立在第三层的规划之上,规划依赖工具执行,工具调用又以对话理解为基础。工程实践中的一个直接推论是:如果你的模型对话层能力不过关,不要急着上 Agent 框架。地基不牢,框架只会放大模型的缺陷——一个会幻觉的模型配上自主执行权限,就是一个会自主制造事故的系统。
四、Agent = LLM + 记忆 + 工具 + 规划 + 环境:五大组件解剖
业界流传最广的 Agent 拆解公式来自 Lilian Weng 在 2023 年的博客《LLM Powered Autonomous Agents》:Agent = LLM(大脑)+ Planning(规划)+ Memory(记忆)+ Tools(工具)。我在这个公式基础上再加一项——Environment(环境),因为脱离环境谈 Agent 是没有意义的:环境定义了 Agent 能感知什么、能改变什么,也就定义了它的能力边界。
4.1 LLM:大脑
LLM 在 Agent 中扮演的角色,类似于大脑之于生物体:一切感知在这里被理解,一切决策从这里发出。但要注意,这个大脑有它独特的"生理结构"——它是无状态的。每次推理都是一次从零开始的条件生成,上一次推理的过程不会自动保留。Agent 的其他组件,很大程度上都是在为这个无状态的大脑补齐"时间感":记忆组件给它过去,规划组件给它未来。
对大脑的选型是 Agent 工程的第一决策。这里需要平衡三个维度:通用能力(理解与生成的质量)、推理深度(多步决策的正确率)、成本(每轮循环的 Token 开销乘以循环次数)。DeepSeek 的 V3 与 R1 恰好在这三个维度上提供了非常互补的组合,第五节详细分析。
4.2 记忆:短期与长期
记忆组件解决的是"大脑无状态"与"任务有历史"之间的矛盾。实践中分为两类:
短期记忆就是上下文窗口(Context Window)。每一轮循环,框架都会把系统提示、历史工具调用与返回结果、中间推理全部拼进上下文,喂给模型。短期记忆的容量就是上下文长度——128K 听起来很大,但一个认真干活的 Agent,几轮工具调用之后,上下文就会被搜索结果、网页正文、代码片段迅速填满。上下文管理因此成为 Agent 工程的核心技艺之一:截断、摘要、压缩、选择性遗忘,都是在和这个限制博弈。
长期记忆则跨越单个会话存在。它通常由向量数据库实现:把历史交互、知识文档编码为向量存储,需要时按语义相似度检索回来。长期记忆让 Agent 有了"经验"——上个月你告诉过它你的代码规范偏好,这个月它依然遵守。OpenAI 的 Memory 功能、各类记忆框架,本质上都是在上下文窗口之外建立一个可检索的持久层。
4.3 工具:手与脚
工具是 Agent 干预世界的方式。工程上的形态经历过一次重要演进:早期做法是把工具说明写进提示词、让模型输出特定格式再正则解析,脆弱且易错;现代做法是 Function Calling 协议——开发者用 JSON Schema 声明每个工具的名称、功能与参数,模型经过专门训练后输出结构化的调用请求,由框架执行并把结果以 tool 角色消息回填。
工具设计的质量,直接决定 Agent 的能力上限。几条经过实践检验的原则:工具粒度要适中——太细则 Agent 要拼装大量调用,太粗则丧失灵活性;工具描述要面向模型——把说明书写成模型容易理解的形式,明确说清楚什么时候该用、什么时候不该用;返回结果要精炼——工具返回的是给模型看的"观察",一大坨原始 HTML 会迅速烧光上下文,摘要与结构化提取应该在工具层完成;宁可给错误码也不要静默失败——模型对明确的错误信息有很强的纠错能力,但对"什么都没发生"束手无策。
4.4 规划:把目标变成步骤
规划组件负责把宏观任务翻译为可执行的微观序列。主流技术路线有三种:
第一种是思维链分解(CoT Decomposition):让模型先输出一份任务计划,再逐步执行。简单直接,适合结构清晰的任务。第二种是ReAct 循环:推理与行动交替进行,每一步的行动依赖上一步的观察,适合探索性任务。第三种是反思与自我批评(Reflection):在执行过程中或结束后,让模型(或另一个模型实例)审视已完成的工作,发现问题则回溯修正。AutoGPT 式的"计划—执行—重规划"三段式,就是这三种思路的组合。
推理模型的出现改变了规划组件的实现成本。过去要靠精心设计的提示词工程才能激发的多步推理质量,现在 R1 这类模型通过强化学习训练直接内化了。思维链从一种"提示技巧"变成了"模型的原生能力",这是 Agent 技术栈在 2025 年最深刻的变化。
4.5 环境:被遗忘的主角
环境定义了 Agent 的行动空间。一个只接了搜索引擎的 Agent,它的世界就是网页;一个接了文件系统和终端的 Agent(如 Claude Code),它的世界就是你的整个代码仓库与操作系统。环境不仅是动作的承受者,也是约束的施加者:权限边界、沙箱隔离、速率限制,都是在环境层实现的。
工程上对环境的最大敬畏来自安全问题:给 Agent 多大的环境权限,就意味着承担多大的风险敞口。一个能删文件的 Agent 就可能删错文件,一个能发邮件的 Agent 就可能发错对象。"最小权限原则"在 Agent 工程中的重要性,不亚于它在传统安全工程中的地位。
五、DeepSeek 作为 Agent 大脑:为什么它是当下最优解之一
讨论完 Agent 的通用架构,我们把镜头转向本系列的主角:DeepSeek。在 2025 年的模型市场上,如果为 Agent 挑选一颗"大脑",DeepSeek 的 V3/R1 双模型组合提供了极具竞争力的选项。理由有三。
第一,V3 的通用能力与极致成本。 DeepSeek-V3 是一个 671B 参数的 MoE 模型,激活参数约 37B,在通用理解、代码生成、工具调用等基准上稳居开源模型第一梯队,能力对标闭源头部模型。而它的 API 价格长期维持在同档闭源模型的十分之一量级。前文强调过:Agent 是 Token 的重消费者,一个任务循环几十轮,每轮上下文动辄上万 Token,成本会以乘法累积。V3 的价格结构,让"重度循环"的 Agent 形态在经济上第一次成立。用一句话概括:V3 把 Agent 的边际成本压到了可以忽略的水平。
第二,R1 的推理深度。 DeepSeek-R1 是推理模型的代表作:通过大规模强化学习训练,模型学会了在给出答案前进行长链思考,在数学、代码、逻辑推理任务上显著超越同参数量的非推理模型。对 Agent 而言,这恰好补上了最稀缺的"决策质量"短板。更关键的是,R1 与 V3 共享同一套 API(仅 model 参数不同,deepseek-chat 对应 V3、deepseek-reasoner 对应 R1),切换成本几乎为零。一个成熟的工程实践是混合调度:简单的工具选择与参数填充交给 V3,复杂的规划、纠错、代码理解交给 R1。这种按需分配的架构,在保证质量的同时把平均成本控制在低位。
第三,开源生态与自主可控。 V3 和 R1 的权重以宽松许可开源,这意味着三条路径全部打开:直接调官方 API、用第三方推理服务商托管、完全私有化部署。对企业级 Agent 落地而言,"数据不出域"往往是硬性约束,开源权重是唯一能同时满足能力与合规的选项。围绕 DeepSeek 权重,社区已经形成了完整的推理优化生态——vLLM、SGLang 等推理框架对 DeepSeek 架构做了深度优化,MoE 结构 + MLA 注意力机制让单机部署 671B 模型成为可能。这套生态的成熟度,是其他开源模型短期难以复制的护城河。
还应该提到工程友好性:DeepSeek 完整兼容 OpenAI 的 Chat Completions 接口协议,base_url 一行配置即可把任何基于 OpenAI SDK 构建的应用迁移过来。Function Calling、JSON 输出、流式响应这些 Agent 开发的刚需能力一应俱全。对专栏读者来说,这意味着学习成本为零——你为 OpenAI 写的代码,改个域名就能跑在 DeepSeek 上,还便宜了一个数量级。
一个常被问到的问题是:既然能力对标,为什么不直接用闭源旗舰模型?答案因场景而异。对于学习、原型验证、以及大多数生产级 Agent 工作负载,V3 的能力足够覆盖,而成本优势会直接决定一个 Agent 业务在商业上成立与否——同样十万次任务循环,模型成本的差距会放大成财报上的差距。只有在 V3 明确力不从心的长尾场景(比如超长上下文的复杂法律文书分析),才有必要引入更贵的模型做兜底。用最便宜的够用模型跑绝大多数循环,把昂贵模型留给真正的难题,这是 Agent 时代的新经济学。
当然,客观地讲,DeepSeek 当前也有边界:纯文本模态(暂无原生视觉能力,多模态 Agent 需要组合其他模型)、上下文长度相对前沿闭源模型仍有差距、工具调用在极端复杂场景下的稳定性还需要精调。这些边界不改变它的整体性价比优势,但提醒我们:模型选型永远是"够用且便宜"对"过剩但昂贵"的权衡。
六、动手:一个最小可运行的 Agent
理论讲完了,现在写代码。这一节我们用 DeepSeek API 实现一个"问答 + 联网搜索"的最小 Agent。它虽然只有一百多行,但五脏俱全:具备工具调用、ReAct 式循环、上下文管理、错误处理——第三、四节的所有概念都在代码里落地。
环境准备:Python 3.9+,安装 openai 库(v1.x 版本)。DeepSeek 的 OpenAI 兼容端点是 https://api.deepseek.com。
"""
minimal_agent.py — 基于 DeepSeek API 的最小可运行 Agent
功能:问答 + 联网搜索工具,带 ReAct 循环与安全阈值
依赖:pip install openai
"""
import json
from openai import OpenAI
# 1. 初始化客户端:DeepSeek 完全兼容 OpenAI 协议
client = OpenAI(
api_key="YOUR_DEEPSEEK_API_KEY", # 建议从环境变量读取
base_url="https://api.deepseek.com",
)
# 2. 工具注册表:每个工具 = 实现函数 + JSON Schema 描述
def web_search(query: str, top_k: int = 5) -> str:
"""联网搜索工具。生产环境请替换为 Tavily / SerpAPI / 博查等真实搜索 API。"""
# 这里用模拟数据演示;接真实 API 后返回 JSON 字符串即可
fake_results = [
{"title": f"{query} 的最新进展", "snippet": "(模拟摘要)……"},
{"title": f"关于 {query} 的深度分析", "snippet": "(模拟摘要)……"},
]
return json.dumps(fake_results[:top_k], ensure_ascii=False)
def calculate(expression: str) -> str:
"""安全的算术计算工具,只允许数字与运算符。"""
if not expression.replace(".", "").replace(" ", "").isdigit() and \
not all(c in "0123456789.+-*/() " for c in expression):
return json.dumps({"error": "表达式包含非法字符"}, ensure_ascii=False)
return json.dumps({"result": eval(expression)}, ensure_ascii=False) # 受控沙箱内使用
TOOLS_SPEC = [
{
"type": "function",
"function": {
"name": "web_search",
"description": "联网搜索最新信息。当问题涉及实时数据、"
"新闻、近期事件或模型可能不知道的事实时调用。",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "搜索关键词"},
"top_k": {"type": "integer", "description": "返回条数,默认 5"},
},
"required": ["query"],
},
},
},
{
"type": "function",
"function": {
"name": "calculate",
"description": "精确计算算术表达式。涉及数学计算时务必调用,"
"不要靠心算。",
"parameters": {
"type": "object",
"properties": {
"expression": {"type": "string", "description": "算术表达式"},
},
"required": ["expression"],
},
},
},
]
TOOL_IMPL = {"web_search": web_search, "calculate": calculate}
# 3. Agent 核心:感知-决策-行动循环
def run_agent(question: str, max_rounds: int = 8) -> str:
messages = [
{
"role": "system",
"content": "你是一个严谨的研究助手。对于实时性或事实性问题,"
"先调用 web_search 获取证据再回答;数学计算必须调用 "
"calculate。回答末尾注明引用了哪些工具。",
},
{"role": "user", "content": question},
]
for round_no in range(1, max_rounds + 1): # 安全阈值:防死循环
# --- 决策:把上下文交给大脑 ---
resp = client.chat.completions.create(
model="deepseek-chat", # V3;复杂规划可换 deepseek-reasoner
messages=messages,
tools=TOOLS_SPEC,
)
msg = resp.choices[0].message
messages.append(msg) # 短期记忆自然累积
if not msg.tool_calls: # 循环终止条件:模型认为可以作答
return msg.content
# --- 行动:执行所有工具调用 ---
for call in msg.tool_calls:
fn_name = call.function.name
args = json.loads(call.function.arguments)
print(f"[Round {round_no}] 调用 {fn_name}({args})")
try:
result = TOOL_IMPL[fn_name](**args)
except Exception as e: # 错误也作为观察喂回,而非静默失败
result = json.dumps({"error": str(e)}, ensure_ascii=False)
# --- 观察:结果以 tool 角色回填上下文 ---
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result,
})
return "(已达最大循环轮数,任务未收敛,请细化问题后重试。)"
if __name__ == "__main__":
answer = run_agent("DeepSeek 最新的开源模型是哪个?它的参数规模和许可协议是什么?")
print("\n最终答案:\n", answer)
逐段解读这段代码中体现的架构原则。
感知环节体现在 messages 列表的累积上:每一轮循环,模型"看到"的是系统提示、用户问题、此前所有推理与工具结果的总和——这就是短期记忆的完整实现。注意框架层不需要做任何额外工作,上下文累积是消息列表的自然语义。
决策环节是那次 create 调用。tools 参数把工具的 JSON Schema 交给模型,模型在需要时返回 tool_calls。终止条件的设计值得注意:if not msg.tool_calls——当模型不再申请调用工具时,意味着它判断"证据已充分,可以作答",此时返回的 content 就是最终答案。让模型自己决定何时停止,是 Agent 自主性的最小体现。
行动环节在 for call in msg.tool_calls 循环里。注意两点工程细节:其一,异常被捕获后转成 {"error": ...} 喂回模型,而不是让程序崩溃——把失败转化为可观察的信号,模型往往能在下一轮自我修正(比如重新生成搜索词);其二,结果以 role="tool" 且携带 tool_call_id 的消息回填,这是 OpenAI 协议的标准做法,保证模型能准确对应"哪个调用返回了哪个结果"。
安全阈值是 max_rounds。一个没有退出条件的 Agent 循环是危险的:模型可能反复搜索同一个关键词、陷入"再查一次确认"的强迫症。8 轮上限意味着最坏情况下成本也是可控的。生产环境中,你还应该加上 Token 预算上限与时间上限,构成三重保险。
把这段代码跑起来,问它一个需要搜索的问题,你会从 [Round 1] 调用 web_search(...) 的日志里直观看到那个"感知—决策—行动"闭环的转动。这就是 Agent 的心跳声。
如果想进一步把它升级为"真正的第三层 Agent",改进方向是明确的:把 deepseek-chat 换成 deepseek-reasoner 以获得更强的规划深度;在 system prompt 中加入"先输出任务计划"的指令;搜索结果过长时在工具层做摘要压缩;把 web_search 换成真实的搜索 API 并增加 URL 抓取工具,让 Agent 能"点进链接读全文"。每一条改进,都对应第四节里的一个组件。框架没有魔法,所有的高级 Agent 系统,都是在这个最小循环上加装组件的产物。
七、自主性的度量:如何科学地评估一个 Agent
"我的 Agent 很智能"是一句无法证伪的营销话术。工程上,自主性必须被拆解为可测量的指标。业界目前收敛出三个核心维度。
第一个维度:任务完成度(Task Success Rate)。 定义很朴素——在一组有客观验收标准的任务里,Agent 无人工干预地完整完成的比例。关键在于"客观验收标准":要么是自动化判分(单元测试通过、JSON 校验合法、答案与标准答案一致),要么是盲评。业界有影响力的基准如 SWE-bench(真实 GitHub issue 修复)、GAIA(通用助手任务)、τ-bench(工具使用与多轮交互),衡量的都是这个指标。截至 2025 年,头部 Agent 在 SWE-bench Verified 上的解决率从年初的个位数攀升到百分之几十,这条曲线的斜率,就是 Agent 技术的进步速度。
第二个维度:纠错能力(Error Recovery)。 完成度衡量"顺境中的表现",纠错能力衡量"逆境中的韧性"。测量方法很直接:故意在任务路径上埋雷——让某个工具返回错误、让测试用例包含陷阱、让第一次搜索结果与问题无关——然后观察 Agent 能否发现异常并回到正轨。一个只会"顺流而下"的 Agent 在真实世界里活不过第一周,因为真实环境充满了 API 超时、格式变化和数据噪声。实践中,纠错能力的强弱与模型的推理深度高度相关:R1 这类推理模型在埋雷测试中的恢复率显著高于非推理模型,因为长思维链给了它"发现矛盾"的推理空间。
第三个维度:规划深度(Planning Depth)。 度量 Agent 能稳定串联的最长有效决策链。一个只能"搜一下—答一下"的 Agent 深度是 2;能"调研三个竞品—汇总对比—写报告—自查修订"的 Agent 深度可能是 20+。深度的测量可以转化为"任务所需的中间步骤数与成功率的关系曲线":几乎所有 Agent 都会随步骤数增加而衰减,区别只在于衰减的速率。规划深度直接受上下文长度约束——第 40 步的决策质量取决于前 39 步的观察是否还在上下文里、且没有被噪声稀释。
这三个维度合起来,构成一个有观点的判断框架:自主性不是开关而是刻度。与其争论"它是不是 Agent",不如测量"它在每个刻度上的读数"。对技术管理者而言,这个框架还有一个务实用途——评估采购或自研的 Agent 系统时,要求供应商提供这三个维度的量化数据,而不是演示视频。演示视频是策划出来的最佳路径,指标才是统计意义上的真实能力。
另一个值得分享的实践观察:自主性与可控性存在张力。Agent 越自主,人类对中间过程的掌控越弱,出错时的归因与止损越难。因此成熟的 Agent 系统普遍采用"分级自主"设计:低风险动作(查询、读取)完全自主,中风险动作(写入、发送)需要摘要确认,高风险动作(删除、支付)强制人工审批。这不是技术不成熟的表现,而是永远必要的工程理性——飞机的自动驾驶再先进,起飞降级权限依然留给飞行员。
八、Agent 的失败模式:知道怎么死,才能活得久
讨论完怎么评估成功,必须讨论失败。Agent 的失败不是随机的,而是呈现出清晰的模式。识别这些模式,是 Agent 工程师的核心素养——因为调试 Agent 的本质,是给失败模式分类。
模式一:幻觉(Hallucination)。 模型生成了看起来合理但事实上错误的内容。在 Agent 场景里,幻觉有更强的破坏力:Chatbot 幻觉,用户笑笑就过去了;Agent 幻觉,它会带着错误信念继续执行后续动作,错误被链条放大。典型场景:搜索没有命中有效结果,但模型不愿承认"没找到",而是编造一个来源;或者工具返回了错误数据,模型不加质疑地采信。缓解手段:强制引用(要求答案标注工具返回的原文出处)、证据校验(用另一个模型实例核对关键事实)、以及在提示词中明确授权"允许回答不知道"——很多幻觉源于模型被隐式要求必须给出答案。
模式二:循环(Looping / Repetition)。 Agent 陷入无效重复:反复调用同一个工具、同样的参数,得到同样的结果,再调用一次。成因通常是模型缺乏对"已尝试路径"的元认知,或提示词中没有退出策略。第六节的 max_rounds 是最后防线,但更好的解法在前面:在系统提示中写明"如果同一工具同一参数已调用过且无新信息,请更换策略";在上下文中显式维护一份"已尝试清单";对重复调用做程序化检测并注入提醒消息。循环是纯浪费——烧 Token、烧时间、零进展。
模式三:目标漂移(Goal Drift)。 Agent 在长任务中逐渐"忘了初心":本来在调研 A 产品的定价,搜着搜着被相关链接带偏,最后写了一份 B 市场 的宏观分析,且自我感觉良好。上下文越长、任务越模糊,漂移概率越高。缓解手段:在每轮循环的开头重申任务目标(框架层注入,不依赖模型自己记住);把大目标在任务开始时就固化为一份可执行的 checklist,每轮对照检查;任务分解时让每个子任务的验收标准显式化。目标漂移在 Multi-Agent 系统里还有升级版——子 Agent 各自完成得很好,但拼起来偏离了总目标,这需要在编排层设计对齐机制。
模式四:上下文溢出(Context Overflow)。 工具返回的海量内容撑爆了上下文窗口,或者即使没溢出,关键信息也被淹没在噪声里导致质量下降(“lost in the middle” 现象:模型对上下文中部信息的利用率显著低于首尾)。这是最隐蔽的失败模式:程序不报错,答案看着也通顺,只是悄悄变差了。缓解手段集中在工具层:对返回结果做激进的摘要与截断、按相关性过滤检索结果、把大文档切块后按需加载(RAG 思想)、定期把已完成阶段的上下文压缩为结论性摘要。
用一张图把失败模式与工程对策放在一起:
一个贯穿四种模式的统一观察:Agent 的失败大多不是模型能力问题,而是系统设计问题。同样的模型,配上粗糙的上下文管理和工具设计,表现一塌糊涂;配上严谨的工程约束,表现判若两机。这正是"Agent 工程"作为一门独立技艺存在的理由——也是这个系列专栏想传递的核心信念。模型能力每半年上一个台阶,但工程方法论是可积累、可迁移的资产。
与四种失败模式配套,还有一套通用的调试方法论值得写进团队规范:先归类,再归因,最后归档。归类——看失败样本落在四种模式中的哪一种,这决定了排查方向;归因——在循环日志里定位到具体的第一失效点(是哪个工具调用之后的哪个决策开始跑偏的),而不是笼统地怪"模型不行";归档——把每个失效点对应的修复手段沉淀为团队的模式库,比如"目标漂移 → 每轮重申目标"这样的映射表。跑过几百个失败案例之后,这张映射表会成为一个团队最值钱的隐性资产。
九、历史脉络:从 RL Agent 到 LLM Agent 的概念迁移
把时间轴拉长,能看到一场跨越三十年的概念接力。
1995 年前后的经典 AI 时期,Russell 与 Norvig 用"理性 Agent"统一了 AI 的定义:一个在感知与行动之间做出合理选择的实体。这个定义框架影响深远,但受限于当时的感知与决策技术,能落地的 Agent 都是狭窄领域专家——下棋的程序、路径规划的机器人。
2013 年,DeepMind 用深度神经网络玩 Atari 游戏,开启了深度强化学习时代;2016 年 AlphaGo 击败李世石,把 RL Agent 的声望推上顶峰。RL Agent 优雅地实现了"感知—决策—行动"闭环,并且通过试错自我进化。但它有一个根本约束:需要环境提供可计算的奖励信号。下棋有胜负,游戏有得分,而"写一份好的竞品分析"没有——真实世界的绝大多数任务,奖励是稀疏的、模糊的、主观的。RL Agent 因此被困在了有清晰规则的领地。
2017 年 Transformer 架构诞生,2020 年 GPT-3 展示了少样本学习的惊人能力,事情开始起变化。LLM 提供了 RL 时代不可想象的东西:通用的世界知识与语言理解,以及用自然语言描述任务的能力。2022 年的两个关键工作完成了概念迁移的临门一脚:Chain-of-Thought 证明了模型可以通过生成中间推理步骤提升复杂推理质量;Toolformer 证明了模型可以学会自主调用外部工具。
2023 年的 AutoGPT 是第一次粗糙而震撼的尝试:把 GPT-4 放进一个自主循环,给它目标、记忆和工具,让它自己规划执行。社区为之疯狂,也在实践中发现了大量问题——循环、漂移、成本失控,也就是第八节列出的失败模式。但方向被验证了。同年提出的 ReAct 范式以更克制的方式确立了"推理与行动交替"的标准形态。2024 年,Function Calling 在各大模型上成熟,工具调用从提示词技巧变成协议层能力。2025 年,以 DeepSeek R1 为代表的推理模型攻克了最后一块短板——决策深度,通用 Agent 从 demo 走向生产。
回头看这条脉络,概念迁移的本质是什么?RL 时代,Agent 的"大脑"是用策略网络针对特定环境从头训练的,智能是局部的、定制的;LLM 时代,大脑是预先在海量语料上训练好的通用模型,智能是全局的、预付的。RL Agent 用环境的奖励塑造智能,LLM Agent 用人类的语言承载智能。 前者困于奖励设计,后者长于通用泛化。而两者的内核——感知、决策、行动的闭环——从未改变。这也解释了为什么本文第二节要用 RL 的定义作为起点:理解 Agent,必须理解它是一个"闭环中的决策实体",而不只是"一个更聪明的聊天机器人"。
有趣的是,两条路线正在合流:DeepSeek R1 的训练大量使用了强化学习(GRPO 算法),只不过奖励信号不是来自游戏环境,而是来自"答案正确性"的自动化判定。RL 回来了,以推理模型的形式。历史没有重复,但押着相似的韵脚。
十、结语:Agent 不是产品,而是范式
回到开头的问题:Agent 到底是什么?
走过十节的分析,答案可以收敛为一句话:Agent 是把 LLM 这个函数放入闭环之后涌现出的新范式——用记忆扩展它的时间,用工具扩展它的空间,用规划组织它的行为,用环境检验它的决策。它不是某款产品,不是某个框架,甚至不只是一类技术架构,而是一种构造软件的根本思路的转变。
范式转变意味着什么?意味着评价体系的重构。传统软件工程的核心问题是"这个功能实现了吗",验收是二值的;Agent 工程的核心问题是"这个任务的成功率是多少、失败时如何止损",验收是概率的。传统系统的行为是设计者枚举出来的;Agent 的行为是设计者约束出来的——你无法枚举一个通用模型的所有行为路径,你只能通过提示、工具、记忆与权限的边界设计,把它的行为导向期望的分布。从枚举行为到约束行为,这是开发者技能栈必须完成的迁移,也是本系列后续文章要陪着读者逐层展开的课题。
范式转变也意味着价值链的重排。当任务执行的边际成本趋近于零(DeepSeek 们的功劳),稀缺的不再是"执行"而是三样东西:清晰的业务目标定义、可信的结果验收机制、以及对失败模式的工程化防御。这些恰好都是人类工程师的主场。乐观地说,Agent 不会取代工程师,但它会取代"只会写执行逻辑"的工程师,把所有人的工作重心推向目标与验收的两端。
最后,给读者三个可以带走的判断。第一,不要在对话层能力不足的模型上赌 Agent,地基决定上限。第二,不要在没有失败模式预案的系统里上生产,Agent 的安全事故都是概率事故,概率事故的防线必须冗余。第三,不要把 Agent 当作产品采购,要当作范式建设——买一个 Agent 产品只能解一时之渴,建立起"模型 + 记忆 + 工具 + 规划 + 环境"的工程化能力,才是穿越模型迭代周期的护城河。
本系列的下一篇《DeepSeek 模型家族全景:V3、R1 与开源生态》,将深入这颗 Agent 大脑的内部——架构创新(MoE、MLA)、训练方法(GRPO 强化学习)、版本演进与选型策略,为后续动手搭建完整的 DeepSeek Agent 打下模型层的地基。
跃迁已经开始。欢迎登船。
更多推荐


所有评论(0)