Skill也有语言虚拟机了!上交大开源SkVM,实现一次编写,处处高效
IPADS团队 投稿量子位 | 公众号 QbitAISkill确实好用但架不住模型和Agent Harness适配翻车。不是所有模型都吃得动Skill有的用上直接反向掉性能。△从计算机系统架构角度审视“程序语言”和“Skill语言”为了解决这个问题来自上海交大的IPADS研究团队提出了SkVM面向Skill的语言虚拟机。在Agent时代下Skill是代码而不同的LLM是异构处理器。研究团队借鉴了经典语言虚拟机如Java Virtual Machine的架构首次为Skill设计了原生的语言虚拟机让Skill通过一次编写能够在任意的模型和Agent Harness上高效运行。通过SkVM编译后的Skill甚至能够让小模型30B获得匹配Opus4.6的精度同时减少40%的token消耗量和至多50倍的运行速度提升。从而一键提升OpenClaw、Hermes、openJiuwen、PI等Agent框架与Clawhub等主流Skill生态的执行速度、Token效率与任务精度。Skill与模型间不匹配同一个技能在不同模型/不同harness组合上的执行效果天差地别甚至还会拖后腿。上海交大IPADS的研究人员分析了超过 11.8万个技能发现15%的任务在使用技能后反而性能下降87%的任务至少有一个模型没有任何提升有的技能带来的token开销暴增451%但成功率却纹丝不动。△采取Skill前后对于任务完成率的影响红色表示下降绿色表示上升原因很简单技能写的是“自然语言代码”但模型和运行环境千差万别Skill需求的能力和模型与环境提供的能力存在明显的语义鸿沟具体而言模型能力不匹配技能预设模型很聪明但如果你用的是个小模型它可能完全听不懂你在说什么强行使用甚至会导致15%的任务性能下降环境依赖老报错技能里写了要用某个Python包但用户的电脑上根本没装大模型只能不断试错疯狂浪费Token又慢又贵高度重复的死板工作大模型每次都要重新走一遍“推理-工具调用”的脑回路Token成本极高 。SkVM一次编写处处高效面对上面所述的痛点上交大团队从传统的语言虚拟机设计中汲取灵感给出了面向自然语言的虚拟机SkVM架构其整体架构如下图所示△SkVM整体架构包含AOT编译优化和运行时优化两个部分SkVM类比了经典了Java语言虚拟机JVM的设计提炼了底层运行抽象结合AOT/JIT等编译方式并在运行时做自适应调优和运行时调度。下表展示了SkVM和JVM在不同编译优化策略上的对比AOT编译Ahead-of-Time Compilation将Skill编译成模型更能看懂的形式在安装Skill的时候AOT编译器由编译优化SkillLLM组成会对Skill进行编译生成多个编译后产物帮助后续Agent HarnessLLM在运行时更好地理解Skill。SkVM在运行前会做三件事PASS-1基于能力的编译系统提炼了26种“原子能力”Primitive Capabilities像测CPU跑分一样先摸底你的大模型。不同于其他的LLM 测试集原子能力并非测试大模型能否解决一个复杂逻辑问题更多是测试模型是否具备工具调用指令遵循格式对齐等对立、可组合、以及逻辑无关的基本能力。同时对于每一个“原子能力”也会进行分级打分从而生成更加客观的大模型Harness组合能力画像。其次编译器会去分析Skill本身需要哪些“原子能力”以及对应的等级。如果Skill需要的“原子能力”等级大于当前运行的大模型Harness能够提供的能力等级编译器会编译Skill以降低Skill的能力需求。例如Skill中往往会包含一些预先定义的python/js执行文件而这些文件通常是通过相对路径定义的。如果模型Agent harness 缺乏对应相对路径的解析能力编译器会在安装Skill的时候将相对路径转换为绝对路径以降低Skill 对于“脚本执行”这一原子能力的等级需求。△基于模型原子能力的skill编译PASS-2 环境绑定Skill中往往会定义运行需要的环境和依赖。Agent在运行时候LLM会检查并且安装对应的环境导致大量的token浪费 / 环境安装失败。为此AOT编译器自动提取技能需要的包和工具生成安装/检验脚本。运行前一键配好环境不用大模型自己尝试排错了 。PASS-3 并发提取有超过76%的Skill中包含workflow并且Agent harness 默认会采用串行的方式执行。AOT编译能够发掘Skill执行过程中不同粒度的并行机会包括数据并行一条指令多个数据、指令并行无依赖的指令并行发射和线程并行多个独立的sub-agent完成不同的子任务并且生成可并行的DAG工作流图。同时开发者还可以自定义编译优化机制注册到AOT编译器中从而进一步对Skill进行运行前优化。运行时优化越跑越准越跑越省除了静态编译在运行时SkVM会采用JITJust-in-Time Compilation加速Skill的执行效率。代码固化Code SolidificationSkill中定义的脚本往往是可变参数的代码模板。Skill在每次运行时LLM都需要反复生成可执行的脚本导致大量token的浪费。为此SkVM会在AOT阶段生成代码的指纹模板以及对应的参数列表。在运行阶段调用Skill后由LLM生成的代码和AOT阶段提前生成的代码指纹进行匹配如果连续多次匹配成功SkVM会采用JIT编译优化根据输入参数直接固化可执行的代码而非每次由LLM 重新生成。自适应重编译如果在运行中出现报错/重试系统会收集错误日志反馈给编译器自动重新优化技能。防止每次运行Skill的过程中发生同样的错误并且提高任务的成功率。在运行时SkVM除了采用JIT的编译优化外还会负责Skill生命周期、加载管理保证Skill编译后新的编译产物能够正确的加载和执行。同时SkVM还会根据当前的系统资源调节并行粒度减少不必要的资源竞争。实验结果小模型SkVM比肩Opus4 .6效率至多提升50倍研究团队在包含代码生成、数据分析等118个代表性任务上进行了测试。结果显示SkVM带来的收益非常显著。尤其是对于偏弱的小模型提升最为显著因为它弥补了小模型在处理复杂JSON结构生成、环境依赖、脚本解析上的短板使得qwen 30B拥有比肩Opus 4.6的任务成功率。对于顶尖模型采用SkVM编译后消耗的token至多下降40%。△经过SkVM编译后和原始Skill在任务完成率上的对比绿色深度表示提升的幅度数字表示完成率分数△不同模型Harness下没有Skill、原始Skill、Skill-creator、SkVM的任务完成率对比同时得益于“代码固化”技术代码部分的执行时间从上万毫秒直接压缩到了几百毫秒速度飙升19到50倍。而针对Skill中潜在的并行机会SkVM通过数据并行、指令并行和线程并行将Skill的执行效率至多提升3.2倍。△数据并行、指令并行、线程并行下Skill效率的提升△触发JIT-代码固化优化前后token消耗量和执行延迟间的对比目前SkVM能够无缝键入openClawHermes AgentopenJiuwen Agent、PI Agent等主流的Agent框架支持Clawhub等主流的Skill生态。SkVM论文https://arxiv.org/abs/2604.03088项目网站https://skillvm.ai/项目仓库https://github.com/SJTU-IPADS/SkVM/