Auto sync skills to SkillHub: 2026-04-03 16:34:44

This commit is contained in:
xiaobian-bot 2026-04-03 16:34:44 +08:00
commit c136db147e
5 changed files with 314 additions and 0 deletions

58
skills/README.md Normal file
View File

@ -0,0 +1,58 @@
# skills/ - 技能定义目录
存放数字员工的专项技能,**每个技能是一个独立子目录**,内含相关的说明文档、配置和资源文件。
## 用途
- 定义数字员工具备的专项能力(如数据分析、报表生成、日程管理等)
- 为 agent 提供结构化的任务执行指引
- 支持按需加载,只在相关场景下启用特定技能
- 每个技能目录可包含多个文件,便于组织复杂技能所需的模板、示例和配置
## 目录结构规范
```
skills/
├── data-analysis/ # 数据分析技能
│ ├── README.md # 技能说明(触发条件、执行流程)
│ ├── templates/ # 分析模板SQL、图表模板等
│ └── examples/ # 示例输入输出
├── report-generation/ # 报表生成技能
│ ├── README.md
│ └── templates/
├── schedule-management/ # 日程管理技能
│ └── README.md
└── README.md
```
## 技能目录模板
每个技能目录下的 `README.md` 建议包含:
```markdown
# 技能名称
## 触发条件
(什么场景下启用此技能)
## 执行步骤
(具体的操作流程)
## 依赖工具
(需要调用的工具列表)
## 所需凭证
(列举此技能运行所需的凭证名称和用途,具体值从 secrets.md 读取)
## 输出规范
(输出格式和存放位置)
## 相关文件
(本目录下的模板、配置等文件说明)
```
## 安全规范
- **技能文件中禁止包含实际的密钥、密码、Token 等敏感信息**
- 技能可以在「所需凭证」章节列举需要提供哪些凭证,但具体值统一存储在 `secrets.md`
- 技能中的脚本如需使用凭证,应通过环境变量注入,不得硬编码

View File

