Claude Code 给自己接了一部飞书,从此不用守在工位等它

它卡住了会自己找你,不用你盯着。

用 Claude Code 跑长任务的同学大概都经历过这个:给它派了个活儿,起身去倒杯水,回来发现它卡在一个权限弹窗上,进度条纹丝不动。你要是去开个会,回来可能就发现它在那儿干等了半小时。

这个场景烦人的地方在于,你知道它不是不能干,就是差你一下。但你又不可能一直守着它。

我之前也试过装通知插件,跑完了推一条消息过来。但这解决的只是「它做完了」这一个信号------它卡住了呢?它需要你选 A 还是 B 呢?你还是得切回去看。

后来我想了个办法:直接在飞书上跟它对话。它卡了就问我,我回一句它就继续。不用切窗口,不用守工位,手机上就能把事儿办了。

这个东西我做完了,叫 feishu-bridge。整个项目基本上就是用 Claude Code 开发的------我自己写需求,它来实现,挺有意思的一个循环。

它能干嘛

说白了就四件事:

跑完通知你。 Claude 每次完成一轮工作,会自动往你飞书推一条消息,告诉你它干了啥、下一步打算干啥。你不用时不时切回去看。

卡了问你。 Claude Code 有个 MCP 工具叫 feishu_ask_human,它遇到需要你做决定的事,会把选项发到你飞书上,然后老老实实等着。你在手机上回个编号,它就接着跑。

远程下指令。 你在飞书上给它发条私信,它会先生成一个只读计划给你看,你同意了它才执行。执行完结果推回来。这个功能默认是关的,得你手动开。

决策路由。 上面那个「问你」的功能,你在飞书上直接按编号回就行,比如回个「3 A」,它就知道你要选第三个选项的 A。

我平时用得最多的是第二个。AskUserQuestion 弹在终端里,我不在工位的时候就是黑洞------任务卡死了,但我不知道它卡了。换成飞书之后,它把选项发过来,我在地铁上回一句「2」,回去一看已经跑完了。

技术上怎么实现的

没什么高深的,三个东西各管一摊:

Claude Code 本身有 hook 机制,Stop / Notification 事件触发时能执行脚本。我写了个 hook,把这些事件转发到飞书 bot,这是通知的来源。

然后本机跑一个 listen.py,它跟飞书之间维持一条 WebSocket 长连接。你在飞书上发私信,飞书会通过这条连接把消息推过来,listen.py 收到后就拉起一个 claude -p(headless 模式)去执行。

feishu_ask_human 是个 MCP 工具,Claude 主动调用的时候,它会往飞书发消息,然后阻塞轮询等你回复。你回了它才放行。

没有公网服务器,没有 webhook 回调,飞书长连接直接打到你本机。内网环境也能跑。

css 复制代码
          ┌─────────────┐   Stop / Notification hook   ┌──────────┐
          │ Claude Code │ ───────────────────────────► │ 飞书 bot │ ──► 你的手机
          └─────────────┘                              └──────────┘
                 ▲                                            │
                 │  feishu_ask_human (MCP)                    │ 你私信回复
                 │  阻塞轮询,等你那一句                          ▼
          ┌─────────────┐     长连接 WebSocket          ┌──────────┐
          │  listen.py  │ ◄──────────────────────────── │ 飞书私聊 │
          │ 常驻 listener│   im.message.receive_v1       └──────────┘
          └─────────────┘
                 │  spawn
                 ▼
          headless `claude -p`  ──► 结果推回飞书

装起来不费劲

前置就两个:

  • Python ≥ 3.10
  • 一个飞书企业自建应用(个人也能建,免费的)

装好 plugin 跑 /feishu-bridge-setup,向导会带着你:建应用、填凭证、起 listener、绑定 owner、验证通知能不能收到。十分钟左右搞定。

飞书那边只要两个权限:

  • im:message:send_as_bot------发消息
  • im:message.p2p_msg:readonly------只读私聊

群消息是故意不收的。你拉它进群也没用,这是设计,不是 bug。

安全

远程指令这个功能,本质上就是一个飞书消息驱动的远程 shell。这话我得说清楚:remote.enabled 默认是关的。 开箱只有通知和 feishu_ask_human 在跑,这俩都不会替你执行任何东西。

真要开远程执行,有三个开关:

  • remote.enabled------总开关,你不主动开就不存在
  • require_confirm------执行前先把计划发你审批
  • exec_permission_mode------默认 acceptEdits,不是 bypassPermissions

再加上只认私聊、只认绑定的 owner。陌生人发消息进来什么都不会发生。

顺带说一句

这个项目本身就是用 Claude Code 开发的。我提需求、Claude 写代码,遇到问题我俩来回讨论,最后成了现在这个样子。整个过程挺自然的------Claude Code 能开发 Claude Code 自己用的工具,某种意义上也算自举了。

代码放在 GitHub 上了:github.com/LHFloveXCF/...

Python 写的,MIT 协议,想用的话直接拿去。

相关推荐
浮游本尊1 小时前
Java学习第41天 - 复杂查询、多表关联、索引优化与慢 SQL 调优
后端
llz_1121 小时前
web-第五次课后作业
前端·后端·http
雨辰AI2 小时前
生产级实测:SpringBoot3 + 达梦数据库接口从 200ms 优化至 20ms 完整调优指南
java·数据库·spring boot·后端·政务
Solis3 小时前
Raft:分布式系统的定海神针
后端·架构
程序员老申3 小时前
第三篇 5 天 12 个 commit:踩坑实录与代码演进
后端·程序员
程序员鱼皮3 小时前
提示词工程已死,Loop Engineering 称王!保姆级教程 + 项目实战
前端·后端·ai编程
Mininglamp_27183 小时前
Vibe Coding 之后是 Vibe Operating?
后端·开源·多智能体·ai agent·mano-p
星哥的编程之路3 小时前
别再调 API 就说自己会 RAG 了,看看真正的企业级 AI 智能体长什么样
后端·面试
长大19883 小时前
C++26 静态反射完整实战:告别宏代码生成,一键实现序列化
后端