告别 Token 暴涨!AI Agent 深度上下文管理与降本实战(上)
随着 AI 从简单的单次任务向自主运行的智能体演进,开发的重点正从单纯的“提示词工程”转向全局的“上下文工程”。但上下文工程容量越来越大,如下问题:
- 从模型承载能力看,上下文窗口过大会超过模型一次最多能读取的上下文容量上限,如Claude-4.5-sonnet, 为 200k,GPT-5.1 和 GPT-5.1-codex 为 272K,而 DeepSeek-3.1 仅有128K;
- 从成本角度看,每次请求会根据输入和输出的 token 计费,上下文越长,消耗越大,如# Kimi K3 的价格为:输入 20 元/1M token(缓存未命中),输出 100 元/1M token。虽然输出价格远高于输入,但输出 token 的量级通常远小于输入,真正的成本大头是输入 token;
- 从效果角度看,会出现关键信息被遗忘、注意力被分散、响应速度变慢等问题,使模型无法捕捉关键细节,处理时间长,导致回答跑题或抓不住重点。
上下文(context)
想解决上述问题,我们需要先了解上下文里面有什么?模型实际“看到并读取”的所有内容,统称为上下文(context),通常包含:
- 系统提示词(system prompt),由开发者编写,定义 Agent 的身份、行为规则、约束条件。模型将其视为最高优先级的指令。整个对话过程中通常只有一条,放在消息列表的最前面。
- 用户输入的消息(user message),用户消息。来自终端用户的输入,是 Agent 需要响应的请求。
- 模型的回答(model response),模型之前的回复,包括文本回复和工具调用请求。在多轮对话中,之前的模型回答消息会被放回消息列表,让模型“记住”自己说过什么。
- 附加的文件、代码片段、图片等引用内容
- 定义的规则、存储的记忆、MCP、Skills等
他们一起构建了上下文,已一家专业中药房看病的全过程为例:
【系统提示词】老药师身份与守则 +【存储记忆】顾客过敏史/病史 +【规则】配药禁忌 │ ▼ 【用户消息】“我失眠乏力,帮我开药” +【附件】体检报告/旧处方照片 │ ▼ 【调用Skills/Tools】老药师把脉(Skill) ──> 查药库存/电子称重(MCP/Tool) │ ▼ 【模型回答】生成个性化药方 + 煎药服药说明书整个上下文估计有8000个汉字左右,中间还夹杂着各类英文标签,按照英文中大约 3~4 个字符 ≈ 1 个 token,中文中通常 1 个汉字 ≈ 1 个 Token来计算,一轮下来至少需要10k的Token,如果用户和老药师多聊几轮,上下文肯定会成倍增长。
上下文实用技巧
整个上下文会过长,业界一般有几种解决方案,经常同时使用:
- 简单高效,如开启新会话、及时关闭不再需要的扩展和规则、合理规划模型切换、精准引用工具
- Token 缓存机制
- 上下文压缩
- 优先使用 Skills谨慎使用 MCP
简单高效的解决方案(纯小白也会)
根据用户的实践经验,当出现以下情况时,建议及时开启新会话:
- 回答质量下降:模型开始重复修改、遗忘早期细节、出现幻觉或答非所问
- 对话过于冗长:继续在臃肿的上下文中堆叠信息,不仅成本高昂,还会导致回答质量进一步恶化
- 话题多次转换:对话涉及多个不相关的任务或问题,上下文信息杂糅混乱
除了开启新会话外,也可以手动总结或在中间内容另起一个话题分支。
手动总结
已使用的是Codex为例,可以使用如下几步:
第一步:在老会话中提取“核心资产”在当前那个冗长的旧对话中,直接发送一条总结指令,让模型自己提取关键信息。 你可以这样问:
“请帮我总结一下我们当前的讨论进度。要求:
- 提取核心的项目背景和业务需求。
- 罗列已经确认的代码实现方案或使用的框架。
- 列出目前待解决的问题。 请尽量精简、结构化,保留关键的技术约束即可。”
第二步:复制并手动微调摘要Codex 生成总结后,你可以快速扫一眼。如果 AI 漏掉了某些绝对不能妥协的技术细节(比如特定的版本号或网络配置),你可以手动补充上去。确认无误后,将这段纯净的“核心摘要”复制下来。
第三步:开启新会话,轻装上阵在 Codex 桌面端应用中,点击新建会话(通常是New Chat或+图标),打开一个全新的空白窗口。彻底抛弃之前的历史包袱。
在新会话的第一条消息中,把复制的摘要发给它,并顺势抛出你的新任务:
“这是我们之前讨论的项目背景和已确认的决策:[粘贴刚才的摘要内容]
接下来,请基于上述前提,帮我解决这个新问题:[输入你当下要写的具体代码或要排查的 Bug]”
在中间内容另起一个话题分支
在 Codex 桌面端应用中,找到所选择的会话,点击分叉箭头 branch in new chat,会出现“-----从聊天中继续------”,就可以接着上面的上下文继续聊了。
合并多条指令
多个问题合并成一条消息发送。
示例:把“总结摘要”、“列出要点”、“给我起一个标题”3条消息合并成1条发送,即:
“帮我把这篇文章内容总结摘要、列出要点并起一个标题”
提问对比表:低效 vs 高效
| ❌ 低效提问 | ✅ 高效提问 |
|---|---|
| “帮我看看这个项目” | “分析src/auth/login.ts的认证流程,列出潜在安全风险” |
| “这个报错了怎么办” | “运行npm run build报 TS2345 错误,这是完整日志: [粘贴日志]” |
| 连续追问 5 个小问题 | 一次性列出所有问题,编号 1-5 |
| “帮我改一下” | “将config.ts:42的超时时间从 5000 改为 10000” |
节省效果
- 精准提问:平均减少2-4 轮澄清对话。
- Token 消耗:每减少一轮对话,约节省3000-5000 tokens(避免了重复携带上下文历史的开销)。
合理规划模型切换
不同模型各有所长,根据任务特点选择合适的模型可以兼顾效果和成本:
国内模型(个人观点,仅供参考):
| 任务类型 | 推荐模型 | 选型理由 |
|---|---|---|
| 1. 深度逻辑、复杂代码与技术推理 | DeepSeek、Qwen、Kimi、GLM、文心 | DeepSeek 在代码、数学、长链推理上性价比极高;Qwen-Max 在代码和工具调用上稳定;Kimi 技术推理增强明显;GLM 逻辑严谨,适合需可控推理的场景 |
| 2. 中文通用理解、营销文案与办公辅助 | Doubao-pro、Kimi、Qwen-Max、GLM、文心 、讯飞星火 | 中文表达更自然、公文/营销语感强;文心和 Doubao 在中文语境、本土办公场景(写周报、公文、小红书文案)上更“接地气” |
| 3. 高并发、低延迟、轻量级任务 | Qwen-Turbo、Doubao-lite、GLM-Flash、文心 Speed/Lite、DeepSeek(中小规模部署) | 延迟低、单价便宜、适合分类、摘要、意图识别、客服等对响应速度敏感的场景;通常要牺牲少量推理深度 |
| 4. 长文本解析与多模态交互 | Kimi、QwenVL-Max、Doubao-vision、GLM、文心 Turbo 长文本版 | Kimi 是长文本代表;Qwen-VL 系列在图文理解、文档 OCR、视频理解上能力突出;GLM/Doubao-vision 在多轮图文对话上体验好 |
国外模型(个人观点,仅供参考):
- 性价比模型(如 GLM、Claude Haiku):价格低、速度快,适合日常使用
- 高性能模型(如 Claude Opus、Claude Sonnet):推理能力强,适合复杂重构、大型代码分析、架构设计等高价值场景
- 审美能力强的模型(如 Gemini Banana):前端页面生成、视觉审美判断等
📌 切换模型打破思维定式:如果发现当前模型陷入死循环或方案不理想时,也可以尝试切换模型寻求不同思路。不同模型系列在代码生成、问题分析上的风格差异,可能带来新的启发,帮助快速跳出困境。
精准引用工具
常见的@上下文唤起指令 (Context References),这些指令主要用来向 AI 精确指定,希望它读取或参考的信息范围:
@Web/@Search:允许 AI 联网搜索最新的网页信息、文档或解决方案。@Docs:引用特定的第三方技术文档(如 React、Python 或系统 API),让 AI 基于最新或指定的官方文档回答。@Git/@Commit/@PR:引用提交记录、分支日志或 Pull Request 信息,帮助撰写 Changelog 或理解变动历史。@Terminal/@Console:获取你终端或控制台的最新输出/错误日志,常用于自动分析和修复报错(Debug)。@Codebase:对整个项目代码库进行全局语义检索,寻找相关的模块或类。@Definitions/@Symbol:定位特定的函数、类型或变量定义。
常见的/快捷动作指令 (Slash Commands),这类指令用来指定 AI具体执行什么操作,避免手动输入重复的提示词:
/explain:解释选中的代码、报错或概念。/fix:自动分析选中的代码并修复 Bug 或错误。/tests:为当前代码或函数自动生成单元测试(Unit Tests)。/doc//comment:自动为代码生成标准格式的注释或 API 文档(如 JSDoc、Docstring)。/refactor:重构选中的代码,优化结构或性能。/clear//reset:清除当前的会话上下文,重新开始对话。
不同的Agent可能显示的也不太相同,已Codex为例
OpenCode的是
简单的区分方式是:
@指令回答的是“看什么”(提供哪里的信息作为上下文),用的最多的是制定@代码或@文件。/指令回答的是“做什么”(对上下文执行什么具体动作),用的最多的是制定的/skill。/skill则属于更高级的自定义扩展功能,允许你给 AI 挂载特定的专业技能组/工作流。
总结
梳理四大低成本、即学即用的基础优化策略:
- 及时开启新会话:在回答质量下降、对话冗长或话题转换时及时止损;
- 手动总结与分支提取:借助 AI 提取核心背景与代码方案,剔除无用历史,轻装上阵;
- 合并多条指令:将同一阶段的多个诉求或问题一次性合并发送,通过精准提问减少2-4 轮澄清对话,每轮可节省3000-5000 tokens的历史开销;
- 合理规划模型选型:按任务复杂度与成本灵活切换模型(如 DeepSeek/Qwen 处理复杂代码逻辑,轻量级模型处理高并发任务,特定模型处理视觉/前端),陷入思维死循环时切模型破局;
- 精准引用工具:巧用
@指令明确“看什么”(精准注入代码或文档),利用/指令明确“做什么”(自动执行重构或单测),配合 Skill 挂载专业工作流,从源头掌控 Token 消耗。
依靠良好的使用习惯与精准调用,可以解决大部分日常开发中的 Token 浪费。但面对长流水线、复杂 Agent 自动迭代等超大上下文场景,仅靠人工控制远远不够。下半部分将深入底层技术与架构设计,详细拆解 缓存机制(Prefix Caching)与 上下文自动压缩/剪枝(Context Compression)的实战落地!
