把 Claude Code 搬进飞书:lark-channel-bridge 全流程实战
仓库:github.com/zarazhangrui/feishu-claude-code-bridge
核心思路:用飞书机器人作为 Claude Code 的"远程终端"——在本地跑 Claude,把 IM 当作输入输出层。
一、为什么需要它?
Claude Code 默认是命令行工具,绑在本地终端。这带来几个真实痛点:
- 离开电脑就失联——下班路上想让它继续改 bug?不行。
- 没法让 AI 进项目群——你想让团队同事一起用 Claude 评审 PR?得每人本地装。
- 没通知——长任务跑完你不知道。
- 手机端体验差——Termius 之类的 SSH 客户端能用,但远不如原生 IM 顺手。
lark-channel-bridge(npm 包名 lark-channel-bridge)的设计很简洁:让飞书机器人成为 Claude Code 的前端。你在飞书发消息,bridge 把消息转给本地的 claude 进程;Claude 的输出再以消息形式回传。模型推理和会话状态完全留在本地,飞书只做"消息搬运工"。
二、安装
一行命令,全局装好:
npm i -g lark-channel-bridge
added 56 packages in 6s
13 packages are looking for funding
run `npm fund` for details
零 Python 依赖、零 Docker 依赖。装完就一个可执行文件 lark-channel-bridge。
三、首次配置:扫码搞定
第一次启动会自动进入"扫码创建飞书应用"向导:
lark-channel-bridge start
未检测到飞书应用配置,进入扫码创建向导。
请用飞书 App 扫描以下二维码完成应用创建:

