前言
最近发现了一个很有意思的项目 Claude-to-IM-skill,它可以把 Claude Code 或 OpenAI Codex 桥接到飞书、Telegram、Discord 等即时通讯平台。这样一来,你就能在手机上通过飞书与 AI 对话,让它帮你写代码、查日志、处理文件。
听起来很美好,但实际部署过程中踩了不少坑。本文记录了完整的踩坑、魔改、再踩坑的过程。
项目简介
Claude-to-IM-skill 本质上是一个 Bridge 服务,核心架构如下:
text
飞书 App ←──WebSocket 长连接──→ Bridge 进程(运行在你的电脑上)
↓
Claude Code / Codex CLI
优点:
-
无需公网 IP,通过 WebSocket 长连接通信
-
支持多平台:飞书、Telegram、Discord、QQ、微信
-
支持双运行时:可在 Claude Code 和 Codex 之间切换
缺点:
-
官方文档对 Windows 支持不够完善
-
会话系统与 Codex 原生会话不互通
-
缺少运行时切换功能
踩坑记录
坑 1:Windows 路径大小写冲突
项目由两个 npm 包组成:
-
Claude-to-IM-skill(skill 包) -
Claude-to-IM(核心库)
skill 包的 package.json 中,依赖路径写的是 file:../Claude-to-IM,但 Windows 文件系统大小写不敏感,导致 claude-to-im 和 Claude-to-IM 被视为同一个目录,npm 链接失败。
解决方案 :把核心库目录重命名为 claude-to-im-core,并相应修改 package.json:
json
"claude-to-im": "file:../claude-to-im-core"
坑 2:daemon.ps1 启动脚本参数解析异常
Windows 版启动脚本 daemon.ps1 在 PowerShell 7 下会报错:
text
A positional parameter cannot be found that accepts argument 'bridge.log'
原因:脚本中的日志重定向写法与 PowerShell 7 不兼容。
解决方案 :修改 supervisor-windows.ps1,改用 Start-Process 的 -RedirectStandardOutput 参数。
坑 3:飞书机器人无法接收消息
Bridge 启动成功了,但在飞书里发消息没有任何反应。
原因:飞书后台的「事件订阅」尚未配置。
解决方案:
-
进入飞书开放平台 → 事件订阅
-
选择「使用长连接接收事件」
-
添加事件:
im.message.receive_v1 -
发布新版本
坑 4:无法给机器人发消息
飞书机器人页面上只有「查看消息」,找不到发送消息的输入框。
原因:飞书机器人需要先建立会话才能发消息。
解决方案:在群里 @ 机器人,或者在飞书后台配置好事件订阅后重新发布应用。
我提的 Issue
Issue #104:支持绑定 Codex 原生会话
问题描述:
Bridge 的会话系统与 Codex 原生会话系统是彼此独立的:
-
Bridge 会话存储在
~/.claude-to-im/data/sessions.json -
Codex 原生会话存储在
~/.codex/sessions/*.jsonl
这导致用户无法在飞书里继续之前在 Codex CLI 中进行的对话。
Issue 链接 :https://github.com/op7418/Claude-to-IM-skill/issues/104
自己做的改进
1. 添加 /import 命令
在飞书里可以直接导入 Codex 原生会话:
text
/import # 列出所有 Codex 会话
/import <session_id> # 导入指定会话
2. 添加 /runtime 命令
可以在飞书里直接切换运行时:
text
/runtime # 查看当前运行时
/runtime claude # 切换到 Claude Code
/runtime codex # 切换到 Codex
/runtime auto # 自动选择
注意:切换时会重启 Bridge,有 5--10 秒的短暂断连。
3. 改进 /sessions 命令
显示会话列表时加入标题信息:
text
Sessions:
Bridge Sessions:
✅ 497061b7... D:\files\HomeSense Stdio
Codex Sessions (use /bind <id> to import):
019d6b62... 阅读 HomeSense 契约与职责范围 2026/4/8
019de747... 概述微服务架构项目 2026/5/2
4. 添加 CTI_CODEX_SKIP_GIT_REPO_CHECK 环境变量
Codex 默认要求在 Git 仓库中运行,添加此环境变量可跳过检查:
text
CTI_CODEX_SKIP_GIT_REPO_CHECK=true
发现的问题
问题 1:Codex SDK 版本不匹配
Bridge 使用的 @openai/codex-sdk 版本与 Codex CLI 版本不一致,导致调用失败:
text
Error: Codex Exec exited with code 1: Reading prompt from stdin
解决方案:更新 SDK 到最新版本:
powershell
npm install @openai/codex-sdk@latest
问题 2:第三方 API 代理不稳定
Codex 配置了第三方代理 api.pie-xian.com,经常返回 503 错误:
text
ERROR: unexpected status 503 Service Unavailable: No available channel for model deepseek-v4-pro
问题 3:Codex CLI 无法调用工具
最终发现是 Codex CLI 本身出了问题:
-
无法调用工具
-
看不到工作区
-
一直卡在 "Reconnecting..."
最终解决方案:重装 Codex
powershell
# 1. 卸载旧版本
npm uninstall -g @openai/codex
# 2. 重新安装
npm install -g @openai/codex
# 3. 验证版本
codex --version
# 4. 重新登录
codex login
重装前的建议:
-
备份配置文件:
~/.codex/config.toml -
备份会话目录:
~/.codex/sessions/
总结
这个项目的想法很好,但目前还不够成熟,尤其是对 Windows 用户而言:
| 方面 | 评分 |
|---|---|
| 功能设计 | ⭐⭐⭐⭐ |
| 文档完善度 | ⭐⭐ |
| Windows 支持 | ⭐⭐ |
| 稳定性 | ⭐⭐⭐ |
建议:
-
如果你主要用 Claude Code,可以考虑 feishu-claude-code(Python 版,更加成熟)
-
如果想同时使用 Codex 和 Claude Code,需要自己动手魔改,或等待官方支持
-
Windows 用户要做好踩坑的心理准备
相关链接
-
我提的 Issue:https://github.com/op7418/Claude-to-IM-skill/issues/104
-
Python 版替代方案:https://github.com/joewongjc/feishu-claude-code
启动命令速查
powershell
# 启动 Bridge
powershell -NoProfile -ExecutionPolicy Bypass -File "D:\files\claude-to-im\skill\scripts\daemon.ps1" start
# 停止 Bridge
powershell -NoProfile -ExecutionPolicy Bypass -File "D:\files\claude-to-im\skill\scripts\daemon.ps1" stop
# 查看状态
powershell -NoProfile -ExecutionPolicy Bypass -File "D:\files\claude-to-im\skill\scripts\daemon.ps1" status
# 查看日志
powershell -NoProfile -ExecutionPolicy Bypass -File "D:\files\claude-to-im\skill\scripts\daemon.ps1" logs 100