草稿

智能体架构与上下文工程

工程化的上下文设计,是让智能体从“聪明”走向“可靠”的关键。

智能体的设计正从单一 Prompt 驱动的任务执行,逐步演化为一个多层次、可协作、具备记忆与推理的自主系统。而这一转变的核心基础,就是 上下文工程(Context Engineering)

这一思想与现代 AI Infra 架构(LangChain、LangGraph、Claude Code、Cursor、GitHub Copilot)高度契合。在本章中,我们将结合工程实践,重构该体系为适合架构师理解与落地的知识图谱。

Agent 架构分层概览

Agent 的系统架构可以被抽象为四层:

  • Prompt 层 —— 结构化输入输出与模板化生成。
  • Context 层 —— 动态上下文窗口与 RAG 检索增强。
  • Tool 层 —— MCP 协议下的语义化工具体系。
  • Agent 层 —— 规划、记忆与多智能体协作。

这种四层划分,本质上是对「感知、推理、行动、协作」四个智能特征的工程化映射。

下图展示了各层之间的关系:

图 1: Agent 架构分层示意
图 1: Agent 架构分层示意

结构化提示词工程(Prompt Engineering)

结构化提示词工程的目标,是让模型输出可靠、可解析、可验证的结构化结果。

提示词工程已从“艺术”转变为“工程化流程”,其关键是定义模板、输入输出规范与路由逻辑。

结构化输入输出

通过采用 JSON/YAML 等结构化格式,并结合 schema 验证输出质量,可以提升模型的可控性。例如 Spring AI 与 LangChain 中的 Structured Output Converter

{
  "role": "planner",
  "task": "analyze_user_requirement",
  "constraints": ["output as JSON", "max 3 bullet points"]
}

动态模板化与示例驱动(Few-Shot)

动态注入上下文(如用户输入、系统状态),结合示例强化输出一致性,是提升模型表现的常用方法。如下模板所示:

你是一个{{role}}。请根据以下上下文完成任务:
{{context}}
输出格式要求:{{schema}}

在 LangChain 中,可通过 PromptTemplateOutputParser 实现上述流程。

提示词路由与链式设计(Prompt Chaining)

对于复杂任务,通常需要多阶段拆解,提示词在不同阶段路由至不同子 Agent 或工具。下图展示了典型的链式结构:

图 2: Prompt 路由与链式结构
图 2: Prompt 路由与链式结构

这种链式结构在 LangGraph 中被正式模型化为“有向状态图(Directed Graph of Agents)”。它不仅描述执行流程,还能在任意节点插入工具调用或人类审查(HITL)。

上下文工程与 RAG 管道

上下文工程(Context Engineering)是让模型在有限窗口中选择最有价值信息的艺术与科学。它决定了模型的推理能力、可靠性与成本。

上下文窗口的构成

一个完整的 Prompt 通常包含以下三类上下文:

  • 系统上下文(System Context):角色、任务、约束;
  • 动态上下文(Dynamic Context):用户输入、时间、历史记忆;
  • 外部知识(External Context):RAG 检索、数据库查询、工具响应。

下图展示了上下文窗口的组成:

图 3: 上下文窗口结构
图 3: 上下文窗口结构

在实际工程中,LangChain 的 Context Compression、Claude 的 Context Packing、Copilot 的滑动窗口等,都是对这一思想的不同实现。

检索增强生成(RAG)策略

RAG(Retrieval-Augmented Generation,检索增强生成)是智能体 可靠性工程的核心。它将知识检索嵌入模型推理链路。常见的策略层级如下表所示:

层级技术示例
L1Keyword / BM25 检索Elasticsearch, ripgrep
L2向量语义检索text-embedding-3-large
L3混合检索(Hybrid)BM25 + Embedding
L4GraphRAG / CodeRAGGraph-based 调用关系
L5Agentic RAG由 Agent 决定检索策略
表 1: RAG 策略层级与示例

LangGraph 的 Agentic RAG 模型与 Claude Code 的“contextual deep scan”实质上都属于 L5 层级:由 Agent 自主规划检索与重排序。

语义化工具系统与 MCP 协议

语义化工具系统是 Agent 的“手”。现代 Agent 已不再硬编码工具接口,而是通过 Model Context Protocol(MCP) 进行动态注册与调用。MCP 让模型以标准化格式理解工具的语义描述。

下图展示了 MCP 工具网络的结构:

图 4: MCP 工具网络
图 4: MCP 工具网络

这一模式在 Claude Code PluginGitHub Copilot MCPLangChain ToolNode 等系统中均有体现。它们通过统一接口(如 schema + description + parameters)实现跨 Agent、跨平台的函数调用。

Agent 规划与多 Agent 协作体系

