news 2026/5/29 21:54:11

Agent系列(八):上下文工程——让每个 Token 都用在刀刃上

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent系列(八):上下文工程——让每个 Token 都用在刀刃上

上下文工程:不只是"把 Prompt 写好"

如果你读过 Anthropic 的 Agent 最佳实践,会看到这样一句话:

“The most important skill in building agents is context engineering — the art of getting the right information into the model’s context window at the right time.”

上下文工程(Context Engineering)比 Prompt 工程更底层,管的是整个上下文窗口的内容构成与预算分配:放什么、放多少、按什么顺序、预算不够时怎么取舍。

本篇从三个维度拆解它:

  1. 上下文五来源 + Token 成本剖析:上下文窗口里住着哪些东西
  2. 预算约束下的动态组装:Token 告急时怎么做取舍
  3. 溢出策略三选一:截断、摘要、检索,同一问题下答案质量的真实差异

上下文的五个来源

一个完整的 Agent 上下文由五类内容组成,每类都有不同的生命周期和成本特征:

┌─────────────────────────────────────────────────────────┐ │ Agent 上下文构成 │ ├──────────────────┬──────────────────────────────────────┤ │ ① System Prompt │ 固定载入,定义 Agent 角色和行为准则 │ │ │ 特征:稳定,适合 Prompt Caching │ ├──────────────────┼──────────────────────────────────────┤ │ ② 工具定义 │ 按需加载,当前任务相关的工具 Schema │ │ │ 特征:工具越多膨胀越快(每个 ~50-200t) │ ├──────────────────┼──────────────────────────────────────┤ │ ③ 对话历史 │ 最近 K 轮,随对话增长 │ │ │ 特征:线性增长,需要截断/摘要控制 │ ├──────────────────┼──────────────────────────────────────┤ │ ④ 检索内容 │ 动态注入,当前问题相关的知识库片段 │ │ │ 特征:质量决定生成质量,需相关度过滤 │ ├──────────────────┼──────────────────────────────────────┤ │ ⑤ 当前输入 │ 用户当前 Turn 的问题 │ │ │ 特征:永远最后载入,不可省略 │ └──────────────────┴──────────────────────────────────────┘

Token 成本实测

对一个典型的客服 Agent 做 Token 剖析(128K 窗口,4K 输出预留,可用 124K):

来源 Token数 占预算% 用途 ──────────────────────────────────────────────────────────── ① System Prompt 155 0.1% 固定载入 ② Tool Definitions 174 0.1% 按需加载(当前任务相关工具) ③ Conv. History (8轮) 263 0.2% 最近 N 轮(可截断/摘要) ④ Retrieved Content 200 0.2% 动态(相关度过滤) ⑤ Current Input 22 0.0% 当前 Turn ──────────────────────────────────────────────────────────── 合计 814 0.7% 剩余 Buffer 123,186

看起来 8 轮对话只用了 0.7%,问题在哪?两个增长因子:

因子 1:对话轮数增长

  • 8 轮历史 = 263 tokens;100 轮历史 ≈ 3,200 tokens;1000 轮历史 ≈ 32,000 tokens
  • 长期使用的 Agent(客服/助手)不加控制会在几百轮后遭遇溢出

因子 2:工具数量增长

  • 4 个工具 = 174 tokens;20 个工具 ≈ 860 tokens;100 个工具 ≈ 4,300 tokens
  • MCP Agent 接入大量工具时,工具定义本身就会吃掉几 K tokens

Token 计数工具(使用 tiktoken,cl100k_base 编码作为近似):

importtiktoken _enc=tiktoken.get_encoding("cl100k_base")defcount_tokens(text:str)->int:"""统计文本 Token 数(对中文是近似值,偏低估)"""returnlen(_enc.encode(text))defmsg_tokens(msg)->int:"""计算单条消息 Token 数(含 4 个 overhead tokens)"""returncount_tokens(msg.content)+4

预算约束下的动态上下文组装

核心思路:按优先级加载,预算告急时高优先级内容永远完整,低优先级内容弹性裁剪

优先级模型

P0 System Prompt — 永远完整载入(角色定义不能丢) P1 Current Input — 永远完整载入(没有问题什么都没有) P2 Recent History — 从最新轮倒序加入,直到撑不下(可压缩) P3 Retrieved Docs — 按相关度从高到低加入(可截断) P4 Tool Defs — 只加载当前任务相关工具(可按需裁剪)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 21:52:54

Python量化金融数据接口深度解析:mootdx通达信数据高效方案

Python量化金融数据接口深度解析:mootdx通达信数据高效方案 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx mootdx是一个专注于通达信金融数据读取的Python开源库,为量化交…

作者头像 李华
网站建设 2026/5/29 21:49:06

全球第一!智元斩获WorldArena世界模型总分冠军

近日,具身领域热门榜单 WorldArena Track1(世界模型感知与动作响应赛道)最新评测结果揭晓。智元自研的世界模型 Genie Envisioner-Sim 2.0(以下简称GE 2.0)凭借优异的综合表现,登顶榜单榜首。Project page:…

作者头像 李华
网站建设 2026/5/29 21:46:37

Win7 64位下,让WinCC 7.0 SP3与PC Access SP6稳定通讯的保姆级避坑指南

Win7 64位系统下WinCC 7.0 SP3与PC Access SP6通讯全流程实战指南在工业自动化领域,老旧系统的升级改造往往比全新部署更具挑战性。当第十代CPU的现代硬件遇上仅支持Win7系统的PC Access SP6软件,这种跨越时代的兼容性问题让不少工程师头疼不已。本文将带…

作者头像 李华
网站建设 2026/5/29 21:43:59

看完《阿嬷的情书》哭红眼的晚上,我突然懂了律师这行最大的危机

周末,我被朋友圈刷屏的《阿嬷的情书》“逼”进了电影院。说实话,一开始是抗拒的。潮汕方言、没有大明星、讲“下南洋”和“侨批”这种听起来就很年代感的东西——我心想,不就是一部文艺片嘛,能有啥好看的。结果散场的时候&#xf…

作者头像 李华
网站建设 2026/5/29 21:43:59

彻底告别“复制粘贴”:用 API 接口把企微外部群变成自动化流水线

在私域社群运营中,最消耗精力的往往不是高层策略,而是那些琐碎的体力活:早上要在几十个客户群发行业早报、下午要同步活动海报、还要时刻盯着有没有新客户申请进群。 由于常规开发通道对外部群的深度控制有所限制,不少技术团队选…

作者头像 李华