上下文管理的重要性,以及 Harness 编程的注意事项

AI Agent 的能力正在从“回答问题”走向“自动执行任务”。它可以读文件、改代码、运行命令、搜索资料、分析报错,甚至连续多轮自主推进任务。这种模式极大提升了效率,但也引入了一个容易被忽视的问题:上下文管理

很多用户以为 AI Agent 的成本主要取决于使用时间。实际上并不是。真正决定成本和稳定性的,往往是:

模型调用次数 × 每次携带的上下文长度 × 模型单价 × 工具调用结果规模

这意味着,一个看似只运行了 10 分钟的任务,如果后台执行了几十次工具调用,并且每次请求都携带越来越长的历史内容,就可能在短时间内消耗大量资源。

一、一个真实案例:10 分钟消耗过半积分

这次讨论来自一个真实使用场景。

用户以 198 元购买了 WorkBuddy 一个月会员,会员权益折算为约 2000 积分。随后用户在腾讯 CodeBuddy / WorkBuddy 中执行了一个 AI Agent 编程任务。任务持续时间并不长,大约 10 分钟,但积分账单中出现了 3 次较大的扣分,短时间内消耗了超过一半积分。

用户提交工单后,客服给出的初步解释是:系统日志显示这是正常积分消耗,消耗高的原因主要包括:

1. 操作频次高:短时间内 AI 自动执行了 70 余次工具调用,包括文件修改、命令执行、搜索等。
2. 上下文累积:对话持续未中断,每次请求携带的历史上下文从几千 Token 累积到 10万+ Token,导致单次请求成本急剧上升。
3. 模型成本差异:该时段主要使用了 glm-5.1,积分单价较高。

从用户角度看,问题在于:用户只是提交了一个任务,并不知道后台会自动拆成 70 多次工具调用,也不知道上下文会累积到 10万+ Token,更不知道使用的是高积分单价模型。

因此,这个案例的重点不是简单判断“平台有没有扣错费”,而是揭示了 AI Agent 产品中的一个核心风险:

用户感知到的是一个任务;
系统实际执行的是一串自动化循环;
账单计算依据的是多轮模型调用、工具结果和上下文长度。

如果 Agent 的执行过程不可见、成本不可预估、上下文增长不可控,即使每一次底层调用都符合计费规则,整体体验也可能超出用户的合理预期。

二、这个案例可能哪里失控了

如果客服描述属实,这次高额积分消耗最可能不是由“10 分钟使用时间”造成的,而是由以下几个因素叠加造成的。

1. Agent 循环过密

AI 编程 Agent 通常会经历这样的循环:

理解任务
读取项目结构
读取相关文件
制定修改方案
修改文件
运行命令或测试
读取报错
再次修改
再次验证
总结结果

每一步都可能触发模型请求和工具调用。客服提到 10 分钟内出现 70 余次工具调用,说明后台自动执行密度很高。

这不一定代表系统异常,但如果没有工具调用上限、预算阈值和暂停确认机制,就容易出现成本失控。

2. 上下文滚雪球

客服提到上下文从几千 Token 累积到 10万+ Token,这是最关键的信号。

在 AI Agent 中,上下文不只是聊天记录,还可能包括:

用户需求
历史对话
任务计划
文件内容
搜索结果
命令输出
报错日志
代码 diff
工具调用记录
模型中间状态

如果系统每一轮都把这些内容完整带入模型,而不是做摘要、截断、去重和索引,那么上下文会不断膨胀。到了后期,即使用户没有继续输入很多内容,Agent 内部每一次模型调用也会变得非常昂贵。

这也是为什么 3 次大额扣分可能集中出现在任务后半段:当上下文已经累计到很大时,单次请求的输入成本会明显升高。

3. 工具结果可能被重复注入

代码类 Agent 最容易消耗 Token 的内容包括:

大文件全文
目录扫描结果
搜索结果
测试日志
报错堆栈
代码 diff
多轮工具调用历史

