中文 · English
cc-wechat-remote
在微信里遥控 Claude Code。跨平台:macOS / Linux / Windows。
你给 Claude Code 派了个活,回车之后就起身去开会,或者合上电脑出了门。走到半路手机震一下:Claude 卡在某处要你拿主意——这条命令到底能不能跑、这道选择题该选哪个。你在微信回一句「准」,它接着干;回个数字,选项就定了。活干完,再来一条消息说它收工了。整个过程你没碰过键盘。
cc-wechat-remote 就是把这条链路接起来的,分三块:
- 通知——Claude 遇到选择题、请求敏感权限、或一个长任务(≥5 分钟)跑完时,发微信告诉你。
- 托管——开启后每条 bash 命令都发到微信等你批准,选择题也能在微信里直接回。人不在终端前,照样管得住它。
- 合盖续航(仅 macOS)——起个长任务后合盖走人,任务照跑,跑完自动还原、机器自然睡;补上"一合盖 Mac 就睡、微信链路全断"那个洞。
整套 hook 用 Node.js 实现(node 本来就是依赖),不依赖 bash / jq / sed,三大平台通用。
Claude Code ──事件──▶ cc-wm.mjs ──▶ wx-notify ──▶ 微信(你的手机)
│
你回复"批准"
│
微信 daemon ◀── managed-relay ◀───────────────────────┘
│
└──▶ 写 .ans 文件 ──▶ cc-wm.mjs ask 解除阻塞 ──▶ Claude Code 继续/中止
功能
| 功能 | 触发条件 | 口令 |
|---|
| 通知:选择题 | Claude 用 AskUserQuestion 提问时 | 微信通知on |
| 通知:权限请求 | Claude 请求执行敏感操作时 | 微信通知on |
| 通知:长任务完成 | 任务执行 ≥5 分钟后完成 | 微信通知on |
| 托管:远程批准命令 | 每条 bash 命令执行前 | 微信托管on |
| 托管:远程回答选择题 | Claude 提问时阻塞等你回复 | 微信托管on |
| 合盖续航(防睡 · 仅 macOS) | 合盖也让任务跑完,跑完自动还原、机器自然睡 | 合盖续航on |
截图
📱 微信里收到的实际消息——合盖续航状态、长任务完成、选择题、权限请求,都直接发到手机:
开启口令时的反馈(在 CC 会话里输入即可,对 Claude 透明):
前置条件
- Node.js ≥ 20
- 已安装并配置好 claude-to-im,使 Claude Code 已与微信账号绑定。本工具复用它已登录的账号,不需要额外扫码。
如果你还没装 claude-to-im,下面的安装命令会自行先进入claude-to-im的安装向导,先征得你同意,再手把手带你装好并扫码登录,无需让您自行研究。
安装
把以下命令发给 Claude Code(任意会话均可):
请安装并配置这个 skill:https://github.com/FanxingTree/cc-wechat-remote
读取 skill.md,按照其中的向导步骤逐一执行。
或者通过 CC 的 skill 安装命令:
npx skills add https://github.com/FanxingTree/cc-wechat-remote
然后在 CC 中输入 /cc-wechat-remote 启动向导。
手动安装:
git clone https://github.com/FanxingTree/cc-wechat-remote ~/.claude/skills/cc-wechat-remote
然后在 CC 中输入 /cc-wechat-remote 启动向导。
向导会自动:
- 用
node install.mjs --check 检测 claude-to-im / 微信账号 / Node 版本
- 没配好就先征得同意,再引导安装 claude-to-im 并扫码登录
- 询问你要装哪种模式(仅通知 / 通知+托管)
- 运行
node install.mjs <模式>:复制 hooks 到 ~/.claude/hooks/、自动备份并合并 ~/.claude/settings.json
- 发一条测试消息验证链路
也可以不经向导,手动安装:
node ~/.claude/skills/cc-wechat-remote/install.mjs managed # 或 notify
使用方法
安装完成后,在 Claude Code 会话中发送口令即可切换状态:
微信通知on # 开启本会话的微信推送
微信通知off # 关闭
微信托管on # 开启托管(同时开启通知)
微信托管off # 退回纯通知
合盖续航on # 合盖也让任务跑完(仅 macOS,首次需一次性授权)
合盖续航off # 关闭,恢复正常休眠
托管等待时,在微信回:「准」批准 /「否」拒绝 / 数字答选择题 /「全部放行」放行本会话后续所有命令。
口令使用精确匹配,对 Claude 透明(不会出现在对话中)。
💡 新手提示:CC 还没调顺手时(很多命令没进 allowlist),默认权限模式会频繁弹权限请求;一旦开了微信通知/托管,这些请求会一条条全发到微信,容易刷屏打扰。建议先把 CC 用顺、常用命令放行得差不多了再开微信;**或者把 CC 切到 bypassPermissions 模式、另配自定义的敏感操作询问,**让只有真正危险的操作才来打扰你。
卸载
node ~/.claude/skills/cc-wechat-remote/install.mjs uninstall
从 ~/.claude/settings.json 摘掉本工具的所有 hook(先自动备份),并删除 ~/.claude/hooks/ 下的三个脚本。每会话哨兵在系统临时目录、重启即清。若开过合盖续航,按提示再跑一次 awake-teardown 撤销 sudoers 授权即可。
跨平台说明
- hook 调用方式:settings.json 用 exec form
"command":"node","args":["…/cc-wm.mjs","<role>"]。官方文档确认这一形式在三大平台都可靠(node.exe 是真二进制)。
- 路径:临时哨兵走
os.tmpdir(),托管 IPC 走 ~/.claude-to-im/cc-wm-ask/(os.homedir() 定位,daemon 与 hook 两边一致)。
- 证书:Windows / Linux 上 Node 的 fetch 默认走系统证书库,一般无需 CA bundle;仅当遇到公司代理 / 自签证书的 TLS 报错时,才把根证书导出成 PEM 放到
~/.claude-to-im/ca-bundle.pem,脚本会自动带上它。macOS 可用 security find-certificate 生成。
托管模式说明
托管模式需要对 claude-to-im daemon 打一个小补丁,让 daemon 能把你的微信回复路由到等待中的 hook 请求。详见 docs/daemon-patch.md。
通知模式无需 daemon patch,安装向导完成即可使用。
合盖续航(防睡 · 可选 · 仅 macOS)
远程托管最大的一个洞:你起个长任务、合上盖子走人——Mac 一睡,claude-to-im daemon 跟着睡,微信通知和托管当场全断。合盖续航就是来补这个洞的:合盖时也让任务继续跑,跑完自动还原、机器自然睡。
⚠️ 合盖续航只保证机器不睡,不保证联网。 微信通知和托管都要走网络,所以机器合盖后必须始终保持在线,用它时请确保合盖后网络不断,处于稳定 Wi‑Fi 环境。
怎么用:
合盖续航on # 本会话开启(仅 macOS)
合盖续航off # 关闭
首次需一次性授权(之后永远静默)。挡闲置休眠靠 caffeinate(进程持有,自动失效);挡合盖休眠要内核级 pmset disablesleep,需一条收窄的免密 sudo。在终端运行一次:
node ~/.claude/hooks/cc-wm.mjs awake-setup # 安装(visudo 校验,只放开 pmset disablesleep)
node ~/.claude/hooks/cc-wm.mjs awake-teardown # 随时撤销,恢复正常休眠
不授权也能用,但只能挡闲置休眠、挡不住合盖。
它怎么保证不会"永远睡不着": 开工时挂一个随会话存活的守护,用 caffeinate -w <Claude 进程> 把防睡绑定到 Claude 进程本身——Claude 一退(正常或崩溃)就自动把休眠设置还原。多会话按引用计数,最后一个收工才还原。无论正常收工、崩溃、强退,都保证开关被扳回。
会给你发微信吗: 合盖续航生效、你真的合上盖子时,发一条「💻 已合盖,任务继续在跑」;任务结束还原后再发一条「🔋 可以睡了」。合盖时菜单栏图标你也看不见,手机才是该告诉你的地方。(没配微信也能用,只是不发消息。)
⚠️ 合盖跑任务时机器在包里会发热、耗电,注意散热;可只在插电时用。
已知限制