二维码有效期:约 60 分钟
也可以直接在浏览器打开:
https://open.feishu.cn/page/launcher?user_code=WKUR-NVW5&from=sdk&source=node-sdk&tp=sdk
3.1 扫码结果
✓ 应用创建成功
App ID: cli_XXXXXXXXXXXXXXXXX
Tenant: feishu
Admin: ou_XXXXXXXXXXXXXXX (你自己,已自动加入管理员名单)
配置已保存到 C:\Users\lgzhu\.lark-channel\config.json
App ID、App Secret 都自动写盘到 ~/.lark-channel/config.json,不用你手动复制粘贴。
3.2 去开放平台勾权限
自动建好的应用是个空壳,需要去飞书开放平台把权限和事件订阅勾上:
权限 scope:
im:message—— 收发消息im:message:send_as_bot—— 以 bot 身份发消息im:resource—— 上传/下载图片、文件im:chat—— 创建群(可选)drive:drive—— 读写云文档评论
事件订阅(长连接模式):
im.message.receive_v1—— 接收消息card.action.trigger—— 卡片按钮回调drive.notice.comment_add_v1—— 云文档 @botim.message.reaction.created_v1/deleted_v1(可选)im.chat.member.bot.added_v1(可选)
⚠️ 关键点:事件订阅一定要用长连接(WebSocket)模式,不要选 webhook 回调。webhook 模式需要公网域名 + HTTPS 证书,对个人开发者极其不友好。长连接模式就是为这种场景设计的。
3.3 启动成功
✓ 已连接 bot: Win Claude (cli_a96e1e48d6f8dcef) agent: Claude Code (claude) 进程: 49fd
正在监听消息。按 Ctrl+C 退出。
到这里,去飞书给这个 bot 发条消息,Claude 就开始干活了。
四、退出与重连
4.1 退出(两种方式)
(1) 在 bridge 控制台按 Ctrl+C —— 标准做法。
(2) 在飞书对话里发 /exit <ID> —— 远程场景用。先用 /ps 查进程 ID:
/ps
输出当前机器所有 start 起的进程,选中后回车确认。
4.2 重连
直接再跑一次:
lark-channel-bridge start
✓ 已连接 bot: Win Claude (cli_a96e1e48d6f8dcef) agent: Claude Code (claude) 进程: 9c63
正在监听消息。按 Ctrl+C 退出。
注意进程 ID 每次都变(49fd → 9c63),这是每次启动随机生成的 session id。
五、CLI 命令速查
lark-channel-bridge start [-c <config>] # 启动 bot
lark-channel-bridge ps # 列出本机所有 start 进程
lark-channel-bridge stop <id|#> # 终止指定进程(SIGTERM,2s 后 SIGKILL)
lark-channel-bridge --help # 列所有命令
5.1 多开同一 App 的处理
飞书会把同一个 App 的事件随机分发给所有长连接。如果你在本机起了两个 start(比如测新配置),消息会被分走。
start 启动时会先检测同 App 已有的进程:
- TTY(终端)下:交互式三选一
[c]ontinue—— 当前进程继续跑,事件分给两个[k]ill old—— 干掉旧的,新进程独占[a]bort—— 退出,什么也不做
- 非 TTY(后台/服务)下:只 warn 一行然后继续
其他子命令(
status/doctor/handover/workspace/service)目前是占位,后续版本补。
六、飞书里的斜杠命令与消息路由
bridge 在飞书里支持一套斜杠命令(卡片式菜单),核心的几个:
/config—— 打开配置面板/ps—— 列出本机进程/exit <ID>—— 远程结束进程/reconnect—— 重连(修改配置后用)
6.1 默认消息策略
| 场景 | 行为 | 触发条件 |
|---|---|---|
| 私聊 | ✅ 任何消息都回 | 无需 @ |
| 群聊 / 话题群 | ✅ 默认要 @bot | 不 @ 时完全沉默 |
| @全员(@all) | ❌ 永远不响应 | 避免误触发 |
| 云文档评论 | ✅ 必须 @bot | 评论里 @ 才回 |
这是 0.1.22 起的"新默认"。要恢复"群里不强制 @"的老行为:
/config → "群里需要 @ bot" → 选"否"
七、/config 配置面板深度用法
/config 是飞书卡片式的配置面板,所有控制项都在这里调。
7.1 关键规则
- 改完下一条消息就生效——不需要重启 bridge。
- 空字符串 = 不限制(不是"一个都不允许")。把"群白名单"清空 = 允许所有群。
- 从受限状态回到"完全开放":把对应栏目清空再提交。
7.2 私聊是"逃生通道"
设计上故意保留一个口子:私聊永远不受"群白名单"约束。
万一你手滑把所有群都锁死了,私聊里发
/config就能解锁。这个 fallback 是必须的,不是漏洞。
八、高级:直接改配置文件
/config 背后写的是 ~/.lark-channel/config.json 的 preferences.access 段:
{
"appId": "cli_a96e1e48d6f8dcef",
"appSecret": "***",
"preferences": {
"access": {
"groups": [],
"users": [],
"requireMentionInGroup": true
}
}
}
手改完之后两种方式生效:
- 重启 bridge —— 简单粗暴
- 找一个被允许的会话发
/reconnect—— 不中断服务
日常调整还是用
/config表单更省事;手改文件主要用在"部署脚本里预填"这种场景。
九、典型工作流
- 日常开发:本地 IDE + Claude Code 正常用,不影响。
- 通勤/碎片时间:手机飞书发消息,让它接着改。
- 团队协作:把 bot 拉进项目群,@ 它做 code review、跑测试、生成 PR 描述。
- 长任务:不用守着,bridge 把进度以流式消息推回飞书。
- 紧急止血:发现自己把规则改死了?私聊发
/config,三秒恢复。
十、适用人群
- 个人开发者:想利用通勤/碎片时间继续让 AI 干活。
- 小团队:想让 AI 进群做 review、回答新人问题。
- DevOps:CI 失败时,飞书里直接发
/fix 看一下 build #1234。 - 不想自建 Web 服务的人:不用租服务器、不用搞 OAuth 回调——长连接模式零运维。
整个工具几秒就能装完、零运行时重依赖。"轻前端 + 重本地"的设计,对个人开发者和小团队都非常友好。
更多推荐


所有评论(0)