单体 Agent 智能有限,而 多 Agent System(MAS, Multi-Agent System) 提供了“智能的横向扩展”。它让不同角色的 Agent 形成协作组织,从而解决复杂问题。

下表总结了常见的多 Agent 协作拓扑:

模式特点适用场景
主管–专家(Hierarchical)管理与分工清晰软件开发、研究报告
并行(Swarm)多 Agent 并行探索多路径搜索、评估
流水线(Pipeline)顺序化任务执行数据清洗、报告生成
网络型(Graph-based)动态通信自动规划、知识图谱
表 2: 多 Agent 协作模式与适用场景

下图展示了多 Agent 协作体系的典型结构:

图 5: 多 Agent 协作体系
图 5: 多 Agent 协作体系

Claude Code、Cursor、AutoGen、LangGraph 都采用此模式的不同变体。它们的差异主要在于通信方式:Claude 使用“多 Agent 对话”,LangGraph 使用状态机,Cursor 则将 Agent 以工作流节点形式串联。

Agentic Context Engineering 实战示例

在现代 AI Infra 体系中,LangGraph + MCP 工具体系 已成为实现 Agentic Context Engineering 的最佳实践之一。

下面以一个简化的例子,展示如何构建一个具备上下文检索、动态决策与工具调用的 LangGraph Agent。

架构思路

本例的目标是构建一个能够回答技术文档问题的智能体,具备上下文自动检索(RAG)、工具调用(MCP)和反思式迭代(Reflection)等关键特性。框架选型为 LangGraph(工作流建模)与 LangChain 工具接口。

下图为整体流程示意:

图 6: Agentic Context Engineering Pipeline
图 6: Agentic Context Engineering Pipeline

代码示例:LangGraph + MCP 工具调用

以下代码展示了如何用 LangGraph 和 MCP 工具体系实现上述流程:

from langchain.agents import Tool
from langgraph.graph import StateGraph, END
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA
from my_mcp import MCPToolRegistry  # 假设你实现了 MCP 工具注册器

# 定义检索工具(RAG)
retrieval_tool = Tool(
    name="doc_search",
    func=RetrievalQA.from_chain_type(ChatOpenAI(), retriever=my_vectorstore.as_retriever()).run,
    description="检索并回答与技术文档相关的问题"
)

# 注册外部工具(MCP 动态注册)
mcp_tools = MCPToolRegistry([
    {"name": "http_request", "endpoint": "https://api.example.com/query"},
    {"name": "run_sql", "dsn": "sqlite:///db.sqlite"}
])

# 定义 LangGraph 工作流节点
def planner(state):
    return {"plan": f"根据任务确定调用 {state['tool']} 工具"}

def executor(state):
    tool = state.get("tool")
    result = mcp_tools.invoke(tool, state.get("query"))
    return {"result": result}

# 构建 Agent Graph
graph = StateGraph()
graph.add_node("planner", planner)
graph.add_node("executor", executor)
graph.add_edge("planner", "executor")
graph.add_edge("executor", END)

agent = graph.compile()
result = agent.invoke({"query": "查一下 LangGraph 的核心组件", "tool": "http_request"})
print(result)

该工作流展示了典型的 Agentic Context Engineering Pipeline:

  1. 任务理解
  2. 动态规划(planner)
  3. 检索增强(RAG)
  4. 工具调用(MCP)
  5. 结果整合与反思

设计原则与架构启示

在 Agentic Context Engineering 的实践中,以下设计原则尤为重要:

语义化设计

每个工具、提示词与上下文块都应具有语义自描述能力。

语义即接口,接口即智能。

动态与反射

Agent 不应是静态 Prompt 的执行者,而应具备“反思式迭代循环”:

  • 观察 → 推理 → 行动 → 评估 → 改进

这一循环使得 Agent 能像系统架构一样持续演化。

模块化与可组合

从单体 Prompt 到模块化 Agent,就像从单体应用到微服务。每个 Agent 都是“可测试、可替换、可观测”的组件。

协作与互操作性

A2A(Agent-to-Agent)与 MCP(Model Context Protocol)构成未来智能系统的“TCP/IP 层”。这意味着未来的智能体将像网络节点一样互联。

可观测性与治理

Agentic 系统必须具备日志、追踪与度量能力。LangSmith、OpenDevin、AutoGen Studio 等工具都在补齐这部分 AI Infra 能力。

总结

上下文工程已成为 AI Infra 的关键一环。它连接了模型与现实世界之间的“语义桥梁”,让大语言模型(LLM, Large Language Model)从语言模型转变为 行动模型(Action Model)

上下文工程为我们提供了系统的工程化路线,而 LangChain 与 LangGraph 则让这一路线可实现:从 Prompt → Context → Tool → Agent → System,构建出具备自治、可扩展与可观测特性的 AI 智能体。

参考文献

文章导航

章节内容

这是章节的内容页面。

章节概览