成本管理
通过多场景模型选择和异步压缩策略优化成本,在保证效果的同时实现更快的响应速度和更低的使用成本。
CodeBuddy Code 每次交互都会消耗 Token。成本因代码库大小、查询复杂度和对话长度而异。本文档介绍如何追踪成本、多场景模型机制和降低 Token 消耗。
追踪成本
使用 /cost 命令
/cost 命令提供当前会话的详细 Token 使用统计:
/cost
⎿ Total duration (API): 9m 35.6s
Total duration (wall): 22m 14.9s
Total code changes: 0 lines added, 0 lines removed
Usage by model:
claude-sonnet-4: 875.5k input, 11.7k output, 714.3k cache read, 0 cache write使用 /context 命令
/context 命令可以分析当前上下文的占用情况,查看不同类型上下文的大小分布:
> /context
⎿ Context Usage
⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ glm-4.7 · 38.1k/200.0k tokens (19.1%)
⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁
⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ System prompt: 2.1k tokens (1.1%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ System tools: 16.4k tokens (8.2%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Memory files: 3.7k tokens (1.9%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Messages: 15.9k tokens (7.9%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ Free space: 145.9k (72.9%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛝ Autocompact buffer: 16.0k tokens (8.0%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
⛶ ⛶ ⛶ ⛶ ⛝ ⛝ ⛝ ⛝ ⛝ ⛝
Memory files · /memory
└ /Users/yangsubo/.codebuddy/CODEBUDDY.md (User): 18 tokens
└ /Users/yangsubo/CODEBUDDY.md (Project): 15 tokens
└ /Users/yangsubo/workspace/genie/CODEBUDDY.md (Project): 1.2k tokens
└ /Users/yangsubo/workspace/genie/packages/agent-cli/CODEBUDDY.md (Project): 2.5k tokens
Skills and slash commands · /skills
Project
└ release: 1.1k tokens
└ gen-drawio: 846 tokens
└ task-manager: 815 tokens
└ task-add: 730 tokens
└ task-done: 525 tokens
└ mr: 519 tokens
└ task-start: 493 tokens
└ my-task: 238 tokens
└ task-list: 233 tokens
└ security-review: 30 tokens通过 /context 可以快速识别哪些内容占用了大量上下文空间,从而有针对性地优化。
多场景模型机制
不同的任务场景对模型能力的要求不同。简单的文件搜索、快速查询等任务使用轻量级模型即可完成;复杂的架构设计、多步骤推理等任务需要更强大的推理模型。
通过为不同场景自动选择不同的模型,可以实现:
- 效果最优:复杂任务使用高能力模型,确保质量
- 速度更快:简单任务使用轻量模型,响应更迅速
- 成本更低:避免在简单任务上使用昂贵的高端模型
场景类型
| 场景类型 | 说明 | 典型用例 |
|---|---|---|
default | 默认模型,平衡性能与成本 | 一般编程任务、代码编写 |
lite | 轻量快速模型,低成本高速度 | 文件搜索、简单查询、快速操作 |
reasoning | 推理增强模型,强大分析能力 | 复杂分析、架构决策、多步骤推理 |
自动模型选择
CodeBuddy Code 会根据任务类型自动选择合适的场景模型。当子代理执行时,系统会根据用户当前选择的主模型,自动解析出对应的场景模型。
例如,contentAnalyzer 等轻量级子代理会自动使用 lite 模型,在保证功能的同时降低成本、提升速度。
Task 工具支持通过 model 参数指定场景类型:
default:继承父模型,适用于一般任务lite:快速且低成本,适用于简单搜索、快速文件操作reasoning:增强推理能力,适用于复杂分析、架构决策
降低 Token 消耗
Token 成本随上下文大小增长:CodeBuddy Code 处理的上下文越大,消耗的 Token 越多。CodeBuddy Code 通过 Prompt 缓存(减少重复内容如系统提示的成本)和自动压缩(在接近上下文限制时压缩对话历史)自动优化成本。
以下策略帮助你保持较小的上下文,降低每条消息的成本。
主动管理上下文
使用 /cost 检查当前 Token 使用情况。
- 任务间清理:切换到不相关的工作时使用
/clear重新开始。过时的上下文会在后续每条消息中浪费 Token。清理前使用/rename以便之后通过/resume返回。 - 添加自定义压缩指令:
/compact Focus on code samples and API usage告诉 CodeBuddy Code 在压缩时保留什么内容。
你也可以在 CODEBUDDY.md 中自定义压缩行为:
markdown
# Compact instructions
When you are using compact, please focus on test output and code changes.异步压缩策略
当对话历史接近上下文限制时,系统会自动进行压缩:
- 自动触发:当上下文接近限制时自动启动压缩
- 后台执行:压缩过程在后台异步执行,不阻塞用户操作
- 智能摘要:保留关键信息,压缩冗余内容
- 无缝衔接:用户无感知,获得"无限上下文"体验
压缩时会保留以下关键信息:代码变更记录、重要决策点、用户明确的偏好和指示、当前任务的关键上下文。
选择合适的模型
根据任务复杂度选择模型。使用 /model 在会话中切换模型,或在 /config 中设置默认值。
- 简单任务使用 lite:文件搜索、快速查询、代码格式化
- 复杂任务使用 reasoning:架构设计、性能优化、复杂调试
- 一般任务使用 default:日常编码、功能实现
减少 MCP 服务器开销
每个 MCP 服务器会将工具定义添加到上下文中,即使处于空闲状态。运行 /mcp 查看已配置的服务器。
- 优先使用 CLI 工具:
gh、aws、gcloud等工具比 MCP 服务器更节省上下文,因为它们不会添加持久的工具定义。CodeBuddy Code 可以直接运行 CLI 命令,无需额外开销。 - 禁用未使用的服务器:运行
/mcp查看并禁用未使用的服务器。
将详细操作委托给子代理
运行测试、获取文档或处理日志文件可能消耗大量上下文。将这些操作委托给子代理,详细输出保留在子代理的上下文中,只有摘要返回主对话。
编写精确的提示
模糊的请求如"改进这个代码库"会触发大范围扫描。精确的请求如"为 auth.ts 中的 login 函数添加输入验证"让 CodeBuddy Code 能够以最少的文件读取高效工作。
复杂任务的高效工作方式
对于较长或更复杂的工作,以下习惯有助于避免因走错方向而浪费 Token:
- 复杂任务使用计划模式:按 Shift+Tab 进入计划模式。CodeBuddy Code 会探索代码库并提出方案供你批准,避免初始方向错误时的昂贵返工。
- 尽早纠正方向:如果 CodeBuddy Code 开始走错方向,按 Escape 立即停止。使用
/rewind或双击 Escape 将对话和代码恢复到之前的检查点。 - 提供验证目标:在提示中包含测试用例、截图或预期输出。当 CodeBuddy Code 能够自我验证工作时,它可以在你需要请求修复之前发现问题。
- 增量测试:写一个文件,测试它,然后继续。这样可以在问题还容易修复时尽早发现。
后台 Token 消耗
CodeBuddy Code 在空闲时也会为某些后台功能消耗 Token:
- 对话摘要:后台任务会为
--resume功能摘要之前的对话 - Prompt 预测:根据历史对话信息推测下一条最有可能的 Prompt 输入
这些后台进程即使没有活跃交互也会消耗少量 Token。
相关文档
本文档帮助您了解如何有效管理 CodeBuddy Code 的使用成本。