开源分享:用飞书接管 Claude Code / Codex CLI 的所有交互,手机上就能批准、选方案、输指令

张开发
2026/4/12 18:41:05 15 分钟阅读

分享文章

开源分享:用飞书接管 Claude Code / Codex CLI 的所有交互,手机上就能批准、选方案、输指令
开源分享用飞书接管 Claude Code / Codex CLI 的所有交互手机上就能批准、选方案、输指令你是否也有这样的体验Claude Code 跑了半天终于弹出一个权限确认但你已经去泡咖啡了或者 Codex 跑完了一整个任务你回来才发现它其实十分钟前就结束了今天开源一个我日常在用的小工具 ——Agent Notifier把 Claude Code 和 Codex CLI 的所有交互搬到飞书手机上就能操作再也不用守在终端前。GitHub 地址https://github.com/KaminDeng/agent_notifier一、它解决什么问题用 Claude Code 或 Codex CLI 写代码最大的痛点不是 AI 不够聪明而是交互断层AI 需要你批准执行一个命令 → 你不在电脑前 → 任务卡住AI 给了你三个方案让你选 → 你没看到 → 任务卡住任务跑完了 → 你不知道 → 白白等了半小时本质上这些 CLI 工具没有移动端的交互能力。你必须守在终端前实时盯着输出。Agent Notifier 的做法很简单把飞书变成你的远程终端控制器。痛点解法等权限确认必须守在终端前飞书卡片实时推送手机点一下就行想在手机上操作但没有官方 App飞书就是多端 AppiOS / Android / Mac / Windows / Web 全覆盖自建推送要服务器、域名、备案飞书长连接模式不需要公网 IP本机直连企业审批流程繁琐飞书企业自建应用秒审批个人也能用完全免费多终端同时跑任务通知乱了多终端并行路由每个终端独立送达互不干扰二、效果展示直接看飞书手机端的实际截图权限确认 方案选择当 Claude Code 需要你批准执行命令或者 AskUserQuestion 弹出选项时飞书会收到交互式卡片左权限确认 — 允许/拒绝/会话允许 输入框 · 脚注含终端标识(fifo) 会话时长中权限选项 — ExitPlanMode 等工具选项 输入框 · 脚注含终端标识(fifo) 会话时长右方案选择 — AskUserQuestion 动态选项 Other 自由输入 · 脚注含终端标识(fifo)点按钮或输入文字操作会直接回流到本地终端就像你在键盘上打字一样。实时执行摘要Claude 每执行一步工具调用飞书会实时推送执行摘要卡片同一任务的卡片会原地更新不会刷屏实时执行摘要 — 工具调用表格 · 同任务原地 patch 更新 · 脚注含项目名 时间戳任务完成通知任务跑完后会收到带改动总结、Token 用量、时长统计的完成卡片底部还有输入框可以直接续聊左改动总结 输入框续聊 · 脚注含项目名 会话时长 Token 用量统计右测试结果表格 输入框续聊 · 脚注含项目名 会话时长 Token 用量统计三、支持的卡片类型场景卡片颜色说明权限确认 橙色允许 / 本次会话允许 / 拒绝 输入框AskUserQuestion 单选 橙色动态选项按钮 Other 输入框AskUserQuestion 多题 橙色Q1 → Q2 → Q3 逐张发送任务完成 绿色摘要、时长、Token 输入框异常退出 红色错误详情 输入框实时执行摘要 蓝色同一任务原地 patch 更新四、为什么选飞书而不是微信 / Telegram / Slack这是我被问得最多的问题解释一下飞书自建应用是免费的个人账号就能创建企业版也是秒审批飞书支持长连接WebSocket不需要你有公网 IP 或者域名这意味着你在家、在公司、用 VPN都能直接用飞书的交互式卡片能力非常强支持按钮、输入框、表格、多列布局远超普通的消息推送飞书天然多端同步手机 / 电脑 / 平板 / 网页版都能收到同一张卡片并操作不需要开发独立 App飞书客户端本身就是你的遥控器当然架构上做了通道抽象src/channels/如果你想接其他平台扩展起来也不难。五、5 分钟上手前置条件Node.js 18Python 3用于 PTY 终端代理一个飞书账号安装步骤# 1. 克隆仓库gitclone https://github.com/KaminDeng/agent_notifier.gitcdagent_notifier# 2. 编辑 .env 填入飞书应用凭证首次运行会自动创建# FEISHU_APP_IDyour_app_id# FEISHU_APP_SECRETyour_app_secret# 3. 一键安装自动完成所有配置bashinstall.sh# 4. 重新加载 shellsource~/.zshrc# 或 source ~/.bashrc# 5. 像往常一样使用claudeinstall.sh会自动完成安装 npm 依赖写入 Claude Code hooks 到~/.claude/settings.json注入claude/codexshell 包装函数启动飞书监听器并注册开机自启macOS 用 launchdLinux 用 systemd重复运行install.sh是安全的 — 每次会先自动清理再重新安装。飞书应用配置3 分钟登录 飞书开放平台创建企业自建应用复制 App ID / App Secret填入.env开启机器人能力事件订阅选择长连接不需要公网 IP添加事件card.action.trigger申请权限im:message、im:message:send_as_bot、im:chat:readonly发布应用把机器人加入目标群就这些没有域名、没有备案、没有服务器。六、跨平台支持平台服务管理开机自启macOSlaunchdRunAtLoad KeepAliveLinux (systemd)systemd user servicesystemctl --user enableLinux (SSH/无 systemd)nohup crontab rebootcrontab 回退卸载也是一行命令bashuninstall.sh会自动清理所有配置、停止服务、移除 hooks 和 shell 注入。七、工作原理简要整体分两条链路Claude Code 链路Claude Hooks 触发事件 → hook-handler.js 解析 → 生成飞书交互卡片 ↓ 用户在飞书点击/输入 → feishu-listener.js 接收回调 → 注入回本地终端Codex CLI 链路pty-relay.py 建立 PTY 终端代理 → 捕获 Codex 输出 → 生成飞书卡片 ↓ 用户在飞书点击/输入 → feishu-listener.js 接收回调 → 通过 FIFO 注入终端终端注入支持多种方式tmux、PTY FIFO、pty master 直写、TIOCSTI自动检测最优方案。八、项目结构agent_notifier/ ├── install.sh / uninstall.sh # 安装 / 卸载 ├── hook-handler.js / live-handler.js # Claude Hooks 入口薄 shim ├── bin/ │ └── pty-relay.py # PTY 终端代理 ├── src/ │ ├── apps/ # 应用入口claude-hook、claude-live、feishu-listener 等 │ ├── adapters/ # Claude / Codex 适配器 │ ├── channels/ # 飞书通道卡片渲染、客户端、交互处理 │ ├── core/ # 底层原语session store、terminal injector │ └── lib/ # 应用级服务env config、session state、terminal inject ├── tests/ # 81 个测试用例 └── scripts/ # 调试 / 测试脚本九、适合谁用如果你符合以下任意一条日常用 Claude Code 或 Codex CLI 写代码经常需要离开电脑但不想任务卡在权限确认上想在手机上也能操作 AI 编程助手同时开多个终端跑不同任务需要统一的通知入口那这个工具就是为你设计的。十、最后项目完全开源MIT 协议欢迎 Star、Fork、提 Issue。GitHub 地址https://github.com/KaminDeng/agent_notifier如果你觉得这个工具有用帮忙点个 Star 就是最大的支持。有问题也欢迎在 Issues 里交流。

更多文章