一句话概括
把 Skill 当作"代码"、把 LLM 当作"异构处理器",借鉴传统编译器(AOT + JIT)设计思想,首次为 LLM Agent 的 Skill 构建了跨模型、跨平台的编译与运行时系统。
一、核心问题:Skill 的"可移植性危机"
当前 Agent 把 Skill 当作原始文本直接塞给模型,导致同一 Skill 在不同模型/Harness 上表现天差地别。作者分析了 118,000+ 个 Skill(clawhub.ai + skills.sh),发现:
| 问题 |
数据 |
| 使用 Skill 后性能下降 |
15% 的任务 |
| 使用 Skill 后无变化 |
17% 的任务 |
| 至少一个模型无改善 |
87% 的任务 |
| Token 开销暴增 |
最高 451% |
三大失配:
- P1 模型失配:Skill 假设模型能区分库 API 与 CLI,小模型直接翻车
- P2 Harness 失配:同一模型在不同 Harness(Claude Code / OpenCode / BareAgent)上结果差异巨大
- P3 环境失配:缺少依赖包时,Qwen 成功率从 100% 暴跌到 33-67%,且 Token 消耗翻倍
二、核心类比:编程语言的演进
flowchart LR
subgraph Stage1["Stage 1: Assembly"]
A1["汇编代码"]
B1["Assembler & Linker"]
C1["操作系统"]
D1["硬件"]
A1 --> B1 --> C1 --> D1
end
subgraph Stage2["Stage 2: High-level Language"]
A2["C / Java 代码"]
B2["C Compiler / JVM"]
C2["操作系统"]
D2["硬件"]
A2 --> B2 --> C2 --> D2
end
subgraph Stage3["Stage 3: Natural Language (Skill)"]
A3["Skill (自然语言程序)"]
B3["SkVM<br/>Compiler & Runtime"]
C3["Agent Harness"]
D3["LLM (异构处理器)"]
A3 --> B3 --> C3 --> D3
end
style Stage3 fill:#e6f3ff,stroke:#0066cc,stroke-width:2px
style B3 fill:#ffcccc,stroke:#cc0000,stroke-width:2px
%% 关键改动:使用隐形连线强迫子图横向排列
Stage1 ~~~ Stage2 ~~~ Stage3
关键洞察:Skill 是"自然语言程序",LLM 是"异构处理器",但缺少编译器