OpenClaw 飞书 Skill 开发完全指南

OpenClaw 飞书 Skill 开发完全指南

作者: OpenClaw 社区
版本: 1.0
更新时间: 2026-03-11
适用版本: OpenClaw 2026.3.2+ | 飞书插件 @openclaw/feishu@2026.3.7+


📋 目录

  1. 前言
  2. [什么是 Skill](#什么是 Skill)
  3. [飞书 Skill 架构解析](#飞书 Skill 架构解析)
  4. [Skill 开发环境准备](#Skill 开发环境准备)
  5. [创建第一个飞书 Skill](#创建第一个飞书 Skill)
  6. [SKILL.md 编写详解](#SKILL.md 编写详解)
  7. 工具集成开发
  8. 进阶技能开发
  9. 调试与测试
  10. 发布与分享
  11. 最佳实践
  12. 常见问题

前言

在 OpenClaw 中,Skill(技能) 是扩展 AI 助手能力的核心机制。通过开发飞书 Skill,你可以让 AI 助手:

  • 📝 自动创建和编辑飞书云文档
  • 📊 操作多维表格(Bitable)数据
  • 📁 管理飞书云空间文件
  • 📚 维护知识库(Wiki)内容
  • 👥 管理权限和协作
  • 🔔 发送定制化消息通知

本教程将带你从零开始,掌握飞书 Skill 的完整开发流程。

学完本教程你将能够:

✅ 理解 OpenClaw Skill 的设计原理

✅ 创建自定义飞书业务技能

✅ 集成飞书 API 实现复杂功能

✅ 调试和优化 Skill 性能

✅ 发布技能到社区市场


什么是 Skill

Skill 的定义

Skill 是一个自包含的功能包,它为 AI 助手提供:

  1. 领域知识 - 特定业务场景的专业知识
  2. 工作流程 - 多步骤任务的执行指南
  3. 工具集成 - 与外部系统(如飞书 API)的交互能力
  4. 资源包 - 脚本、模板、参考文档等

Skill vs 插件 vs 工具

概念 层级 作用 示例
插件 (Plugin) 最高层 提供通道和基础能力 @openclaw/feishu
工具 (Tool) 中间层 提供具体 API 操作 feishu_doc, feishu_drive
技能 (Skill) 最底层 提供业务场景指导 feishu-doc, feishu-wiki

关系图:

复制代码
插件 (feishu)
  └── 工具层 (feishu_doc, feishu_drive, feishu_wiki...)
        └── 技能层 (feishu-doc, feishu-drive, feishu-wiki...)
              └── 用户请求:"帮我创建一个会议纪要文档"

Skill 的触发机制

Skill 通过 YAML Frontmatter 中的 description 字段自动触发:

yaml 复制代码
---
name: feishu-doc
description: |
  Feishu document read/write operations. 
  Activate when user mentions Feishu docs, cloud docs, or docx links.
---

当用户消息匹配描述中的关键词时,Skill 会被激活并加载到上下文中。


飞书 Skill 架构解析

现有 Skill 结构

查看已安装的飞书 Skill:

bash 复制代码
ls -la /root/.openclaw/extensions/feishu/skills/

输出:

复制代码
drwxr-xr-x 6 root root 4096 Mar 10 14:24 .
drwxr-xr-x 5 root root 4096 Mar 10 14:24 ..
drwxr-xr-x 3 root root 4096 Mar 10 14:24 feishu-doc
drwxr-xr-x 2 root root 4096 Mar 10 14:24 feishu-drive
drwxr-xr-x 2 root root 4096 Mar 10 14:24 feishu-perm
drwxr-xr-x 2 root root 4096 Mar 10 14:24 feishu-wiki

标准目录结构

复制代码
skill-name/
├── SKILL.md              # 必需:技能定义文件
├── scripts/              # 可选:可执行脚本
│   ├── helper.py
│   └── processor.sh
├── references/           # 可选:参考文档
│   ├── api-docs.md
│   └── schema.md
└── assets/               # 可选:资源文件
    ├── template.docx
    └── logo.png

SKILL.md 文件结构

markdown 复制代码
---
name: skill-name
description: |
  技能描述,用于触发判断
---

# 技能标题

## 使用说明

详细说明...

## 工具调用

```json
{ "action": "read", "doc_token": "ABC123" }

工作流程

步骤 1...

步骤 2...

复制代码
---

## Skill 开发环境准备

### 1. 确认 OpenClaw 版本

```bash
openclaw --version
# 输出:2026.3.3

2. 检查飞书插件

bash 复制代码
ls -la /root/.openclaw/extensions/feishu/

确保包含:

  • package.json - 插件配置
  • index.ts - 入口文件
  • skills/ - 技能目录
  • src/ - 源代码

3. 验证工具可用性

bash 复制代码
# 测试飞书工具是否加载
openclaw tools list | grep feishu

预期输出:

复制代码
✅ feishu_doc
✅ feishu_drive
✅ feishu_wiki
✅ feishu_bitable

4. 准备开发目录

bash 复制代码
# 创建技能开发目录
mkdir -p /root/.openclaw/skills-dev
cd /root/.openclaw/skills-dev

# 初始化技能模板
python3 /home/dongwei/openclaw/scripts/init_skill.py my-first-skill \
  --path . \
  --resources scripts,references

创建第一个飞书 Skill

实战案例:会议纪要自动生成器

我们将创建一个名为 meeting-minutes 的 Skill,功能是:

  • 根据会议录音转写文本自动生成结构化纪要
  • 创建飞书云文档并格式化内容
  • 自动@参会人员并设置提醒

Step 1: 初始化技能

bash 复制代码
# 创建技能目录
mkdir -p /root/.openclaw/extensions/feishu/skills/meeting-minutes

# 创建基础文件结构
cd /root/.openclaw/extensions/feishu/skills/meeting-minutes
mkdir -p scripts references assets

Step 2: 编写 SKILL.md

创建 SKILL.md 文件:

markdown 复制代码
---
name: meeting-minutes
description: |
  会议纪要自动生成技能。使用场景:用户需要整理会议录音/聊天记录、
  创建结构化会议纪要文档、@参会人员并设置跟进任务。
  触发词:"会议纪要"、"会议总结"、"meeting minutes"、"整理会议"
---

# 会议纪要生成器

## 功能概述

本技能帮助你将会议内容快速整理成结构化的飞书文档。

## 使用流程

### 1. 提供会议内容

用户可以提供:
- 会议录音转写文本
- 聊天记录导出
- 口头描述会议要点

### 2. 调用飞书文档工具

使用 `feishu_doc` 工具创建文档:

```json
{
  "action": "create",
  "title": "会议纪要 - {{会议主题}} - {{日期}}",
  "folder_token": "{{文件夹 ID}}",
  "owner_open_id": "{{用户 open_id}}"
}

3. 格式化文档内容

使用标准模板:

markdown 复制代码
# {{会议主题}}

## 📅 基本信息
- **时间:** {{开始时间}} - {{结束时间}}
- **地点:** {{会议室/线上链接}}
- **参会人:** {{名单}}
- **记录人:** {{姓名}}

## 🎯 会议目标
{{目标描述}}

## 📝 讨论要点

### 议题一:{{标题}}
- 发言人:{{姓名}}
- 关键观点:
  - 观点 1
  - 观点 2
- 结论:{{结论}}

### 议题二:{{标题}}
...

## ✅ 行动项 (Action Items)

| 任务 | 负责人 | 截止日期 | 状态 |
|------|--------|----------|------|
| {{任务 1}} | {{姓名}} | {{日期}} | 待开始 |
| {{任务 2}} | {{姓名}} | {{日期}} | 进行中 |

## 📌 下次会议
- 时间:{{预定时间}}
- 议题:{{预定议题}}

---
*本纪要由 OpenClaw 自动生成*

4. 写入文档内容

json 复制代码
{
  "action": "write",
  "doc_token": "{{文档 Token}}",
  "content": "{{上述模板填充后的内容}}"
}

5. 设置提醒(可选)

使用 feishu_bitable 创建跟进任务:

json 复制代码
{
  "app_token": "{{任务管理 App Token}}",
  "table_id": "{{表格 ID}}",
  "fields": {
    "任务名称": "{{任务描述}}",
    "负责人": [{"id": "{{用户 ID}}"}],
    "截止日期": {{时间戳}},
    "状态": "待开始"
  }
}

参考文档

注意事项

  1. 必须传入 owner_open_id,否则用户无法访问文档

  2. 行动项表格使用 create_table_with_values 一步创建

  3. 长会议内容分批次写入,避免单次请求过大

    Step 3: 创建参考文档

    创建 references/meeting-template.md

    markdown 复制代码
    # 会议纪要模板规范
    
    ## 标准结构
    
    1. 基本信息(时间、地点、参会人)
    2. 会议目标
    3. 讨论要点(按议题分组)
    4. 行动项(表格形式)
    5. 下次会议安排
    
    ## 格式化规则
    
    ### 标题层级
    - H1: 会议主题
    - H2: 主要章节(基本信息、讨论要点、行动项)
    - H3: 子议题
    
    ### 列表使用
    - 无序列表:观点罗列
    - 有序列表:流程步骤
    - 任务列表:行动项
    
    ### 表格规范
    | 列名 | 必填 | 说明 |
    |------|------|------|
    | 任务 | ✅ | 具体行动描述 |
    | 负责人 | ✅ | @用户 |
    | 截止日期 | ✅ | YYYY-MM-DD |
    | 状态 | ✅ | 待开始/进行中/已完成 |
    
    ## 示例文档
    
    https://xxx.feishu.cn/docx/ABC123example

Step 4: 创建辅助脚本(可选)

创建 scripts/format_minutes.py

python 复制代码
#!/usr/bin/env python3
"""
会议纪要格式化脚本
将原始文本转换为结构化 Markdown
"""

import sys
import re
from datetime import datetime

def parse_meeting_text(raw_text: str) -> dict:
    """解析会议文本,提取关键信息"""
    result = {
        'title': '',
        'date': datetime.now().strftime('%Y-%m-%d'),
        'attendees': [],
        'topics': [],
        'action_items': []
    }
    
    # 提取标题
    title_match = re.search(r'会议主题 [::]\s*(.+)', raw_text)
    if title_match:
        result['title'] = title_match.group(1).strip()
    
    # 提取参会人
    attendees_match = re.search(r'参会人 [::]\s*(.+)', raw_text)
    if attendees_match:
        attendees_str = attendees_match.group(1)
        result['attendees'] = [
            name.strip() 
            for name in re.split(r'[,,]', attendees_str)
        ]
    
    # 提取议题
    topic_pattern = r'(?:议题 | 话题)[\d]*[::]\s*(.+?)(?=\n\n|\n(?:议题 | 话题)|$)'
    topics = re.findall(topic_pattern, raw_text, re.DOTALL)
    result['topics'] = [t.strip() for t in topics]
    
    # 提取行动项
    action_pattern = r'([@]?\w+)[::]\s*(.+?)(?:\n|$)'
    actions = re.findall(action_pattern, raw_text)
    for person, task in actions:
        if any(kw in task.lower() for kw in ['负责', '跟进', '完成', '处理']):
            result['action_items'].append({
                'owner': person,
                'task': task.strip()
            })
    
    return result

def generate_markdown(data: dict) -> str:
    """生成 Markdown 格式会议纪要"""
    md = f"# {data['title']}\n\n"
    md += f"## 📅 基本信息\n"
    md += f"- **时间:** {data['date']}\n"
    md += f"- **参会人:** {', '.join(data['attendees'])}\n\n"
    
    md += "## 📝 讨论要点\n\n"
    for i, topic in enumerate(data['topics'], 1):
        md += f"### 议题{i}: {topic}\n\n"
    
    md += "## ✅ 行动项\n\n"
    md += "| 任务 | 负责人 | 状态 |\n"
    md += "|------|--------|------|\n"
    for item in data['action_items']:
        md += f"| {item['task']} | {item['owner']} | 待开始 |\n"
    
    return md

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print("Usage: format_minutes.py <input_file>")
        sys.exit(1)
    
    with open(sys.argv[1], 'r', encoding='utf-8') as f:
        raw_text = f.read()
    
    data = parse_meeting_text(raw_text)
    markdown = generate_markdown(data)
    
    print(markdown)

Step 5: 测试技能

bash 复制代码
# 查看技能文件结构
tree /root/.openclaw/extensions/feishu/skills/meeting-minutes/

# 预期输出:
# meeting-minutes/
# ├── SKILL.md
# ├── scripts/
# │   └── format_minutes.py
# └── references/
#     └── meeting-template.md

SKILL.md 编写详解

YAML Frontmatter 规范

yaml 复制代码
---
name: skill-name              # 必需:技能名称(小写,连字符分隔)
description: |                # 必需:触发描述
  详细描述技能用途和触发场景。
  包含:
  - 技能做什么
  - 何时使用(触发词/场景)
  - 支持的功能列表
---
好的 description 示例
yaml 复制代码
description: |
  飞书文档操作技能。支持创建、读取、编辑、删除云文档。
  使用场景:用户需要管理飞书文档时,如"创建一个周报文档"、
  "读取会议纪要"、"更新项目计划"。支持 Markdown 格式、
  表格创建、图片上传。
差的 description 示例 ❌
yaml 复制代码
description: |
  这是一个很好的技能,可以帮助你处理文档。
  # 问题:太模糊,没有说明具体功能和触发场景

Body 内容组织

推荐结构
markdown 复制代码
# 技能标题

## 功能概述
简要说明技能用途(100 字以内)

## 使用场景
- 场景 1:描述 + 示例用户请求
- 场景 2:描述 + 示例用户请求

## 工具调用
### 工具 1
```json
{ "action": "...", "params": "..." }

工具 2

...

工作流程

  1. 步骤一
  2. 步骤二
  3. 步骤三

参考文档

注意事项

⚠️ 重要提示...

复制代码
### 编写最佳实践

#### ✅ 应该做的

1. **使用祈使句**
   ```markdown
   ✅ "调用 feishu_doc 工具创建文档"
   ❌ "你可以调用 feishu_doc 工具来创建文档"
  1. 提供具体示例

    markdown 复制代码
    ✅ 示例:
    ```json
    { "action": "create", "title": "周报 - 2026-W10" }
    复制代码
  2. 说明限制和边界

    markdown 复制代码
    ⚠️ 注意:Markdown 表格不支持,使用 `create_table` 工具代替
  3. 引用参考文档

    markdown 复制代码
    详细 API 参数见 [飞书文档 API](references/api.md)
❌ 不应该做的
  1. 不要重复工具已有的说明
  2. 不要包含过时的信息
  3. 不要写长篇大论的理论
  4. 不要包含测试代码或调试信息

工具集成开发

理解现有工具

feishu_doc 工具

支持的操作:

Action 说明 示例
read 读取文档 {"action": "read", "doc_token": "ABC123"}
write 写入文档 {"action": "write", "doc_token": "ABC123", "content": "# Title"}
create 创建文档 {"action": "create", "title": "New Doc", "owner_open_id": "ou_xxx"}
append 追加内容 {"action": "append", "doc_token": "ABC123", "content": "..."}
list_blocks 列出块 {"action": "list_blocks", "doc_token": "ABC123"}
create_table 创建表格 {"action": "create_table", "doc_token": "ABC123", "row_size": 3, "column_size": 2}
upload_image 上传图片 {"action": "upload_image", "doc_token": "ABC123", "url": "https://..."}

完整参数参考:

json 复制代码
{
  "action": "create",
  "title": "文档标题",
  "folder_token": "文件夹 ID(可选)",
  "owner_open_id": "用户 open_id(必需)"
}
feishu_drive 工具

支持的操作:

Action 说明 示例
list 列出文件夹 {"action": "list", "folder_token": "fld_xxx"}
info 获取文件信息 {"action": "info", "file_token": "ABC123", "type": "docx"}
create_folder 创建文件夹 {"action": "create_folder", "name": "New Folder"}
move 移动文件 {"action": "move", "file_token": "ABC123", "folder_token": "fld_xxx"}
delete 删除文件 {"action": "delete", "file_token": "ABC123", "type": "docx"}

⚠️ 重要限制: 机器人没有根文件夹概念,只能访问已共享的文件夹。

feishu_wiki 工具

Wiki-文档工作流:

复制代码
1. 获取 Wiki 节点 → feishu_wiki { action: "get", token: "wiki_xxx" }
   ↓ 返回 obj_token
2. 读取文档内容 → feishu_doc { action: "read", doc_token: "obj_token" }
   ↓ 获取内容
3. 编辑文档 → feishu_doc { action: "write", doc_token: "obj_token", content: "..." }

工具调用模式

模式 1:单次调用
json 复制代码
{
  "action": "read",
  "doc_token": "ABC123"
}
模式 2:链式调用
json 复制代码
// 步骤 1: 创建文档
{
  "action": "create",
  "title": "新文档",
  "owner_open_id": "ou_xxx"
}
// → 返回 doc_token

// 步骤 2: 写入内容
{
  "action": "write",
  "doc_token": "返回的 token",
  "content": "# 内容"
}

// 步骤 3: 创建表格
{
  "action": "create_table",
  "doc_token": "返回的 token",
  "row_size": 3,
  "column_size": 2
}
模式 3:条件调用
markdown 复制代码
## 读取流程

1. 先用 `action: "read"` 获取纯文本
2. 检查响应中的 `block_types` 字段
3. 如果包含 "table" 或 "image",使用 `action: "list_blocks"` 获取完整数据

进阶技能开发

案例 1:项目周报自动生成

需求: 每周五自动收集团队成员的工作汇报,生成结构化周报文档。

Skill 设计:

markdown 复制代码
---
name: weekly-report-generator
description: |
  周报自动生成技能。使用场景:收集团队成员工作汇报、
  生成结构化周报文档、统计项目进度、@相关人员提醒提交。
  触发词:"周报"、"weekly report"、"工作总结"
---

# 周报生成器

## 工作流程

### 1. 收集汇报内容

从以下来源收集:
- 飞书群聊消息(关键词:"本周工作"、"已完成")
- 多维表格(任务完成记录)
- 用户直接输入

### 2. 分类整理

按以下维度分类:
- ✅ 已完成任务
- 🔄 进行中任务
- ⚠️ 风险/问题
- 📅 下周计划

### 3. 创建周报文档

```json
{
  "action": "create",
  "title": "团队周报 - {{年份}}W{{周数}}",
  "folder_token": "fld_team_reports",
  "owner_open_id": "{{manager_open_id}}"
}

4. 格式化内容

markdown 复制代码
# 团队周报 - {{年份}}W{{周数}}

## 📊 本周概览
- 完成任务:{{数量}}
- 进行中:{{数量}}
- 风险项:{{数量}}

## ✅ 已完成
{{完成列表}}

## 🔄 进行中
{{进行列表}}

## ⚠️ 风险与问题
{{风险列表}}

## 📅 下周计划
{{计划列表}}

---
生成时间:{{时间戳}}

5. 发送通知

使用 feishu 消息工具发送到管理群:

json 复制代码
{
  "channel": "feishu",
  "target": "oc_management_group",
  "message": "本周周报已生成:{{文档链接}}"
}
复制代码
### 案例 2:知识库自动维护

**需求:** 自动整理项目文档,维护知识库结构。

**Skill 设计:**

```markdown
---
name: wiki-organizer
description: |
  知识库整理技能。使用场景:整理项目文档、维护 Wiki 结构、
  迁移过时内容、创建索引页面。
  触发词:"整理知识库"、"更新 Wiki"、"文档归档"
---

# 知识库整理助手

## 核心功能

### 1. 扫描知识库结构

```json
{
  "action": "spaces"
}
// → 返回所有空间列表

{
  "action": "nodes",
  "space_id": "7xxx"
}
// → 返回节点树

2. 识别问题

检查项:

  • 孤立页面(无父节点)
  • 过时内容(超过 90 天未更新)
  • 重复页面(标题相似度>80%)
  • 死链(引用不存在的文档)

3. 生成整理报告

创建临时文档列出问题:

json 复制代码
{
  "action": "create",
  "title": "知识库整理报告 - {{日期}}",
  "owner_open_id": "{{user_id}}"
}

4. 执行整理

根据用户确认执行:

  • 移动节点到新位置

  • 重命名冲突页面

  • 删除重复内容

  • 更新索引页

    案例 3:权限批量管理

    需求: 新项目启动时,批量设置文档权限。

    Skill 设计:

    markdown 复制代码
    ---
    name: permission-manager
    description: |
      权限批量管理技能。使用场景:新项目权限初始化、
      离职员工权限回收、跨部门文档共享。
      触发词:"设置权限"、"共享文档"、"权限管理"
    ---
    
    # 权限管理器
    
    ## 权限模板
    
    ### 项目模板
    | 角色 | 权限级别 | 范围 |
    |------|----------|------|
    | 项目经理 | full_access | 全部文档 |
    | 核心成员 | edit_access | 负责模块 |
    | 普通成员 | read_access | 公共文档 |
    | 外部顾问 | read_access | 指定文档 |
    
    ## 批量操作流程
    
    ### 1. 准备人员列表
    
    从飞书联系人获取:
    ```json
    {
      "action": "members",
      "chat_id": "oc_project_group"
    }

2. 应用权限模板

对每个文档执行:

json 复制代码
{
  "action": "update_perm",
  "doc_token": "{{文档 token}}",
  "user_id": "{{用户 ID}}",
  "permission": "edit_access"
}

3. 验证结果

抽样检查权限是否正确应用。

复制代码
---

## 调试与测试

### 本地测试方法

#### 方法 1:模拟用户请求

```bash
# 在 OpenClaw 中测试
openclaw chat "帮我创建一个会议纪要文档,主题是项目启动会"

观察:

  • Skill 是否正确触发
  • 工具调用参数是否正确
  • 返回结果是否符合预期
方法 2:查看日志
bash 复制代码
# 实时查看日志
tail -f /tmp/openclaw/openclaw-2026-03-11.log | grep -i "skill"

# 筛选特定技能
grep "meeting-minutes" /tmp/openclaw/openclaw-2026-03-11.log
方法 3:使用调试模式
bash 复制代码
# 启用详细日志
export OPENCLAW_LOG_LEVEL=debug
openclaw gateway restart

常见问题排查

问题 1: Skill 不触发

症状: 用户提到相关关键词,但 Skill 未激活

排查步骤:

bash 复制代码
# 1. 检查 SKILL.md 的 description
cat /root/.openclaw/extensions/feishu/skills/your-skill/SKILL.md | head -10

# 2. 确认描述中包含触发词
# description 应该包含:"会议纪要"、"meeting" 等关键词

# 3. 查看日志确认触发
grep "skill.*trigger" /tmp/openclaw/openclaw-*.log

解决方案:

yaml 复制代码
# 修改 description,增加触发词
description: |
  会议纪要生成技能。触发词:会议纪要、会议总结、
  meeting minutes、整理会议、周报生成
问题 2: 工具调用失败

症状: Skill 触发但工具返回错误

排查步骤:

bash 复制代码
# 查看工具调用日志
grep "feishu_doc" /tmp/openclaw/openclaw-*.log | tail -20

# 检查返回错误
grep "error" /tmp/openclaw/openclaw-*.log | tail -10

常见错误:

错误信息 原因 解决方案
invalid_doc_token Token 格式错误 检查 URL 提取逻辑
permission_denied 权限不足 确认用户已授权
rate_limit_exceeded 请求超限 添加延迟或重试
owner_open_id required 缺少必需参数 从元数据获取用户 ID
问题 3: 文档创建后无法访问

症状: 文档创建成功,但用户看不到

原因: 未设置 owner_open_id

解决方案:

json 复制代码
// ❌ 错误
{
  "action": "create",
  "title": "新文档"
}

// ✅ 正确
{
  "action": "create",
  "title": "新文档",
  "owner_open_id": "ou_36d97b69edad87978b74341b96900607"
}

从 inbound metadata 获取用户 ID:

javascript 复制代码
// 在 Skill 中说明
// 从 sender_id 或 user_open_id 字段获取

性能优化

1. 减少上下文占用
markdown 复制代码
# ❌ 冗长版本(占用大量 token)

## 什么是飞书文档
飞书文档是飞书提供的一款在线协作文档工具,
支持多人实时编辑、评论、版本历史等功能。
它可以帮助团队高效协作...

# ✅ 简洁版本

飞书文档:在线协作文档工具,支持多人编辑、评论。
2. 使用参考文档

将详细内容移到 references/ 目录:

markdown 复制代码
# SKILL.md 中
详细 API 参数见 [API 文档](references/api.md)

# references/api.md 中
(详细内容,不占用主上下文)
3. 脚本代替说明
markdown 复制代码
# ❌ 用文字描述复杂逻辑
首先获取 A,然后判断 B,如果 B 为真则...

# ✅ 提供脚本
执行 `scripts/process.py` 处理逻辑

发布与分享

打包技能

bash 复制代码
# 使用打包脚本
python3 /home/dongwei/openclaw/scripts/package_skill.py \
  /root/.openclaw/extensions/feishu/skills/meeting-minutes

输出:

复制代码
✅ Validation passed
✅ Packaged to: meeting-minutes.skill

验证打包结果

bash 复制代码
# 查看打包文件
ls -lh meeting-minutes.skill

# 解压查看内容
unzip -l meeting-minutes.skill

分享给社区

方式 1: GitHub 发布
  1. Fork OpenClaw 仓库
  2. 将技能添加到 skills/ 目录
  3. 提交 Pull Request
  4. 等待审核合并
方式 2: 直接分享
bash 复制代码
# 发送 .skill 文件给用户
# 用户解压到 ~/.openclaw/skills/ 目录

版本管理

SKILL.md 中添加版本信息:

markdown 复制代码
---
name: meeting-minutes
version: 1.0.0
changelog: |
  v1.0.0 - 初始版本
    - 支持会议纪要生成
    - 支持行动项表格创建
    - 支持@参会人员
---

最佳实践

设计原则

1. 单一职责

每个 Skill 只解决一类问题:

markdown 复制代码
✅ meeting-minutes - 专注会议纪要
✅ weekly-report - 专注周报生成
✅ permission-manager - 专注权限管理

❌ all-in-one - 什么都能做但都不精
2. 渐进式披露
markdown 复制代码
# SKILL.md 保持简洁(<500 行)
核心流程 + 关键示例

# references/ 存放详情
- api-reference.md
- templates.md
- troubleshooting.md
3. 容错设计
markdown 复制代码
## 错误处理

如果文档已存在:
1. 提示用户是否覆盖
2. 或追加时间戳创建新版本

如果用户无权限:
1. 明确告知缺少的权限
2. 提供申请权限的链接

命名规范

bash 复制代码
# 技能名称
✅ meeting-minutes
✅ weekly-report
✅ permission-manager

❌ MeetingMinutes      # 不要驼峰
❌ meeting_minutes     # 不要下划线
❌ 会议纪要             # 不要中文

文档结构

复制代码
skill-name/
├── SKILL.md              # <500 行,核心逻辑
├── scripts/              # 可执行脚本
│   └── processor.py      # 复杂逻辑脚本化
├── references/           # 参考文档
│   ├── api.md            # API 详细说明
│   ├── templates.md      # 模板集合
│   └── examples.md       # 使用示例
└── assets/               # 资源文件
    └── template.docx     # 文档模板

测试清单

在发布前检查:

  • SKILL.md 语法正确
  • YAML frontmatter 格式正确
  • 所有引用的参考文档存在
  • 脚本可执行且无错误
  • 工具调用参数完整
  • 错误处理逻辑完善
  • 示例可正常运行
  • 文档无拼写错误

常见问题

Q1: Skill 和 Tool 有什么区别?

A:

  • Tool 是底层 API 封装,提供具体操作能力
  • Skill 是业务场景指导,告诉 AI 何时及如何使用 Tool

例如:

  • feishu_doc (Tool) - 提供 create, read, write 等操作
  • meeting-minutes (Skill) - 指导 AI 在用户需要会议纪要时调用 feishu_doc.create()

Q2: 如何调试 Skill 触发问题?

A:

bash 复制代码
# 1. 启用调试日志
export OPENCLAW_LOG_LEVEL=debug

# 2. 查看触发日志
grep "skill.*trigger\|skill.*load" /tmp/openclaw/openclaw-*.log

# 3. 检查 description 是否包含触发词
cat SKILL.md | grep -A5 "description"

Q3: 技能文件应该放在哪里?

A:

推荐位置:

复制代码
/root/.openclaw/extensions/feishu/skills/your-skill/

也可以放在:

复制代码
/root/.openclaw/skills/your-skill/

Q4: 如何引用外部 API 文档?

A:

使用 references/ 目录:

markdown 复制代码
# SKILL.md 中
详见 [飞书 API 文档](references/feishu-api.md)

# references/feishu-api.md
(粘贴或整理 API 文档内容)

Q5: Skill 会影响性能吗?

A:

  • 未触发时: 只加载 ~100 字的 metadata,几乎无影响
  • 触发后: 加载完整 SKILL.md,占用上下文
  • 优化方法: 使用 references 分流详细内容

Q6: 可以调用外部 API 吗?

A:

可以,通过 scripts/ 中的脚本:

python 复制代码
# scripts/fetch-data.py
import requests

response = requests.get('https://api.example.com/data')
print(response.json())

在 Skill 中说明:

markdown 复制代码
执行 `scripts/fetch-data.py` 获取外部数据

附录

附录 A: 完整 Skill 示例

查看完整示例:

bash 复制代码
cat /root/.openclaw/extensions/feishu/skills/feishu-doc/SKILL.md

附录 B: 飞书 API 速查

操作 Tool Action 必需参数
创建文档 feishu_doc create title, owner_open_id
读取文档 feishu_doc read doc_token
写入文档 feishu_doc write doc_token, content
创建表格 feishu_doc create_table doc_token, row_size, column_size
列出文件 feishu_drive list (可选 folder_token)
创建文件夹 feishu_drive create_folder name
获取 Wiki feishu_wiki get token
创建节点 feishu_wiki create space_id, title

附录 C: 工具命令

bash 复制代码
# 查看已加载的技能
openclaw skills list

# 查看工具列表
openclaw tools list

# 测试技能触发
openclaw chat "帮我创建一个文档"

# 查看日志
tail -f /tmp/openclaw/openclaw-*.log

附录 D: 参考资源

资源 链接
OpenClaw 官方文档 https://docs.openclaw.ai
飞书开放平台 https://open.feishu.cn
Skill Creator 指南 /home/dongwei/openclaw/skills/skill-creator/SKILL.md
飞书插件源码 /root/.openclaw/extensions/feishu/
示例 Skills /root/.openclaw/extensions/feishu/skills/

本教程最后更新:2026-03-11
基于 OpenClaw 2026.3.3 编写

相关推荐
spencer_tseng2 小时前
OpenClaw CVE-2026-30891 19890
openclaw
Neolnfra2 小时前
为什么现在需要卸载OpenClaw:它对你的系统安全做了什么?
安全·系统安全·openclaw
yhdata2 小时前
精准锚定2032!全自动移液机器人市场规模预计突破97.8亿元
人工智能·机器人
YMWM_2 小时前
机器人模型预测控制MPC简要介绍
机器人·控制算法
赵谨言2 小时前
基于YOLOv5的植物目标检测研究
大数据·开发语言·经验分享·python
不光头强2 小时前
IO流知识点
开发语言·python
niuniudengdeng2 小时前
六面独立转动魔方还原机器人设计与实现
数学·算法·机器人
沫儿笙2 小时前
CLOOS克鲁斯机器人H型钢柱焊接节气装置
机器人
老师好,我是刘同学3 小时前
Python列表用法全解析及实战示例
python