如果 Harness 没有对这些内容做压缩和去重,而是持续把它们塞回模型上下文,就会形成“信息越查越多、每步越来越贵”的局面。

4. 高价模型全程参与

客服提到该时段主要使用了 glm-5.1,积分单价较高。

成熟的 Agent 系统通常应该区分任务阶段:

低价模型:分类、摘要、日志提取、简单判断
中档模型:常规代码修改、普通问答
高价模型:复杂架构决策、关键代码生成、疑难问题分析

如果整个链路都使用高价模型,尤其是在上下文达到数万甚至 10万+ Token 时,成本会快速上升。

5. 缺少用户侧刹车机制

这次案例最值得关注的是用户侧不可见、不可控、无预警。

合理的 Agent 产品,在出现以下情况时应该提醒或暂停:

本任务已调用工具 30 次
本任务上下文已超过 50k Token
预计继续执行将消耗大量积分
当前正在使用高价模型
是否继续?

用户提交一个任务,不等于授权系统无限制拆解、调用和消费。透明的确认机制,是 Agent 产品信任感的基础。

三、上下文管理的核心价值

上下文管理不是简单地“记住更多内容”。恰恰相反,好的上下文管理应该知道:

什么必须保留
什么应该摘要
什么可以丢弃
什么只需要引用位置
什么需要重新读取

一个成熟的 AI Agent 系统,应该避免把所有历史内容无差别塞进模型。它需要像一个优秀工程师一样管理工作记忆。

好的上下文管理至少包括几类能力:

压缩:把旧对话和工具结果总结成短摘要。
截断:对过长日志、搜索结果、命令输出进行限制。
去重:避免重复注入同一个文件、同一段日志、同一次搜索结果。
索引:只把相关代码片段送入模型,而不是整个项目。
分层:区分任务目标、当前状态、历史记录和临时信息。
预算:根据 Token 数、工具调用次数、模型价格控制成本。

上下文管理做得好,Agent 会更稳定、更便宜、更可控。上下文管理做得差,Agent 就容易出现三类问题:

成本暴涨
执行跑偏
响应变慢

四、Harness 编程是什么

这里的 Harness,可以理解为围绕大模型构建的一层“执行框架”或“控制系统”。

模型本身只负责理解和生成,但 Agent 要真正完成任务,还需要 Harness 来管理:

什么时候调用模型
什么时候调用工具
调用哪些工具
工具结果如何返回给模型
上下文如何组织
任务何时暂停
成本如何限制
失败如何重试
用户何时确认

简单说:

LLM 是大脑
Tools 是手脚
Harness 是神经系统和安全控制器

很多 Agent 产品的差异,不只在模型强弱,更在 Harness 设计是否成熟。

一个模型很强,但 Harness 设计不好,也可能出现疯狂调用工具、反复读取文件、上下文无限膨胀、成本不可控的问题。

五、Harness 编程的关键注意事项

1. 必须设置执行预算

Agent 不能无限制自动运行。Harness 应该支持明确预算,例如:

最多调用模型 N 次
最多调用工具 N 次
最多消耗 N 个 Token
最多运行 N 分钟
最多消耗 N 积分

一旦接近预算,就应该暂停并让用户确认。

没有预算控制的 Agent,本质上就是一个可能无限循环的自动化程序。

2. 工具调用要有上限和目的

工具调用不是越多越好。每次工具调用都应该有明确目的:

为什么要读这个文件?
为什么要再次搜索?
为什么要重新运行命令?
这次调用能否改变决策?

如果连续多次工具调用没有带来新信息,Harness 应该判断为低收益循环,并暂停。

常见风险包括:

反复读取同一批文件
反复运行同一个失败命令
反复搜索相似关键词
反复修改同一段代码

这些行为会快速消耗上下文和费用。

3. 工具结果不能原样无限注入

命令输出、日志、搜索结果、文件内容都可能非常长。Harness 不应该把它们完整塞进上下文。

更合理的做法是:

只保留关键错误行
只摘取相关代码片段
只摘要搜索结果
只记录文件路径和变更摘要
长日志默认截断
重复内容引用历史摘要

