前言

最近发现了一个很有意思的项目 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 启动成功了,但在飞书里发消息没有任何反应。

原因:飞书后台的「事件订阅」尚未配置。

解决方案

  1. 进入飞书开放平台 → 事件订阅

  2. 选择「使用长连接接收事件」

  3. 添加事件:im.message.receive_v1

  4. 发布新版本

坑 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 支持 ⭐⭐
稳定性 ⭐⭐⭐

建议

  1. 如果你主要用 Claude Code,可以考虑 feishu-claude-code(Python 版,更加成熟)

  2. 如果想同时使用 Codex 和 Claude Code,需要自己动手魔改,或等待官方支持

  3. Windows 用户要做好踩坑的心理准备


相关链接


启动命令速查

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
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