Agent 落地工程全景图:从设计哲学到生产级系统

4 阅读16分钟

写在前面:本文面向有 LLM 使用基础、希望把 Agent 真正落地的后端 / 全栈工程师。文章不是某个框架的使用手册,而是一张覆盖设计哲学、执行模型、记忆体系、框架选型、多智能体协作、可观测性的完整工程认知地图。

核心主张:Agent 落地的本质,是把"模型的涌现能力"装进"可控的工程结构"里。


一、为什么 Agent 落地这么难?

1.1 模型能力 ≠ 系统能力

很多工程师踩的第一个坑,是把 LLM 的"涌现能力"等同于"系统能力":

模型聪明 → 写好 Prompt → 上线 → 等着收钱 💸

现实是:

模型聪明 → 不代表它在复杂任务里能稳定执行
写好 Prompt → 不代表输出结构可验收
上线 → 不代表你知道它哪里跑偏了

从工程视角看,LLM 本质上是一个带有巨大不确定性的黑盒函数。它在单次推理上可以表现出惊人的能力,但工程系统要的是确定性、可测试性、可演进性——而这些,不是 Prompt 能直接带来的。

1.2 三种典型的失败模式

graph TD
    A[Agent 系统] --> B[失败模式 1: 漂移]
    A --> C[失败模式 2: 失控]
    A --> D[失败模式 3: 不可测]

    B --> B1["输入一变,输出就飘<br/>复杂上下文中行为不一致"]
    C --> C1["工具调用出错后继续硬跑<br/>不知道什么时候该停、该重试、该降级"]
    D --> D1["不知道哪步出了问题<br/>没有 Trace,没有验收标准,全靠肉眼"]

这三个失败模式,本质上都不是"模型不够聪明"的问题,而是系统设计层没做好。

1.3 本文要回答什么

工程师的疑问本文对应章节
系统应该怎么分层设计?第二章:四层架构
Agent 的推理执行流程是什么?第三章:执行模型
上下文和状态怎么管理?第四章:Memory 体系
2025/2026 年选什么框架?第五章:框架选型
任务太复杂,一个 Agent 不够怎么办?第六章:Multi-Agent
上线后怎么知道它没有跑偏?第七章:可观测性

二、系统设计层:四层架构

Agent 系统的设计可以拆成四层,每一层职责清晰,对应关系不同:

Persona 负责风格,CoT 负责推理,Skill 负责流程,MCP 负责连接。

2.1 整体架构图

flowchart TD
    U["👤 用户 / 任务输入"] --> P

    subgraph Core["🧰 Agent Runtime / Orchestrator"]
        P["🎭 Persona 层<br/>风格 · 边界 · 语气"]
        C["🧠 CoT 层<br/>推理 · 分析 · 拆解"]
        S["🛠️ Skill 层<br/>方法论 · 流程 · 检查点 · 异常处理"]
        P --> C --> S
    end

    S --> M["🔗 MCP 层<br/>工具协议 · 资源 · 系统连接"]
    M --> T[("🗄️ 数据库 / 文件系统<br/>浏览器 / GitHub / 内部 API")]
    M --> R["📦 结果输出 / 交付物"]

2.2 第一层:Persona —— 边界与风格

Persona 决定 Agent "像谁说话",是最容易做、也最容易被高估的一层。

它能做到:

  • 统一输出风格(专业、简洁、中立)
  • 设定领域边界(只回答 X 相关问题)
  • 控制语气与受众(面向开发者 vs 面向运营)

它做不到:

  • 复杂任务的分解与编排
  • 工具调用策略与回退机制
  • 可测试、可版本化的稳定交付

⚠️ 常见误区:把 system prompt 写得越来越像"岗位 JD",以为描述得越详细 Agent 就越专业。 这叫职场画饼——饼很大,交付很小。身份是气质,Skill 才是肌肉。

2.3 第二层:CoT —— 推理显式化(选择性启用)

CoT(Chain of Thought)把推理过程显式化,核心价值是让模型"想清楚再说"。

有效场景(数据支撑):

