<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潘锦的空间 &#187; Context Engineering</title>
	<atom:link href="https://www.phppan.com/tag/context-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.phppan.com</link>
	<description>SaaS SaaS架构 团队管理 技术管理 技术架构 PHP 内核 扩展 项目管理</description>
	<lastBuildDate>Sat, 25 Apr 2026 00:56:17 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>聊下 AI Agent 的 上下文工程（Context Engineering)</title>
		<link>https://www.phppan.com/2025/07/ai-agent-context-engineering/</link>
		<comments>https://www.phppan.com/2025/07/ai-agent-context-engineering/#comments</comments>
		<pubDate>Sun, 27 Jul 2025 00:41:03 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[Agent]]></category>
		<category><![CDATA[Context Engineering]]></category>

		<guid isPermaLink="false">https://www.phppan.com/?p=2400</guid>
		<description><![CDATA[2025 年确实成了 AI Agent 元年。不只是 Manus 这种通用型 Agent，还有设计领域的 Lo [&#8230;]]]></description>
				<content:encoded><![CDATA[<div>
<p>2025 年确实成了 AI Agent 元年。不只是 Manus 这种通用型 Agent，还有设计领域的 Lovart、编程领域的 Claude Code 和 Cursor 等垂直产品。经常会有人问：这些 Agent 到底是如何工作的？为什么有的 Agent 看着很智能，有的却在掉链子？</p>
<p>大模型大家都可以用，但为啥结果差异比较大呢？</p>
<p>这是由于在大模型能力一致的前提下，<strong>决定 Agent 成败的，我们给它提供了多少有用的信息</strong>。这就是今天要聊的核心话题——从提示词工程到上下文工程的演进。</p>
<h2 data-id="heading-0">1. Agent 的三个核心动作</h2>
<p>要理解上下文工程，我们得先从 AI Agent 的基本工作原理说起。简单来说，Agent 就像一个能自主完成任务的助手，它的工作流程可以概括为三个核心动作：<strong>感知、计划、行动</strong>。</p>
<h3 data-id="heading-1">1.1 感知</h3>
<p>感知是 Agent 的第一步，也是最容易被忽视的一步。就像开车需要看清路况，Agent 需要准确理解当前的情况。</p>
<p>这里有个关键点：感知包含两个层面。</p>
<p><strong>状态感知</strong>是对客观环境的理解。比如你让 Agent 帮你改代码，它需要知道：</p>
<ul>
<li>项目用的是什么语言和框架</li>
<li>现有的代码结构是怎样的</li>
<li>有哪些依赖和限制</li>
</ul>
<p><strong>意图感知</strong>则是理解你真正想要什么。当你说&#8221;优化这段代码&#8221;时，Agent 需要判断：</p>
<ul>
<li>是要提升性能还是改善可读性？</li>
<li>有没有特定的性能指标要求？</li>
<li>是否需要保持向后兼容？</li>
</ul>
<p>很多 Agent 失败的案例，根源就在于感知出了问题。比如用户说&#8221;这个太慢了&#8221;，如果 Agent 只是机械地理解为&#8221;需要优化&#8221;，而没有深入了解具体慢在哪里、期望达到什么速度，那后续的优化很可能南辕北辙。</p>
<h3 data-id="heading-2">1.2 计划</h3>
<p>有了准确的感知，Agent 需要制定行动计划。这就像做菜，你得先想好步骤：先切菜还是先热油，什么时候放调料。</p>
<p>计划能力很大程度上取决于底层的大语言模型。不同模型有不同的&#8221;性格&#8221;：</p>
<ul>
<li>Claude 喜欢深思熟虑，会考虑多种可能性</li>
<li>GPT-4 比较均衡，执行标准任务很稳定</li>
<li>Gemini 更大胆，有时会提出创新方案</li>
</ul>
<p>从技术架构上来说：</p>
<ul>
<li>Gemini 侧重多模态融合和大规模上下文处理</li>
<li>Claude 专注于精确推理和复杂任务执行</li>
</ul>
<p>但光有好模型还不够。Agent 的计划质量很大程度上取决于它掌握的信息是否充分。如果缺少关键信息，再聪明的模型也会做出糟糕的计划。</p>
<h3 data-id="heading-3">1.3 行动</h3>
<p>最后是行动模块，让 Agent 真正能够&#8221;做事&#8221;。目前主流的实现方式是函数调用（Function Calling）——预先定义一系列工具函数，比如搜索网页、读写文件、发送邮件等，然后让模型根据需要调用这些函数。</p>
<p>这里面临的挑战是工具选择。当可用工具很多时，Agent 可能会困惑。就像给你一个装满各种工具的工具箱，如果不清楚每个工具的用途，很容易选错。</p>
<h2 data-id="heading-4">2. Agent 的四大支撑系统</h2>
<p>除了核心的感知-计划-行动循环，现代 Agent 还需要四个重要的支撑系统：</p>
<h3 data-id="heading-5">2.1 记忆系统</h3>
<p>记忆让 Agent 能够积累经验。就像人类一样，Agent 需要不同类型的记忆：</p>
<ul>
<li><strong>工作记忆</strong>：处理当前任务的临时信息</li>
<li><strong>情景记忆</strong>：之前的对话和任务记录</li>
<li><strong>语义记忆</strong>：领域知识和最佳实践</li>
</ul>
<p>但这里有个反直觉的发现：<strong>好的记忆系统不仅要会记住，更要会遗忘</strong>。</p>
<p>为什么？因为不是所有信息都值得保留。过时的信息、错误的尝试、无关的细节，如果都保存下来，反而会干扰 Agent 的判断。这就像你的电脑，定期清理缓存才能保持流畅运行。</p>
<h3 data-id="heading-6">2.2 工具系统</h3>
<p>工具让 Agent 能够与外部世界交互。早期的 Agent 只能回答问题，现在的 Agent 可以：</p>
<ul>
<li>搜索信息</li>
<li>操作文件</li>
<li>调用 API</li>
<li>甚至控制其他软件</li>
</ul>
<p>Anthropic 推出的 MCP（Model Context Protocol）协议，试图为工具调用建立统一标准。这就像 USB 接口的标准化，让不同的工具都能方便地接入 Agent 系统。</p>
<h3 data-id="heading-7">2.3 安全系统</h3>
<p>给 Agent 执行能力就像给孩子一把剪刀，必须要有安全措施。Manus 刚上线时就出现过安全问题，有人通过特殊的提示词，让 Agent 打包了执行环境的所有代码。</p>
<p>现代 Agent 通常采用多层防护：</p>
<ul>
<li>沙箱隔离：所有操作都在受控环境中执行</li>
<li>权限管理：根据用户和场景动态分配权限</li>
<li>审计日志：记录所有操作便于追溯</li>
</ul>
<h3 data-id="heading-8">2.4 评估系统</h3>
<p>如何判断一个 Agent 的表现？这比想象中复杂。不像传统软件有明确的对错，Agent 的输出往往有多种可能的&#8221;正确答案&#8221;。</p>
<p>评估需要考虑多个维度：</p>
<ul>
<li>任务完成度</li>
<li>效率和成本</li>
<li>用户满意度</li>
<li>安全合规性</li>
</ul>
<h2 data-id="heading-9">3. 从提示词工程到上下文工程</h2>
<p>理解了 Agent 的工作原理，我们再来看看工程实践的演进。</p>
<h3 data-id="heading-10">3.1 提示词工程的局限</h3>
<p>去年大家还在研究怎么写提示词。什么&#8221;你是一个专业的XX&#8221;、&#8221;请一步一步思考&#8221;，各种模板层出不穷。但很快我们发现，光靠精心设计的提示词，很难让 Agent 处理复杂任务。</p>
<p>原因很简单：<strong>提示词只是静态的指令，而真实任务需要动态的信息</strong>。</p>
<p>就像你请人帮忙，光说&#8221;帮我订个机票&#8221;是不够的，还需要告诉对方：</p>
<ul>
<li>出发地和目的地</li>
<li>时间和预算</li>
<li>个人偏好</li>
<li>可用的支付方式</li>
</ul>
<h3 data-id="heading-11">3.2 上下文工程的兴起</h3>
<p>上下文工程是一个更宏大的概念。也有人说又是套壳包装了一下。但是我觉得非包装，而是大家对于如何和大模型交互有了更全面的认知。用 Shopify CEO Tobi Lütke 的话说，上下文工程是「提供所有必要上下文，让任务对 LLM 来说变得可解的艺术」。</p>
<p><strong>上下文不只是提示词，而是 Agent 在生成回复前能看到的所有信息</strong>：</p>
<ol>
<li><strong>指令上下文</strong>：系统提示词、任务说明、行为规范</li>
<li><strong>对话上下文</strong>：当前和历史对话记录，包含用户意图，如输出的结构</li>
<li><strong>知识上下文</strong>：相关文档、数据库信息、搜索结果</li>
<li><strong>工具上下文</strong>：可用函数的描述和使用方法</li>
<li><strong>状态上下文</strong>：环境变量、用户偏好、系统状态</li>
</ol>
<p>更重要的是，上下文工程是一个<strong>动态系统</strong>，不是静态模板：</p>
<ul>
<li>它根据任务类型选择相关信息</li>
<li>它随着对话进展更新内容</li>
<li>它平衡信息的全面性和简洁性</li>
</ul>
<p>从终局的逻辑来看，上下文工程的结果还是给到大模型的提示词。</p>
<p>Google DeepMind 的一位工程师写了一篇博客，地址：<a title="https://www.philschmid.de/context-engineering" href="https://link.juejin.cn?target=https%3A%2F%2Fwww.philschmid.de%2Fcontext-engineering" target="_blank">www.philschmid.de/context-eng…</a> 其中有一张图，如下：</p>
<p><img class="medium-zoom-image" src="https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/fb30199a2a1b472ca666cc709fc04d30~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5r2Y6ZSm:q75.awebp?rk3s=f64ab15b&amp;x-expires=1754181331&amp;x-signature=zuu1fZtuGdCTU1ujhHALf8RVsBg%3D" alt="image.png" /></p>
<p>讲了七个部分：</p>
<ul>
<li><strong>指令 / 系统提示词</strong>：定义模型在对话过程中行为的初始指令集，可以/应该包含示例、规则等。</li>
<li><strong>用户提示词</strong>：来自用户的即时任务或问题。</li>
<li><strong>状态 / 历史记录（短期记忆）</strong>：当前对话，包括导致此刻的用户和模型响应。</li>
<li><strong>长期记忆</strong>：持久的知识库，从许多先前的对话中收集而来，包含已学习的用户偏好、过去项目的摘要，或被告知要记住以供将来使用的事实。</li>
<li><strong>检索信息（RAG）</strong>：外部的最新知识，从文档、数据库或API中获取的相关信息，用于回答特定问题。</li>
<li><strong>可用工具</strong>：它可以调用的所有函数或内置工具的定义（例如：check_inventory（检查库存）、send_email（发送邮件））。</li>
<li><strong>结构化输出</strong>：关于模型响应格式的定义，例如JSON对象。</li>
</ul>
<p>这七个部分都包含在上面的 5 个上下文中。</p>
<h2 data-id="heading-12">4. 上下文工程的核心挑战</h2>
<p>Karpathy 把 LLM 比作新型操作系统，上下文窗口就像 RAM。这个比喻很精确——就像内存管理是操作系统的核心功能，上下文管理是 Agent 工程的核心挑战。</p>
<p>主要挑战包括：</p>
<p><strong>1. 容量限制</strong> 即使 Claude 已支持 20 万 token，Gemini 甚至支持 200 万 token，但这些容量在复杂任务面前仍然捉襟见肘。一个长时间运行的 Agent，轻易就能产生海量的交互记录。</p>
<p><strong>2. 注意力分散</strong> 研究发现，当上下文过长时，模型会出现&#8221;迷失在中间&#8221;现象——对开头和结尾的内容记忆较好，但中间部分容易遗漏。这就像看一本太厚的书，中间章节的内容总是记不清。</p>
<p><strong>3. 性能退化</strong> 过长的上下文不仅增加成本和延迟，还会降低模型的推理能力。Drew Breunig 总结了几种典型问题：</p>
<ul>
<li>上下文污染：错误信息影响后续判断</li>
<li>上下文干扰：无关信息分散注意力</li>
<li>上下文冲突：不同部分信息相互矛盾</li>
</ul>
<h2 data-id="heading-13">5. 上下文工程的四种核心策略</h2>
<p>面对这些挑战，有四种核心策略：</p>
<h3 data-id="heading-14">5.1 有选择的保存</h3>
<p>这是把重要信息保存到上下文窗口之外，需要时再取用。</p>
<p><strong>便签本模式</strong>：Agent 在执行任务时记笔记，保存中间结果和重要发现。Anthropic 的研究系统会在开始时制定计划并保存，避免因上下文截断而丢失。</p>
<p><strong>长期记忆</strong>：跨会话保存的信息，包括用户偏好、领域知识、成功案例等。ChatGPT、Cursor 都实现了这种机制。</p>
<p>关键是要有选择地保存。不是什么都值得记住，需要识别真正有价值的信息。</p>
<h3 data-id="heading-15">5.2 选择对的信息</h3>
<p>保存了信息，还需要在合适的时候取出来用。</p>
<p><strong>记忆检索</strong>：当积累了大量记忆后，如何找到相关的部分？简单的关键词匹配往往不够，需要语义理解。ChatGPT 会根据当前对话内容，自动检索相关的历史记忆。</p>
<p><strong>工具筛选</strong>：当可用工具很多时，全部列出会让模型困惑。研究表明，通过语义匹配只提供相关工具，可以将准确率提升 3 倍。</p>
<p><strong>知识召回</strong>：这就是 RAG（检索增强生成）的核心。但实现好的 RAG 系统很有挑战。Windsurf 的工程师分享说，他们结合了多种技术：向量检索、关键词搜索、AST 解析、知识图谱，最后还要重排序。</p>
<h3 data-id="heading-16">5.3 压缩提炼</h3>
<p>当信息太多时，需要压缩和精炼。</p>
<p><strong>轨迹总结</strong>：Claude Code 的&#8221;自动压缩&#8221;功能就是典型例子。当上下文使用超过 95% 时，它会总结整个对话历史，保留关键信息的同时大幅减少 token 使用。</p>
<p><strong>定点压缩</strong>：在特定环节进行信息精炼。比如搜索工具返回大量结果后立即总结，或者在不同 Agent 交接时压缩传递的信息。</p>
<p><strong>智能裁剪</strong>：根据相关性和时效性，自动删除不必要的信息。可以基于时间（删除过早的对话）、频率（删除很少用到的信息）或相关性（删除与当前任务无关的内容）。</p>
<h3 data-id="heading-17">5.4 分而治之</h3>
<p>把不同类型的信息分开管理，避免相互干扰。</p>
<p><strong>多智能体架构</strong>：让不同的 Agent 处理不同的子任务，每个都有自己的上下文空间。Anthropic 的研究显示，多个专门的 Agent 往往比一个通用 Agent 表现更好。</p>
<p><strong>环境隔离</strong>：HuggingFace 的做法很有启发——让 Agent 生成代码，在沙箱中执行，只把必要结果返回。这样可以把大量中间数据隔离在执行环境中。</p>
<p><strong>状态分离</strong>：通过精心设计的状态结构，把不同类型的信息存在不同字段，只在需要时才暴露给模型。</p>
<h2 data-id="heading-18">6 小结</h2>
<p>上下文工程正在成为 AI 工程师的核心技能。随着 Agent 能力的提升，如何管理和优化上下文将变得更加重要。</p>
<p>几个值得关注的发展方向：</p>
<ol>
<li><strong>自适应上下文</strong>：Agent 自己学习什么信息重要，自动调整上下文策略</li>
<li><strong>分布式上下文</strong>：跨多个 Agent 和系统共享和同步上下文</li>
<li><strong>个性化上下文</strong>：根据用户特点和偏好定制上下文管理策略</li>
<li><strong>实时优化</strong>：在运行时动态调整上下文，而不是预先设定</li>
</ol>
<p>当前不再是简单地“调教&#8221;模型说出正确的话，而是构建一个完整的信息系统，让 Agent 真正理解任务、掌握必要信息、做出正确决策。这种转变，预示着 AI Agent 正在从实验室的玩具，变成真正能够解决实际问题的工具。</p>
<p>如 Cognition 所说：&#8221;上下文工程实际上是构建 AI Agent 的工程师的头号工作。&#8221;。</p>
<p>以上。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2025/07/ai-agent-context-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
