扫码打开虎嗅APP

搜索历史
删除
完成
全部删除
热搜词
1M上下文虽强大但费Token,通过主动管理会话(压缩/拆分/子Agent)可提升效率并节省成本,关键在于清除无效信息、保留关键上下文。 ## 1. 1M上下文的双刃剑效应 - 新模型(如GPT-5.5、Claude 4.7)支持百万Token上下文,可容纳完整代码库和调试过程,但无关信息会干扰模型注意力。 - 长上下文导致两大问题:模型性能下降(被噪音干扰)和Token成本激增(如Claude Code会话快速消耗额度)。 ## 2. 会话管理的五大策略 - **继续会话**:适合连续任务,保留文件读取和命令输出等有效信息; - **压缩会话**:手动清理调试日志等冗余内容,聚焦目标(如`/compact 保留数据同步逻辑`); - **新开会话**:任务切换时启用干净上下文(如从修Bug转到优化交互); - **子Agent**:将搜索/验证等中间步骤交给独立Agent,仅返回结论; - **回退(Rewind)**:如Claude Code的撤回功能,删除错误路径保留关键文件分析。 ## 3. 关键场景的操作指南 - **新任务原则**:跨模块开发时必开新会话,避免旧日志污染(如登录模块→阅读列表优化); - **主动压缩优于自动**:在上下文混乱前手动指定保留内容,防止系统误删关键信息; - **子Agent省Token**:代码检索等中间过程由子Agent完成,主会话仅接收结论,减少80%+无效Token消耗。 ## 4. 核心结论与工程实践 - 1M上下文需配合人工判断:通过清除失败路径、保留核心数据(如rewind后保留文件读取)、拆分任务层级(主Agent+子Agent)实现高效低成本; - 最终目标:减少模型对无效记忆的处理,指令需明确(如`聚焦阅读模块重构`),避免重复和污染。
2026-04-29 16:52

1M 上下文时代太费Token,告诉你我的Coding Agent 省钱方法

本文来自微信公众号: MacTalk ,作者:池建强,原文标题:《1M 上下文时代太费 Token,告诉你我的 Coding Agent 省钱方法》


先说结论,怎么省钱呢,其实就是做好会话管理。


1M上下文是什么意思?就是在一次会话(session)里,模型能看见的大概100万个token。最近发布的GPT-5.5、Claude 4.6/4.7、Qwen 3.6-Plus、DeepSeek V4等等都是原生支持1M上下文,这里面有几个关键的概念:


1、在Claude Code这类Coding Agent里,上下文不是一句两句对话,而是一个大杂烩:系统提示词、长期记忆、调用过的工具、工具的输出、读过的代码文件、终端日志、以及你给它的各种指令,统统都会塞进去。模型每回答一次,都是在这一大坨信息里“分配注意力”,决定该看什么、不看什么。


2、1百万意味着什么?以前咱们都用8K、32K、200K这种上下文窗口,现在是1M token,就像什么呢?原来你桌上摊几份文件几本书就满了,现在你有了一个很大的仓库,全部代码库、长日志、好几轮调试过程,都可以同时装进去,模型一眼看穿,这就是所谓“1M上下文时代”。


但仓库再大,有两个本质没变:1、大模型会被噪音干扰了;2、你的钱随着大量Token流失,达到一种花Token如流水的感脚。


很多人用硅谷的顶级模型,没跟人家寒暄几句呢,5小时的额度已经用得干干净净,这真是人生最大的悲剧:任务没做完,Token花完liao。


所以,老百姓必须要理性而自制,把上下文和会话好好管理起来:一方面给模型提效,一方面给自己省钱。


1


1M上下文并不是无限记忆。拿Claude Code举例,上下文包括系统提示词、对话历史、工具调用历史、工具的输出、读文件、终端日志,以及用户给过的所有指令。


1M token的窗口虽大,能支撑长任务——比如从零搭一个全栈应用,或者连续完成一次复杂重构——但是,模型每次生成回答时,都要在这些内容里分配注意力。


上下文越长,里面的无关信息越多,模型就越容易被旧路径、失败尝试、过期日志干扰。因为AI大哥见的太多了,不知道该参考谁。


