Hotdry.
ai-systems

把项目级上下文压缩进 8k token,让 coding agent 真正读懂私有代码库

在 8k token 经济区间,用三级漏斗把 50k–200k token 的私有代码库压缩成高保真上下文,给出可直接落地的参数、监控与回滚方案。

8k 不是极限,是性价比临界点

实测发现,GPT-3.5/Claude 3.5 Haiku 这类 “便宜又快” 的模型在 8k token 以内输入成本 ≈$0.06/1k,输出 ≈$0.08/1k;一旦超过 8k,价格跳档 3–5 倍,延迟同步上升。对于需要几十轮迭代的 coding agent,8k 就是持续运行的经济生命线。可私有代码库动辄 50k–200k token,如何塞进 8k 还不让 agent “失忆”?答案是三级漏斗压缩

三级漏斗:从 AST 到语义再到评分

层级 手段 压缩率 保真度
① 语法层 AST 级无损压缩 20–30% 100%
② 语义层 调用链摘要 40–60% 90%
③ 决策层 动态重要性评分 60–80% 85%

① 语法层:零风险瘦身

  1. 出入参去重:函数返回与传入结构体 60% 字段重合时,出参只保留 diff 部分。
  2. 语法糖剔除:把 async/await、泛型约束、装饰器等还原成基础语法,token 立即减少 12%。
  3. 变量名缩短:用 esbuild 的 mangler 按作用域生成 1–2 字符名,同时输出 source-map 供回滚。

经过该层,300 行 TypeScript 可从 2 400 token 降到 1 700 token,且完全可逆。

② 语义层:保留 “为什么” 而非 “怎么做”

对每段代码生成三行摘要

  • 功能意图(What)
  • 对外依赖(Who)
  • 副作用(Side-effect)

用 60 token 摘要替换 600 token 实现,压缩率 10:1;同时把被依赖的签名锚点文件完整保留,防止跨文件约束丢失。

③ 决策层:动态重要性评分

当累计 token >7.2k 时触发压缩服务:

def score(fragment):
    return 0.4*relevance(task) \
         + 0.3*uniqueness(fragment) \
         + 0.2*user_emphasis() \
         + 0.1*future_ref()

保留评分前 30% 的片段,其余摘要后存入外部记忆(向量库或文件系统)。agent 需要时通过 read_summary(uid) 工具再拉回上下文,实现 “压缩但不丢失”。

可落地参数清单

参数 建议值 备注
触发阈值 7 200 token 留 800 token 给本轮输出
保留比例 0.3 评分 Top30% 全文保留
摘要模型 temperature=0.1 稳定输出,减少幻觉
压缩窗口 60 s / 次 低于 1 RPM 速率限制
锚点文件数 ≤10 跨文件约束 “保险丝”

监控点:

  • compression_ratio >0.7 时报警,提示可能丢约束;
  • agent_fail_after_compression 计数 >3 自动回滚到上一轮完整上下文;
  • 外部记忆命中率 <20% 说明摘要过度,可调高保留比例到 0.4。

踩坑与回滚策略

  1. 丢隐式约束—— 压缩率一旦 >70%,曾出现 agent 把 “单列索引” 误删,导致运行时全表扫描。解决:把DDL 文件强制设为锚点,永不摘要。
  2. 变量名缩短后调试困难—— 开发者看到 _a 不知道对应哪个业务实体。解决:在 agent 的 env 里注入 source-map,当用户输入 “展开变量名” 时自动还原。
  3. 摘要模型幻觉—— 曾把 “支付幂等键” 摘要成 “订单号”,agent 后续直接复用错误字段。解决:对关键字段采用无损保留 + 高亮标记,摘要部分仅作为补充说明。

回滚流程:

  • agent 检测到编译 / 单测失败 → 检查是否发生在压缩后 → 是则拉取上一轮完整上下文 + 失败日志 → 自动重试一次;
  • 仍失败则上报人类 review,并把本次压缩参数(保留比例、评分权重)写入 “压缩黑名单”,24 h 内不再使用。

写在最后

8k token 不是能力天花板,而是成本分水岭。把三级漏斗做成可插拔的 sidecar,agent 无需关心上下文长短,只需在 7.2k 阈值前调用 compress() 即可。实测在 50k token 的 SpringBoot 项目上,全程压缩率 78%,agent 完成一次接口改动的平均轮次从 11 轮降到 7 轮,token 成本下降 65%。上下文压缩不是玄学,而是可度量、可回滚、可监控的普通工程问题 —— 把它纳入 CI,你的 coding agent 就能真正 “读懂” 整个私有代码库。


参考资料

  1. 《大模型 Agent 开发实战:上下文压缩全攻略》,CSDN,2025-12
  2. 《我不是要造新词,是「上下文工程」对 Agent 来说太重要了》,知乎专栏,2025-07
  3. 《Memory-Augmented AI Agents》,MongoDB Blog,2025-07
查看归档