模型和 Skill 不匹配
Skill 写得太深,弱模型跟不住。例:强多模态图表正常;弱模型图很丑、字体乱码式「形似」。
01 · Problem
这里说的不是「程序崩溃」,而是:任务分变差、跑不动、乱装依赖、又慢又贵。 论文把常见原因拆成三类错配。
Skill 写得太深,弱模型跟不住。例:强多模态图表正常;弱模型图很丑、字体乱码式「形似」。
Skill 假定有的工具,当前产品没有。例:Codex 能跑;自建运行时白名单只有 read 就完全不能跑。
Skill 假定装好了库/命令。例:本机有 Python 能读 Excel;换机没 Python 就干不了。
研发口语里的「跨异构目标」= 跨模型、跨 Agent 产品(Harness)、跨本机环境。 今天主流仍是解释执行:Skill 当固定说明书喂模型,没有按目标编译。
02 · Pipeline
这是系统主逻辑。主路径是改 Skill、产出变体;装依赖只是其中一步,不是「先把机器改成标准机」。
03 · Capability Maps
某「模型 + Agent 运行时」在每条原语能力上考到的最高等级(L0–L3)成绩单。 由 Profile 微基准考出来,不是某次业务任务的回答,也不是一个「聪不聪明」总分。
这份 Skill 为完成各用途,要求哪些原语、至少到哪一级;可以带「换一种做法也能达标」的替代路径。
编译第一趟从 SKILL.md 抽取。
两边一比得到缺口(gap): 补偿——差不太大,把 Skill 写浅(如相对路径 → 绝对路径); 替代——差太大,换实现路径(如强 pandas → SQL)。 用「原语 + 等级」是为了避免给每个模型×产品手写一版,组合爆炸。
04 · Compiler Passes
在这篇论文里,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 汇总 |
同一套操作打在多份独立数据上。一个主任务里多进程 / 多 shell 即可,不必须开子 Agent。
多个独立步骤在同一轮对话里批量调工具。需要 Agent 产品支持 batch tool。
多个要多轮推理的子活,开 sub-agent,最后汇总。最依赖「能开子 Agent」。
05 · Runtime / JIT
壳子固定、参数常变 → 连续几次代码签名一致才晋升为直接跑脚本。 这次失败:改回让模型干;连续失败:取消固化(降级)。
多次失败说明 Skill 本身有系统问题 → 用日志做针对性修改。 改完更差就回滚到更好的版本。偏正确性,不只是加速。
AOT 管静态适配;JIT 管「跑出来才看见」的洞和热路径。
06 · Results
弱 / 小模型:更多赚「更能跑对」(能力改写 + 再优化 + 绑环境)。强模型:更多赚 token↓、延迟↓。
开 Skill 后约 15% 任务比不用 Skill 更差。按目标编译意在减少这种回归。
并行最高约 3.2×;固化(如 PDF 类)延迟可到约 19–50× 下降;强模型 + 弱运行时 token 可约 -40%。
Skill 是自然语言 → 编译非确定,仍可能改坏;靠评分与回滚兜底。2026 论文 + 开源,尚未成为行业标配。
07 · Landscape
| 路线 | 现状 | 和 SkVM 的关系 |
|---|---|---|
| 作者规范:多模型实测、能脚本化就脚本化 | 已是主流文档实践(如 Anthropic) | 有适配意识,靠人手 |
| Skill-Creator:评测 → 改 Skill | 已落地工具 | 接近「用证据改 Skill」,缺统一能力画像与按目标存变体 |
| 格式标准(agentskills.io 等) | 解决「文件能否被各家加载」 | 格式可移植 ≠ 换模型效果一样 |
| DSPy 等 prompt/程序编译 | 思想较成熟 | 近亲;对象通常不是 Skill 目录 |
| SkVM:TCP/SCR → 三 Pass → JIT | 2026 论文 + 开源,早期 | 把上面几件事收成编译器 / 运行时叙事 |
环境绑定脚本、评测后改 Skill、热路径脚本化、多模型 CI——不必等「完整 VM」。
按(模型, 运行时)存变体并在加载时选择;需要各家 Harness 配合或做适配层。
多模型 / 多产品 / 环境乱 → 值得试完整链路。统一云端 + 顶配 + 单运行时 → 不必为可移植优先上;若要省 token / 固化 / 并行,可只吃后半段。
08 · Appendix
总流程速览,以及 26 条原语 × L1–L3 完整表。
等级含义:同一能力做多深;要 L2 时只有 L1 就不够。L0 = 不具备。
| 原语 | L1 | L2 | L3 |
|---|---|---|---|
gen.code.python | 单文件、基本读写 | 标准库 | 第三方(pandas 等) |
gen.code.javascript | 单文件、fs | Node / npm | async、复杂 API |
gen.code.shell | 基本命令 | 管道、循环 | 复杂管道 |
gen.code.sql | SELECT / 聚合 | JOIN / 窗口 | CTE / 多表 |
gen.code.html | 标题列表链接 | 表单表格 | 复杂布局 / a11y |
gen.text.structured | 扁平小 JSON | 嵌套 <5KB | 深嵌套大结构 |
gen.text.long | <1KB | 1–5KB | >5KB 结构完整 |
gen.text.prose | 短段 | 多段一致 | 长文分节 |
gen.regex | 简单模式 | 常见技巧 | 复杂可维护正则 |
| 原语 | L1 | L2 | L3 |
|---|---|---|---|
reason.arithmetic | 单步 | 多步 | 复合 |
reason.logic | 简单命题 | 多条件 | 复杂逻辑链 |
reason.spatial | 简单空间 | 中等 | 复杂布局 |
reason.planning | 短计划 | 带分支 | 长程 + 校验 |
reason.analysis | 单点 | 多因素 | 结构化深分析 |
| 原语 | L1 | L2 | L3 |
|---|---|---|---|
tool.file.read | 读单文件 | 多文件定位 | 大规模检索式阅读 |
tool.file.write | 写单文件 | 多文件一致 | 复杂批量更新 |
tool.exec | 单条命令 | 参数与相对路径 | 多步串联 |
tool.call.format | 基本格式 | 复杂参数稳定 | 高约束仍稳 |
tool.call.batch | 单次 | 小批量 | 大批量 / 同轮多工具 |
tool.web | 简单拉取 | 带参解析 | 复杂检索整合 |
tool.browser | 打开读取 | 多步操作 | 复杂交互流 |
| 原语 | L1 | L2 | L3 |
|---|---|---|---|
follow.format | 简单格式 | 中等 | 严格复杂格式 |
follow.constraint | 少量硬约束 | 多约束 | 强约束仍遵守 |
follow.procedure | ~3 步顺序 | 5–7 步含分支 | 循环与验证 |
follow.delegation | 简单委派 | 多角色 | 复杂委派汇总 |
follow.style | 短文跟风格 | 中等长度 | 长文稳定跟风格 |