例如测试失败时,不必把几千行日志全部交给模型。通常只需要:

失败测试名称
错误类型
关键堆栈
相关文件路径
最近一次代码变更

4. 上下文应该分层管理

一个好的 Agent 上下文不应该是一大坨聊天历史,而应该是结构化状态。

可以分成:

任务目标:用户到底要完成什么
当前计划:下一步要做什么
项目事实:已经确认的信息
变更记录:改了哪些文件
问题记录:遇到了什么错误
短期上下文:当前这一步需要的文件片段
历史摘要:之前发生过什么

这样模型每次只读取当前需要的内容,而不是拖着完整历史前进。

5. 高价模型要谨慎使用

不是所有步骤都需要最强模型。

合理的 Harness 应该能根据任务阶段选择模型:

低价模型:分类、摘要、日志提取、简单搜索判断
中档模型:常规代码修改、普通问答
高价模型:复杂架构决策、关键代码生成、疑难问题分析

如果整个 Agent 链路都使用高价模型,尤其是在上下文已经达到数万甚至 10万+ Token 时,成本会非常高。

6. 必须有用户确认机制

当 Agent 即将执行高成本、高风险或不可逆操作时,应该暂停确认。

例如:

工具调用超过 30 次
上下文超过 50k Token
预计消耗超过某个积分阈值
准备使用高价模型
准备批量修改文件
任务运行时间异常增长

用户只提交了一个任务,不代表授权系统无限制拆解、调用和消费。

透明的确认机制,是 Agent 产品信任感的基础。

六、给使用者的经验

这次 WorkBuddy / CodeBuddy 的案例给普通用户和开发者都提供了直接经验。

第一,长任务拆短。

不要把“帮我完成整个项目”交给 Agent 一路跑到底。更稳的方式是:

先分析问题
再制定方案
再修改一个模块
再运行测试
最后总结

第二,先让它计划,不要直接执行。

可以明确说:

先分析,不要修改文件。
先列计划,不要执行命令。
每一步执行前说明原因。
超过 10 次工具调用请暂停。

第三,长会话要及时重开。

如果一个会话已经跑了很久,里面有大量文件、日志、修改记录,后续每一步都可能更贵。阶段完成后新开会话,往往更干净、更省成本。

第四,关注模型选择。

如果任务不复杂,不要默认使用最高价模型。尤其是 Agent 自动执行时,高价模型配合长上下文,消耗会非常快。

第五,要求平台提供明细。

合理的平台应该提供:

模型名称
input token
output token
cache token
工具调用次数
每次调用时间
积分单价
扣费公式
上下文压缩情况
异常重试记录

没有这些信息,用户无法判断消耗是否合理。

第六,发生争议时要抓住三个关键词:

不可见:用户看不到后台每次调用、Token、单价。
不可控:用户没有逐次确认高频工具调用和高价模型使用。
无预警:积分快速消耗时没有暂停或二次确认。

这三个关键词,比单纯说“扣费太贵”更能指出 Agent 产品设计中的问题。

七、结论

AI Agent 的真正难点,不只是让模型更聪明,而是让整个执行系统更可控。

这次案例说明,用户看到的是一个短时间任务,但平台内部可能已经发生了高频工具调用、长上下文累积和高价模型调用。只要 Harness 缺少上下文压缩、工具调用限制、成本预算和用户确认机制,即使底层计费规则没有错误,用户体验仍然可能是不透明和不可控的。

未来优秀的 AI Agent 产品,应该不只是“能做事”,还要做到:

知道自己在做什么
知道什么时候该停
知道哪些信息该保留
知道哪些成本需要提醒用户
知道什么时候必须请求确认

对于开发者来说,编写 Harness 时要把模型当成一个昂贵但强大的执行单元,而不是无限免费的函数调用。

对于用户来说,使用 Agent 时也要意识到:真正贵的不是时间,而是自动循环、长上下文和高价模型叠加后的成本。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