Wei et al. (2022) 的原始 CoT 论文(arXiv:2201.11903)在数学/符号推理任务上展示了显著提升;2024 年的大规模元分析(To CoT or not to CoT? ,arXiv:2409.12183)进一步指出:CoT 的收益主要集中在数学与符号推理类别,平均提升约 12%~14%,对其他类别的平均提升接近零,某些场景甚至有性能下降(参见 Mind Your Step,arXiv:2410.21333)。

工程建议:按任务类型选择性启用 CoT,而非全局开启。

flowchart LR
    T["任务类型判断"] --> A{"是否涉及数学/逻辑/符号推理?"}
    A -- 是 --> B["✅ 启用 CoT 显式推理链"]
    A -- 否 --> C{"是否涉及多步决策/规划?"}
    C -- 是 --> D["⚠️ 选择性启用 结合 ReAct 模式"]
    C -- 否 --> E["❌ 直接生成 避免 Token 浪费"]

2.4 第三层:Skill —— 流程固化(核心)

Skill 是整个架构中最重要的一层。 它不是"更长的 Prompt",而是把领域专家的工作方式显式封装为可复用的能力模块:

Skill = 目标定义 + 执行步骤 + 校验检查点 + 工具调用策略 + 异常处理 + 输出规范

对比示例:同样是"写技术 PRD"

方式描述结果
只有 Persona"你是资深产品经理,帮我写 PRD"风格像,结构不稳,可测性为零
有 Skill1) 收集背景与目标 → 2) 定义用户与场景 → 3) 拆核心链路 → 4) 列功能清单 → 5) 风险与验收标准 → 6) 输出结构化 PRD可测、可版本化、可复用

为什么 Skill 比 Persona 更稳定?

  • 软约束 vs 硬结构:Persona 依赖语言约束,模型可能"装听";Skill 把行为变成结构,可以被测试、回归、版本化。
  • 可测试性:Persona 的"像不像"很主观;Skill 的"对不对"有明确验收标准(字段是否齐全、是否调用工具、是否通过校验)。
  • 抗注入能力:Skill 可以在流程入口做输入校验与净化,而纯 Persona 对外部恶意输入几乎没有防护(Prompt Injection 的重灾区)。

2.5 第四层:MCP —— 工具与外部系统连接

Anthropic 于 2024 年 11 月开源的 Model Context Protocol(MCP) 提供了一个开放标准,让 AI 助手可以用统一方式连接数据与工具生态。

可以把 MCP 理解为 AI 世界的 "USB-C"

flowchart LR
    subgraph Client["客户端 Agent / IDE / 应用"]
        A1["Agent"]
        A2["Claude Desktop"]
        A3["VS Code 插件"]
    end

    subgraph Protocol["MCP 协议层"]
        P["统一接口规范 Tools · Resources · Prompts"]
    end

    subgraph Server["服务端 工具 / 数据源"]
        S1["📁 文件系统"]
        S2["🗄️ 数据库"]
        S3["🌐 Web 浏览器"]
        S4["🐙 GitHub"]
        S5["🔧 内部 API"]
    end

    A1 --> P
    A2 --> P
    A3 --> P
    P --> S1
    P --> S2
    P --> S3
    P --> S4
    P --> S5

MCP 覆盖三类能力暴露方式:

类型说明示例
Tools可调用的函数/操作执行 SQL、写文件、发 HTTP 请求
Resources可读取的数据源文件内容、数据库记录、配置文件
Prompts预定义的提示模板标准化任务入口

2.6 四层与传统软件架构的映射

Agent 层工程职责传统软件类比关键工程点
Persona 🎭风格·边界·语气配置层 / 权限角色易做,勿高估
CoT 🧠推理显式化运行时策略选择按任务类型选择性启用
Skill 🛠️流程·方法论·失败恢复业务模块 / 工作流引擎可复用·可测试·可治理的核心
MCP 🔗工具接入·标准化连接RPC / SDK / 集成层解决工具生态的标准化问题
Agent(整体)调度·编排·控制Orchestrator / Runtime让系统能跑·可控·可扩展

三、执行模型:Agent 到底怎么"跑"?

系统架构解决了"怎么设计",执行模型解决的是"怎么运行"。这是现有 Agent 文章最常跳过的部分,也是工程落地中分歧最大的地方。

3.1 三种主流执行模式

模式一:ReAct(最主流)

