SkillProx:基于近端文本梯度下降的智能体技能自进化框架
论文原网页:https://arxiv.org/html/2608.07449v1
摘要
大语言智能体依靠技能(Skill)存储可复用流程化知识,技能以纯文本工件加载至上下文,无需微调模型权重。现有SkillGrad、EvoSkill等迭代优化方法仅采用开环更新逻辑:根据失败轨迹生成修改补丁后直接采纳,不验证修改真实收益;同时持续迭代会累积冗余、冲突规则,文本长度无限膨胀,引入大量干扰信息。
本文借鉴近端梯度下降(PGD)优化思想,提出SkillProx前后双阶段协同进化框架:
- 前向闭环诊断更新:每轮修改后在同批次任务重执行,以验证集精度作为门控,仅保留正向增益修改,失败修改回滚并作为反馈供给下一轮诊断;
- 后向近端收缩(Prox):将技能拆解为独立知识单元,留一法冻结效用审计筛选负收益模块,分层执行合并/删除操作,通过验证精度门控约束压缩幅度。
复合优化目标同时平衡任务精度与技能文本复杂度。在Spreadsheet(域内)、WikiTQ、HiTab(域外)三大表格问答基准,Qwen3.5-4B/27B、Qwen3.6-27B三类基座上完成对照实验:相比最优基线SkillGrad平均提升3.0个百分点,消融实验证明前向闭环、近端收缩两个模块具备互补增益。完整代码、数据集、复现脚本全部开源。
关键词:智能体技能、自进化、近端梯度下降、文本优化、表格问答、技能压缩
目录
1 引言
2 相关工作
3 预备知识与问题动机
3.1 问题形式化
3.2 实验动机:开环更新缺陷、冗余知识危害
3.3 近端梯度下降基础
4 SkillProx方法整体设计
4.1 框架总览
4.2 闭环前向更新模块
4.3 冻结效用审计与候选筛选
4.4 验证门控近端收缩Prox
4.5 工程实现权衡与性质
5 实验部分
5.1 实验环境、基准、基线方案
5.2 主实验全域性能对比
5.3 模块消融实验
5.4 精度-压缩权衡、模型尺寸细分分析
6 结论
参考文献
附录A 动机案例:负效用冗余带来精度下滑
附录B 算法复杂度、压缩-精度权衡理论推导
附录C 完整实验配置、环境参数
附录D 补充实验、阈值扫面结果
附录E 全套LLM提示词模板
附录F 完整复运行代码、训练调度脚本
1 引言
大语言智能体依靠工具调用、多轮推理完成复杂任务,为复用历史解决流程,业界将操作步骤、领域启发式规则封装为技能文本,推理时直接载入上下文,无需更新模型权重。
现有技能优化路线分为两类:一次性生成(Trace2Skill/EvoSkill)、迭代自进化(SkillGrad/SkillOpt)。但迭代进化方案存在两大底层缺陷:
- 开环无验证更新:仅根据失败轨迹生成修改方案,不重执行验证收益。看似合理的文本补丁实际会大幅降低任务准确率,且失败修改无法反馈给后续诊断流程;
- 无约束无限膨胀:每轮迭代新增规则,长期累积重复、冲突、仅适配单例的临时方案,上下文冗余严重,干扰模型推理,拉低泛化能力。
通过表格任务对照观测:直接开环进化平均精度50.3,增加执行验证闭环后提升至51.4;删除负效用知识单元可将46%基础精度提升至54%。基于两组实验现象,本文借鉴连续空间近端梯度下降思想,离散文本场景设计前后双阶段协同优化框架SkillProx。
本文四大核心贡献
- 将技能进化建模为「任务损失+文本复杂度」复合优化问题,指出现有方法缺失验证前向更新、结构化知识正则两大关键模块;
- 提出SkillProx完整流水线:闭环诊断前向更新+效用审计近端收缩,实现技能精度与长度联合优化;
- 在3类基座、3套表格基准完成充分对照,域内域外泛化均显著优于现有自进化基线;
- 完整消融实验验证双模块互补增益,开源全套可复现代码、数据集、提示词。
2 相关工作
2.1 一次性技能生成
Trace2Skill从交互轨迹蒸馏技能文本;EvoSkill迭代失败样例生成规则并简单验证。一次性生成受样本限制,在多分布任务上收益极不稳定,SkillsBench基准证明单轮生成甚至出现负向效果。
2.2 文本空间自进化优化
TextGrad、GEPA将梯度反馈引入提示词调优;SkillGrad、SkillOpt迁移至技能优化,通过轨迹损失生成文本修改。但全部采用开环设计,无执行验证回滚机制,也无专门的知识收缩正则流程,冗余规则持续累积。
2. 近端梯度下降PGD
连续优化中PGD分为前向梯度下降(最小损失)、后向近端算子(正则约束复杂度),本文将该范式映射至离散文本技能场景,设计可执行、可验证的文本近端收缩流程。
3 预备知识与问题动机
3.1 问题形式化
设完整技能工件KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲\mathcal{X}\)由主文档SKILL.md与引用资源文件夹构成,可行技能空间KaTeX parse error: Can't use function '\(' in math mode at position 10: \mathcal{\̲(̲\mathcal{X}\)};
KaTeX parse error: Can't use function '\(' in math mode at position 5: H_D(\̲(̲\mathcal{X}\)):数据集DDD硬指标精度;KaTeX parse error: Can't use function '\(' in math mode at position 5: C_D(\̲(̲\mathcal{X}\))单元格平均精度;
KaTeX parse error: Can't use function '\(' in math mode at position 3: G(\̲(̲\mathcal{X}\)):技能全文总字符长度,表征文本复杂度;
技能可拆解为互不重叠知识单元集合KaTeX parse error: Can't use function '\(' in math mode at position 13: \mathcal{Q}(\̲(̲\mathcal{X}\))=…;
优化目标为复合损失:
KaTeX parse error: Can't use function '\(' in math mode at position 7: \min_{\̲(̲\mathcal{X}\)\i…
LTL_\mathcal{T}LT为任务期望损失,λ\lambdaλ平衡精度与文本长度。文本离散不可微,SkillProx不直接数值求解,而是设计前向、后向两步近似优化流程。
3.2 核心动机实验
- 开环更新缺陷:十组Qwen3.6-27B对照,无验证开环平均精度50.3,增加同批次重执行闭环后51.4;大量仅文本合理的补丁落地后精度下跌;
- 冗余知识危害:技能单元留一法审计,大量模块移除后验证集精度上升;某案例压缩3.12%文本,精度从46%提升至54%。
3.3 近端梯度下降标准范式
标准连续PGD两步迭代:
vk=xk−η∇f(xk)xk+1=proxηλg(vk)=argminx{λg(x)+∥x−v∥222η} \begin{align*} v_k &= x_k - \eta \nabla f(x_k) \\ x_{k+1} &= \operatorname{prox}_{\eta\lambda g}(v_k) = \arg\min_x \left\{\lambda g(x) + \frac{\|x-v\|_2^2}{2\eta}\right\} \end{align*}vkxk+1=xk−η∇f(xk)=proxηλg(vk)=argxmin{λg(x)+2η∥x−v∥22}
- 前向:仅最小任务损失fff;
- 后向近端算子:加入复杂度正则ggg,约束解空间。
SkillProx对应映射:
- 前向闭环诊断:离散版梯度下降,用任务执行收益替代解析梯度;
- 近端收缩Prox:离散文本专用正则流程,审计并删除负效用知识单元。
| 维度 | 标准PGD | SkillProx离散文本实现 |
|---|---|---|
| 前向更新 | 解析梯度步 | 失败轨迹诊断+同批次重执行+精度门控回滚 |
| 后向近端 | 数值最小化正则 | 留一法效用审计、分层合并删除、验证精度约束 |
| 正则项 | L2距离惩罚 | 文本总字符长度约束、精度衰减阈值 |
4 SkillProx方法整体设计
4.1 框架总览
完整流水线分为两大阶段:
- 前向闭环迭代:多轮任务批次诊断、生成补丁、重执行验证,仅保留正向增益修改,产出中间技能KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲\mathcal{X}\)_f;
- 后向近端收缩:拆解知识单元、冻结效用打分、按阈值筛选候选,逐层压缩并校验精度,输出最终优化技能KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲\mathcal{X}\)^\…。
4.2 闭环前向更新
单轮迭代流程:
- 使用当前技能KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲\mathcal{X}\)_k执行训练批次BkB_kBk,收集成功、失败完整轨迹;
- 诊断模块结合历史回滚反馈生成多条修改候选KaTeX parse error: Can't use function '\(' in math mode at position 12: \widetilde{\̲(̲\mathcal{X}\)}_…;
- 每条候选在同一训练批次重执行,计算硬精度、单元格精度;
- 前向门控判定:仅当两项精度均不低于原技能才接纳修改:
KaTeX parse error: Can't use function '\(' in math mode at position 47: …d}}(\widetilde{\̲(̲\mathcal{X}\)}_… - 最多尝试3次修改,无满足条件候选则本轮技能不更新;所有失败补丁的精度损失、修改方向存入诊断历史作为下一轮输入。
4.3 冻结效用审计与候选筛选
前向输出KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲\mathcal{X}\)_f拆解为独立知识单元KaTeX parse error: Can't use function '\(' in math mode at position 13: \mathcal{Q}(\̲(̲\mathcal{X}\)_f…;
对任意单元qiq_iqi构造消融版本KaTeX parse error: Can't use function '\(' in math mode at position 23: …orname{Ablate}(\̲(̲\mathcal{X}\)_f…(完全删除该单元);
定义边际效用:
KaTeX parse error: Can't use function '\(' in math mode at position 44: …{hard}} &= H_V(\̲(̲\mathcal{X}\)_f…
ui<0u_i<0ui<0代表删除该单元后验证精度上升,属于负收益冗余模块;
设置筛选阈值τ=−0.001\tau=-0.001τ=−0.001,所有uicell<τu_i^{\mathrm{cell}}<\tauuicell<τ单元作为收缩候选,按效用升序遍历处理。
4.4 验证门控近端收缩Prox
遍历负效用候选单元,每次生成压缩试验文本TmT_mTm,双重约束:
- 结构合法、文本字符严格减少;
- 精度衰减上限:硬精度不降、单元格精度最多下降0.02;
- 全局压缩上限:相比KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲\mathcal{X}\)_f总压缩不超过10%。
满足全部条件则永久采纳该压缩,否则回滚试验版本;遍历全部候选后输出最终技能KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲\mathcal{X}\)^\…。
核心超参固定:δh=0,δc=0.02,ρ=0.10\delta_h=0,\delta_c=0.02,\rho=0.10δh=0,δc=0.02,ρ=0.10。
4.5 工程实现关键性质
- 候选数量有限,收缩流程必然有限轮终止;
- 每轮采纳修改严格缩减文本长度;
- 仅在固定验证集做精度判定,无法保证测试集单调上升;
- 调整效用阈值τ\tauτ可得到多组「精度-压缩」帕累托最优解。
5 实验部分
5.1 实验配置
基准数据集
- 域内IID:SpreadsheetBench Verified 表格问答;
- 域外OOD:WikiTQ、HiTab两套表格数据集;
对比基线
无技能、人工手写技能、Trace2Skill、EvoSkill、SkillOpt、SkillGrad;
基座模型:Qwen3.5-4B / Qwen3.5-27B / Qwen3.6-27B;
训练划分比例训练:验证:测试=2:1:8,单轮交互上限30步。
主实验全域精度结果(均值±标准差)
| 模型 | 方法 | Spreadsheet(IID) | WikiTQ(OOD) | HiTab(OOD) |
|---|---|---|---|---|
| Qwen3.5-4B | No Skill | 20.3±1.5 | 65.0±3.3 | 61.7±2.0 |
| Human Skill | 20.3±4.2 | 68.3±1.6 | 63.5±0.9 | |
| EvoSkill | 6.7±2.1 | 76.8±8.1 | 63.3±2.3 | |
| Trace2Skill | 10.0±0.0 | 66.0±2.3 | 57.5±1.7 | |
| SkillOpt | 15.3±2.5 | 26.0±6.6 | 16.0±1.3 | |
| SkillGrad | 19.3±0.5 | 69.7±0.8 | 65.4±3.4 | |
| SkillProx(ours) | 21.0±1.4 | 78.5±2.9 | 69.2±2.3 | |
| Qwen3.5-27B | No Skill | 44.0±6.1 | 85.3±1.8 | 78.5±1.0 |
| Human Skill | 38.3±7.6 | 85.5±0.3 | 78.7±1.3 | |
| EvoSkill | 8.7±3.5 | 86.0±0.3 | 78.7±0.3 | |
| Trace2Skill | 32.0±9.6 | 84.2±0.8 | 76.7±1.9 | |
| SkillOpt | 51.3±4.7 | 77.1±1.9 | 66.8±0.3 | |
| SkillGrad | 51.3±0.9 | 85.2±0.6 | 77.5±0.4 | |
| SkillProx(ours) | 51.3±1.2 | 86.8±1.1 | 78.5±1.1 | |
| Qwen3.6-27B | No Skill | 45.3±4.7 | 85.8±0.8 | 78.2±1.0 |
| Human Skill | 36.7±8.1 | 85.7±1.2 | 78.0±0.9 | |
| EvoSkill | 13.0±4.4 | 87.7±1.8 | 77.8±2.0 | |
| Trace2Skill | 35.3±3.1 | 85.2±0.6 | 78.7±2.3 | |
| SkillOpt | 53.3±7.6 | 82.2±0.6 | 79.7±0.8 | |
| SkillGrad | 50.0±3.3 | 84.8±0.6 | 78.3±0.4 | |
| SkillProx(ours) | 54.5±0.5 | 86.2±0.3 | 80.0±1.2 |
5.2 模块消融实验(Qwen3.6-27B,Spreadsheet)
| 消融版本 | 平均精度 | 相对下降 |
|---|---|---|
| 移除前向闭环,仅Prox | 53.0±1.0 | -1.5 |
| 移除Prox,仅前向闭环 | 52.0±1.0 | -2.5 |
| 完整SkillProx | 54.5±0.5 | - |
| 结论:两个模块具备互补增益,近端收缩带来的精度提升幅度更大。 |
5.3 精度-压缩权衡分析
以不同负效用阈值τ\tauτ遍历收缩流程:
- τ=−0.001\tau=-0.001τ=−0.001:压缩25.7%,精度52.3(全局最高);
- τ=0.005\tau=0.005τ=0.005:压缩41.5%,精度仅小幅降至52.0;
- 压缩幅度75%以内精度衰减可控,超过80%后准确率快速下滑。
5.4 模型尺寸对比
4B基座最终技能平均40.4k字符,27B仅27.9k;差异全部来自辅助引用文件,核心主文档长度接近(14.8k vs 15.4k)。大模型天然生成更精简规则,SkillProx对小模型的压缩增益更明显。
6 结论
本文提出SkillProx近端文本梯度下降技能自进化框架,分为闭环前向诊断更新、效用审计近端收缩两大互补阶段。前向阶段通过同批次重执行与精度门控过滤无效修改;后向留一法审计删除负收益冗余知识,在约束精度前提下压缩技能文本。
在三套基座、域内/域外表格问答基准实验中,SkillProx稳定优于人工编写、一次性生成、现有自进化基线;消融实验验证双模块缺一不可,收缩流程对性能提升贡献更大。框架兼顾任务准确率与上下文长度,适合长期迭代的生产级智能体技能维护场景。
参考文献
(完整文献列表见论文PDF原文末尾)
附录A 动机案例
完整复现负效用冗余案例:初始技能精度46,删除大量冲突单例规则后提升至54,附原始技能文本与消融对比日志。
附录B 理论推导
- PGD与文本优化映射完整证明;
- 技能压缩精度损失上界推导;
- 迭代有限终止性数学证明。
附录C 完整实验脚本(核心训练调度)
# train_sweep.py 批量消融/阈值遍历调度importosimportsubprocess config_list=[{"model":"qwen3.6-27B","bench":"spreadsheet","use_forward":True,"use_prox":True},{"model":"qwen3.6-27B","bench":"spreadsheet","use_forward":True,"use_prox":False},{"model":"qwen3.6-27B","bench":"spreadsheet","use_forward":False,"use_prox":True},]forcfginconfig_list:cmd=["python train_main.py",f"--backbone{cfg['model']}",f"--dataset{cfg['bench']}",f"--forward_loop{cfg['use_forward']}",f"--prox_shrink{cfg['use_prox']}","--tau -0.001","--delta_h 0","--delta_c 0.02","--rho 0.10"]subprocess.run(" ".join(cmd),shell=True)附录D 近端收缩效用审计代码片段
defcalc_marginal_utility(skill_full,unit_id,val_set):# 消融目标知识单元skill_ablate=delete_unit(skill_full,unit_id)# 原技能验证指标orig_h,orig_c=evaluate(skill_full,val_set)# 消融后指标ablate_h,ablate_c=evaluate(skill_ablate,val_set)u_h=orig_h-ablate_h u_c=orig_c-ablate_creturn{"hard_u":u_h,"cell_u":u_c}附录E 全套提示词模板
仓库config/prompts.yaml包含四类完整LLM提示:
- 诊断器Prompt:基于失败轨迹生成技能修改方案;
- 修补器Prompt:接收诊断输出生成完整候选技能;
- 收缩器Prompt:合并/删减冗余知识单元;
- 端到端流水线总提示。
开源完整资源清单
- 论文PDF:https://arxiv.org/pdf/2608.07449
- 项目完整GitHub仓库:https://github.com/Steven011018/SkillProx
- 训练、消融、阈值遍历批量脚本:scripts/train_sweep.py
- 效用审计、收缩核心工具代码:src/prox_engine.py
- 三大基准数据集划分文件:data/benchmarks/
- 全套LLM提示词yaml:config/prompts.yaml
- 实验指标绘图、帕累托曲线生成代码:analysis/plot_pareto.py
- 全量实验原始日志、结果表格:output/records.csv