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 协议,想用的话直接拿去。

相关推荐
爱勇宝18 分钟前
第 1 章:别把“需求文档”当成真正的需求
前端·后端·程序员
阿拉斯攀登2 小时前
安全与可控性:输出校验、权限控制
人工智能·chatgpt·agent·memory·claude·知识库·向量数据库
IT_陈寒5 小时前
闭包陷阱让我加了两天班,JavaScript你真行
前端·人工智能·后端
kyriewen5 小时前
Godot 全面封杀 Vibe Coding,作为每天用 AI 写代码的人,我反而觉得这是件好事
前端·ai编程·claude
易协同低代码6 小时前
通达OA核心类库TD类深度解析
后端
Gopher_HBo6 小时前
Go语言学习笔记(十八)Gin处理Session
后端
plainGeekDev7 小时前
Claude Code 的非交互模式:一条命令当 grep 用
ai编程·claude
谭光志7 小时前
工具塞满上下文窗口怎么办?深度拆解 AI Agent Tool Search 按需加载实现原理
前端·后端·ai编程
她说..7 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
foggyprojects7 小时前
从0开始,一句话启动AI DataAgent
后端·数据分析·ai编程