一文讲清Skills概念与OpenClaw运作机制
本文转载自微信公众号「MLNLP社区」,原文链接:https://mp.weixin.qq.com/s/_J0PqeSyWwwuf6aQW3TU_g
原作者:AI让世界更懂你(蒋峰)
原文来源:https://blog.csdn.net/qq_35082030/article/details/158510164
MLNLP社区是国内外知名的机器学习与自然语言处理社区,受众覆盖国内外NLP硕博生、高校老师以及企业研究人员。
社区的愿景是促进国内外自然语言处理,机器学习学术界、产业界和广大爱好者之间的交流和进步,特别是初学者同学们的进步。
核心概念
“Skills”在 2025–2026 年的语境里,已不仅是”可复用提示词模板”,而逐渐演化为一种可移植的、可工程化治理的”过程性能力包”:
- 以文件夹为最小分发单元
- 包含 SKILL.md(YAML frontmatter + Markdown 指令)
- 可选的 references/(按需加载知识/规程)
- assets/(模板/静态资源)
- scripts/(可执行脚本)
并以”渐进式信息披露(progressive disclosure)”降低上下文成本、提升可维护性与可审计性。
AgentSkills 规范
AgentSkills 规范将这一模式标准化:
- 启动时:仅加载元数据(name/description)
- 触发后:加载 SKILL.md 正文
- 执行时:再按需读取资源或运行脚本
OpenClaw 的实现
OpenClaw(开源、可自托管的常驻 Agent 平台)把”Skills”作为核心扩展机制,并显式实现了:
- 多目录技能加载与覆盖优先级
- 基于 metadata 的加载时过滤(OS / binaries / env / config 依赖)
- 将”可用技能清单”以紧凑 XML 形式注入系统提示
- 与 Slash Commands(/…)的联动(可选择绕过模型,直接把命令分发到工具以获得确定性)
同时,围绕 Skills 的开放生态(ClawHub 注册中心、第三方 skills)也带来了显著的供应链与提示注入风险,促使社区与安全厂商提出”把 Skills 当作不可信代码”的运行与隔离建议。
从 Prompt 到 Scripts 的谱系
1. Prompt
定义:Prompt 是一次模型推理的”输入上下文集合”,通常包含:
- 系统级指令
- 用户输入
- 对话历史
- 工具/函数定义与工具返回
- 外部检索片段或记忆摘要等
作用:把”任务意图 + 约束 + 可用能力边界 + 证据”对齐到一次或多次模型调用中。
最佳实践:把 Prompt 当作”输入合约(input contract)”来设计:
- 明确角色、目标、不可做的事
- 可用工具边界
- 将可变信息(证据、运行参数)从不可变规范(策略、格式)中分离
2. 普通提示词
定义:以自然语言为主的指令/问答式输入,输出期望也通常是自然语言。
作用:快速表达意图与评估模型能力;适合探索性对话、创意生成、粗略方案讨论。
最佳实践:用”任务 + 受众 + 约束 + 输出格式”四件套写法减少歧义。
3. 结构化提示词
定义:把输入/输出组织为明确结构(如分隔区块、YAML/JSON、表格约束、或直接使用函数/工具调用的 JSON Schema 合约)。
作用:把部分”语言问题”变成”接口问题”:模型只负责选择工具与生成参数,运行时负责执行与校验。
4. Command
定义:Command 是”绕过自然语言推理、直接驱动控制流”的输入形式。
作用:
- 把”会话状态”(模型选择、推理强度、是否允许 exec、队列模式等)显式化
- 在安全与可预期性要求更高的场景下,把路径从”模型决定”改为”确定性分发”
示例(OpenClaw):
1 | /status |
5. Metadata Description
定义:给模型/运行时用于发现、筛选、触发与治理的紧凑描述层。
作用:
- 发现与触发:启动时只加载 name/description,让模型用低成本”知道有哪些技能”
- 过滤与治理:运行时据 metadata 决定 skill 是否”eligible”(可用)
- 安全与权限边界:通过 disable-model-invocation 让 skill 不进入模型提示
6. Reference
定义:技能执行时按需加载的补充材料,典型形态是独立 Markdown 文档、表单填写指南、API 参考、政策/规范等。
作用:
- 把上下文窗口当作”公共资源”:只在需要时消耗 token
- 让参考资料成为可审计资产(版本控制、diff、评审)
- 让技能正文保持短小,降低触发成本
7. Scripts
定义:技能包内的可执行代码(Python/Bash/JS 等),其关键点在于:脚本应被”执行”而不是”加载进上下文”。
作用:把确定性步骤外包给传统程序:解析/校验/格式化/批处理等。
Skill 的组成成分
接口(Interface)
Skill 对外至少暴露”何时使用(trigger)”与”如何调用(instructions)”。
接口由两层构成:
- 发现接口:name/description(以及可选 trigger hints、兼容性信息)
- 执行接口:正文指令 + 告诉 agent 需要哪些工具、需要读哪些 reference、要运行哪些 scripts
Schema(合约/结构)
- 对”工具调用”的 schema:通常是 JSON Schema(OpenAI/Anthropic 工具接口)或 MCP 的 tool schema
- 对”skill 输入”的 schema:轻量做法 vs 强约束做法
能力描述(Capability description)
description 是核心,决定检索命中质量。
输入/输出(I/O)
- 输入:用户原始意图 + 结构化提取的槽位参数 + 执行上下文
- 输出:对用户的自然语言结果 + 结构化产物(JSON、补丁、文件、外部系统状态变更)
状态/上下文(State/Context)
技能执行往往依赖会话状态(已检索到的证据、已生成的 artifacts、已运行的命令与返回码)。
错误处理(Error handling)
把”恢复(recovery)”当作一等技能,会带来可治理性与可信度上的要求。
Skill 的运作流程
1 | 发现 → 索引 → 匹配 → 激活 → 执行 → 整合 → 响应 |
详细流程:
- Discover:扫描技能目录
- Index:仅加载 name/description 等元数据
- Match:与用户意图匹配?
- Activate:加载 SKILL.md 正文
- Load refs/assets:按需读取文件
- Execute:进入 Agent Loop
- Tool calls:工具调用 → 执行 → tool result 回填
- Integrate:汇总结果与证据
- Respond:输出给用户 + 可选产物
机制对比
| 机制 | 定义 | 持久性 | 可编程性 | 可组合性 | 调用延迟 | 示例场景 |
|---|---|---|---|---|---|---|
| Prompt | 一次推理的输入上下文集合 | 低 | 低到中 | 中 | 低 | 快速问答、头脑风暴 |
| Memory | 跨轮保存的对话/状态/检索片段 | 中到高 | 中 | 中 | 中 | 个性化助理、长任务跟踪 |
| MCP | 标准化 LLM ↔ 外部工具/数据源连接 | 中 | 高 | 高 | 中 | IDE 接入、企业系统连接 |
| Skills | 可移植能力包:SKILL.md + references + scripts | 高 | 高 | 高 | 中到高 | 代码评审 SOP、自动化报表 |
框架演进
从 LLM → Tool Calling → Agent 的演进,本质是在把”控制流”从人类手工转移到运行时,再用更强的结构把不确定性收束到可治理范围。
| 阶段 | 架构 | 控制流 | 状态管理 | 扩展性 | 典型实现 | 适用场景 |
|---|---|---|---|---|---|---|
| LLM | 单次生成 | 人工组织 prompt | 低 | 低 | 通用对话 API | 问答、生成、分析 |
| Tool Calling | LLM + tools | 模型选择工具 | 中 | 中 | OpenAI function calling | 结构化参数调用、RAG |
| Agent | LLM + tool loop | 运行时循环 | 中到高 | 中到高 | LangChain Agents | 多步任务、交互式执行 |
| Multi-Agent | 多 agent + 路由 | 分工、handoff | 高 | 高 | Microsoft AutoGen | 复杂项目拆解 |
| Enhanced Memory | agent + 长短记忆 | 同 agent | 高 | 中到高 | LangGraph/LangChain | 个性化助理、长周期任务 |
| Workflow | workflow 引擎 + agent | 显式图/流程 | 高 | 高 | LangGraph、Manus | 可重复业务流程 |
| OpenClaw | 常驻 agent 平台 + skills | Gateway 命令 + agent loop | 高 | 很高 | OpenClaw | 个人/小团队自动化 |
OpenClaw 的机制解剖
信息来源(相对确定)
OpenClaw 官方文档明确其定位:
- 运行在用户自有设备上
- 通过已有聊天渠道交互
- Gateway 是控制平面(control plane)
Skills 文档明确:
- 兼容 AgentSkills
- 多目录加载与覆盖优先级
- load-time gating(bins/env/config)
- 会话快照/热更新
- 把技能清单注入系统 prompt 的方式
核心循环
基于官方文档,”OpenClaw 的核心循环”可以被验证性地理解为:
- Gateway 接收消息并先做 command/directive 解析
- 构建会话级上下文(含技能清单 XML、工具策略、可选激活 skill 正文)
- 调用外部模型
- 若模型发起工具调用,则在 sandbox/host 执行并回填
- 进入下一轮直到产出最终响应
- 会话状态与技能快照在 session 维度管理
安全重点
开放 registry 与”markdown 指令 + 可执行脚本”的组合会形成供应链攻击面:
- 恶意 skills、信息窃取
- 隔离建议:将 OpenClaw 视为”带持久凭据的不可信代码执行”
- 仅在隔离环境中使用
总结
Skills 的演进代表了 AI Agent 能力从”一次性提示”到”可复用、可治理、可工程化”的转变。OpenClaw 通过标准化的 Skills 机制,实现了:
- 可发现性:元数据驱动的技能发现
- 可组合性:多技能协同与工具链接
- 可治理性:权限、隔离、版本管理
- 可扩展性:开放生态与第三方集成
但同时也带来了供应链安全、权限隔离等新的挑战,需要在使用时保持警惕。
转载声明:本文转载自微信公众号「MLNLP社区」,感谢原作者的精彩分享。如有侵权,请联系删除。







