@clawhub-benleyl-d16b161f34
启用飞书权限管理工具,支持添加、查看和移除飞书文档/表格协作者权限操作。
# feishu-perm-helper
一键启用飞书权限管理工具,让 OpenClaw 可以管理飞书文档/表格的协作者权限。
## 🎯 功能
- ✅ 自动启用 `feishu_perm` 工具
- ✅ 支持添加/查看/移除协作者
- ✅ 提供常用命令示例
## 📦 安装
```bash
clawhub install feishu-perm-helper
```
或者手动安装:
```bash
cp -r feishu-perm-helper ~/.openclaw/workspace/skills/
```
## 🚀 使用
### 安装后自动启用
安装完成后,Skill 会自动修改配置文件并重启 Gateway。
### 手动启用(可选)
如果自动启用失败,可以手动执行:
```bash
node ~/.openclaw/workspace/skills/feishu-perm-helper/scripts/enable-perm-tool.js
```
### 使用命令
安装后,在飞书里对机器人说:
**添加协作者:**
```
给这个表格添加编辑权限
https://xxx.feishu.cn/base/XXX
用户:ou_xxxxxxxxxxxx
```
**查看协作者列表:**
```
查看这个表格的协作者
https://xxx.feishu.cn/base/XXX
```
**移除协作者:**
```
移除 XX 的编辑权限
https://xxx.feishu.cn/base/XXX
用户:ou_xxxxxxxxxxxx
```
## 📝 配置说明
### 配置文件位置
`~/.openclaw/openclaw.json`
### 需要添加的配置
```json
{
"channels": {
"feishu": {
"tools": {
"perm": true
},
"accounts": {
"default": {
"tools": {
"perm": true
}
}
}
}
}
}
```
### 需要的飞书应用权限
确保飞书应用有以下权限:
- `docs:permission.member:create` - 添加协作者
- `docs:permission.member:read` - 查看协作者
- `docs:permission.member:delete` - 移除协作者
这些权限在飞书开放平台默认已授予。
## 🆘 故障排查
### 工具未启用
检查 Gateway 日志:
```bash
openclaw gateway status
```
应该看到:
```
[plugins] feishu_perm: Registered feishu_perm tool
```
### 权限不足错误
确保:
1. 飞书应用有相关 API 权限
2. 应用是表格的协作者(可管理权限)
### 配置不生效
重启 Gateway:
```bash
openclaw gateway restart
```
## 📞 反馈
遇到问题或有建议,欢迎反馈!
## 📄 许可证
MIT License
FILE:README.md
# feishu-perm-helper
一键启用飞书权限管理工具,让 OpenClaw 可以管理飞书文档/表格的协作者权限。
## 🎯 功能
- ✅ 自动启用 `feishu_perm` 工具
- ✅ 支持添加/查看/移除协作者
- ✅ 提供常用命令示例
## 📦 安装
```bash
clawhub install feishu-perm-helper
```
安装完成后自动启用,无需额外配置。
## 🚀 使用
### 添加协作者
在飞书里对机器人说:
```
给这个表格添加编辑权限
https://xxx.feishu.cn/base/XXX
用户:ou_xxxxxxxxxxxx
```
### 查看协作者列表
```
查看这个表格的协作者
https://xxx.feishu.cn/base/XXX
```
### 移除协作者
```
移除 XX 的编辑权限
https://xxx.feishu.cn/base/XXX
用户:ou_xxxxxxxxxxxx
```
## 📝 权限说明
**权限级别:**
- `view` - 只读
- `edit` - 可编辑
- `full_access` - 可管理
**支持的文档类型:**
- `bitable` - 多维表格
- `docx` - 云文档
- `sheet` - 在线表格
- `folder` - 文件夹
## 🆘 故障排查
### 工具未启用
```bash
openclaw gateway status
```
应该看到:`feishu_perm: Registered feishu_perm tool`
### 权限不足
确保飞书应用是表格的协作者(可管理权限)。
## 📄 许可证
MIT License
FILE:_meta.json
{
"name": "feishu-perm-helper",
"version": "1.0.0",
"description": "一键启用飞书权限管理工具,让 OpenClaw 可以管理飞书文档/表格的协作者权限",
"author": "泡泡糖家庭",
"license": "MIT",
"keywords": ["feishu", "permission", "collaborator", "bitable", "openclaw"],
"scripts": {
"enable": "node scripts/enable-perm-tool.js"
},
"files": [
"SKILL.md",
"README.md",
"scripts/"
],
"engines": {
"node": ">=16.0.0",
"openclaw": ">=2026.3.0"
}
}
FILE:scripts/enable-perm-tool.js
#!/usr/bin/env node
/**
* 启用飞书权限管理工具
*
* 功能:
* 1. 读取 openclaw.json 配置文件
* 2. 为所有飞书账号启用 perm 工具
* 3. 重启 Gateway 使配置生效
*/
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const CONFIG_PATH = path.join(require('os').homedir(), '.openclaw/openclaw.json');
console.log('🦞 OpenClaw 飞书权限工具启用脚本\n');
// 读取配置文件
console.log('📖 读取配置文件...');
let config;
try {
const configContent = fs.readFileSync(CONFIG_PATH, 'utf8');
config = JSON.parse(configContent);
console.log('✅ 配置文件读取成功');
} catch (error) {
console.error('❌ 读取配置文件失败:', error.message);
console.error('文件路径:', CONFIG_PATH);
process.exit(1);
}
// 检查是否有 feishu 配置
if (!config.channels || !config.channels.feishu) {
console.error('❌ 未找到飞书配置,请先配置飞书插件');
process.exit(1);
}
console.log('✅ 飞书配置已找到');
// 启用顶层 tools.perm
if (!config.channels.feishu.tools) {
config.channels.feishu.tools = {};
}
config.channels.feishu.tools.perm = true;
console.log('✅ 已启用 channels.feishu.tools.perm');
// 为所有账号启用 perm 工具
const accounts = config.channels.feishu.accounts || {};
const accountNames = Object.keys(accounts);
if (accountNames.length === 0) {
console.log('⚠️ 未配置飞书账号');
} else {
console.log(`📋 找到 accountNames.length 个飞书账号:accountNames.join(', ')`);
for (const accountName of accountNames) {
const account = accounts[accountName];
if (!account.tools) {
account.tools = {};
}
account.tools.perm = true;
console.log(`✅ 已为 accountName 账号启用 perm 工具`);
}
}
// 保存配置文件
console.log('\n💾 保存配置文件...');
try {
fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf8');
console.log('✅ 配置文件保存成功');
} catch (error) {
console.error('❌ 保存配置文件失败:', error.message);
process.exit(1);
}
// 重启 Gateway
console.log('\n🔄 重启 Gateway...');
try {
execSync('openclaw gateway restart', { stdio: 'inherit' });
console.log('✅ Gateway 重启成功');
} catch (error) {
console.error('❌ Gateway 重启失败:', error.message);
console.log('\n⚠️ 请手动执行:openclaw gateway restart');
}
// 验证
console.log('\n🔍 验证配置...');
setTimeout(() => {
try {
const status = execSync('openclaw gateway status', { encoding: 'utf8' });
if (status.includes('feishu_perm: Registered feishu_perm tool')) {
console.log('✅ feishu_perm 工具已成功注册');
console.log('\n🎉 配置完成!现在可以在飞书里使用权限管理功能了!');
console.log('\n📝 使用示例:');
console.log(' - "给这个表格添加编辑权限 https://xxx.feishu.cn/base/XXX"');
console.log(' - "查看这个表格的协作者 https://xxx.feishu.cn/base/XXX"');
console.log(' - "移除 XX 的编辑权限 https://xxx.feishu.cn/base/XXX"');
} else {
console.log('⚠️ 未检测到 feishu_perm 工具,可能需要等待几秒后重试');
}
} catch (error) {
console.log('⚠️ 验证失败,请手动执行:openclaw gateway status');
}
}, 3000);