由 Yao et al. (2022) 提出(arXiv:2210.03629,发表于 ICLR 2023),是目前 LangGraph、LangChain 等主流框架的默认 Agent 范式。

核心思想:让推理(Reason)和行动(Act)交替进行,每次 Act 之后通过 Observation 更新推理上下文。

sequenceDiagram
    participant U as 用户
    participant A as Agent
    participant T as 工具/环境

    U->>A: 输入任务
    loop ReAct 循环
        A->>A: 🧠 Thought(内部推理,分析当前状态)
        A->>T: ⚡ Action(调用工具 / 执行操作)
        T->>A: 👁️ Observation(观察工具返回结果)
        A->>A: 判断:任务完成?继续?调整策略?
    end
    A->>U: 最终输出

适用场景:需要动态工具调用、任务路径不确定的场景(信息检索、代码调试、数据分析)。

工程注意:要设置最大循环次数防止死循环;Observation 质量直接决定下一步 Thought 质量,工具返回值设计很重要。


模式二:Plan-and-Execute(适合长流程)

先做整体规划,再逐步执行。与 ReAct 的核心区别是:规划阶段和执行阶段分离

flowchart TD
    Input["📥 任务输入"] --> Planner

    subgraph Planning["规划阶段 Planner LLM"]
        Planner["🗺️ 生成执行计划 Step1 → Step2 → Step3"]
    end

    subgraph Execution["执行阶段 Executor"]
        E1["执行 Step 1"] --> E2["执行 Step 2"] --> E3["执行 Step N"]
        E1 -- 失败 --> Re1["重试 / 调整"]
        E2 -- 失败 --> Re2["重新规划"]
    end

    Planner --> E1
    E3 --> Output["📦 汇总结果输出"]

适用场景:长流程任务(超过 5 步)、步骤之间有明确依赖关系、需要全局视角的任务(项目规划、报告生成)。

优势:执行路径清晰,方便人工审查和中断。

劣势:初始规划如果出错,后续执行会跑偏;动态适应性不如 ReAct。


模式三:Reflection / Self-Critique(适合高质量输出)

执行后让 Agent 对自身输出进行批判性评估,再修正重生成。

flowchart LR
    Input["📥 任务"] --> Gen["🛠️ 初始生成"]
    Gen --> Reflect["🔍 自我反思 Critic LLM 评估质量"]
    Reflect --> Check{"达到质量标准?"}
    Check -- "否,附反馈" --> Gen
    Check -- 是 --> Output["✅ 最终输出"]

适用场景:代码生成(通过编译/测试来做 Observation)、文档撰写、需要高准确率的结构化输出。

工程技巧:Reflection 可以是同一个模型、也可以是独立的 Critic 模型;可以结合单元测试作为客观 Observation,减少主观评估偏差。


3.2 三种模式对比

维度ReActPlan-and-ExecuteReflection
适用任务动态工具调用、路径不确定长流程、多步依赖高质量输出、迭代优化
核心优势动态适应性强执行路径清晰可审查输出质量高
核心劣势可能死循环,成本累积初始规划错误代价大多轮生成 Token 成本高
典型框架支持LangGraph、LangChainLangGraph(自定义图)LangGraph、AutoGen
工程复杂度中高

工程建议:三种模式不是互斥的,可以组合使用。例如:外层 Plan-and-Execute 做规划,每个 Step 内部用 ReAct 执行,关键输出节点加 Reflection 校验。


四、Memory 体系:Agent 的"记忆"怎么设计?

上下文窗口不等于记忆。当 Agent 需要跨对话保持状态、学习用户偏好、复用历史执行经验时,就需要一套完整的 Memory 体系。

4.1 四种记忆类型

graph TB
    M[Agent Memory 体系] --> M1
    M --> M2
    M --> M3
    M --> M4

    M1["🧠 In-context Memory<br/>(工作记忆)<br/>当前对话窗口内的信息<br/>范围:单次会话<br/>存储:LLM Context Window"]
    M2["💾 External Memory<br/>(外部长期记忆)<br/>向量库 / KV Store / Graph DB<br/>范围:跨会话持久化<br/>存储:Qdrant / Redis / Neo4j"]
    M3["🏷️ Entity Memory<br/>(实体记忆)<br/>用户/对象的结构化状态追踪<br/>范围:特定实体的属性与关系<br/>存储:结构化 DB / 图数据库"]
    M4["📖 Episodic Memory<br/>(情节记忆)<br/>历史执行轨迹与经验总结<br/>范围:可回溯的过往任务经验<br/>存储:向量库 + 时序索引"]

