完整记录如何通过微信或飞书远程操控 Claude Code:从原理、平台对比、安装配置,到最终在手机上跑通验证。
一、先说结论:这套方案到底值不值得配?
如果你想要的是:
• 在开会、通勤、吃饭时也能让 Claude Code 继续干活
• 在手机上临时查代码、改配置、跑简单命令
• 不想给自己的电脑暴露公网 IP
那么 Claude-to-IM 是一套很实用的方案。
它的核心思路并不复杂:
在你的 Mac 上跑一个 Bridge 守护进程,一头连 IM(微信或飞书),一头连 Claude Code CLI。你在手机发消息,Bridge 把消息转给 Claude 执行,再把结果回发到手机。
这套方案最好的地方是:
• 不需要公网 IP
• 不需要自己配域名
• 家里 Wi-Fi、公司内网都能用
• 电脑保持开机联网即可
二、Claude-to-IM 到底是什么?
Claude-to-IM-skill 是一个 Claude Code 的 Skill 插件,作用就是把 IM 消息桥接到 Claude Code。
它目前支持 5 个 IM 平台:Telegram、Discord、飞书、QQ、微信。本文聚焦微信和飞书两条链路。
工作原理
在你的电脑上跑一个后台服务(Bridge Daemon),它一头连接 IM 平台,一头连接 Claude Code CLI。
执行流程大致是这样:
手机发消息(微信/飞书)
→ IM 服务器
→ Bridge(你的 Mac)
→ Claude Code(你的 Mac)
→ 执行结果返回 Bridge
→ 手机收到回复
Bridge 使用长连接模式,所以它不是"服务器回调到你本地",而是你本机主动连出去。这也是为什么它不需要公网 IP。
适合哪些场景
• 临时查一个项目目录、配置项、日志
• 让 Claude 帮你改一小段代码或脚本
• 远程触发一些低风险命令
• 手机上快速接续一个没做完的编码任务
不太适合哪些场景
• 高风险命令执行
• 大规模重构
• 需要你频繁人工确认的复杂任务
• 电脑不稳定联网、经常休眠的场景
三、微信 vs 飞书:该选哪个?
Claude-to-IM 同时支持微信和飞书,两者各有优劣:
| 微信 | 飞书 | |
|---|---|---|
| 配置成本 | 极低,扫码即用 | 较高,需创建飞书应用 + 权限审批 + 发布 |
| 上手速度 | 1 分钟 | 10-15 分钟 |
| 群聊支持 | 不支持,仅私聊 | 支持群聊 |
| 稳定性 | 登录态会过期,需重新扫码 | 长连接稳定,不会过期 |
| 流式预览 | 不支持(需等完整结果) | 不支持(需等完整结果) |
| 审批按钮 | 不支持,用文本命令或自动审批 | 不支持,用文本命令或自动审批 |
| 风险 | 低 | 零风险(官方 API) |
| 账号要求 | 个人微信号即可 | 个人或企业飞书均可 |
| 适合场景 | 偶尔用、快速体验 | 日常高频使用、长期稳定 |
建议:
• 先试微信——零门槛,扫码就能体验,确认好用后再决定要不要配飞书
• 长期用飞书——稳定可靠,不怕过期,支持群聊
• 两个都配——完全可以同时启用,CTI_ENABLED_CHANNELS=feishu,weixin
四、前置条件
先确认本机环境。
# Node.js 20+
node -v
# Claude Code CLI 已安装并认证
claude --version
五、安装 Claude-to-IM Skill
不管你选微信还是飞书,都需要先安装 Skill。这一步是共用的。
5.1 执行安装命令
npx skills add op7418/Claude-to-IM-skill --yes
安装成功后,大致会看到类似输出:
✓ ~/your-project/.agents/skills/claude-to-im
symlinked: Claude Code, Continue, Kiro CLI, Trae CN
默认情况下,Skill 会安装到当前项目目录下的 .agents/skills/claude-to-im/。
如果你希望它在任何目录都能用,后续可以把它移到:
~/.claude/skills/
5.2 macOS 用户一定要注意:大小写不敏感构建问题
如果你是 macOS,安装后第一次构建很可能会直接报错,典型错误像这样:
✘ [ERROR] Could not resolve "claude-to-im/src/lib/bridge/context.js"
✘ [ERROR] Could not resolve "claude-to-im/src/lib/bridge/bridge-manager.js"
✘ [ERROR] Could not resolve "claude-to-im/src/lib/bridge/adapters/index.js"
这不是你操作错了,而是一个已知问题。
根因是:
• Skill 依赖写的是 file:../Claude-to-IM
• Skill 目录叫 claude-to-im
• 核心库目录叫 Claude-to-IM
• macOS 默认 APFS 文件系统大小写不敏感
结果就是:npm 链接时把两个目录当成了"同一个名字",依赖指向错了,最终导致核心库目录解析失败。
这个问题基本只在 macOS 上明显,Linux 的区分大小写文件系统通常不会中招。
5.3 macOS 修复方法
最稳的办法是:把核心库克隆成一个不会撞名的新目录。
# 进入全局 skills 目录
cd ~/.claude/skills/
# 1. 用不同目录名克隆核心库
git clone https://github.com/op7418/Claude-to-IM.git claude-to-im-core
# 2. 构建核心库
cd claude-to-im-core
npm install
npx tsc -p tsconfig.build.json
cd ..
# 3. 修改 skill 依赖路径
cd claude-to-im
sed -i '' 's|file:../Claude-to-IM|file:../claude-to-im-core|' package.json
# 4. 重新安装并构建
rm -rf node_modules
npm install
npm run build
如果最后看到类似 Built dist/daemon.mjs 的输出,说明构建已经通过。
补一个常见坑:
如果构建核心库时提示
tsc: command not found,不要直接装全局 TypeScript,优先用npx tsc调用项目本地版本。
六、微信接入(最快上手)
微信是最简单的接入方式——不需要创建应用、不需要审批权限、不需要发布,扫个码就能用。
6.1 扫码绑定微信
cd ~/.claude/skills/claude-to-im && npm run weixin:login
运行后会自动打开一个 HTML 页面,显示微信登录二维码。用手机微信扫码确认即可。
成功后终端会提示:
[weixin-login] Login successful. Saved linked account xxx
[weixin-login] You can now enable the `weixin` channel and start the bridge.
6.2 写配置文件
mkdir -p ~/.claude-to-im
创建 ~/.claude-to-im/config.env:
CTI_RUNTIME=claude
CTI_ENABLED_CHANNELS=weixin
CTI_DEFAULT_WORKDIR=/Users/你的用户名
CTI_DEFAULT_MODE=code
CTI_AUTO_APPROVE=true
chmod 600 ~/.claude-to-im/config.env
6.3 启动并测试
bash ~/.claude/skills/claude-to-im/scripts/daemon.sh start
看到 "channels": ["weixin"] 就成功了。现在打开微信,私聊给绑定的账号发消息,Claude Code 就会响应。
6.4 微信接入注意事项
• 仅支持私聊,不支持群聊
• 每次扫码只绑定一个微信号,重新扫码会替换之前的
• 微信登录态可能过期,过期后需要重新 npm run weixin:login 扫码
• 不支持流式预览,需要等 Claude 完整执行完才返回结果
七、飞书接入(更稳定长期方案)
飞书配置流程比微信长,但胜在稳定、支持群聊。
7.1 进入飞书开发者后台
打开 open.feishu.cn,点击右上角 「开发者后台」。
注意:个人飞书和企业飞书都可以。如果还没有飞书账号,直接注册后创建一个免费团队(一个人也行,不需要营业执照),你就是管理员,拥有完整的开发权限。如果你用的是公司飞书且提示「无权访问」,需找管理员开通开发权限。
7.2 创建企业自建应用
选择 「创建企业自建应用」,应用名可以随便起,比如:
• Claude助手
• AI助手
• 编码助理
这里本质上是在创建一个企业内部可用的机器人外壳,用来接收飞书消息并转发给 Claude Code。
7.3 添加机器人能力
进入应用详情页后:
• 进入 「添加应用能力」
• 选择 「机器人」
• 点击启用
启用后,这个应用就具备"作为机器人收发消息"的能力。
7.4 开通权限
进入 「权限管理」,至少开通下面这些权限:
• im:message 发送消息,必须
• im:message:readonly 读取消息,必须
• im:resource 读取图片/文件,必须
• im:message.group_msg 群聊里不需要 @ 也能收消息,可选
建议第一次配置时,先不要开 im:message.group_msg。 不开它,机器人只会在你 @ 它时响应,风险更低,也更容易排查。
7.5 配置事件订阅
进入 「事件与回调」:
1. 分发方式选择 「长连接」
2. 添加事件:im.message.receive_v1
这里有一个关键点:
一定要选"长连接",不要选需要公网回调地址的模式。
本文整个方案之所以省事,就是因为它不依赖公网回调。
7.6 获取 App ID 和 App Secret
进入 「凭证与基础信息」,复制这两个值:
• App ID
• App Secret
后面写配置文件时会用到。
7.7 发布应用
飞书应用创建完以后,还不能立刻生效。 你必须进入 「版本管理与发布」:
1. 创建版本
2. 设置可用范围
3. 提交发布
建议第一次只把可用范围设成自己。
飞书应用不发布,权限和事件订阅通常都不会真正生效。
7.8 写配置文件
如果你只用飞书:
CTI_RUNTIME=claude
CTI_ENABLED_CHANNELS=feishu
CTI_DEFAULT_WORKDIR=/Users/你的用户名
CTI_DEFAULT_MODE=code
CTI_FEISHU_APP_ID=cli_你的AppID
CTI_FEISHU_APP_SECRET=你的AppSecret
CTI_AUTO_APPROVE=true
如果你微信和飞书都用:
CTI_RUNTIME=claude
CTI_ENABLED_CHANNELS=feishu,weixin
CTI_DEFAULT_WORKDIR=/Users/你的用户名
CTI_DEFAULT_MODE=code
CTI_FEISHU_APP_ID=cli_你的AppID
CTI_FEISHU_APP_SECRET=你的AppSecret
CTI_AUTO_APPROVE=true
只需要在 CTI_ENABLED_CHANNELS 中加上 weixin 即可,两个渠道共用同一份配置。
7.9 启动并测试
bash ~/.claude/skills/claude-to-im/scripts/daemon.sh start
如果启动成功,通常会看到类似输出:
{
"running": true,
"pid": 95007,
"channels": ["feishu", "weixin"]
}
飞书测试:新建一个测试群,把机器人拉进去,@ 它发消息。
可以从下面这些问题开始测试:
你好,测试下
当前在哪个目录下?
帮我看看这个项目里有哪些文件
如果这些都能正常返回,再逐步尝试更具体的任务。
九、日常管理命令
每次输入完整路径太麻烦,建议先配置一个快捷别名。在终端执行一次:
echo 'alias cti="bash ~/.claude/skills/claude-to-im/scripts/daemon.sh"' >> ~/.zshrc
source ~/.zshrc
之后就可以用 cti 代替长路径:
cti start # 启动 Bridge(手机开始响应)
cti stop # 停止 Bridge(手机不再响应)
cti status # 查看运行状态
cti logs 50 # 查看最近 50 行日志
cti doctor # 诊断问题
start和stop的作用:start启动 Bridge 后台进程后,手机端的消息才会被转发给 Claude Code 执行;stop停止后手机发消息就无人响应了。日常使用就是开机cti start一次,不用时cti stop关掉。
这里有个实用区分:
• status:只是看它在不在跑
• doctor:它挂了、没反应了,帮你查问题
另外要记住:
修改
config.env后,需要重启 Bridge 才会生效(cti stop && cti start)。
十、配置项详解
CTI_RUNTIME
可选 claude / codex / auto。桥接 Claude Code 直接写 claude。
CTI_ENABLED_CHANNELS
可选 feishu / telegram / discord / qq / weixin,逗号分隔可同时启用多个。
CTI_DEFAULT_WORKDIR
Bridge 默认操作的目录。设成 Home 灵活但权限大,设成具体项目目录更安全。
CTI_DEFAULT_MODE
• code:能读写文件、跑命令
• plan:偏规划
• ask:偏问答
CTI_AUTO_APPROVE
这是整套方案里最敏感的配置。飞书和微信都不支持交互式审批按钮,不开自动审批会导致工具调用卡住。大多数情况下要设为 true。
代价是:
Claude 可以不经你再次确认,直接执行工具调用和命令。
十一、常见问题排查
1. 飞书应用没有发布
应用不发布,权限和事件订阅不会生效。
2. 飞书权限没开全
最少确保:im:message、im:message:readonly、im:resource。
3. 飞书事件分发方式选错了
一定要选长连接,不要选公网回调。
4. macOS 上构建失败
优先看第五节的大小写冲突修复方法。
5. CTI_AUTO_APPROVE 没开
飞书和微信都需要开。不开它,工具调用会卡住等审批。
6. 微信登录态过期
重新运行 cd ~/.claude/skills/claude-to-im && npm run weixin:login 扫码。
7. 电脑休眠或断网
Bridge 是本地进程,电脑睡眠或断网后手机端就会"失联"。
十二、Skill 命令速查
在 Claude Code 终端中使用(不是在飞书/微信里):
| 命令 | 说明 |
|---|---|
/claude-to-im setup | 交互式配置向导 |
/claude-to-im start | 启动 Bridge |
/claude-to-im stop | 停止 Bridge |
/claude-to-im status | 查看运行状态 |
/claude-to-im logs | 查看日志 |
/claude-to-im reconfigure | 修改配置 |
/claude-to-im doctor | 一键诊断 |
十三、完整命令清单
微信最快路径(1 分钟)
# 1. 安装 Skill(如果还没装)
npx skills add op7418/Claude-to-IM-skill --yes
# 2. macOS 用户修复大小写问题(见第五节)
# 3. 扫码绑定微信
cd ~/.claude/skills/claude-to-im && npm run weixin:login
# 4. 写配置
mkdir -p ~/.claude-to-im
cat > ~/.claude-to-im/config.env << 'EOF'
CTI_RUNTIME=claude
CTI_ENABLED_CHANNELS=weixin
CTI_DEFAULT_WORKDIR=/Users/你的用户名
CTI_DEFAULT_MODE=code
CTI_AUTO_APPROVE=true
EOF
chmod 600 ~/.claude-to-im/config.env
# 5. 启动
bash ~/.claude/skills/claude-to-im/scripts/daemon.sh start
飞书完整路径
# 1. 安装 Skill
npx skills add op7418/Claude-to-IM-skill --yes
# 2. macOS 用户修复大小写问题
cd ~/.claude/skills/
git clone https://github.com/op7418/Claude-to-IM.git claude-to-im-core
cd claude-to-im-core && npm install && npx tsc -p tsconfig.build.json && cd ..
cd claude-to-im
sed -i '' 's|file:../Claude-to-IM|file:../claude-to-im-core|' package.json
rm -rf node_modules && npm install && npm run build
# 3. 写配置
mkdir -p ~/.claude-to-im
cat > ~/.claude-to-im/config.env << 'EOF'
CTI_RUNTIME=claude
CTI_ENABLED_CHANNELS=feishu
CTI_DEFAULT_WORKDIR=/Users/你的用户名
CTI_DEFAULT_MODE=code
CTI_FEISHU_APP_ID=cli_你的AppID
CTI_FEISHU_APP_SECRET=你的AppSecret
CTI_AUTO_APPROVE=true
EOF
chmod 600 ~/.claude-to-im/config.env
# 4. 启动
bash ~/.claude/skills/claude-to-im/scripts/daemon.sh start
微信 + 飞书同时启用
在已配好飞书的基础上,只需两步:
# 1. 扫码绑定微信
cd ~/.claude/skills/claude-to-im && npm run weixin:login
# 2. 修改配置,加上 weixin
# 把 CTI_ENABLED_CHANNELS=feishu 改为 CTI_ENABLED_CHANNELS=feishu,weixin
# 3. 重启
cti stop && cti start
十四、最后总结
| 微信 | 飞书 | |
|---|---|---|
| 一句话 | 扫码即用,零门槛体验 | 配一次,长期稳定用 |
| 配置时间 | 1 分钟 | 20-30 分钟 |
| 推荐场景 | 快速体验、偶尔使用 | 日常高频、长期稳定 |
推荐路径:先用微信 1 分钟跑通体验 → 觉得好用再花 20 分钟配飞书 → 最终两个同时开着,随手就能用。
跑通之后,你就拥有了一个可以在手机上远程调度的 Claude Code。它不一定适合做高风险、大规模的改动,但非常适合临时查代码、远程接续小任务、不在电脑旁时快速让 Claude 继续工作。