ax-feishu-bridge
为编程智能体提供的飞书/Lark 桥接插件,支持从飞书或 Lark 客户端与 Pi 或 DSH 进行对话交互。
AI 分析
核心用途是将 AI 助手无缝接入飞书办公生态。适合习惯使用飞书进行日常沟通、希望通过飞书单聊或群聊随时唤醒 AI 的团队和个人。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:AX1202/ax-feishu-bridge说明文档
阅读完整 README ↗Windows 上运行 Pi Agent 飞书插件配置方法
解决方法
1. 先安装 Git for Windows
安装后一般会有这个文件:
C:\Program Files\Git\bin\bash.exe
这个就是 Windows 上给 Pi 使用的 Bash 环境。
2. 配置 Pi 的 settings.json
打开:
C:\Users\你的用户名\.pi\agent\settings.json
在大括号里加这一行:
"shellPath": "C:\\Program Files\\Git\\bin\\bash.exe"
注意:如果你原来文件里还有其他配置,不要删掉,只加这一行即可。
这个配置主要是告诉 Pi 主程序 使用哪个 Bash。
3. 把 Git Bash 加到 Windows PATH
有些插件会直接调用:
bash
它不一定读取 Pi 的 shellPath 配置,所以还需要把 Git Bash 加到系统 PATH。
在 PowerShell 里执行:
[Environment]::SetEnvironmentVariable(
"Path",
[Environment]::GetEnvironmentVariable("Path", "User") + ";C:\Program Files\Git\bin",
"User"
)
4. 重启 PowerShell
执行完上面的命令后,要关闭 PowerShell,再重新打开。
然后验证:
where.exe bash
如果输出:
C:\Program Files\Git\bin\bash.exe
说明修复成功。
5. 再运行 Pi
pi
总结
最稳的配置是两个都做:
settings.json 配置 shellPath
+
Windows PATH 加入 C:\Program Files\Git\bin
前者给 Pi 主程序用,后者给插件或子进程直接调用 bash 用。
飞书里怎么用
发送给机器人的常用命令:
| 命令 | 作用 |
|---|---|
/new | 为当前会话新建一个 Pi 会话 |
/resume | 打开当前工作区的历史会话列表;可在卡片中切到全部会话 |
/model | 打开模型选择卡片,切换当前会话使用的模型 |
/thinking | 打开思考强度选择卡片,切换当前模型实际支持的档位 |
/stop | 停止当前这条回复的处理 |
/workspace | 查看当前会话绑定的工作区 |
/workspace /path/to/project | 把当前会话切换到指定工作区,下一条消息生效 |
/status | 查看当前会话的工作状态、模型、思考强度和上下文占用 |
/commands | 查看机器人支持的全部命令 |
/config | 查看运行时配置(仅限与机器人的私聊) |
/config groupKeywords 关键词1,关键词2 | 设置群聊关键词触发并立即生效 |
/config streamingReply false | 关闭流式展示,改用普通回复卡片 |
/config clear groupKeywords | 清除某项运行时配置覆盖 |
Pi 里怎么管理
| 命令 | 作用 |
|---|---|
/feishu setup | 打开初始化配置 |
/feishu start | 启动飞书桥接 |
/feishu stop | 停止飞书桥接 |
/feishu restart | 重启桥接,并重新加载最新代码和配置 |
/feishu status | 查看连接状态、当前 owner 和配置 |
/feishu autostart | 开关自动启动 |
/feishu debug | 查看最近 20 条调试日志 |
/feishu reset | 清除配置和映射,但保留会话历史 |
DSH 里怎么管理
在 DSH 的 web 输入框或终端里输入(依赖宿主 DSH 的命令能力;宿主未提供时会静默跳过,不影响桥接本身):
| 命令 | 作用 |
|---|---|
/feishu setup | 重新配置机器人;问答与二维码在 DSH 进程所在终端进行,已有配置时先确认覆盖 |
/feishu status | 查看连接状态、当前 owner 和配置 |
/feishu autostart | 开关自动启动 |
/feishu debug | 查看最近 20 条调试日志 |
/feishu reset confirm | 清除配置和映射,但保留会话历史 |
与 Pi 的区别:DSH 不提供 /feishu start | stop | restart——桥接随 dsh 自动启停,setup / reset 之后把插件重启 dsh,新配置即可生效。
注意(DSH 平台限制):命令结果以可折叠的命令节点显示在对话流里,但空白的全新会话不渲染命令记录——如果敲了命令没看到任何反应,先在该会话里发一条普通消息,再执行命令即可。
setup不受影响(问答与二维码在终端)。
配置
配置默认保存在:
~/.pi/agent/feishu/config.json
也可以通过环境变量配置:
| 变量 | 说明 |
|---|---|
FEISHU_APP_ID | 飞书/Lark 应用 ID |
FEISHU_APP_SECRET | 飞书/Lark 应用密钥 |
FEISHU_DOMAIN | feishu 或 lark,默认 feishu |
FEISHU_GROUP_POLICY | open 或 mention,默认 open |
FEISHU_GROUP_KEYWORDS | 群聊关键词,逗号或分号分隔;命中后无需 @ |
FEISHU_GROUP_ALSO_ON_REPLY | 1 时回复机器人消息可继续追问,无需再次 @ |
FEISHU_IGNORE_BOT_MESSAGES | 是否忽略其他机器人消息,默认 true |
FEISHU_LANGUAGE | zh 或 en |
FEISHU_REACT_EMOJI | 收到消息时的表情回应,默认 Get |
FEISHU_AUTO_START | 1 或 0 |
FEISHU_CARD_ACTION_MODE | webhook 或 ws,默认 webhook |
FEISHU_CARD_ACTION_WEBHOOK_HOST | 卡片回调监听地址,默认 0.0.0.0 |
FEISHU_CARD_ACTION_WEBHOOK_PORT | 卡片回调端口,默认 3001 |
FEISHU_CARD_ACTION_WEBHOOK_PATH | 卡片回调路径,默认 /webhook/card |
FEISHU_PROMPT_NOTIFY_SEC | 长任务超过多少秒后在飞书发一条“仍在处理中”提示,默认 180,0 关闭 |
FEISHU_PROMPT_TIMEOUT_SEC | 任务硬超时秒数,超时后中止任务并报失败,默认 0(不设硬超时,长期运行也不会被报失败) |
FEISHU_PARSE_INTERACTIVE_CARDS | 是否把 interactive 卡片转为 Pi 可读文字,默认 true |
FEISHU_INCLUDE_QUOTED_MESSAGE | 回复/引用消息时是否带入原消息内容,默认 true |
FEISHU_QUOTED_MESSAGE_MAX_CHARS | 引用消息最多带入的字符数,默认 8000 |
FEISHU_SEND_MAX_RETRIES | 飞书接口临时失败时的重试次数,默认 2 |
FEISHU_STREAMING_REPLY | 是否启用 CardKit 单卡流式回复,默认 true |
FEISHU_STREAM_PRINT_FREQUENCY_MS | 流式逐字显示的刷新间隔,默认 50 |
FEISHU_STREAM_PRINT_STEP | 每次显示的字符数,默认 1 |
FEISHU_STREAM_PUSH_INTERVAL_MS | 向飞书推送最新正文的间隔,默认 120 毫秒 |
FEISHU_EXT_DEV | 1 时显示本地开发标识 DEV |
config.json 字段
除了上面的环境变量,也可以在 config.json 里设置(优先级:环境变量 > config.json > 默认值):
| 字段 | 说明 |
|---|---|
promptNotifySec | 长任务超过多少秒后在飞书发一条“仍在处理中”提示,默认 180,0 关闭 |
promptTimeoutSec | 任务硬超时秒数,超时后中止任务并报失败,默认 0(不设硬超时,长期运行也不会被报失败) |
注意:长时间任务(例如跑测试、构建、批量处理)默认不会再被报为“任务失败”——到达
promptNotifySec后只会在飞书里提示“任务仍在处理中”,回复卡片保持“回复中”,完成后正常送达结果。只有显式设置promptTimeoutSec后才会硬超时。修改后请执行/feishu restart生效。
运行时配置
以下桥接设置可以在与机器人的私聊里用 /config 立即修改,无需重启,并保存到各自平台数据目录下的 runtime-overrides.json(Pi 为 ~/.pi/agent/feishu/,DSH 为 ~/.dsh/feishu/):
/config
/config groupKeywords 报警,告警
/config groupAlsoOnReply true
/config streamingReply false
/config clear groupKeywords
/config clear all
可热更新的范围仅包括 groupPolicy、groupKeywords、groupAlsoOnReply、ignoreBotMessages、reactEmoji、language 以及流式展示参数;应用凭证、引用消息展开和连接方式不能通过聊天修改。
会保存哪些文件
| 路径 | 内容 |
|---|---|
~/.pi/agent/feishu/config.json | 机器人凭证和基础配置 |
~/.pi/agent/feishu/runtime-overrides.json | 通过私聊 /config 保存的运行时配置覆盖 |
~/.pi/agent/feishu/state.json | 飞书会话和 Pi 会话的映射 |
~/.pi/agent/feishu/bridge.json | 从飞书发起的 Pi 任务路由信息 |
~/.pi/agent/feishu/debug.log | 调试日志 |
~/.pi/agent/locks.json | 当前飞书连接的 owner 锁 |
~/.pi/agent/sessions/ | 每个飞书会话对应的 Pi 会话文件 |
~/.dsh/feishu/ | DSH 侧的配置、状态与日志(仅安装 DSH 时产生;未装 Pi 的机器不会创建 ~/.pi) |
连接锁选址:机器上装有 Pi(存在
~/.pi/agent目录)时沿用~/.pi/agent/locks.json,保证两边能协商同一个机器人的连接;纯 DSH 环境则使用~/.dsh/locks.json。
常见说明
- 图片能不能被识别,取决于当前选中的模型是否支持图片输入。
- 图片、文本/代码文件输入是已有能力;interactive 卡片解析和回复消息上下文展开是新版补充的能力。
- 对一条消息或卡片点“回复”后,Pi 会看到原消息内容和你的新问题;这不是把原消息再次发送到群里。
/feishu reset只会清掉配置和映射,不会删除会话历史。- 从 TUI、CLI 或其他渠道创建的任务,不会主动发到飞书。
/workspace当前只支持绝对路径,或~/开头的路径。/resume默认先显示当前项目的最近历史会话,也可以在卡片里切到“全部会话”并翻页浏览。- 卡片按钮现在优先走 webhook 回包模式;如果你还想临时沿用旧的 WS 更新方式,可以把
FEISHU_CARD_ACTION_MODE设成ws。 - 卡片回调默认监听
0.0.0.0:3001/webhook/card,需要在飞书开发者后台把交互卡片回调地址指到一个外部可访问的 URL。
常见问题
为什么机器人没回复?
先看三件事:
- 飞书机器人是否已经创建并配置好
/feishu start是否已经运行- 群聊策略是否要求
@机器人
为什么我在群里发了消息,机器人没有理我?
如果你把群聊策略设成了 mention,就需要 @ 机器人后它才会回复。
open模式下:群里和话题里可直接回复,不需要 @,但还需手动在飞书开发者后台开启机器人“获取群组中所有消息”权限才能生效。
还没有实现后台服务开机自启动功能,目前需要电脑开机后手动启动一次 Pi agent 才能正常工作。启动后,Pi agent 无需前台运行,关闭后,仍可以在飞书/Lark 里对话。
2. 配置 Pi 的 settings.json
打开:
C:\Users\你的用户名\.pi\agent\settings.json
在大括号里加这一行:
"shellPath": "C:\\Program Files\\Git\\bin\\bash.exe"
注意:如果你原来文件里还有其他配置,不要删掉,只加这一行即可。
这个配置主要是告诉 Pi 主程序 使用哪个 Bash。
配置
配置默认保存在:
~/.pi/agent/feishu/config.json
也可以通过环境变量配置:
| 变量 | 说明 |
|---|---|
FEISHU_APP_ID | 飞书/Lark 应用 ID |
FEISHU_APP_SECRET | 飞书/Lark 应用密钥 |
FEISHU_DOMAIN | feishu 或 lark,默认 feishu |
FEISHU_GROUP_POLICY | open 或 mention,默认 open |
FEISHU_GROUP_KEYWORDS | 群聊关键词,逗号或分号分隔;命中后无需 @ |
FEISHU_GROUP_ALSO_ON_REPLY | 1 时回复机器人消息可继续追问,无需再次 @ |
FEISHU_IGNORE_BOT_MESSAGES | 是否忽略其他机器人消息,默认 true |
FEISHU_LANGUAGE | zh 或 en |
FEISHU_REACT_EMOJI | 收到消息时的表情回应,默认 Get |
FEISHU_AUTO_START | 1 或 0 |
FEISHU_CARD_ACTION_MODE | webhook 或 ws,默认 webhook |
FEISHU_CARD_ACTION_WEBHOOK_HOST | 卡片回调监听地址,默认 0.0.0.0 |
FEISHU_CARD_ACTION_WEBHOOK_PORT | 卡片回调端口,默认 3001 |
FEISHU_CARD_ACTION_WEBHOOK_PATH | 卡片回调路径,默认 /webhook/card |
FEISHU_PROMPT_NOTIFY_SEC | 长任务超过多少秒后在飞书发一条“仍在处理中”提示,默认 180,0 关闭 |
FEISHU_PROMPT_TIMEOUT_SEC | 任务硬超时秒数,超时后中止任务并报失败,默认 0(不设硬超时,长期运行也不会被报失败) |
FEISHU_PARSE_INTERACTIVE_CARDS | 是否把 interactive 卡片转为 Pi 可读文字,默认 true |
FEISHU_INCLUDE_QUOTED_MESSAGE | 回复/引用消息时是否带入原消息内容,默认 true |
FEISHU_QUOTED_MESSAGE_MAX_CHARS | 引用消息最多带入的字符数,默认 8000 |
FEISHU_SEND_MAX_RETRIES | 飞书接口临时失败时的重试次数,默认 2 |
FEISHU_STREAMING_REPLY | 是否启用 CardKit 单卡流式回复,默认 true |
FEISHU_STREAM_PRINT_FREQUENCY_MS | 流式逐字显示的刷新间隔,默认 50 |
FEISHU_STREAM_PRINT_STEP | 每次显示的字符数,默认 1 |
FEISHU_STREAM_PUSH_INTERVAL_MS | 向飞书推送最新正文的间隔,默认 120 毫秒 |
FEISHU_EXT_DEV | 1 时显示本地开发标识 DEV |
config.json 字段
除了上面的环境变量,也可以在 config.json 里设置(优先级:环境变量 > config.json > 默认值):
| 字段 | 说明 |
|---|---|
promptNotifySec | 长任务超过多少秒后在飞书发一条“仍在处理中”提示,默认 180,0 关闭 |
promptTimeoutSec | 任务硬超时秒数,超时后中止任务并报失败,默认 0(不设硬超时,长期运行也不会被报失败) |
注意:长时间任务(例如跑测试、构建、批量处理)默认不会再被报为“任务失败”——到达
promptNotifySec后只会在飞书里提示“任务仍在处理中”,回复卡片保持“回复中”,完成后正常送达结果。只有显式设置promptTimeoutSec后才会硬超时。修改后请执行/feishu restart生效。
运行时配置
以下桥接设置可以在与机器人的私聊里用 /config 立即修改,无需重启,并保存到各自平台数据目录下的 runtime-overrides.json(Pi 为 ~/.pi/agent/feishu/,DSH 为 ~/.dsh/feishu/):
/config
/config groupKeywords 报警,告警
/config groupAlsoOnReply true
/config streamingReply false
/config clear groupKeywords
/config clear all
可热更新的范围仅包括 groupPolicy、groupKeywords、groupAlsoOnReply、ignoreBotMessages、reactEmoji、language 以及流式展示参数;应用凭证、引用消息展开和连接方式不能通过聊天修改。
运行时配置
以下桥接设置可以在与机器人的私聊里用 /config 立即修改,无需重启,并保存到各自平台数据目录下的 runtime-overrides.json(Pi 为 ~/.pi/agent/feishu/,DSH 为 ~/.dsh/feishu/):
/config
/config groupKeywords 报警,告警
/config groupAlsoOnReply true
/config streamingReply false
/config clear groupKeywords
/config clear all
可热更新的范围仅包括 groupPolicy、groupKeywords、groupAlsoOnReply、ignoreBotMessages、reactEmoji、language 以及流式展示参数;应用凭证、引用消息展开和连接方式不能通过聊天修改。