4.2 各类记忆详解与选型

In-context Memory(工作记忆)

最基础的记忆形式——当前 Context Window 中的信息。

  • 优势:无需额外组件,模型直接访问,延迟最低
  • 劣势:有限(通常 32k~200k tokens),会话结束即消失,成本随长度线性增长
  • 工程要点:做好 Context 压缩(滑动窗口、摘要压缩);避免把所有历史硬塞进去

External Memory(外部长期记忆)

通过向量检索将相关信息按需注入 Context,是 RAG 的本质。

flowchart LR
    Q[用户提问 / 当前任务] --> Embed[文本嵌入]
    Embed --> VDB[(向量数据库<br/>Qdrant / Pinecone<br/>Weaviate / Chroma)]
    VDB --> Retrieve[检索 Top-K 相关片段]
    Retrieve --> Inject[注入 Context]
    Inject --> LLM[LLM 推理]
  • 优势:理论上无限存储,跨会话持久化
  • 劣势:检索质量影响上限;嵌入模型选择很关键
  • 工程要点:Chunk 策略(大小、重叠)、Rerank 策略、检索结果过滤

Entity Memory(实体记忆)

对特定实体(用户、项目、产品)维护结构化的属性状态。

// 示例:用户实体记忆
{
  "user_id": "will_001",
  "preferences": {
    "language": "Python",
    "framework": "LangGraph",
    "llm": "DeepSeek"
  },
  "current_project": "ReAct Agent with MCP",
  "history_topics": ["LangChain", "Qdrant", "FastAPI"]
}
  • 适用场景:个性化助手、CRM 型 Agent、需要追踪用户/项目状态的场景
  • 存储方案:PostgreSQL(简单属性)、Neo4j(复杂关系图)

Episodic Memory(情节记忆)

记录 Agent 的历史执行轨迹,支持"从过去的经验中学习"。

  • 典型用途:失败任务的经验总结、成功路径的复用、长期 Agent 的自我改进
  • 存储方案:向量库(按语义检索相关历史)+ 时序索引(按时间回溯)

4.3 选型指南

场景推荐记忆类型推荐存储
简单问答 / 单轮任务In-context无需额外存储
知识库检索 / 文档问答External MemoryQdrant / Chroma
个性化用户助手Entity + ExternalPostgreSQL + 向量库
长期运行的自主 Agent四种全用LangGraph + Mem0 + 向量库
多 Agent 共享知识External(共享)集中式向量库 + 权限控制

五、技术框架选型:2025/2026 年用什么写 Agent?

5.1 选型的核心维度

在选框架之前,先想清楚四个问题:

  1. 任务复杂度:简单链路 vs 复杂多步骤有状态工作流?
  2. 多 Agent 需求:单 Agent 够用?还是需要角色协作?
  3. 生产成熟度:原型验证 vs 生产部署?
  4. 团队技术栈:是否已有 LangChain 生态投入?偏 Python 还是 TypeScript?

5.2 主流框架横向对比

框架核心定位优势劣势最适合场景
LangGraph有状态图编排,当前生产主流精细状态管理、检查点、Human-in-the-loop、LangSmith 可观测学习曲线陡,图概念需适应复杂多步骤 Agent、需要容错和状态持久化的生产系统
LangChain LCEL链式组合,轻量 Pipeline生态丰富、集成多简单任务过度设计中等复杂度 Pipeline,已有 LangChain 投入的团队
CrewAI角色化多 Agent上手最快(20 行代码可跑)、角色抽象直观缺乏细粒度状态控制,Checkpoint 弱原型验证、业务流程自动化、内容生产 Pipeline
AutoGen(AG2)对话式多 Agent,微软系灵活对话模式、异步架构、.NET 支持Token 成本高(多轮对话),复杂度高研究场景、Group Chat 协作、需要人工介入的对话流
Agno轻量高性能 Agent SDK简洁 API + 可选托管平台,开发体验好社区生态小生产部署优先、开发体验敏感的团队

