最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
开源 Coding Agent 如何控制并行任务的 Token 成本?
时间:2026-09-13 13:32:01 编辑:袖梨 来源:一聚教程网
开源 Coding Agent 控制并行任务的 Token 成本,核心不是限制并发数量,而是避免每个 Agent 重复读取同一批代码、日志和项目说明。可行架构是让任务继续在独立工作区运行,同时共享一份本地代码索引,并为每个任务设置明确的上下文预算、检索范围和停止条件。
先分清并行带来的三类消耗
并行 Agent 的总成本不只来自模型输出。每个会话在开始工作时通常会重新读取目录、搜索符号、打开配置文件并总结项目结构,这些重复输入会快速放大上下文 Token。工具调用结果、失败日志和长时间保留的对话历史也会继续占用后续轮次。
| 成本来源 | 常见表现 | 优先控制方式 |
|---|---|---|
| 重复探索 | 多个 Agent 分别扫描相同目录和文件 | 共享本地索引与结构化项目事实 |
| 上下文膨胀 | 完整文件、日志和历史反复进入提示 | 按需检索、摘要和结果引用 |
| 无效迭代 | 任务边界模糊,多个 Agent 做同一件事 | 明确所有权、验收条件和停止规则 |
隔离写入,但共享只读知识
并行任务应各自使用独立 Git worktree 和分支,防止文件修改互相覆盖;代码知识则不必随会话复制。主进程可以为仓库建立一份本地索引,记录文件路径、符号、调用关系和可检索文本,再通过统一查询工具提供给所有 Agent。
这种设计把“代码是否会冲突”和“上下文是否要重复构建”拆开处理。worktree 负责写入隔离,共享索引负责减少重复读取。索引必须包含提交版本或内容哈希,Agent 切换到不同基线后只复用仍然有效的条目,不能把旧分支事实当成当前代码。
让检索结果替代整库重读
共享索引不应一次性把整个知识图塞进提示。Agent 先提交符号、路径或问题描述,检索层只返回少量高相关片段及其来源位置;需要更多上下文时再展开。通过 MCP 等稳定工具协议暴露检索能力,可以让不同 CLI Agent 使用同一份本地知识,而不用为每种模型重写集成。
返回内容应优先包括定义位置、直接调用者、相关测试和最近修改点。大文件只返回命中的局部片段,完整工具输出保存到本地产物中,并在模型上下文里留下摘要和引用标识。这样可以减少输入量,又保留回查证据。
为每个任务建立独立预算
调度器应为任务记录输入 Token、输出 Token、工具调用次数、读取文件数和已用轮次,并设置软预算与硬预算。达到软预算时触发摘要、缩小检索范围或要求 Agent 重新陈述剩余计划;达到硬预算时停止自动迭代,保留当前分支、会话和验证结果。
任务预算 = 输入上限 + 输出上限 + 工具调用上限 + 最大轮次
软阈值:压缩历史并重新规划
硬阈值:停止执行并保存可恢复状态
预算应按任务复杂度分配,而不是所有 Agent 使用同一个固定值。只改文案的任务不需要整库索引,跨模块重构则可以获得更高检索额度。调度器还要检测相同查询、相同文件读取和相同工具参数的连续重复,及时中断无进展循环。
减少任务之间的重叠
并行前先把工作拆成互斥交付物,例如一个 Agent 修改认证逻辑,另一个补测试,第三个只做安全审查。每个任务要写明允许修改的路径、依赖输入、预期产物和验收命令。若两个任务需要修改同一核心文件,应改为先后执行,或指定唯一写入者,其余 Agent 只提交建议。
消息队列也要避免在 Agent 尚未完成当前轮次时不断追加零散指令。把相关要求合并为下一条结构化消息,可减少模型反复恢复上下文和重新规划的成本。
缓存必须可失效、可审计
共享摘要和索引只能缓存稳定事实。文件发生修改后,应按路径、符号依赖或提交哈希使相关条目失效;测试结果、构建错误和运行日志则绑定到执行环境与时间,不能长期当作当前状态。Agent 使用缓存时要能追溯到原文件和版本,便于发现过期结论。
安全边界同样不能因为共享而放宽。知识图和检索服务保持只读,各 Agent 的写文件、运行命令和推送操作仍在自己的权限与 worktree 中执行。共享的是经过索引的项目知识,不是会话密钥、私有提示或未授权目录。
用对照实验验证是否真的省成本
不要只看供应商或宣称的节省比例。选择一组固定任务,分别运行“每个 Agent 独立探索”和“共享索引按需检索”两套流程,记录总输入 Token、工具调用数、完成时间、测试通过率和人工返工次数。只有在结果质量相当时,Token 降低才有意义。
还应单独测量索引构建时间、增量更新延迟和误召回率。若为了少读文件而频繁返回无关片段,模型可能用更多轮次纠正方向。最终目标是让每个 Agent 获得完成当前任务所需的最小充分上下文,而不是单纯追求最短提示。