@ -0,0 +1,118 @@
---
name: lark-send-message-as-bot
description: |
以 Bot 身份通过飞书发送消息。支持两种目标:
(1) 给个人用户发私聊消息(基于 user_id
(2) 给群组发消息(基于 chat_id
当 agent 需要主动推送消息、通知用户、向群组发送信息时使用。
触发场景发消息、通知某人、推送到群、Bot 发消息、主动消息。
---
# 以 Bot 身份发送飞书消息
## 前置条件
- Bot 应用的凭证已配置在 `/root/.openclaw/credentials/<agent_name>/config.json`
- 目标用户必须在 Bot 应用的**可用范围**内(开发者后台配置)
- 目标群必须已将 Bot 添加为群成员
## 发送消息
### 获取 tenant_access_token
所有发送操作前先获取 token
```bash
APP_ID=$(jq -r '.apps[0].appId' /root/.openclaw/credentials/<agent_name>/config.json)
APP_SECRET=$(jq -r '.apps[0].appSecret' /root/.openclaw/credentials/<agent_name>/config.json)
TOKEN=$(curl -s -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \
-H "Content-Type: application/json" \
-d "{\"app_id\":\"$APP_ID\",\"app_secret\":\"$APP_SECRET\"}" \
| jq -r '.tenant_access_token')
```
token 有效期 2 小时,同一批操作复用即可。
### 给个人用户发消息
使用 `receive_id_type=user_id``receive_id` 填租户级员工 ID
```bash
curl -s -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=user_id" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"receive_id": "<user_id>",
"msg_type": "text",
"content": "{\"text\":\"消息内容\"}"
}'
```
### 给群组发消息
使用 `receive_id_type=chat_id``receive_id` 填群 ID
```bash
curl -s -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"receive_id": "<chat_id>",
"msg_type": "text",
"content": "{\"text\":\"消息内容\"}"
}'
```
## 消息类型
`msg_type``content` 对应关系:
| msg_type | content 格式 | 示例 |
|----------|-------------|------|
| text | `{"text":"纯文本"}` | 普通文本消息 |
| post | `{"zh_cn":{"title":"标题","content":[[{"tag":"text","text":"正文"}]]}}` | 富文本(支持 @、链接、图片) |
| interactive | 卡片 JSON | 消息卡片 |
富文本 post 支持的 tag`text`、`a`(链接)、`at`@用户)、`img`(图片)。
## ID 查询方式
### 查询 user_id
通过 Bot 所在群的成员列表获取(指定 `member_id_type=user_id`
```bash
LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/<agent_name> \
lark-cli im chat.members get \
--params '{"chat_id":"<群的chat_id>","member_id_type":"user_id"}' \
--as bot
```
返回结果中 `member_id` 即为 `user_id`
> **注意:** 不要使用 `open_id` 跨应用发消息,`open_id` 是应用级别的,不同 Bot 看到的同一用户 open_id 不同。`user_id` 是租户级唯一标识,所有 Bot 通用。
### 查询 chat_id
列出 Bot 所在的所有群:
```bash
LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/<agent_name> \
lark-cli im chats list --params '{}' --as bot --page-all
```
返回结果中每个群的 `chat_id``name` 一一对应。
## 常见错误
| 错误码 | 含义 | 解决方式 |
|-------|------|---------|
| 230013 | Bot has NO availability to this user | 在开发者后台将该用户加入应用的可用范围 |
| 230001 | Bot is not in the chat | 将 Bot 添加到目标群 |
## 安全规则
- 发送前必须确认用户意图,禁止未经确认自动发送
- 禁止在终端明文输出 `appSecret``accessToken`
- `<agent_name>` 根据当前 agent 身份确定(如 xiaokui、xiaoxi、xiaoban 等),参考 `lark-action-as-bot` 技能的凭证目录表

View File

@ -0,0 +1,62 @@
# MAKEE Interactive 全员姓名-租户user_id对照表
总人数57人
| 姓名 | 租户通用 user_id |
|--------|---------------------|
| 刘庆逊 | cb2815b4 |
| 刘彦江 | 1da2afbf |
| 胡晓阳 | 2c856846 |
| 张钟月 | 63943ebf |
| 黄挥伟 | 8g42f9b4 |
| 俞欣宜 | aef91f7c |
| 崔竞月 | gfd413g1 |
| 李玉 | 329g7c88 |
| 李雷 | 738edg1b |
| 李若松 | 4aagb443 |
| 范威 | fd47b979 |
| 李文俊 | 4agg3b17 |
| 杨振宇 | b4f341ca |
| 王计 | 43872bc9 |
| 胡陈辰 | gc64176a |
| 吴敬兴 | f4f87c6f |
| 庞鸿潇 | 1f5b7ef9 |
| 毋益飞 | eggbg21g |
| 江涛 | 3d7g1e8f |
| 李承龙 | d8cb7f2a |
| 梁晨 | d245ccg9 |
| 王增礼 | 65cb43f9 |
| 张骜 | 6e7c9b45 |
| 魏亭亭 | cbg55d99 |
| 张沄菥 | 张沄菥 |
| 俞凯歌 | 42fge393 |
| 曲慧萌 | 8c654e1e |
| 何彬君 | d4a56ebg |
| 李应瑛 | 58fd6864 |
| 王虹茗 | af61e4gc |
| 安君仪 | 5412bd9c |
| 童瑶 | gc9f72ff |
| 王祺 | b87ac848 |
| 王欢 | 95g5d89f |
| 张昆鹏 | 7f5cd711 |
| 宋莉 | b4cdf55a |
| 武钰涵 | 8ag94eff |
| 孙时敏 | da6f5fcf |
| 张路 | 742e5117 |
| 遇庭翰 | gcb23689 |
| 林逸瀚 | fbdc565b |
| 王胤鑫 | 5f3bfbe9 |
| 李丹 | ea523c46 |
| 朱源 | 5g8c9355 |
| 梁音 | g52gb2a3 |
| 刘亚伟 | 5f96bf7e |
| 王珞 | 9e4b5fa6 |
| 刘兴冉 | 76e67fc7 |
| 郭少甫 | adfd767f |
| 傅硕 | ff52b224 |
| 徐思清 | 1df37bdd |
| Kala | a893ca1b |
| 姜小龙 | bc227c85 |
| 许悦 | ae8b8b7f |
| 刘新玉 | 7gc796ga |
| 布雪松 | a6ge7741 |
| 章铭暄 | 222ec715 |

View File

@ -0,0 +1,75 @@
---
name: lark_wiki_operate_as_bot
version: 1.0.0
description: "飞书知识库Bot身份操作专用技能统一使用Bot身份遍历目录、读取知识库文档内容禁止触发用户身份授权"
metadata:
requires:
permissions: ["wiki:node:retrieve", "docx:document:readonly"]
---
# lark_wiki_operate_as_bot 技能规范
## 核心规则(强制执行)
1. **身份限制**:所有知识库操作**永远使用Bot身份**执行,绝对不触发任何用户身份授权弹窗
2. **文档范围限制**:仅支持读取飞书知识库(`/wiki/`开头的链接)文档,**不支持读取用户私有个人文档**`/doc/`/`/sheet/`等非wiki开头的个人路径
3. **权限告知规则**
- 收到非知识库文档链接直接回复「我仅支持读取飞书知识库Wiki文档暂不支持读取个人私有文档请提供知识库链接」
- Bot无权限访问目标知识空间回复「当前Bot无访问该知识空间权限请将Bot应用添加为该知识空间成员并授予查看权限后重试」
## 适用场景
- 遍历知识库目录下的子文档/子目录
- 读取知识库文档内容
- 批量导出知识库文档
- 所有知识库相关的查询、读取操作
## 完整执行链路
### 步骤1链接解析
- 从用户提供的链接中提取`wiki_token`:例如链接`https://xxx.feishu.cn/wiki/XXXXXXX`中的`XXXXXXX`即为`wiki_token`
- 若链接不含`/wiki/`路径,直接按非知识库文档规则回复
### 步骤2获取节点基础信息
```bash
LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}' --as bot
```
返回结果中提取关键信息:
- `space_id`知识空间ID
- `obj_token`文档真实ID若节点为文档
- `has_child`:是否为目录(含子节点)
- `obj_type`节点类型docx/sheet/bitable等
### 步骤3遍历目录子节点仅当has_child=true时
#### 3.1 获取Bot租户访问凭证
```bash
curl -s -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \
-H "Content-Type: application/json" \
-d '{"app_id":"cli_xxx","app_secret":"xxx"}' \
| jq -r '.tenant_access_token'
```
得到`tenant_access_token`有效期2小时
#### 3.2 调用Wiki V2接口获取子节点列表
```bash
curl -s -X GET "https://open.feishu.cn/open-apis/wiki/v2/spaces/<space_id>/nodes?parent_node_token=<wiki_token>" \
-H "Authorization: Bearer <tenant_access_token>"
```
返回子节点完整列表(名称、链接、类型等)
### 步骤4读取文档内容仅当节点为文档时
```bash
LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan lark-cli docs +fetch --doc <obj_token> --as bot
```
## 权限要求
### 1. 应用权限(飞书开发者后台配置)
| 权限名称 | Scope | 类型 |
|---------|-------|------|
| 获取知识空间节点信息 | `wiki:node:retrieve` | 只读 |
| 查看文档内容 | `docx:document:readonly` | 只读 |
### 2. 知识空间配置
需要将Bot应用添加到目标知识空间的成员列表授予至少「可查看」权限
## 异常处理
- 接口返回`99991401`(无权限):按权限不足规则回复用户
- 接口返回`404`:检查`wiki_token`/`space_id`是否正确,确认链接为有效知识库链接

1
skills/test_sync.txt Normal file
View File

@ -0,0 +1 @@
test sync to skillhub