5.3 框架选择决策树

flowchart TD
    Start["我要构建什么?"] --> Q1{"需要精细的状态管理和容错?"}
    Q1 -- 是 --> LG["✅ LangGraph 生产首选"]
    Q1 -- 否 --> Q2{"需要快速验证多 Agent 协作?"}
    Q2 -- 是 --> CA["✅ CrewAI 原型首选"]
    Q2 -- 否 --> Q3{"主要是对话驱动的协作场景?"}
    Q3 -- 是 --> AG["✅ AutoGen 研究和对话场景"]
    Q3 -- 否 --> Q4{"追求轻量和良好开发体验?"}
    Q4 -- 是 --> AN["✅ Agno"]
    Q4 -- 否 --> LCEL["✅ LangChain LCEL 中等复杂度 Pipeline"]

5.4 一个实用建议:不要绑死一个框架

生产实践中常见的模式是: 用 CrewAI 做原型验证验证后用 LangGraph 重写核心流程LangSmith 做生产监控

框架之间并非竞争关系,而是互补工具。LangGraph 负责整体编排和状态管理,CrewAI / AutoGen 的子 Agent 可以作为 LangGraph 节点嵌入。


六、Multi-Agent 架构:单 Agent 搞不定时怎么办?

6.1 为什么需要多 Agent?

单 Agent 的能力天花板:

  • 上下文窗口有限:长任务、大文档处理会超出限制
  • 角色冲突:同一个 Agent 既要"搜索"又要"批评",容易自我矛盾
  • 并行效率低:串行执行无法利用任务间的并行潜力
  • 专业化不足:一个通用 Agent 在专业领域的深度不如专化 Agent

6.2 三种主流协作模式

模式一:Orchestrator → Subagent(主控分发)

flowchart TD
    O["🎯 Orchestrator<br/>(主控 Agent)<br/>负责任务规划与分发"] --> S1
    O --> S2
    O --> S3
    O --> S4

    S1["🔍 Research Agent<br/>信息检索与摘要"]
    S2["💻 Code Agent<br/>代码生成与调试"]
    S3["📝 Writer Agent<br/>内容撰写与润色"]
    S4["✅ Reviewer Agent<br/>质量检查与反馈"]

    S1 --> O
    S2 --> O
    S3 --> O
    S4 --> O

    O --> Result["📦 最终结果"]

特点:职责清晰,Orchestrator 掌握全局状态,易于调试和干预。

适用场景:有明确分工的流程(内容生产、代码 Review、报告生成)。


模式二:Hierarchical(层级树状)

flowchart TD
    Root["🏢 Root Agent<br/>顶层目标管理"] --> M1 & M2

    M1["📊 Manager Agent A<br/>数据分析子任务"] --> W1 & W2
    M2["📝 Manager Agent B<br/>报告撰写子任务"] --> W3 & W4

    W1["Worker: 数据清洗"]
    W2["Worker: 统计分析"]
    W3["Worker: 章节撰写"]
    W4["Worker: 图表生成"]

特点:适合复杂大型任务的层层分解;每层专注自己的粒度。

适用场景:大型项目管理、复杂研究任务、企业级工作流自动化。


模式三:Peer-to-Peer(水平协作)

flowchart LR
    A1["🤖 Agent A<br/>(提议者)"] <-->|互相质疑| A2["🤖 Agent B<br/>(批评者)"]
    A2 <-->|迭代优化| A3["🤖 Agent C<br/>(裁判)"]
    A1 <-->|信息共享| A3
    A3 --> Result["✅ 共识结果"]

特点:通过多角度辩论提升输出质量;适合需要"第二意见"的场景。

适用场景:决策支持、代码 Review 辩论、内容质量评估。

6.3 Skill 在多 Agent 中的角色变化

在单 Agent 架构里,Skill 是 Agent 的能力模块;在多 Agent 架构里,Skill 演变为子 Agent 的职责边界定义

单 Agent:Skill = 方法论 + 流程 + 工具策略
多 Agent:Skill = 子 Agent 的角色定义 + 输入输出规范 + 协作协议

