2025年下半年,Anthropic 工程团队发布了一篇影响深远的技术博客《Effective Context Engineering for AI Agents》,在 Hacker News 上获得了 148 分的高赞。紧接着,Manus 团队也分享了他们在构建 AI Agent 过程中关于 Context Engineering 的实战经验,同样收获了 120 分。两篇文章不约而同地指向同一个结论:在 AI Agent 时代,Prompt Engineering 已经不够用了,我们需要 Context Engineering。

这不是一次简单的术语更替,而是 AI 应用开发范式的根本性转变。本文将深入剖析 Context Engineering 的技术原理、核心策略和工程实践,帮助你理解为什么它是让 AI Agent 从“能聊天”进化到“能干活”的关键一步。

一、从 Prompt Engineering 到 Context Engineering:为什么需要进化?

Prompt Engineering 关注的是如何写好一条指令,让模型在单次交互中给出最佳回答。这在 Chatbot 时代足够了——用户问一句,模型答一句,上下文就是对话历史。

但 AI Agent 完全不同。一个真正的 Agent 需要:

当 Agent 的上下文窗口从简单的对话历史扩展到工具输出、文件内容、系统提示、技能文档等多维信息时,如何管理和组织这些上下文就成了核心挑战。这就是 Context Engineering 要解决的问题。

二、Context Engineering 的核心架构

一个成熟的 Context Engineering 系统通常包含以下层次:

┌─────────────────────────────────────────┐
│           System Prompt Layer           │
│  (身份、规则、工具描述、安全约束)          │
├─────────────────────────────────────────┤
│          Dynamic Context Layer          │
│  (用户记忆、技能文档、相关文件)            │
├─────────────────────────────────────────┤
│          Conversation Layer             │
│  (对话历史、工具调用结果)                  │
├─────────────────────────────────────────┤
│          Retrieval Layer (RAG)           │
│  (向量检索、知识库、代码搜索)              │
├─────────────────────────────────────────┤
│          Working Memory Layer            │
│  (当前任务状态、中间结果、TODO列表)        │
└─────────────────────────────────────────┘

每一层都有其生命周期和更新策略。System Prompt 相对静态,而 Working Memory 则在每一步推理后都可能更新。关键在于如何在有限的上下文窗口中,动态地组合这些层的信息

三、六大核心策略

策略1:上下文预算管理

上下文窗口是有限资源。以 Claude 3.5 Sonnet 的 200K tokens 窗口为例,一个典型的 Agent 交互可能消耗:

Anthropic 的建议是实施分层压缩策略

# 伪代码:上下文预算管理
def manage_context(conversation, max_tokens=180000):
    # 1. 保留最近 N 轮完整对话
    recent = conversation[-6:]  # 最近3轮交互
    
    # 2. 压缩历史对话为摘要
    older_summary = summarize(conversation[:-6])
    
    # 3. 工具输出只保留关键部分
    tool_outputs = extract_key_findings(conversation)
    
    # 4. 动态注入相关记忆
    relevant_memories = retrieve_relevant(conversation[-1])
    
    return compose_context(
        system_prompt, older_summary, recent, 
        tool_outputs, relevant_memories
    )

策略2:工具输出的选择性注入

这是最容易被忽视但影响最大的策略。当 Agent 调用工具时,返回的结果可能非常庞大。直接将全部输出塞入上下文会导致:

Manus 团队的经验是:在工具层就做好过滤和摘要,而不是让模型从海量原始数据中自行提取。

策略3:分层记忆系统

借鉴人类记忆的工作方式,一个完善的 Agent 记忆系统应该包含:

class AgentMemory:
    def __init__(self):
        self.working = {}
        self.session_store = []
        self.persistent_db = None
    
    def remember(self, fact, importance="medium"):
        if importance == "critical":
            self.working["critical_facts"] = fact
            self.persistent_db.store(fact)
        elif importance == "high":
            self.session_store.append(fact)
    
    def recall(self, query, top_k=5):
        results = []
        results.extend(self._search_working(query))
        results.extend(self._search_session(query))
        results.extend(self._search_persistent(query, top_k))
        return deduplicate_and_rank(results)

策略4:动态技能注入

与其在 System Prompt 中塞入所有可能用到的知识,不如根据当前任务动态加载相关技能

available_skills = ["python-debugging", "git-workflow", "docker-deploy"]

def select_skills(task_description):
    relevant = []
    for skill in available_skills:
        if is_relevant(skill, task_description):
            relevant.append(load_skill(skill))
    return relevant

context["skills"] = select_skills(user_request)

这种方式的好处是:上下文中只包含当前任务需要的知识,避免了无关信息的干扰。

策略5:结构化输出约束

当 Agent 需要生成结构化数据时,在上下文中提供明确的 Schema 和示例比自然语言描述更有效。

策略6:上下文感知的错误恢复

当 Agent 执行出错时,如何将错误信息有效地注入上下文以指导恢复?关键原则是:

四、Context Engineering 的工程实践

实践1:Token 计数与预算可视化

在生产环境中,你需要实时监控上下文的 token 使用情况。

实践2:上下文缓存与复用

Anthropic 的 Context Caching 功能可以显著降低成本。一个优化的 Agent 应该:

实践3:渐进式信息加载

不要一次性加载所有信息。采用渐进式加载策略:先只加载概览,根据需要深入,只在必要时读取全文。

五、常见陷阱与反模式

陷阱1:上下文过载 — 试图把所有相关信息都塞进上下文,结果模型被信息淹没。记住:更多不等于更好。

陷阱2:忽略工具输出质量 — 花大量精力优化 System Prompt,却放任工具返回未经处理的原始数据。

陷阱3:静态上下文策略 — 用固定的模板组装上下文,不考虑任务的不同阶段。

陷阱4:记忆系统过于简单 — 只用向量数据库存取记忆,没有考虑记忆的衰减、冲突解决和优先级管理。

六、展望:Context Engineering 的未来

随着模型上下文窗口从 128K 扩展到 1M+ tokens,有人可能会问:Context Engineering 还重要吗?答案是更加重要。原因在于:

Context Engineering 正在从一门“手艺”进化为一门“工程学科”。未来,我们可能会看到专门的 Context Management 中间件、标准化的上下文组装框架,以及自动化的上下文优化工具。

结语:如果你正在构建 AI Agent,把注意力从“如何写更好的 Prompt”转移到“如何设计更好的上下文系统”上来。这不仅仅是技术层面的升级,更是思维方式的转变——从“对模型说话”到“为模型构建世界”。