简介:本文对比Agent脚手架“持续堆叠模块”与“基于显著性剪枝”两种路线,解析SHARP如何在不逐一穷举组合的前提下识别冗余模块。读者将理解两类方案在成本、成功率、维护复杂度上的差异,并掌握剪枝适用边界、评估方法与迁移注意事项。
在真实任务中,Agent出错几乎是常态。工程师的第一反应通常是给外层脚手架“打补丁”:加一条防错提示词、接入一个新工具、挂一套技能包,或者补充历史摘要与执行检查。这套负责协调模型调用、工具执行与上下文管理的外层系统,就是Agent Harness(下文统称脚手架)。
问题在于,脚手架越补越复杂,提示词越写越长,模块越堆越多,而旧模块很少被删除。于是形成一种典型的工程惯性:修改脚手架比重新训练模型方便得多,所以大家倾向于只加不减。但新增模块真的让Agent变强了吗?有些模块确实提升了任务成功率,有些只是额外消耗Token,甚至干扰了Agent原本正确的执行流程。
这就引出了本文要对比的两条路线:
原始研究来自加州大学圣塔芭芭拉分校、MIT-IBM Watson AI Lab与Adobe Research等机构,对四套知名脚手架进行了系统测试。在统一使用某122B级MoE模型、五个评测场景的条件下,四套脚手架都能通过剪枝在保持相近任务表现的同时减少至少10%的Token开销。其中一个典型案例是:某脚手架在某一通用Agent基准上,剪掉27个模块中的24个后,成功率反而从29.44%提升到35.00%,Token消耗下降27.4%。
比数字更值得关注的是方法论:SHARP到底怎么判断哪些模块该删?如果你自己维护着一个装有几十个技能、工具和复杂提示词的Agent,能不能用同样的思路找出那些白白消耗Token的模块?又怎么在不测试所有模块组合的前提下,找到更省钱甚至表现更好的脚手架?
传统堆叠式脚手架的核心逻辑是“增量修补”。它假设任务失败可以通过增加约束或能力来修复,因此模块数量随时间单调增长。其典型组成包括:系统提示词、防错提示、工具集、技能包、历史摘要、执行检查器、终止判断器等。
它的优势是上手快、改动局部、风险看似可控;劣势是缺乏全局视角,模块之间可能相互干扰,且没有机制回答“这个模块到底值不值它的Token成本”。
剪枝式脚手架的核心逻辑是“显著性评估”。它借用了神经网络剪枝的类比:神经网络领域通过权重大小、梯度等指标判断哪些参数不重要并移除,以减少模型冗余。但直接把这一思路搬到Agent脚手架上会遇到两个麻烦,SHARP的设计正是围绕这两个麻烦展开的。
麻烦一:删掉模块,Token消耗反而可能更多。 例如一个Agent原本有专门判断任务是否完成的工具,完成后就停止运行。如果删掉这个工具,Agent可能已经找到正确答案却仍不断搜索、调用工具,白白浪费Token。
麻烦二:模块之间存在耦合,不能孤立评估。 历史摘要模块本身就消耗Token,但它能缩短后续对话的上下文。删掉它,Agent每次调用模型都可能重新读取大量历史记录,最后反而花更多Token。这意味着单个模块的“表面成本”与其“系统级贡献”可能完全相反。
因此,剪枝路线要解决的不是“哪个模块看起来没用”,而是“在整体执行轨迹中,哪个模块对最终结果的边际贡献低于其Token成本”。
尽管方法迥异,两条路线在以下方面是一致的:
换句话说,两者不是“要不要优化”的分歧,而是“用什么信号来驱动优化决策”的分歧。
传统堆叠依赖工程师的经验与直觉:某个任务失败了,就针对性地加一条提示或一个工具。这种决策是局部的、反应式的,缺乏对模块全局贡献的量化。
SHARP路线则试图建立显著性度量:通过系统化测试观察模块移除前后对任务表现与Token消耗的影响,把“该不该删”从主观判断转为可复现的实验结论。这与神经网络剪枝的精神一致——用可测量的重要性指标替代拍脑袋。
这是两者最本质的差异之一。脚手架若有几十个模块,理论上存在指数级的模块组合,逐一测试所有组合不可行。
这里的关键工程含义是:剪枝把“组合优化问题”转化为“模块重要性排序问题”,用排序替代穷举,从而把不可行的搜索变成可行的工程流程。
| 维度 | 传统堆叠式脚手架 | 剪枝式脚手架(SHARP路线) |
|---|---|---|
| 直接成本 | 模块越多,提示词越长,Token开销持续上升 | 剪枝后Token开销下降,案例中降幅可达两位数百分比 |
| 隐性成本 | 冗余模块干扰执行流程,可能降低成功率 | 移除干扰模块后成功率可能不降反升 |
| 评估成本 | 几乎不做系统评估,问题被掩盖 | 需要投入测试预算来评估模块贡献 |
| 长期维护 | 模块只增不减,维护复杂度单调上升 | 形成可复用的剪枝流程,维护有据可依 |
需要强调的是,剪枝并非免费:它需要测试成本。但从案例看,某脚手架剪掉27个模块中的24个后成功率从29.44%提升到35.00%、Token下降27.4%,说明测试投入可以换来持续的系统性收益。
传统堆叠的风险是“模块相互干扰”和“上下文污染”:过长的提示词、过多的工具描述会稀释模型注意力,防错提示可能让Agent过度保守。
剪枝路线的风险则是“误删关键模块”与“成本反弹”:如前述终止判断工具和历史摘要模块,孤立看是成本项,系统看却是省Token的关键。这要求剪枝方法必须考虑模块间的耦合,而不是简单地按单模块成本排序。
| 对比维度 | 传统堆叠式脚手架 | 剪枝式脚手架(SHARP路线) |
|---|---|---|
| 核心方法 | 增量打补丁 | 显著性评估后移除低贡献模块 |
| 决策信号 | 经验、直觉、单点失败 | 模块移除前后的任务表现与Token变化 |
| 搜索方式 | 不搜索,单向增长 | 用重要性排序替代组合穷举 |
| Token趋势 | 持续上升 | 下降,案例中至少10%,个别达27.4% |
| 成功率趋势 | 不确定,可能被冗余拖累 | 可保持相近,个别场景不降反升 |
| 主要风险 | 模块干扰、上下文污染 | 误删关键模块、成本反弹 |
| 测试投入 | 低 | 中高,需可复现评测 |
| 维护复杂度 | 单调上升 | 有流程可依,趋于可控 |
场景一:原型验证期的Agent。 模块少、迭代快,优先用传统堆叠快速试错,此时剪枝的测试开销不划算。
场景二:已上线且Token成本敏感的Agent。 脚手架模块数已达数十个,提示词冗长,此时应引入剪枝思路,先建立可复现评测集,再评估模块贡献。
场景三:多任务共用一套脚手架。 需要按任务维度分别评估模块显著性,避免在任务A上冗余的模块在任务B上却是关键。
场景四:任务分布频繁变化。 剪枝结论有时效性,应把剪枝作为周期性流程而非一次性动作。
传统堆叠式脚手架与剪枝式脚手架的分歧,本质是“用什么信号决定模块去留”。前者用经验与局部失败驱动单向增长,门槛低但容易积累隐性Token浪费与执行干扰;后者用显著性度量驱动系统性移除,需要测试投入,却能在案例中实现Token下降至少10%、个别场景成功率不降反升。
对维护着几十个技能、工具与复杂提示词的Agent团队而言,更务实的路径不是立刻全面剪枝,而是先建立可复现评测,再用模块显著性排序替代组合穷举,把“哪些模块该留、哪些该删”从直觉判断变成可验证的工程决策。脚手架不是越厚越聪明,能被度量、能被裁剪的脚手架,才更接近可持续的工程实践。