6.4 多 Agent 的工程陷阱

⚠️ Agent 越多,不确定性越高,治理成本成倍增长。

常见陷阱:

陷阱描述应对
通信爆炸Agent 间消息传递失控,上下文无限膨胀严格定义 Agent 间的输入输出接口
责任模糊不知道哪个 Agent 导致了最终错误每个 Agent 输出带 Trace ID,支持归因
成本失控多 Agent 并行调用 LLM,Token 成本暴增用轻量模型处理路由和简单任务,重模型处理核心推理
过度设计简单任务强行拆成多 Agent先用单 Agent 跑通,再按需拆分

6.5 什么时候该用多 Agent?(决策标准)

flowchart TD
    Q1{单 Agent 能否在<br/>Context 限制内完成?} -- 是 --> Single["✅ 用单 Agent<br/>别过度设计"]
    Q1 -- 否 --> Q2{任务是否有<br/>明确的角色分工?}
    Q2 -- 是 --> Q3{需要并行执行<br/>提升效率?}
    Q3 -- 是 --> Multi["✅ 多 Agent<br/>(并行 Subagent)"]
    Q3 -- 否 --> Q4{输出质量是否<br/>需要多角度验证?}
    Q4 -- 是 --> Peer["✅ Peer-to-Peer<br/>辩论模式"]
    Q4 -- 否 --> Orchestrator["✅ Orchestrator<br/>串行分发模式"]
    Q2 -- 否 --> Refactor["⚠️ 先重构 Skill<br/>再考虑多 Agent"]

七、可观测性与评估:上线后怎么知道它在正常跑?

这是大多数 Agent 文章跳过的部分,也是工程师被线上问题打脸最多的地方。

7.1 为什么 Agent 的可观测性比普通服务难?

graph LR
    A["普通 API 服务"] --> B["输入 → 确定性处理 → 输出<br/>✅ 易于 logging 和监控"]
    C["Agent 系统"] --> D["输入 → 动态推理<br/>→ 工具调用(可能多次)<br/>→ 中间状态变化<br/>→ 不确定性输出<br/>❌ 每步都可能出问题"]

普通服务的 Log 记录"发生了什么";Agent 系统需要记录"为什么这样决策"——这需要 Trace 级别的追踪。

7.2 四个关键可观测性维度

1. Trace(执行链路追踪)

记录 Agent 每一步的推理、工具调用、中间结果。

推荐工具

  • LangSmith:LangChain/LangGraph 生态原生,最无缝
  • Arize Phoenix:开源,模型无关
  • Langfuse:开源,自托管友好

一个好的 Trace 应该包含:

[Task Start]
  ├── Thought: "需要先查询用户的历史订单..."
  ├── Action: query_db(user_id=123, table=orders)
  │   └── Observation: [{order_id: 456, status: pending}]
  ├── Thought: "订单状态是 pending,需要检查库存..."
  ├── Action: check_inventory(product_id=789)
  │   └── Observation: {stock: 0, eta: "2025-05-01"}
  └── Final Answer: "您的订单 456 正在等待补货,预计 5 月 1 日到货"
[Task End] duration=3.2s, tokens=1240, tools_called=2

2. Eval(评估体系)

评估维度评估方法工具
任务完成率验收标准通过比例自定义测试集
工具调用准确性是否调用了正确工具、参数是否正确单元测试
输出格式合规结构化输出字段完整性Schema 校验
幻觉率输出与事实的一致性LLM-as-Judge
延迟 & 成本P50/P95 响应时间、Token 消耗Prometheus + Grafana

关键认知:Agent 的 Eval 不能只靠人工判断,要尽量设计可自动化的客观验收标准(例如:代码生成任务的测试通过率、SQL 查询的结果一致性)。

3. Guardrails(护栏)

flowchart LR
    Input["📥 用户输入"] --> IG["🛡️ 输入护栏<br/>长度限制<br/>内容过滤<br/>Prompt Injection 检测"]
    IG --> Agent["🤖 Agent 执行"]
    Agent --> OG["🛡️ 输出护栏<br/>格式校验<br/>敏感信息脱敏<br/>幻觉检测<br/>安全过滤"]
    OG --> Output["📤 最终输出"]

