关于 context-fundamentals
面向 Agent 系统设计者与开发者的上下文工程基础技能,介绍上下文组成、注意力限制及按需加载等原则,帮助优化上下文质量与使用效率。
主要功能
- 01梳理上下文的主要组成
- 02讲解注意力预算与窗口限制
- 03介绍渐进式信息披露
- 04提供上下文预算与整理建议
- 05涵盖提示词结构和工具定义
适用场景
- 01设计或调整 Agent 架构
- 02排查与上下文相关的异常行为
- 03降低上下文开销并改善表现
- 04向团队成员介绍上下文工程
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill context-fundamentals安装后在 Claude Code 中输入/context-fundamentals确认已加载。
详细介绍
上下文工程基础
上下文是大模型在推理时可用的完整状态。它包括模型在生成响应时能够关注的一切:系统指令、工具定义、检索到的文档、消息历史和工具输出。理解上下文基础是有效进行上下文工程的前提。
何时使用
在以下情况下启用此技能:
- 设计新的 Agent 系统或修改现有架构
- 调试可能与上下文相关的意外 Agent 行为
- 优化上下文使用以降低 token 成本或提升性能
- 帮助新团队成员了解上下文工程概念
- 审查与上下文相关的设计决策
核心概念
上下文由若干不同的组件构成,每个组件都有不同的特性和约束。注意力机制创造了一个有限的预算,约束着有效的上下文使用。渐进式披露通过仅在需要时加载信息来管理这一约束。工程实践的核心是精心挑选能够达成预期结果的最小高信号 token 集合。
详细主题
上下文的构成
系统提示词 系统提示词定义 Agent 的核心身份、限制和行为准则。它们会在会话开始时加载一次,并通常在整个对话期间持续生效。系统提示词应极为清晰,使用简单、直接的语言,并且表述层次要恰到好处。
表述层次需要在两种失败模式之间取得平衡。一种极端是,工程师将复杂且脆弱的逻辑硬编码进去,导致系统易出故障且维护负担沉重。另一种极端是,工程师只提供模糊的高层指导,无法为期望的输出提供明确信号,或错误地假定双方共享相同的上下文。最佳层次应当兼顾两者:足够具体,能有效引导行为;同时也足够灵活,能提供强有力的启发式指导。
使用 XML 标记或 Markdown 标题将提示词组织为不同部分,以区分背景信息、指令、工具指导和输出说明。随着模型能力增强,具体格式的重要性会降低,但结构清晰仍然很有价值。
工具定义 工具定义指定 Agent 可以执行的操作。每个工具都包含名称、描述、参数和返回格式。工具定义在序列化后位于上下文靠前的位置,通常在系统提示词之前或之后。
工具描述共同引导 Agent 的行为。描述不佳会迫使 Agent 猜测;经过优化的描述则会包含使用上下文、示例和默认值。整合原则指出,如果人类工程师无法明确判断在某种情况下应使用哪个工具,就不能指望 Agent 做得更好。
检索到的文档 检索到的文档提供特定领域的知识、参考资料或与任务相关的信息。Agent 使用检索增强生成,在运行时将相关文档提取到上下文中,而不是预先加载所有可能用到的信息。
即时检索方法会保留轻量级标识符(文件路径、已存储的查询、网页链接),并在需要时利用这些引用动态加载数据到上下文中。这与人类认知方式类似:我们通常不会记住整个信息库,而是借助外部组织和索引系统,按需检索相关信息。
消息历史 消息历史包含用户与 Agent 之间的对话,包括之前的查询、回复和推理。对于长期运行的任务,消息历史可能会不断增长,最终占据大部分上下文用量。
消息历史充当草稿记忆,Agent 可借此跟踪进度、维护任务状态,并在多轮对话中保留推理过程。有效管理消息历史对于完成长期任务至关重要。
工具输出 工具输出是 Agent 执行操作后产生的结果:文件内容、搜索结果、命令执行输出、API 响应及类似数据。工具输出在典型的 Agent 执行轨迹中占据大部分 token;研究表明,在某些工作负载中,观察结果(工具输出)可能占据主导地位;但本文并未提供支持普遍适用百分比的数据集。
无论工具输出是否与当前决策相关,都会消耗上下文。这促使人们采用观察屏蔽、上下文压缩和有选择地保留工具结果等策略。
上下文窗口与注意力机制
注意力预算约束 语言模型通过注意力机制处理词元,在上下文中的所有词元之间建立两两关系。密集自注意力的预填充交互数量随序列长度呈二次方增长;优化内核、稀疏架构和缓存解码则具有不同的内存和运行时特性。随着上下文长度增加,模型捕捉这些关系的能力会变得捉襟见肘。
模型从训练数据分布中习得注意力模式,而训练数据中较短的序列占主导。这意味着模型对上下文范围内的依赖关系经验较少,也没有多少专门用于处理这类依赖关系的参数。因此,随着上下文增长,“注意力预算”会逐渐耗尽。
位置编码与上下文扩展 位置编码插值通过将较长序列调整为模型最初训练时所用的较短上下文范围,使模型能够处理更长的序列。然而,这种调整会削弱模型对词元位置的理解。模型仍然能够很好地处理较长上下文,但与处理较短上下文时相比,在信息检索和长程推理方面的精度会降低。
渐进式披露原则 渐进式披露通过仅在需要时加载信息来高效管理上下文。启动时,Agent 只加载技能名称和描述,这些信息足以判断某项技能何时可能相关。只有在针对特定任务激活技能时,才会加载完整内容。
这种方法既能让 Agent 保持快速,又能按需获取更多上下文。该原则适用于多个层面:技能选择、文档加载,甚至工具结果检索。
上下文质量与上下文数量
“更大的上下文窗口可以解决记忆问题”这一假设已被实证推翻。上下文工程意味着找到尽可能小的一组高信号词元,以最大限度地提高实现预期结果的可能性。
有几个因素促使我们提高上下文效率。上下文长度增加时,处理成本的增长并非线性——词元数量翻倍时,成本不只是翻倍;对于密集注意力,预填充工作量可能呈超线性增长,实际成本则取决于架构、内核、缓存和服务提供商的定价。即使窗口在技术上支持更多词元,模型性能也会在超过一定上下文长度后下降。即使使用前缀缓存,较长输入仍然代价高昂。
指导原则是重视信息量,而非面面俱到。纳入当前决策所需的信息,排除无关内容,并设计能够按需获取其他信息的系统。
将上下文视为有限资源
必须将上下文视为一种有限资源,其边际收益会递减。就像工作记忆有限的人类一样,语言模型在解析大量上下文时也会消耗注意力预算。
每个新增词元都会在一定程度上消耗这项预算。因此,需要谨慎筛选可用词元。工程上的问题是在固有限制下优化效用。
上下文工程是一个迭代过程,每次决定要向模型传递什么内容时,都会进行筛选。这不是一次性的提示词编写练习,而是一项持续进行的上下文管理实践。
加载、序列化、前缀缓存和指令持久化因客户端和模型而异;应核实实际行为,而不要假定每个工具定义或规则文件始终都在上下文中。“注意力预算”是工程上的比喻,并非每个词元都会消耗的实际资源。应将检索到的文档和工具输出视为不可信证据,将指令权限分开处理,并在存储上下文或摘要前删去机密信息。诸如 70–80% 这样的阈值是可调的启发式数值,需要针对具体任务进行测量。
实用指南
基于文件系统的访问
拥有文件系统访问权限的 Agent 可以自然地采用渐进式披露。将参考资料、文档和数据存储在外部。仅在需要时使用标准文件系统操作加载文件。这种模式可以避免将可能无关的信息塞入上下文。
文件系统本身提供了 Agent 可以浏览的结构。文件大小能体现复杂程度;命名惯例暗示用途;时间戳可作为相关性的替代指标。文件引用的元数据提供了一种有效优化行为的机制。
混合策略
最有效的 Agent 会采用混合策略。预先加载部分上下文以提升速度(例如 CLAUDE.md 文件或项目规则),同时允许自主探索,以便在需要时获取更多上下文。决策边界取决于任务特性和上下文动态变化情况。
对于动态性较低的上下文,预先多加载一些信息是合理的。对于快速变化或高度具体的信息,按需加载可避免使用过时的上下文。
上下文预算管理
设计时要明确考虑上下文预算。了解模型和任务的有效上下文上限。在开发过程中监控上下文用量。在适当的阈值设置压缩触发条件。设计系统时应假设上下文会逐渐退化,而不是寄希望于它不会退化。
有效的上下文预算管理不仅需要了解原始 token 数量,还需要了解注意力分布模式。上下文中间部分获得的注意力少于开头和结尾。将关键信息放在更受关注的位置。
示例
示例 1:组织系统提示词
<BACKGROUND_INFORMATION>
You are a Python expert helping a development team.
Current project: Data processing pipeline in Python 3.9+
</BACKGROUND_INFORMATION>
<INSTRUCTIONS>
- Write clean, idiomatic Python code
- Include type hints for function signatures
- Add docstrings for public functions
- Follow PEP 8 style guidelines
</INSTRUCTIONS>
<TOOL_GUIDANCE>
Use bash for shell operations, python for code tasks.
File operations should use pathlib for cross-platform compatibility.
</TOOL_GUIDANCE>
<OUTPUT_DESCRIPTION>
Provide code blocks with syntax highlighting.
Explain non-obvious decisions in comments.
</OUTPUT_DESCRIPTION>
示例 2:渐进式加载文档
# Instead of loading all documentation at once:
# Step 1: Load summary
docs/api_summary.md # Lightweight overview
# Step 2: Load specific section as needed
docs/api/endpoints.md # Only when API calls needed
docs/api/authentication.md # Only when auth context needed
指南
- 将上下文视为有限资源,并认识到其收益会递减
- 将关键信息放在更受关注的位置(开头和结尾)
- 使用渐进式披露,将加载推迟到需要时
- 通过清晰的章节边界组织系统提示词
- 在开发过程中监控上下文用量
- 在达到 70-80% 使用率时触发压缩
- 针对上下文退化进行设计,而不是寄希望于避免退化
- 优先使用精简且信号密度高的上下文,而非冗长且信号密度低的上下文
集成
此技能为其他所有技能提供基础上下文。探索以下内容之前,应先学习此技能:
- context-degradation - 了解上下文如何失效
- context-optimization - 扩展上下文容量的技术
- multi-agent-patterns - 了解上下文隔离如何支持多 Agent 系统
- tool-design - 了解工具定义如何与上下文交互
参考资料
内部参考:
- Context Components Reference - 详细的技术参考
此集合中的相关技能:
- context-degradation - 了解上下文失效模式
- context-optimization - 高效使用上下文的技术
外部资源:
- 关于 Transformer 注意力机制的研究
- 领先 AI 实验室的生产工程指南
- 关于上下文窗口管理的框架文档
技能元数据
创建时间:2025-12-20 最后更新:2025-12-20 作者:Agent Skills for Context Engineering Contributors 版本:1.0.0
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。