智能体技能开发指南:从原理到实践

让 AI 从"通用助手"变成"领域专家"


一、技能的工作原理

什么是智能体技能?

智能体技能(Agent Skill)是模块化、自包含的功能包,用于扩展 AI 智能体的能力。你可以把它理解为特定领域的"上岗培训手册"——它把通用 AI 变成 equipped with 程序性知识的专家,这些知识是模型本身无法完全掌握的。

技能提供什么?

  1. 专业化工作流 - 特定领域的多步骤操作流程
  2. 工具集成 - 处理特定文件格式或 API 的操作指南
  3. 领域专业知识 - 公司特定的知识、业务逻辑、数据 schema
  4. 捆绑资源 - 脚本、参考资料、模板等可复用资产

技能的核心设计原则

1️⃣ 简洁至上

上下文窗口是公共资源。技能需要与系统提示、对话历史、其他技能元数据和用户请求共享这个空间。

默认假设:AI 已经非常聪明。 只添加 AI 原本不知道的内容。每段信息都要问自己:“AI 真的需要这个解释吗?““这段内容的 token 成本值得吗?”

2️⃣ 设置合适的自由度

根据任务的脆弱性和可变性匹配指导的具体程度:

自由度适用场景示例
高自由度多种方法都有效、决策依赖上下文文本指导、启发式方法
中自由度有推荐模式、可接受一定变化伪代码、带参数的脚本
低自由度操作脆弱易错、一致性关键具体脚本、少量参数

想象 AI 在探索路径:狭窄的桥需要具体护栏(低自由度),开阔的田野允许多条路线(高自由度)。

3️⃣ 渐进式披露

技能使用三级加载系统来高效管理上下文:

Level 1: 元数据(名称 + 描述)→ 始终在上下文中(~100 词)
Level 2: SKILL.md 正文 → 技能触发时加载(<5k 词)
Level 3: 捆绑资源 → 按需加载(无限制)

关键原则: SKILL.md 保持核心工作流和选择指南,将变体-specific 细节(模式、示例、配置)移到单独的参考文件中。

技能的标准结构

skill-name/
├── SKILL.md(必需)
│   ├── YAML frontmatter 元数据
│   │   ├── name:(技能名称)
│   │   └── description:(触发描述)
│   └── Markdown 操作指南
└── 捆绑资源(可选)
    ├── scripts/      - 可执行代码(Python/Bash 等)
    ├── references/   - 文档参考资料
    └── assets/       - 输出用文件(模板、图标等)

重要提醒: 技能只应包含对 AI 执行任务必需的文件。不要创建 README.md、INSTALLATION_GUIDE.md 等辅助文档——这些是给人类看的,不是给 AI 用的。


二、主流技能分享平台

🦐 ClawHub(OpenClaw 官方)

网址: https://clawhub.com

ClawHub 是 OpenClaw 生态的官方技能市场,提供技能的搜索、安装、更新和发布功能。

核心功能:

操作命令
搜索技能clawhub search "关键词"
安装技能clawhub install 技能名
更新技能clawhub update 技能名
列出已安装clawhub list
发布技能clawhub publish ./技能目录 --slug 技能名

优势:

  • 与 OpenClaw 深度集成
  • 支持版本管理和哈希校验
  • 自动依赖检测和环境配置

其他平台

  • OpenClaw Community Skills - 社区贡献的公开技能库
  • GitHub Skills Repositories - 开源技能项目托管
  • 企业私有技能库 - 组织内部技能分发

三、开源技能深度分析:Weather Skill

让我们以 weather 技能为例,看看一个优秀的技能是如何设计的。

技能元数据

name: weather
description: 获取当前天气和预报。当用户询问天气、温度或预报时使用。
             不适用于:历史天气数据、严重天气警报、详细气象分析。无需 API 密钥。

分析: 描述清晰说明了做什么何时使用,还明确列出了不适用场景。这是触发机制的核心。

技能亮点

1. 明确的边界定义

技能清晰区分了"使用"和"不使用"的场景:

✅ 适用:

  • “今天天气如何?”
  • “明天会下雨吗?”
  • “[城市] 的温度”
  • 本周天气预报

❌ 不适用:

  • 历史天气数据
  • 气候分析或趋势
  • 严重天气警报
  • 航空/海洋天气

启示: 明确的边界帮助 AI 快速判断是否应该激活这个技能,避免误触发。

2. 命令模板化

技能提供了即用型命令模板:

# 单行摘要
curl "wttr.in/London?format=3"

# 详细当前状况
curl "wttr.in/London?0"

# 一周预报
curl "wttr.in/London?format=v2"

启示: 将常用操作封装成模板,AI 只需替换参数(如城市名),无需每次重新编写命令。

3. 快速响应模式

针对常见查询提供"快捷回复”:

用户问题推荐命令
“天气怎么样?”单行格式输出地点 + 天气 + 温度 + 风 + 湿度
“会下雨吗?”输出地点 + 天气图标 + 降水概率
“周末预报”输出多日预报格式

启示: 预判用户需求,提供针对性解决方案,减少 AI 的决策负担。

4. 资源效率

  • 使用 wttr.in 免费 API,无需 API 密钥
  • 明确提醒速率限制,避免滥用
  • 支持全球大多数城市和机场代码

启示: 降低使用门槛,同时设置合理使用边界。

可借鉴的设计模式

  1. When to Use / When NOT to Use 双列表 - 清晰定义触发条件
  2. 命令模板库 - 可复用的操作片段
  3. 快速响应指南 - 针对高频场景的优化路径
  4. 格式代码参考 - 参数化选项的快速查阅表

四、使用 ClawHub 开发和微调技能

开发流程

步骤 1:理解需求

在创建技能前,明确具体使用场景:

  • 用户会说什么来触发这个技能?
  • 技能需要完成什么具体任务?
  • 有哪些典型的使用示例?

示例问题:

“用户会说’帮我旋转这张图片’还是’把图片顺时针转 90 度’?” “技能需要支持哪些图片格式?” “旋转后需要自动保存还是询问用户?”

步骤 2:规划可复用内容

分析每个使用示例,识别可复用的资源:

资源类型用途示例
scripts/需要确定性可靠性的代码rotate_image.py
references/AI 工作时的参考资料API 文档、schema 定义
assets/输出中使用的文件模板、图标、字体

示例分析:

  • 如果要创建 pdf-rotator 技能 → 需要 scripts/rotate_pdf.py
  • 如果要创建 bigquery-query 技能 → 需要 references/schema.md 记录表结构
  • 如果要创建 brand-doc-generator 技能 → 需要 assets/template.pptx 品牌模板

步骤 3:初始化技能

使用初始化脚本创建技能框架:

# 基本用法
scripts/init_skill.py 技能名 --path 输出目录

# 带资源目录
scripts/init_skill.py 技能名 --path skills/public --resources scripts,references

# 带示例文件
scripts/init_skill.py 技能名 --path skills/public --resources scripts --examples

脚本会自动:

  • 创建技能目录
  • 生成 SKILL.md 模板(含 frontmatter 和占位符)
  • 按需创建资源目录
  • 可选添加示例文件

步骤 4:编辑技能

编写 Frontmatter:

name: 技能名(小写,连字符分隔)
description: 清晰描述技能功能和触发场景

描述撰写要点:

  • 包含技能做什么
  • 包含具体触发条件/使用场景
  • 所有"何时使用"信息放在这里(不是正文)

编写正文:

  • 使用祈使句/不定式
  • 保持简洁(默认<500 行)
  • 长内容拆分到 references/ 文件
  • 明确说明何时读取哪些参考文件

步骤 5:打包技能

# 基本打包
scripts/package_skill.py ./技能目录

# 指定输出目录
scripts/package_skill.py ./技能目录 ./dist

打包脚本会:

  1. 自动验证技能(YAML 格式、命名规范、描述完整性等)
  2. 验证通过后创建 .skill 文件(本质是 zip 格式)
  3. 验证失败会报告错误,修复后重新打包

