这个扩展让 pi 能够连接飞书,接收和发送消息。
- WebSocket 长连接: 无需公网 IP,通过 WebSocket 接收飞书消息
- 自动回复: LLM 响应完成后自动发送到飞书,无需工具调用
- 富消息支持: 支持文本、Markdown 卡片
# 进入扩展目录
cd ~/.pi/agent/extensions/feishu
# 安装依赖
npm install有两种配置方式:
export FEISHU_APP_ID="cli_xxxxxxxxxxxx"
export FEISHU_APP_SECRET="xxxxxxxxxxxxxxxxxx"
export FEISHU_ALLOW_FROM="*" # 或指定 open_id,逗号分隔
export FEISHU_GROUP_POLICY="mention" # 或 "open" 接收所有群消息创建 ~/.pi/feishu.json:
{
"appId": "cli_xxxxxxxxxxxx",
"appSecret": "xxxxxxxxxxxxxxxxxx",
"allowFrom": ["*"],
"groupPolicy": "mention",
"reactEmoji": "THUMBSUP",
"domain": "feishu"
}配置项说明:
| 字段 | 说明 | 默认值 |
|---|---|---|
appId |
飞书应用 ID | 必填 |
appSecret |
飞书应用密钥 | 必填 |
allowFrom |
允许的发送者 ID,["*"] 表示所有人 |
["*"] |
groupPolicy |
群消息策略:mention(仅@时响应)或 open(所有消息) |
mention |
reactEmoji |
收到消息时的表情反应 | THUMBSUP |
domain |
域名:feishu(中国版)或 lark(国际版) |
feishu |
- 访问 飞书开放平台
- 创建企业自建应用
- 获取 App ID 和 App Secret
- 启用机器人能力
- 配置事件订阅:
im.message.receive_v1
启动 pi 后:
/feishu start # 启动飞书连接(同时初始化远程命令)
/feishu status # 查看连接状态
/feishu stop # 断开连接
连接成功后,可以在飞书中发送以下命令:
| 命令 | 功能 |
|---|---|
/new |
创建新会话 |
┌─────────────┐ WebSocket ┌─────────────┐
│ 飞书云 │ ◄──────────────► │ pi 扩展 │
└─────────────┘ └──────┬──────┘
│
▼
┌─────────────┐
│ pi 核心 │
└─────────────┘
消息流程:
- 飞书消息通过 WebSocket 推送到扩展
- 扩展将消息注入到 pi 对话
- LLM 生成响应
agent_end事件触发,扩展自动将响应发送回飞书
与工具模式的区别:
旧版使用工具(feishu_reply)让 LLM 主动发送消息,问题是工具结果返回给 LLM 后可能导致重复回复。
新版使用事件订阅,LLM 正常响应即可,响应完成后自动发送,避免重复回复问题。
- 检查 App ID 和 App Secret 是否正确
- 确认机器人已启用
- 检查事件订阅配置
- 检查
groupPolicy配置 - 确认群聊中 @ 了机器人(如果 groupPolicy 是 "mention")
- 检查
allowFrom是否包含发送者 ID
# 尝试使用国内镜像
npm install --registry=https://registry.npmmirror.com