Harnessing LLM Agents with Skill Programs
将代理技能升级为可执行程序函数:HASP 框架
🧭 Agent 技能可执行化 · Program Function
New York University · Salesforce AI Research
把 LLM Agent 的已知技能从被动文本变为可触发、可干预状态-动作的 Program Functions,实现推理时修正、后训练监督与技能库自进化。
📌 工作参考价值
- 推理时动作硬修正:将常见失败模式(如过早终止、实体混淆)编码为 Program Function,在 Agent 循环中直接改写动作或注入纠正上下文,而不是只放入 Prompt 作为建议。这一思路可直接用于电商搜索 Agent 的多步推理,例如当检测到搜索结果过少时强制改写 Query,或在提交订单前强制检查库存。
- 结构化干预信号用于数据筛选:每个 PF 介入记录包含时机、模式、正确性、结果四维评分,作为轨迹质量权重叠加在任务奖励上。在构建离线对话或搜索轨迹数据时,可借鉴这种多维质量打分,提升 SFT/拒绝采样数据的有效性。
- 技能库演化需严格过滤:候选 PF 必须通过语法与模拟执行验证及教师审核才能入库,否则会严重损害性能(全过滤 60.3% vs 无过滤 36.3%)。在业务中构建可进化的策略库或规则库时,必须设计类似的自动化校验与人工审核门槛,避免技能“污染”。
- 内部化行为纠正 PF 更有效:训练后,那些纠正模型自身行为(如搜索不充分、查询过长)的 PF 会逐渐沉默,而与输入相关的 PF 仍激活。这提示我们可以有选择地只对高频行为错误进行强制干预,并进行针对性训练来内化,从而降低上线时的判断开销。
动机
现有 Agent 系统将经验总结为文本技能注入 Prompt,但文本技能是被动建议,未规定何时触发、如何修正动作,实际执行中常被模型忽略。为了弥合“经验表述”与“可靠行为控制”之间的差距,需要一种能将技能转化为可执行干预的机制。
方法关键点
- Program Function (PF):每个技能被封装为一个 PF,包含
should_activate(判断是否触发)和intervene(执行动作改写或上下文注入),直接插入 Agent 推理循环。 - 推理时 Harness:基础策略提议动作后,检索相关 PF,评估激活条件,若激活则修改动作或注入纠正性上下文,无关时原动作通过。
- 结构化监督信号:每次 PF 介入记录时机、模式、正确性、结果四维得分,组合成轨迹质量指标,用于后训练数据筛选。
- 后训练内化:支持 SFT(直接学习矫正动作)、拒绝采样(按任务成功与 PF 得分选择轨迹)、在线蒸馏(用教师轨迹纠正学生行为)。
- 技能库自进化:从剩余失败中总结候选 PF,经过可执行验证与教师审核双重过滤后入库,防止技能污染。
关键实验结果
– 在 Qwen2.5-7B-Instruct 上,仅推理时 PF 介入(无训练)在 Web 搜索推理平均准确率从 ReAct 的 31.2% 升至 51.0%(提升 25 个百分点),加教师选择升至 56.2%。
– 固定技能库下,PF 引导的拒绝采样达 59.3%,在线蒸馏达 62.5%;引入进化后,PF-Evolve + RS 达 60.3%,数学推理从 38.8% 提至 45.4%,编码平均 pass@1 从 63.4% 提至 69.9%。
– 消融表明,去除时机、模式、正确性、结果任一信号平均下降 12~15.5 个百分点;无过滤技能进化致使性能暴跌至 36.3%。
– PF 介入 65.1% 为直接动作改写,主要集中在分解复杂问题、探索不充分等高频技能,内部化更多发生在行为纠正类 PF。
一句话价值
“将 Agent 技能转化为确定性、可审查的状态–动作干预函数,并配套多维质量信号与严格过滤机制,让经验真正‘掌控’行为,而不仅仅是‘建议’。”