步骤 6:迭代优化

真实使用 → 发现问题 → 更新技能 → 再次测试

常见迭代场景:

  • AI 误解触发条件 → 调整 description
  • AI 遗漏关键步骤 → 补充操作指南
  • AI 重复编写相同代码 → 提取为 scripts/
  • 上下文过大 → 拆分到 references/

微调现有技能

使用 ClawHub 安装技能后,可根据需求进行本地微调:

# 安装技能
clawhub install weather

# 查看技能位置
clawhub list

# 本地修改(在 skills/weather/ 目录下编辑)
# ... 编辑 SKILL.md 或添加资源 ...

# 重新打包(如需分享)
scripts/package_skill.py ./skills/weather

微调建议:

  • 添加组织特定的 API 端点
  • 补充内部系统的认证流程
  • 增加公司特定的错误处理逻辑
  • 链接内部文档和参考资料

五、安全提醒:技能市场的潜在风险

⚠️ 技能可能包含恶意代码

技能本质上是可执行代码包。安装未知来源的技能存在以下风险:

  1. 恶意脚本 - scripts/ 目录可能包含窃取数据、破坏系统的代码
  2. 敏感信息泄露 - 技能可能读取并外传你的文件、配置、凭证
  3. 供应链攻击 - 依赖的第三方库可能被篡改
  4. 权限滥用 - 技能可能请求超出其功能所需的系统权限

防范措施

1. 来源验证

✅ 推荐:

  • 官方 ClawHub 认证技能
  • 知名开发者/组织发布的技能
  • 开源且可审查代码的技能
  • 社区评价高、下载量大的技能

❌ 避免:

  • 匿名发布者
  • 无源代码的闭源技能
  • 请求异常权限的技能
  • 描述模糊、功能不明的技能

2. 代码审查

安装前检查技能内容:

# 查看技能目录结构
ls -la ./skills/技能名/

# 审查脚本内容
cat ./skills/技能名/scripts/*.py
cat ./skills/技能名/scripts/*.sh

# 检查是否有可疑的网络请求
grep -r "curl\|wget\|requests\|http" ./skills/技能名/

# 检查是否有文件系统操作
grep -r "os.system\|subprocess\|shutil\|rm\|delete" ./skills/技能名/

3. 权限最小化

  • 在沙箱环境中测试新技能
  • 限制技能可访问的目录范围
  • 使用只读挂载保护敏感文件
  • 定期审计已安装技能的权限

4. 版本管理

# 固定版本号安装
clawhub install 技能名 --version 1.2.3

# 定期检查更新
clawhub update --all

# 查看更新日志
clawhub show 技能名 --changelog

5. 监控与审计

  • 记录技能执行日志
  • 监控异常网络流量
  • 定期检查技能哈希值是否被篡改
  • 建立技能白名单机制

企业环境额外建议

  1. 建立内部技能库 - 只允许安装经过安全审查的技能
  2. 代码签名 - 要求所有技能使用数字签名
  3. 自动化扫描 - 集成静态代码分析工具
  4. 隔离执行 - 在容器或虚拟机中运行技能
  5. 定期轮换 - 定期更新技能,淘汰旧版本

结语

智能体技能是连接通用 AI 和专业领域的桥梁。掌握技能开发能力,意味着你可以:

  • 🎯 将 AI 定制为特定领域的专家
  • 🔄 沉淀组织知识为可复用的自动化流程
  • 📈 持续提升 AI 的工作效率和质量

但请记住:能力越大,责任越大。在享受技能带来的便利时,务必保持安全意识,谨慎安装,定期审计,让技能真正为你的工作赋能,而不是成为安全隐患。


参考资料:

  • OpenClaw 官方文档:https://docs.openclaw.ai
  • ClawHub 技能市场:https://clawhub.com
  • 社区讨论:https://discord.com/invite/clawd

本文基于 OpenClaw AgentSkills 规范编写,适用于 OpenClaw 及兼容平台的技能开发。