Prompt Injection 防护要点

  • 不可信外部内容(网页、文档、用户输入)必须在 Skill 入口做净化,不能直接拼入 System Prompt
  • 关键操作(写数据库、发邮件、执行代码)加确认步骤或权限校验
  • 使用最小权限原则:工具只开放必要权限

4. 版本管理

Agent 系统的变更比普通代码更难追踪,因为"同一份代码 + 不同 Prompt = 不同行为"。

建议的版本化策略:

agent_config/
├── prompts/
│   ├── system_v1.2.txt
│   └── system_v1.3.txt   ← 当前版本
├── skills/
│   ├── code_review_v2.json
│   └── prd_writer_v1.json
└── tools/
    └── mcp_config.json
  • Prompt / Skill / 工具配置都要进版本控制
  • 每次变更要有回归测试
  • 灰度发布:先在小流量上验证新版本

7.3 最小可行监控方案(资源有限的团队)

graph LR
    A["第一步<br/>接入 LangSmith<br/>(免费额度够用)<br/>拿到 Trace 可见性"] --> B["第二步<br/>写 10 个核心测试用例<br/>覆盖高频场景<br/>建立 Eval 基线"] --> C["第三步<br/>加输入/输出校验<br/>至少做格式校验<br/>和长度限制"] --> D["第四步<br/>监控 Token 成本<br/>设置告警阈值<br/>防止费用失控"]

八、避坑总结 + 落地路径

8.1 五个高频陷阱

#陷阱症状解法
1Persona 当核心能力"我写了个很专业的 System Prompt,但输出不稳定"Persona 只是外衣,Skill 才是骨架,先定流程
2CoT 滥用Token 成本暴涨,延迟上升,收益不明显按任务类型选择性启用,数学/逻辑任务才值得
3工具一多,Prompt 先爆炸接入 20 个工具后 Agent 开始乱选工具MCP 标准化 + 工具分组 + 动态工具加载
4跳过输入/输出校验外部内容注入导致输出被劫持,或结构化输出残缺Skill 入口做净化,出口做 Schema 校验
5跳过 Eval,全靠肉眼改了一个 Prompt,不知道有没有影响其他功能先建 10 个核心测试用例,再迭代

8.2 什么时候不该用 Agent?

简单任务用 Agent 是过度设计,Pipeline 更合适。

场景建议
固定输入 → 固定处理逻辑 → 固定输出用 Pipeline(LCEL Chain / 简单函数链)
规则明确、不需要推理用传统代码 + LLM 做局部增强
对延迟极度敏感(<100ms)Agent 的 ReAct 循环成本太高
测试集很小,风险极低先跑通业务,再考虑 Agent 化

8.3 从零到生产的落地路径(7 步)

flowchart LR
    S1["Step 1<br/>🎭 定 Persona<br/>统一风格与边界"] --> S2
    S2["Step 2<br/>🛠️ 设计核心 Skill<br/>把高频任务流程化"] --> S3
    S3["Step 3<br/>🔗 接入 MCP / 工具<br/>让 Skill 能调用真实系统"] --> S4
    S4["Step 4<br/>🧠 选执行模式<br/>ReAct / Plan / Reflect"] --> S5
    S5["Step 5<br/>💾 设计 Memory<br/>按场景选记忆类型"] --> S6
    S6["Step 6<br/>📊 接入可观测性<br/>Trace + Eval + 护栏"] --> S7
    S7["Step 7<br/>🏭 生产化<br/>版本管理 + 灰度 + 监控告警"]

经验法则

  • 先做 Step 1-3,验证核心业务逻辑
  • Step 4-5 在复杂度上升时引入
  • Step 6-7 在上线前必须完成,不能省略

九、总结:Agent 工程的本质

用一张图把全文的知识体系收拢:

PixPin_2026-04-26_12-14-19.png


最后一句话送给所有在 Agent 落地路上踩坑的工程师:

Persona 让它像一个人,CoT 让它像一个会思考的人;Skill 让它像一个会交付的专家,MCP 让它真的能在现实世界里把事办成;Memory 让它不会忘记,Eval 让你不会瞎猫碰死鼠。

Agent 落地的本质,是把"模型的涌现能力"装进"可控的工程结构"里。