ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LLM Agent能力进化评测:从单次准确率到持续技能

LLM Agent能力进化评测:从单次准确率到持续技能 看到“ContinualSkillBench: Can LLM Agents Truly Evolve Their Capabilities?”这个题目时我第一反应不是去找论文地址而是想到一个很典型的工程场景你花了一周时间把某个 LLM Agent 的任务成功率从 50% 调到 85%感觉很满意。第二周产品提了新需求你加入一个新工具结果 Agent 在旧任务上的表现立刻掉回 60%。你开始怀疑是提示词污染还是模型上下文太长还是工具调用顺序出了问题。但你很难证明它到底“退化”在哪一步。这个场景恰好是 ContinualSkillBench 这类题目真正想回答的问题LLM Agent 能不能在持续接触任务的过程中真正积累能力而不是每次都在同一个水平线上反复横跳。这篇文章不打算只复述一个基准的名字。我会从“Agent 能力进化到底意味着什么”出发拆开这个题目背后真正的评测难点再落到我们自己开发和使用 Agent 时能用上的判断标准、排查思路和工程建议。1. 从单次成功率到持续演进Agent 评测正在换问题1.1 为什么“这次答得不错”不等于“能力变强了”大多数人对 LLM Agent 的能力判断来自单次任务的完成质量。输入一个问题Agent 调工具、组织答案、输出结果看起来对那就认为它能力可以。这种判断方式很自然但它混淆了两个完全不同的概念单次执行的准确率和系统能力的持续增长。单次执行反映的是“在给定上下文和工具下模型能不能处理当前请求”。它依赖提示词、示例、工具描述、上下文窗口里的历史信息甚至模型当时的随机性。而能力进化意味着Agent 在处理完一个任务后留下来的东西不仅仅是一条日志而是一种可复用的、能够迁移到未来任务中的技能。举个例子。一个 Agent 第一次被要求把 Markdown 表格转成 CSV它靠提示词里的示例勉强完成了。第二次再遇到类似转换它不应该再从零开始学一遍更不能因为上下文里没写示例就失败。真正的“能力变强”是它对这类任务已经有了一种稳定的处理模式——要么固化成了工具脚本要么形成了技能描述要么至少学会了主动询问表格结构。ContinualSkillBench 这个项目名里最值得注意的词不是 Skill而是 Continual。它把评测对象从“单任务能力”变成了“持续学习能力”这完全是两个评估维度。1.2 传统基准测的是“记忆”不是“进化”现在很多 Agent 基准本质上测的是回忆能力或者说是信息检索和指令遵循能力。给一个任务看 Agent 能不能正确完成。任务之间通常彼此独立没有依赖关系前一题的结果不会影响后一题Agent 也不需要从一个任务的经验中学习出通用方法。这种评测有一个隐藏假设所有任务都是静态的Agent 的世界不会变化。但真实世界里任务永远在变业务规则会更新工具接口会升级用户提问方式会变化数据分布会漂移。静态基准测不出 Agent 在这种环境下的稳定性更测不出它能不能把旧经验迁移到新任务上。所以在实践中越来越多的人发现一个 Agent 在 benchmark 上分数不低但放进真实业务里用几周就越来越不靠谱。原因之一就是它没有持续学习能力也没有遗忘控制机制。我们看到的“变强”经常只是外部给它堆了更多提示词和更多上下文而不是它自己积累了能力。如果一个基准真的叫 ContinualSkillBench那么它的核心问题就不该是“Agent 能完成多难的任务”而应该是当 Agent 按顺序接触一系列任务后它的技能库有没有变大它在新任务上的表现有没有因为旧经验而变好它在学新技能时有没有丢掉旧技能。这是一个完全不同的评测逻辑也更能反映一个 Agent 能不能在真实产品里长期存活。2. 拆解“能力进化”一个 Agent 要具备哪三种行为2.1 经验固化把一次性解法沉淀成通用技能“进化”的第一步是 Agent 能从一次具体任务中提取出可复用的东西。这一步在人类学习里很常见你做过一次 PPT下次再做就熟练了。但 LLM Agent 默认没有这个机制。Agent 的每次调用如果没有额外的记忆层、技能库或者外部存储它面对新请求时和第一次面对请求时没有本质区别。它所谓“变强”只发生在单次对话内部上下文里多了历史消息它知道刚刚做过什么。但对话一结束这个上下文就消失了。所以如果一个 Agent 真的想持续演进它至少需要做到每次完成一个任务后把这次解决过程中最有效的步骤、工具组合、判断规则记录成结构化信息。这种结构化的东西可以是文档、脚本、配置文件也可以是让它自己能检索的技能描述。现实里很多团队已经在这个方向做了半自动化的尝试。比如让 Agent 把一次有效的工具调用序列保存下来下次遇到相似任务时先检索这个序列再决定要不要复用。这种做法的本质就是“经验固化”。ContinualSkillBench 如果真的评估持续能力它就应该设置一种场景Agent 在任务 A 里成功解决了一个问题任务 B 和它相似但不完全相同看 Agent 会不会主动提取并迁移 A 的经验。如果 Agent 每次都表现得好像第一次见那不管正确率多高都不算有演进能力。2.2 迁移复用新任务可以调用旧技能经验固化之后下一步是迁移。所谓迁移不是让 Agent 把旧回答原样抄过来而是让它判断旧任务里的哪个技能适用于当前新任务哪些部分需要调整。这其实是很多 Agent 框架最难做好的地方。因为模型天然擅长“基于上下文生成”不擅长“主动去外部技能库检索”。你可以在系统提示词里写“请检索技能库”但如果 Agent 没有真正形成结构化的调用习惯这个指令不会稳定生效。更好的做法是让技能调用变成一种工具调用。把“查询技能库”“记录新技能”“更新旧技能”都设计成 Agent 可以主动调用的工具而不是依赖它在自由文本里自动想起来。这样做的好处是技能的使用和沉淀都有了明确的触发条件和日志记录。评估 Agent 是否真的在“进化”关键指标之一就是它的迁移效率。同一个 Skill如果 Agent 第一次需要 10 步才能完成第二次在相似任务里只需要 6 步第三次只要 4 步那说明它真的有在积累。如果每次都是 10 步说明它只是在重复执行并没有形成能力。2.3 遗忘控制学会新技能不能丢掉旧技能持续学习里有个经典问题叫灾难性遗忘。放在 AGI 语境下这是常识放在 Agent 里很多人反而忽略了。Agent 最常见的一种遗忘不是模型权重被覆盖而是上下文管理失控。比如为了支持新任务团队往系统提示词里加了大量新规则和工具说明结果把旧规则挤出了有效注意力范围或者 Agent 的技能库越来越大检索时总是命中最近加入的技能旧技能被淹没。另一种遗忘发生在工具层面。当 Agent 学会用新工具实现某个功能后它可能不再优先调用旧工具但旧工具在某些边界场景下仍然更可靠。如果没有明确的路由规则Agent 可能会固定选新工具导致旧场景质量下降。所以真正的“技能保持”不只是不丢失还包括在正确场景里仍然选择正确的方法。ContinualSkillBench 如果要评测这一点应该设计一种反向指标Agent 在学会任务序列后半部分的新技能后再回头测试前半部分的旧任务看能力是否保持稳定。能做到这一点的 Agent才算是真的在累积能力而不是在翻滚记忆。3. 从名字看 ContinualSkillBench 最可能评测什么3.1 任务序列的设计方式从“Continual”这个词来看这个基准应该会采用“任务序列”而非“任务集合”。这跟传统评测有个很明显的差异任务之间是有顺序、有依赖和有遗忘风险的。我判断它的评测流程很可能是这样的准备一系列彼此关联但难度递增的任务覆盖若干个技能簇。Agent 按顺序接触任务先完成早期任务再进入后期任务。中间可能会插入新的工具、新的约束或新的使用场景模拟真实系统不断变化的状态。最后不只评估 Agent 在最后一个任务上的表现还要重新测试它在早期任务上的表现。这种设计的意图就是模拟真实产品生命周期系统永远在加功能、改规则、换数据但你不能因为加了新功能就弄坏旧功能。任务序列的难度设计也会很重要。任务不能只靠模型已有的常识完成不然测不出“习得”过程。更合理的设计是任务里包含一些需要 Agent 从历史交互中才能总结出来的规则或者需要它通过工具调用才能发现的知识。这样Agent 只能靠持续积累才能做得更好而不是靠大模型预训练时已经知道的知识来“作弊”。3.2 指标不只是准确率评估一个持续学习系统不能只盯着一个最终分数。传统的准确率指标是静态快照而持续能力需要观察多个维度。如果这是一个合格的持续技能基准我预期它至少会追踪以下几类指标滚动准确率每个阶段任务刚学完时的表现反映的是“学习能力”。反向迁移学完后续任务后回到旧任务上的表现。这个值如果下降说明有遗忘。正向迁移接触早期任务的经验是否让学习新任务的成本下降。这个值如果提升说明技能有复用。学习曲线效率同一个技能簇内Agent 完成新任务所需步骤、失败次数、重试比率是否随经验增加而下降。这些指标合起来才能回答标题里的问题Agent 是不是真的在进化还是仅仅在靠更大的上下文强撑。顺便说一句这也是为什么评价这类基准时要格外小心。如果它只看最终任务的准确率那就很容易被提示词堆砌和长上下文掩盖问题。真正能说明持续能力提升的是那些跨任务、跨时间的指标而不是单点分数。3.3 评估难点怎么区分记忆复用和真正理解我觉得这个基准最终面对的难点不在于构造任务而在于“归因”。当一个 Agent 在后期任务里表现变好了我们怎么知道它变好是因为学到了可迁移的技能还是因为它只是把早期任务的答案记下来了这两种情况都给最终分数但含义完全不同。前者是泛化后者是记忆。解决这个问题通常需要设置一些“换皮任务”表面形式变了底层逻辑和早期任务相似。比如早期任务是处理 Markdown 表格后期任务变成处理 JSON 数组如果 Agent 只会记住格式那它换皮后就扑街如果它真理解了“把结构化数据转换成另一种结构化数据”的通用逻辑它就能继续工作。反过来也要设置一些“相似但不可复用”的任务防止 Agent 过度迁移。比如早期任务里某个规则只适用于特定业务域后期任务看起来相似但规则相反。这时候 Agent 如果分不清边界就会把旧规则错误地套到新任务上。这种错误恰恰是 Agent 系统在真实业务里最多的问题——不是不会而是乱套。所以持续技能评测的重点不是“难度”而是“区分度”能区分短期记忆、机械复用、真正理解和错误迁移。我们不能只看它成功了多少次还要看它为什么会失败以及它是怎么切换策略的。4. 这类基准对 LLM 应用的落地价值4.1 用来验证应用能否长期迭代对很多团队来说Agent 项目最危险的一刻不是上线第一天而是迭代三个月之后。功能越来越多技能库越来越杂系统提示词从 500 字膨胀到 5000 字最后没有人能解释为什么某个旧功能忽然变差了。ContinualSkillBench 这类持续评测的价值正是给“长期迭代”踩一脚刹车。你可以用它来构建一套观察指标把核心业务流程拆成若干任务序列每次迭代后都跑一遍追踪旧任务的表现有没有下降。这样发现问题就不再靠用户投诉而是靠回归测试。这其实和软件开发里的 CI/CD 回归测试逻辑一样。你改一行代码不能只检查新功能还要跑一遍旧用例。LLM Agent 应用更应该这样因为它比传统代码更不稳定更需要用评测来约束每一次改动。但注意这类基准的评估口径通常是为研究场景设计的。放到自己的项目里不要原封不动照搬你需要先把自己的业务任务整理成“技能簇”再定义“旧技能不退化”的阈值。这样才能让基准从论文工具变成工程工具。4.2 Agent 框架里如何实现持续技能累积如果你想让自己的 Agent 真正具备“技能累积”能力不管外部基准叫什么工程上最核心的一件事就是把技能当作一等公民而不是提示词的一部分。我比较推荐的做法是把技能拆成几个可管理的部分技能描述说明这个技能解决什么问题、适用边界、调用条件。技能流程保存成可运行的模板、脚本或工具定义。技能示例保留一到两个代表性的成功和失败案例。技能元信息记录创建时间、调用次数、最近使用时间、成功率等。然后让 Agent 通过工具主动管理技能库遇到新任务时先搜索技能库完成后判断是否有新技能需要记录过程中更新已有技能的使用统计。这样做最大的好处是每一步都有日志可以追踪 Agent 是在“成长”还是“重复”。在实现时可以用向量数据库存技能描述用常规代码库存流程模板再通过 Agent 的工具调用把它们串起来。技能搜索的召回质量很重要因为它直接影响 Agent 是选择复用旧技能还是宁可直接裸跑。4.3 别等基准公布再补能力先把日志和记录做起来研究基准的正式结果我们还不清楚但你可以立刻开始做一件事给你的 Agent 加上技能使用日志。现在的 Agent 框架记录了太多对话消息却太少记录工具级行为。你想要回答“Agent 有没有进化”必须先能回答“Agent 上一次遇到相似任务时是怎么处理的”“它这次和上一次有什么不同”。所以建议先建立这样的日志字段任务标识一个任务属于哪个技能簇。工具调用序列完成任务的完整路径。结果状态成功、失败、部分成功、人工修正。耗时和成本调用次数、token 消耗、运行时长。技能库命中情况这次任务有没有检索到旧技能有没有写回新技能。有了这些日志你才能在每周复盘时发现趋势是不是某些工具组合越来越稳定是不是技能库检索命中率在下降是不是某类任务的失败路径一直没变这些观察比任何单一分数都更能说明 Agent 是否在进化。5. 面向实践的排查链路与建议5.1 如果我发现 Agent 后续任务越做越差先按这个顺序查这个问题很容易被误判成“模型变笨了”。实际上模型权重没变变的是 Agent 的外围状态。我从工程经验看通常按以下顺序排查先看输入历史是不是上下文里积累了太多旧的工具输出导致模型注意力被噪声稀释。最常见先查。再看技能库检索是不是新增技能后检索排序把旧技能挤掉了或者旧技能被误判为不相关。再看提示词结构系统提示词是否被新规则平均化旧规则还在但优先级和明确性被削弱。再看工具定义新工具和旧工具的名字、描述是否相似模型可能误选新工具导致旧场景行为变化。最后看评测任务本身任务集合是否被污染比如旧任务的期望答案已经不符合当前业务规则。这个顺序的核心思想是先隔离“模型本身的问题”再检查“Agent 周边设施的问题”。大部分情况下问题出在上下文和工具管理而不是模型推理能力。5.2 用一个小型“技能追踪”清单来评估自己的 Agent你不一定非要跑完整的 ContinualSkillBench但可以做一个简化版用来评估自己的 Agent 是否具备持续能力。建议准备 8 到 12 个任务分成 3 个技能簇第一阶段只让 Agent 完成 A 簇任务。第二阶段加入 B 簇任务同时抽测 A 簇任务。第三阶段加入 C 簇任务同时抽测 A、B 簇任务。每个阶段记录四项数据当前任务成功率、旧任务回归率、平均工具调用步数、人工修正次数。判断标准很简单如果 B、C 加入后A 的成功率明显下降说明存在遗忘问题。如果同一技能簇内第二次出现类似任务时步数更少、成功率更高说明经验固化有效。如果新任务失败模式和旧任务高度相似说明技能库没有形成有效抽象。这个简易评测不严谨但足够帮你在功能迭代时发现退化趋势比“凭感觉觉得还行”可靠得多。5.3 真正的进化可能发生在上下文之外有一种情况需要注意。很多 Agent 在单次对话里表现得非常聪明它会自我纠正、会回顾前面步骤、会主动调整策略。这很容易让人误以为它具备持续学习能力。但实际上这只是模型在大上下文窗口里的短期推理能力。真正的“持续技能”必须发生在上下文之外。它一定要有一个外部化过程把经验写进某个可检索的结构里在下一个任务开始时能重新读取。没有这个外部化过程再长的上下文也只是临时的不会形成累积。所以在评估 Agent 的进化能力时可以做一个“冷启动测试”结束当前会话清空上下文只保留技能库记忆然后让 Agent 处理一个和上个会话相似的新任务。如果它还能稳定触发相关技能说明技能沉淀真的发生了。如果它表现得像失忆了一样那说明它只是吃到了上下文红利不是真正的进化。这个测试虽然简单却非常能说明问题。它在某种意义上也回应了标题一个只能靠长上下文扮聪明的 Agent和真正能把经验固化为技能的 Agent相差的不是准确率而是架构设计。5.4 落地这类能力时的资源与边界判断实现持续技能管理不是免费的它有明显的资源成本和维护成本。技能库的构建和清理需要投入人力。技能描述写得太具体复用范围窄写得太抽象Agent 容易乱套。你需要像维护代码库一样维护技能库定期删除失效技能合并重复技能标注哪些技能因为业务规则变化已经废弃。检索成本也会随技能库变大而上升。技能多了以后如果检索不做聚类和过滤Agent 每次任务都要在无关候选上浪费时间甚至被噪声干扰。常见做法是按技能簇索引或者先做粗粒度路由再在簇内做细粒度匹配。最后还要控制 Agent 对技能库的“写权限”。不是每一次成功执行都值得变成永生技能。你要设置写入门槛只有连续多次成功或者经过人工确认才能进入长期技能库。否则技能库很快就会变成垃圾堆反倒是更大的负担。所以如果你问我这个基准能不能直接帮我们把 Agent 做得更好我的回答是它可以帮我们建立正确的观察维度但真正让 Agent 进化起来的仍然是工程上的技能管理设计。基准给出的是测量尺子进化靠的是我们为 Agent 搭的那套积累机制。ContinualSkillBench 这类题目最大的价值是提醒我们停止用“单次成功”来安慰自己。Agent 能不能真正进化取决于我们有没有为它设计一套从经验到技能的转化通道以及一套能识别退化的评估方式。先把技能记录和回归测试做起来比等待某个基准发布更有实际意义。
返回列表