大多数 Agent 系统中,Skill 是被手动调用的静态提示词。
RandomLabs 的观点是:Agent Skill 应该更接近人类身上同名的东西——上下文相关的行为,能动态地被用来解决任务。Skill 应该是 agent 做的事,而不是 agent 读的东西。
人类 Skill 的学习方式
人类学习 Skill 通常是:先看别人做,然后自己复制足够多次,直到把行为内化为上下文条件反射。之后继续精炼和复用。
这个过程映射到 LLM 上对应两种方式:
- 行为克隆(预训练期间对某个演示 token 序列的克隆)
- Agentic RL(post-training 期间教模型有用的战术和策略)
但问题在于:如果没有持续学习,模型"知道怎么做"和"主动选择去做"之间存在一个鸿沟。
这就是 Knowledge Overhang——知识 overhang 是"模型选择做的事"和"模型知道怎么做"之间的差距。Skill 提供了一个领域特定的解决方案:直接注入文本,条件化模型采取它原本不会主动采取的行动。
为什么不用 Rule?
Rule 是 agent harness 强制加载到上下文的文件,而 Skill 遵循渐进式披露原则(agent 被逐步给予关于 Skill 的更多信息)。
核心好处:Skill 是上下文相关的,主 agent 不需要一次性灌入数万 token 的条件指令——那些并不总是有用的。有效上下文长度仍在 200k token 以下时,前缀上下文是稀缺资源。
预期模型行为:按需激活和退出 Skill,动态选择不同情境下需要的 out-of-distribution 上下文。(Codex 是目前真正做到这一点的模型。)
但现实是:用户倾向于手动激活 Skill,没有任何明确的生命周期管理。人们把 Skill——本应是一种 continual learning 的 hack——当成了终端 agent 里的斜杠命令。
Slate 的做法
Slate 用 Thread 执行增量动作:
- Action:低范围、单一步骤("启动开发服务器"、"审查文件 X 的变更")
- Thread:隔离的 worker,有自己的上下文窗口、范围化的能力和范围化的任务执行
Skill 应该是 agent 的动作,而不只是 agent 的文档。
Knowledge Overhang 这个概念很有价值——模型知道但不会主动做的事,才是 Skill 真正应该填补的空缺。这也解释了为什么"写一堆 Skill 塞给 Agent"往往没用:Agent 没有持续学习机制,无法主动选择激活 Skill,Skill 实际上只是被动的上下文注入。