所有任务都在一个会话里完成,你的Agent会越来越笨,这并不是AI变笨了,而是用法出了问题。1M context的正确打开方式也不是一直聊,得学会在不同阶段选择不同的会话策略。


2


我最常用的就是Coding Agent,比如CC,Codex,SOLO等等。每一轮对话结束,其实我们都有多个选择:


1)可以继续当前会话,适合做同一个任务,之前读取的文件、命令输出、分析路径恰恰是非常有效的。


2)压缩会话,当前任务还没完,但上下文里已经堆了太多调试过程、搜索结果和无用输出,可以选择压缩会话,继续做任务。



3)清空当前会话开启新任务,适合进入一个真正的新任务,只保留自己判断过的关键信息。



4)启动子Agent,让另一个干净上下文去做搜索、验证、读代码、写文档,最后只把结论带回来。



5)回退,适合Agent走错路了,但前面的文件读取和分析仍然有价值的场景。



这些选择,对应的是这些问题:


下一步还需要这些上下文吗?


如果需要,就留下。


如果只需要结论,就压缩。


如果要做新任务,就开新会话。


如果中间过程繁杂冗长又没啥用,我就想要个结果,那就丢给子Agent。


3


什么时候该新开会话?一个简单原则就是:新任务,新会话。


比如你刚让Agent修完登录模块的bug,现在想让它优化阅读列表的交互,虽然都在同一个项目里,依然是两个任务。继续使用旧会话,Agent会带着登录模块的背景、调试日志和失败路径进入新任务,这些内容大概率没帮助,还会污染Agent的判断。


新会话的好处是干净。我一般会这么写:订阅源和feed介绍现在已经持久化到数据库里了,后续我们的第一个迭代只做XXX这些内容,同时,系统启动时把这些数据加载到缓存,方便快速读取。


这比把几十万token的历史都塞给模型要便宜,也更准确。


当然也有例外,如果你刚做完一个功能,准备让Agent写对应文档或补测试,旧的上下文可能仍然是有价值,继续会话就挺好的。


4


Claude Code里有个rewind功能我还挺喜欢的,你可以随时退回到之前的某个状态:



当Coding Agent犯了错你去PUA它是没用的,失败路径已经进入上下文了,Agent后面每一步都要背着这些旧内容继续走。


更好的做法是rewind。回到它刚读完关键文件、但还没开始错误实现的位置,然后重新给命令。这样保留了有价值的上下文,删除了错误实现和推理,效果更好,也更省token。


这条尤其适合复杂调试。调试的中间过程经常产生大量命令输出、错误日志和假设。如果你确定某条路径废了,就不要让它继续留在当前会话里。


5


主动压缩也是个好办法,不要总是等着自动触发。


当上下文快满时,系统会自动压缩,把长会话总结成短摘要,然后继续工作。但是,自动压缩发生的时候,往往已经到了上下文最混乱的时候。更好的方式是主动compact,并给出明确的方向,比如:


/compact聚焦阅读模块的重构,保留数据同步的逻辑,不用保留之前的UI交互和调试信息。


这就等于是在压缩上下文的时候,告诉模型,下一阶段要服务什么目标。否则压缩的时候可能把你后面需要的信息丢掉。


6


Sub Agent是省Token的大杀器,很多任务会产生大量中间输出,但你最终只需要一个结论。比如:读代码库,找一下用户认证是怎么实现的。


这样的任务如果在主会话里做,主会话的上下文会被搜索结果、文件内容、日志输出填满。更好的方式是让子Agent去做,你要个结果就行。


Sub Agent有自己干净的上下文。可以读很多文件、跑很多命令、试错,最后把压缩后的结论返回给主会话。我经常这么干。


写了这么多,其实提高效率节省Token的本质就是减少无效记忆,给明确的指令,避免重复,减少无效记忆,清除污染信息。1M上下文让Coding Agent能做更长、更复杂的事,但依然需要工程判断。


管理好你的会话,不仅省钱,你和你的AI也会很聪明。

本内容来源于网络 原文链接,观点仅代表作者本人,不代表虎嗅立场。
如涉及版权问题请联系 hezuo@huxiu.com,我们将及时核实并处理。

大 家 都 在 搜