本文转载自微信公众号「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”作为核心扩展机制,并显式实现了:

  1. 多目录技能加载与覆盖优先级
  2. 基于 metadata 的加载时过滤(OS / binaries / env / config 依赖)
  3. 将”可用技能清单”以紧凑 XML 形式注入系统提示
  4. 与 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
2
3
4
/status
/skill pdf-processing ./input.pdf
/think high
/exec host=sandbox security=allowlist ask=on-miss

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
发现 → 索引 → 匹配 → 激活 → 执行 → 整合 → 响应

详细流程:

  1. Discover:扫描技能目录
  2. Index:仅加载 name/description 等元数据
  3. Match:与用户意图匹配?
  4. Activate:加载 SKILL.md 正文
  5. Load refs/assets:按需读取文件
  6. Execute:进入 Agent Loop
  7. Tool calls:工具调用 → 执行 → tool result 回填
  8. Integrate:汇总结果与证据
  9. 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 的核心循环”可以被验证性地理解为:

  1. Gateway 接收消息并先做 command/directive 解析
  2. 构建会话级上下文(含技能清单 XML、工具策略、可选激活 skill 正文)
  3. 调用外部模型
  4. 若模型发起工具调用,则在 sandbox/host 执行并回填
  5. 进入下一轮直到产出最终响应
  6. 会话状态与技能快照在 session 维度管理

安全重点

开放 registry 与”markdown 指令 + 可执行脚本”的组合会形成供应链攻击面:

  • 恶意 skills、信息窃取
  • 隔离建议:将 OpenClaw 视为”带持久凭据的不可信代码执行”
  • 仅在隔离环境中使用

总结

Skills 的演进代表了 AI Agent 能力从”一次性提示”到”可复用、可治理、可工程化”的转变。OpenClaw 通过标准化的 Skills 机制,实现了:

  1. 可发现性:元数据驱动的技能发现
  2. 可组合性:多技能协同与工具链接
  3. 可治理性:权限、隔离、版本管理
  4. 可扩展性:开放生态与第三方集成

但同时也带来了供应链安全、权限隔离等新的挑战,需要在使用时保持警惕。


转载声明:本文转载自微信公众号「MLNLP社区」,感谢原作者的精彩分享。如有侵权,请联系删除。