StellaAI · Paper Lab · AI 创新研究

SkVM

同一份 Agent Skill,换模型或换工具链后还能稳着用

不要永远把同一份 Markdown 原样塞给所有模型。 先测清「当前模型 + Agent 产品」能干到哪一步,再把 Skill 编译成更合适的一版; 跑任务时再把重复代码固化、用失败记录继续改。

真源:SJTU-IPADS · arXiv:2604.03088 · 公开学习简报 · v0.1 · 2026-10-12

01 · Problem

为什么同一份 Skill 会不好用

这里说的不是「程序崩溃」,而是:任务分变差、跑不动、乱装依赖、又慢又贵。 论文把常见原因拆成三类错配。

P1 · 模型

模型和 Skill 不匹配

Skill 写得太深,弱模型跟不住。例:强多模态图表正常;弱模型图很丑、字体乱码式「形似」。

P2 · Agent 运行时

工具链能力不一致

Skill 假定有的工具,当前产品没有。例:Codex 能跑;自建运行时白名单只有 read 就完全不能跑。

P3 · 本机环境

依赖没装齐

Skill 假定装好了库/命令。例:本机有 Python 能读 Excel;换机没 Python 就干不了。

研发口语里的「跨异构目标」= 跨模型、跨 Agent 产品(Harness)、跨本机环境。 今天主流仍是解释执行:Skill 当固定说明书喂模型,没有按目标编译。

02 · Pipeline

SkVM 核心流程(按顺序)

这是系统主逻辑。主路径是改 Skill、产出变体;装依赖只是其中一步,不是「先把机器改成标准机」。

测目标能力 对「当前模型 + 当前 Agent 运行时」跑固定小考题,得到能力成绩单(可缓存)。
看 Skill 要什么 从 Skill 抽出:要完成用途,需要哪些能力、要到多深。
安装 / 编译时改 Skill(AOT,三趟 Pass) 按差距改写说明书、生成装依赖脚本、标出可并行步骤 → 得到 Skill 变体。
跑任务时选用 运行时自动选匹配变体 → 先跑环境脚本 → 再执行。对 Agent 透明。
运行中继续优化(JIT) 热路径固化成可直接跑的代码;系统性失败则据日志再改 Skill(可变差回滚)。

03 · Capability Maps

两张关键表:目标会什么 vs Skill 要什么

TCP

Target Capability Profile
目标能力画像

某「模型 + Agent 运行时」在每条原语能力上考到的最高等级(L0–L3)成绩单。 由 Profile 微基准考出来,不是某次业务任务的回答,也不是一个「聪不聪明」总分。

SCR

Skill Capability Requirement
Skill 能力需求

这份 Skill 为完成各用途,要求哪些原语、至少到哪一级;可以带「换一种做法也能达标」的替代路径。 编译第一趟从 SKILL.md 抽取。

两边一比得到缺口(gap): 补偿——差不太大,把 Skill 写浅(如相对路径 → 绝对路径); 替代——差太大,换实现路径(如强 pandas → SQL)。 用「原语 + 等级」是为了避免给每个模型×产品手写一版,组合爆炸。

04 · Compiler Passes

三趟编译(Pass)在干什么

在这篇论文里,Pass = 编译流水线里的一趟处理(类似传统编译器的第几遍变换)。 执行方是 SkVM 编译器(LLM 辅助 + 本机检查),不是业务 Agent 在聊天里临时拍脑袋。

顺序 Pass 谁来做 / 做什么 主要解决 一眼能懂的例子
1 rewrite-skill
按能力改写
抽 SCR → 对比 TCP → 重写 SKILL.md P1 / P2 相对路径改成绝对路径;或 pandas 改成 SQL
2 bind-env
绑定本机环境
抽依赖 → 检查是否已装 → 生成幂等脚本;任务加载 Skill 前执行 P3 没有 openpyxl 就装,有则跳过
3 extract-parallelism
抽取并行
拆步骤建依赖图,标注并行;运行时按产品能力调度,不行就串行 效率 15 个独立 CSV 并行;同轮批量调工具;多 sub-agent 汇总

DLP · 数据并行

同一套操作打在多份独立数据上。一个主任务里多进程 / 多 shell 即可,不必须开子 Agent。

ILP · 工具并行

多个独立步骤在同一轮对话里批量调工具。需要 Agent 产品支持 batch tool。

TLP · 子 Agent 并行

多个要多轮推理的子活,开 sub-agent,最后汇总。最依赖「能开子 Agent」。

05 · Runtime / JIT

跑起来之后还能做什么

代码固化

少让模型重复写同构代码

壳子固定、参数常变 → 连续几次代码签名一致才晋升为直接跑脚本。 这次失败:改回让模型干;连续失败:取消固化(降级)。

