Curated Code Context Window
Nikola Balic (@nibzard)· validated-in-production
问题
将所有源文件加载至编码智能体的上下文中,或是导入整个代码仓库,会使模型不堪重负、引入噪声并降低推理速度。编码智能体需仅聚焦于最相关的模块,才能高效地对代码变更进行推理或生成新功能。
- 纳入全部文件会让智能体被无关代码干扰;在大上下文场景下,它会“失去连贯性”。
- 大上下文会增加token消耗,拖慢多轮强化学习训练的速度。
方案
为核心编码Agent维护极简、高有效信号的代码上下文(context)(保持context“纯净无杂”),具体实现方式如下:
1. 上下文净化(Context Sterilization)
- 排除无关模块(例如,开发UI组件时,移除测试工具类模块)。
- 通过轻量级搜索Agent自动识别相关文件,该Agent可针对函数或类名返回Top-K匹配结果。
2. 代码发现辅助子Agent(Helper Subagent)
- 生成一个SearchSubagent(基于小型LLM或向量搜索索引),它可接收文件路径或查询指令(如“查找
UserModel的定义”),并返回按相关性排序的文件代码片段列表。 - 仅将排名前3的片段(每个片段≤150个token)注入主Agent的上下文窗口。
3. 上下文更新循环
- 主Agent:“我需要重构
UserService。” - SearchSubagent:“已找到
user_service.py、models/user.py、utils/auth.py。” - 上下文注入:仅将这三个文件(或其摘要内容)纳入主Agent的上下文窗口。
如何使用
- 索引阶段(离线):构建一个简单的代码索引(例如借助
ripgrep或向量存储),实现函数/类名称到文件路径的映射。 - 子Agent定义:将
SearchSubagent定义为一个函数,它会查询代码索引,并借助小型LLM对匹配结果进行过滤和排序。 - 上下文管理库:创建一个封装器(例如
CuratedContextManager),当主Agent请求相关代码时,它会自动调用SearchSubagent。
权衡
- 优势:
- 噪声过滤:使上下文聚焦于相关代码,提升推理的清晰度。
- Token 高效性:大幅降低每一步的Token消耗,提升RL吞吐量。
- 上下文窗口焦虑缓解:通过将使用量控制在远低于上限的水平,帮助缓解上下文窗口焦虑。
- 劣势/注意事项:
- 索引时效性:若代码频繁变更,必须更新索引以避免产生过时结果。
- 复杂度提升:为训练与推理流水线新增了额外组件(SearchSubagent + 索引)。
- 模型适配要求:不同模型对筛选式上下文与完整上下文方案的容忍度可能存在差异。
参考文献
关键词:
围绕大语言模型智能体的核心实践展开,涵盖开源强化学习智能体的“语境神圣”原则、长周期任务的语境长度管控建议,以及经生产验证的专用搜索智能体实现方案。
直译:
- 2025年5月开源强化学习智能体(Open Source Agent RL)分享中的“语境神圣”原则。
- 威尔·布朗(Will Brown)针对长周期任务提出的“避免突破语境长度限制”相关评论。
- 托尔斯滕·鲍尔(Thorsten Ball)的《培育智能体——第三集》(https://www.nibzard.com/ampcode)——经生产环境验证的专用搜索智能体模式实现方案。
来源摘要
正在获取来源并生成中文摘要…