CodeBuddy 省Token全套技巧(腾讯云CodeBuddy / 开源getcodebuddy通用)
核心原理:Token最大消耗来自自动读取大量无关文件、累积对话历史、模型选型不对、返回超长文本。下面按优先级排序,可直接落地。
一、内置指令:主动压缩上下文(最常用)
- /compact 手动压缩会话
长对话5~10轮后执行:/compact,自动总结历史,丢弃旧的工具返回、冗余日志,只保留核心需求、代码变更、关键决策。
还可以自定义压缩重点:
/compact 只保留接口定义、修改方案,丢弃调试日志和失败尝试记录
配套:/rename 给任务命名,清理会话前保存,后续 /resume 恢复,不用从头重聊,避免重复加载代码。
系统本身会在上下文接近上限自动异步压缩,但手动compact可以更早控制token消耗。
- 任务隔离:一个任务新开一个会话
跨功能、无关任务直接新建对话。旧会话的全部历史不会带入新任务,避免历史越堆越厚,每一轮都携带大量无用上下文。
二、限制代码库检索,减少自动读文件(大仓库最费Token!)
CodeBuddy默认会自动检索、读取相关文件注入上下文,读文件是token消耗大户。
- 用 CODEBUDDY.md 限定扫描范围
不要在根目录写超大配置,使用目录分级CODEBUDDY.md:根目录放全局规则,子目录放模块专属规则,Agent只会加载当前目录+父目录配置,不会全仓库加载。
在配置里明确排除目录:node_modules、dist、build、日志文件夹、静态资源、测试快照,禁止读取。
- 缩小文件检索范围,精准指定文件
❌ 不好:帮我重构项目登录模块
✅ 更好:只读取 src/auth/login.ts、src/types/auth.ts 两个文件,重构登录逻辑
精准指定文件路径,避免Agent一次性扫描十几份无关文件,大幅减少输入token。
- 优先AST依赖解析,而不是全文grep
不要让Agent暴力全文搜索关键词;用AST语法树,只读取真正存在导入依赖的文件,可以减少60%+文件加载token消耗。
- 批量重构任务:分批次、小范围迭代
不要一次性让Agent做整个monorepo大迁移;拆成子任务,每轮只处理少量文件。
三、模型分层选型,不滥用大模型(省钱倍率最高)
CodeBuddy支持切换不同模型,不同模型token计费倍率差距很大:
• 简单任务(代码补全、查语法、小bug、生成注释):轻量低成本模型(Flash类)
• 中等任务(单文件重构、写单元测试):中等能力模型
• 复杂跨文件架构重构、疑难bug:才开启高阶强模型
不要所有操作都无脑拉满最高级模型。
四、Prompt与输出控制,减少输入+输出Token
- 精简提问,去掉客套话,一次性描述完整需求
减少来回多轮对话(每一轮对话都会追加到上下文),尽量一轮把:目标、约束、文件范围、规范一次性给全,减少反复修正。
- 限制输出长度
指令里直接约束返回内容,减少输出token:
示例:只输出修改代码diff,不要解释、不要前言;回答精简,只列出关键变更点。
- 避免把完整长日志、大报错全部粘贴进去
只粘贴报错栈的关键片段,剔除重复堆栈、大量无关日志。
五、Agent工具调用节流(CLI/IDE代理模式重点)
- 限制命令返回结果长度
Agent执行shell命令(如git log、lint)返回大量文本,会吞大量token;设置工具返回截断,超长输出只保留前几百字符。
CodeBuddy内置压缩策略:Tier1 TOOL_STRIP,自动剔除旧消息里超长工具返回内容。
- 权限与工具白名单 /permissions
用 /permissions 限制可用命令,防止Agent自动执行大范围搜索、递归查找文件这类高消耗操作。
- 先写计划,再改代码
让Agent输出改造计划保存到项目markdown,再基于计划执行代码修改。就算会话压缩丢失历史,计划文件可以作为外部上下文,避免反复重新推导架构。
六、底层优化:KV缓存提升复用(进阶)
• 固定system prompt,把动态变量(当前时间、会话id)挪到prompt末尾,保证前缀不变,提高KV缓存命中率,重复系统提示不再重复计费token。
• 可以使用Headroom代理,拦截请求自动做缓存对齐、文本压缩,部分场景token消耗下降70%~80%。
七、用量观测,定位高消耗操作
在个人中心【用量明细】查看每一次调用消耗,找到哪些操作/会话大量耗积分/Token,针对性优化:
• 是不是自动读取了几十份源码文件
• 是否长会话没有compact,持续累积历史
• 简单任务误用高价模型
快速自查清单(Obsidian可直接复制)
- 大仓库:排除 node_modules / dist / build,限制检索目录
- 长对话每5~10轮执行 /compact
- 不同任务分开新建会话,不混用上下文
- 提问指定明确文件路径,禁止全仓库扫描
- 轻量任务切换低成本模型,高阶模型只用于复杂重构
- Prompt精简,限制AI输出长度,只返回diff
- 执行命令限制日志输出长度,避免大文本注入上下文
如果你需要,我可以单独写一份CODEBUDDY.md 模板,直接放到仓库根目录,用来限制文件扫描范围,自动省token。