自适应再优化

用失败证据改 Skill

多次失败说明 Skill 本身有系统问题 → 用日志做针对性修改。 改完更差就回滚到更好的版本。偏正确性,不只是加速。

AOT 管静态适配;JIT 管「跑出来才看见」的洞和热路径。

06 · Results

实验结论(记量级即可)

谁获利最大

弱 / 小模型:更多赚「更能跑对」(能力改写 + 再优化 + 绑环境)。强模型:更多赚 token↓、延迟↓。

原 Skill 也可能有害

开 Skill 后约 15% 任务比不用 Skill 更差。按目标编译意在减少这种回归。

速度与成本

并行最高约 3.2×;固化(如 PDF 类)延迟可到约 19–50× 下降;强模型 + 弱运行时 token 可约 -40%。

边界

Skill 是自然语言 → 编译非确定,仍可能改坏;靠评分与回滚兜底。2026 论文 + 开源,尚未成为行业标配。

07 · Landscape

业界主流做法 vs 这篇方案

路线 现状 和 SkVM 的关系
作者规范:多模型实测、能脚本化就脚本化 已是主流文档实践(如 Anthropic) 有适配意识,靠人手
Skill-Creator:评测 → 改 Skill 已落地工具 接近「用证据改 Skill」,缺统一能力画像与按目标存变体
格式标准(agentskills.io 等) 解决「文件能否被各家加载」 格式可移植 ≠ 换模型效果一样
DSPy 等 prompt/程序编译 思想较成熟 近亲;对象通常不是 Skill 目录
SkVM:TCP/SCR → 三 Pass → JIT 2026 论文 + 开源,早期 把上面几件事收成编译器 / 运行时叙事

已可落地的切片

环境绑定脚本、评测后改 Skill、热路径脚本化、多模型 CI——不必等「完整 VM」。

中等难度

按(模型, 运行时)存变体并在加载时选择;需要各家 Harness 配合或做适配层。

何时优先试

多模型 / 多产品 / 环境乱 → 值得试完整链路。统一云端 + 顶配 + 单运行时 → 不必为可移植优先上;若要省 token / 固化 / 并行,可只吃后半段。

可拓展:新 Pass(安全 / 成本) 原语表随生态扩展 Skill 进 CI 成为 build artifact 与 DSPy 类优化器合流

08 · Appendix

附录

总流程速览,以及 26 条原语 × L1–L3 完整表。

1) Profile → Target Capability Profile(目标能力画像) 2) 从 Skill 抽 → Skill Capability Requirement(能力需求) 3) 比较缺口 → AOT Pass1 rewrite-skill 补偿 / 替代,重写 Skill Pass2 bind-env 生成并(加载前)执行环境脚本 Pass3 extract-parallelism 标注 DLP / ILP / TLP → Skill 变体 4) Runtime 选用变体并执行 5) JIT:固化热路径 | 据失败再改 Skill(可回滚)
附录 A · 26 原语 × L1–L3(完整)

等级含义:同一能力做多深;要 L2 时只有 L1 就不够。L0 = 不具备。

生成 generation

原语L1L2L3
gen.code.python单文件、基本读写标准库第三方(pandas 等)
gen.code.javascript单文件、fsNode / npmasync、复杂 API
gen.code.shell基本命令管道、循环复杂管道
gen.code.sqlSELECT / 聚合JOIN / 窗口CTE / 多表
gen.code.html标题列表链接表单表格复杂布局 / a11y
gen.text.structured扁平小 JSON嵌套 <5KB深嵌套大结构
gen.text.long<1KB1–5KB>5KB 结构完整
gen.text.prose短段多段一致长文分节
gen.regex简单模式常见技巧复杂可维护正则

推理 reasoning

原语L1L2L3
reason.arithmetic单步多步复合
reason.logic简单命题多条件复杂逻辑链
reason.spatial简单空间中等复杂布局
reason.planning短计划带分支长程 + 校验
reason.analysis单点多因素结构化深分析

工具 tool_use

原语L1L2L3
tool.file.read读单文件多文件定位大规模检索式阅读
tool.file.write写单文件多文件一致复杂批量更新
tool.exec单条命令参数与相对路径多步串联
tool.call.format基本格式复杂参数稳定高约束仍稳
tool.call.batch单次小批量大批量 / 同轮多工具
tool.web简单拉取带参解析复杂检索整合
tool.browser打开读取多步操作复杂交互流

遵嘱 instruction_following

原语L1L2L3
follow.format简单格式中等严格复杂格式
follow.constraint少量硬约束多约束强约束仍遵守
follow.procedure~3 步顺序5–7 步含分支循环与验证
follow.delegation简单委派多角色复杂委派汇总
follow.style短文跟风格中等长度长文稳定跟风格
资料入口