| name | cc-wechat-remote |
| description | 把 Claude Code 的通知与托管接入微信的一键安装向导(跨平台 macOS/Linux/Windows)。检测 claude-to-im 是否已配置,没配好就先征得同意再手把手引导安装;询问安装模式(仅通知 / 完整托管),用 node 安装器写入 hooks 与 settings.json,发测试消息验证链路;macOS 可选开启「合盖续航」防睡(合盖也让任务跑完)。触发词:"安装微信通知"、"安装微信托管"、"cc接微信"、"合盖续航"、"setup wechat for claude"、"/cc-wechat-remote"。 |
| triggers | ["安装微信通知","安装微信托管","cc接微信","setup wechat for claude","setup wechat notification","wechat managed mode"] |
| user-invocable | true |
| allowed-tools | ["Bash","Read","Write","Edit","AskUserQuestion"] |
cc-wechat-remote 安装向导
你给 Claude Code 派个活,回车后就起身离开、甚至合盖出门。半路手机震一下:Claude 卡在某处要你拍板——这条命令能不能跑、选择题选哪个;你在微信回「准」或回个数字,它就接着干,跑完再发一条告诉你收工。整个过程不用守在终端前。cc-wechat-remote 就是把这条链路接起来的。
本 skill 是它的一键安装向导,把上面的能力分三块装好:
- 通知:Claude 遇到选择题、请求权限、或长任务(≥5 分钟)完成时推送到微信。
- 托管:开启后每条 bash 命令都发微信等你批准,选择题也能在微信里直接回。
- 合盖续航(仅 macOS · 可选):合盖也让任务跑完,跑完自动还原、机器自然睡。
整套 hook 用 Node.js 实现(node 本来就是依赖),不依赖 bash / jq / sed,在 macOS、Linux、Windows 上都能跑。安装与 settings.json 合并由 install.mjs 完成。
每次被调用时,按下列步骤顺序执行,不要跳过任何步骤。
约定 <SKILL_DIR>:本 skill 所在目录(含 skill.md、install.mjs、hooks/ 的那个目录),通常是 ~/.claude/skills/cc-wechat-remote。下面命令里出现 <SKILL_DIR> 时,替换为它的真实绝对路径。所有命令都用 node,在三大平台通用。
步骤 1:询问安装模式
用 AskUserQuestion 工具询问,question:
请选择要安装的模式:
options:
- 仅通知(label:
仅通知,description: Claude 遇到选择题、权限请求、长任务完成(≥5分钟)时给你发微信。无需改 daemon。)
- 通知 + 托管(推荐)(label:
通知 + 托管,description: 在通知基础上,开启后每条 bash 命令都发微信等你批准,也能远程回答选择题。需要对 claude-to-im daemon 打补丁(向导会说明)。)
将选择存为 INSTALL_MODE(notify 或 managed)。
步骤 2:检测 claude-to-im 与微信账号
运行安装器的检测模式(跨平台,无需 bash/jq):
node "<SKILL_DIR>/install.mjs" --check
输出形如:
NODE_VERSION: 20.x.x (OK)
WEIXIN: LINKED | NO_ACCOUNT | MISSING
CA_BUNDLE: CA_OK | CA_MISSING
PLATFORM: darwin | linux | win32
根据结果分支:
- NODE_VERSION 标了"需要 >= 20":先让用户升级 Node.js(macOS:
brew install node;Windows:到 https://nodejs.org 下载 LTS 安装包;Linux:用发行版包管理器或 nvm)。装好再重跑本步。
- WEIXIN = MISSING 或 NO_ACCOUNT:claude-to-im 还没装好或微信没绑定。转入「步骤 2-引导」——先讲清现状、征得用户同意,再一步步带他装好并扫码登录。严禁只甩一句"去某网址自己装"就停手;用户要的是傻瓜式引导,每步都说清在做什么、会看到什么、怎样算成功。
- WEIXIN = LINKED 且 CA_BUNDLE = CA_MISSING:
- WEIXIN = LINKED 且 CA_BUNDLE = CA_OK:直接继续步骤 3。
步骤 2-引导:带用户安装 claude-to-im 并登录微信(仅当步骤 2 检测到缺失时执行)
本工具复用 claude-to-im 已登录的微信账号来发消息,所以它必须先就位。检测缺失时,不要直接把官网链接丢给用户。按下面的子步骤走:先征得同意,再手把手带着做,每步都告诉用户「这步在干什么、会看到什么、成功标志是什么、失败了怎么办」。
2-引导-1:先告知,再征求同意(必须,不可跳过)
先用一句话说明现状,然后用 AskUserQuestion 征求同意。未经用户点头,禁止开始任何安装动作。
说明话术(按步骤 2 结果二选一):
- MISSING:「你还没装 claude-to-im——它是微信链路的底座,本工具靠它登录的微信账号发消息。要不要我现在带你一步步装好、并扫码登录微信?大约 5 分钟,全程我会把每一步讲清楚。」
- NO_ACCOUNT:「claude-to-im 已经装好了,但还没绑定微信账号。要不要我带你扫码登录一下?大约 2 分钟。」
AskUserQuestion 的 options:
好,带我装(description:我会逐步引导,每一步解释清楚你该做什么)
我已弄好,重新检测(description:你已自行装好/登录,回到步骤 2 重新检测)
先不装(description:暂停安装,给你官方文档自己看)
分支:
2-引导-2:判断从哪一步开始
检测 claude-to-im skill 是否已在(跨平台 node 写法):
node -e "const fs=require('fs'),os=require('os'),p=require('path');const d=['.claude/skills/claude-to-im','.codex/skills/claude-to-im','code/Claude-to-IM-skill'].map(x=>p.join(os.homedir(),x));console.log(d.some(fs.existsSync)?'SKILL_PRESENT':'SKILL_ABSENT')"
- SKILL_ABSENT → 从 2-引导-3 开始(先装 skill)。
- SKILL_PRESENT → 跳到 2-引导-5(直接扫码登录)。
2-引导-3:安装 claude-to-im skill
先告诉用户「这一步把 claude-to-im 下载到你的 CC skills 目录,不会改动你现有的任何配置」,然后运行:
npx skills add op7418/Claude-to-IM-skill
若 npx skills 不可用,退回手动克隆:
git clone https://github.com/op7418/Claude-to-IM-skill.git "$HOME/.claude/skills/claude-to-im"
成功标志:命令结束无报错,~/.claude/skills/claude-to-im 目录已存在。
2-引导-4:用 claude-to-im 自带向导选「微信」渠道
告诉用户:「接下来用 claude-to-im 自己的配置向导,选『微信』。请在 CC 里输入下面这行——它是 claude-to-im 的命令,不是本工具的:」
/claude-to-im setup
说明每屏怎么选:
- 选择渠道:勾选 微信 / Weixin(可只选微信)。
- 默认值:工作目录 / 模型 / 模式按提示填,拿不准用默认。
- 微信不需要在这步粘贴 token——凭据靠下一步扫码生成。
配置完,让用户回到本向导,继续 2-引导-5。
2-引导-5:扫码登录微信(最关键的一步)
告诉用户「现在登录微信:下面这条命令会弹出一个网页二维码,用微信扫它、在手机上点确认就行」,然后运行:
cd "$HOME/.claude/skills/claude-to-im" && npm run weixin:login
若 skill 装在别处(~/.codex/skills/claude-to-im 或 ~/code/Claude-to-IM-skill),把 cd 路径换成实际目录。Windows 上同样可在 Git Bash 或 PowerShell 里执行(cd 后跟 npm run weixin:login)。
向用户讲清:
- 命令会生成
~/.claude-to-im/runtime/weixin-login.html 并尽量自动打开浏览器;没自动打开就让用户手动双击它。
- 用微信扫码 → 手机上点「确认登录」。
- 成功标志:账号写入
~/.claude-to-im/data/weixin-accounts.json。
2-引导-6:启动 daemon
告诉用户「最后启动后台守护进程,它负责让微信保持在线、收发消息。关掉终端也会继续跑」,让用户输入(claude-to-im 的命令):
/claude-to-im start
2-引导-7:回到检测确认
重新运行步骤 2 的 node "<SKILL_DIR>/install.mjs" --check:
步骤 3:运行安装器
根据步骤 1 的 INSTALL_MODE 运行(二选一):
node "<SKILL_DIR>/install.mjs" notify
或:
node "<SKILL_DIR>/install.mjs" managed
安装器会自动:
- 把
lib.mjs、wx-notify.mjs、cc-wm.mjs 复制到 ~/.claude/hooks/;
- 备份
settings.json(.bak-<时间戳>),再把 hooks 以 exec form("command":"node","args":[...])合并进去;
- 不重复添加已存在的 hook。
settings.json 里会新增(notify 模式):
UserPromptSubmit → cc-wm.mjs toggle(口令开关)
UserPromptSubmit → cc-wm.mjs awake(合盖续航引擎,未开启时静默无开销)
PreToolUse/AskUserQuestion → cc-wm.mjs choice(选择题通知)
Notification → cc-wm.mjs notify(权限请求通知)
Stop → cc-wm.mjs stop(长任务完成)
managed 模式额外加:
PreToolUse/Bash|AskUserQuestion → cc-wm.mjs ask(托管阻塞中继)
步骤 4:发送测试消息
node "<SKILL_DIR>/hooks/wx-notify.mjs" "🎉 cc-wechat-remote 安装成功!现在输入「微信通知on」开启推送。"
用 AskUserQuestion 询问用户是否收到。
- 收到了:继续步骤 5。
- 没收到:排查 ① claude-to-im daemon 是否在跑(
/claude-to-im status);② 账号是否绑定(重跑 install.mjs --check 看 WEIXIN 是否 LINKED);③ 若提示 TLS/证书错误,按步骤 2 的 CA 分支处理 ~/.claude-to-im/ca-bundle.pem。排查后重跑本步。
步骤 5:托管模式后续说明(仅 managed)
如果 INSTALL_MODE 为 managed,向用户说明:
托管 hook 已装好,但还需要对 claude-to-im daemon 打一个补丁,才能把你的微信回复路由到等待中的 hook 请求。详见仓库 docs/daemon-patch.md。核心:新增 managed-relay.ts、在 streamChat() 入口调用它、npm run build 重启 daemon。IPC 目录是 ~/.claude-to-im/cc-wm-ask/(跨平台,daemon 与 hook 都用 os.homedir() 定位)。
不打补丁时,微信托管on 与 ask hook 已就位,但微信回复无法路由回 hook,只会被当普通消息处理。
可选步骤:合盖续航(防睡 · 仅 macOS)
仅当步骤 2 检测到 PLATFORM: darwin 时提供本步;非 macOS 直接跳过(暂不支持)。
用 AskUserQuestion 问用户是否现在开启「合盖续航」。说明话术:
你在 macOS 上。要不要顺手开「合盖续航」?——起个长任务后合上盖子走人,任务也能继续跑、跑完机器自然睡;否则一合盖 Mac 就睡,微信通知/托管也跟着断。需要一次性授权(只放开 pmset disablesleep 这一条免密、用 visudo 校验),之后静默。
AskUserQuestion 的 options:
好,现在配(description:终端跑一次授权命令,之后用「合盖续航on」开关)
先不配(description:跳过;以后想用随时再来)
选 好,现在配 → 告诉用户在终端运行下面这行(需交互式输入一次登录密码,不能在 hook 里跑):
node "<SKILL_DIR>/install.mjs" awake-setup
成功后说明:
- 在 CC 会话里打 「合盖续航on」 本会话生效,「合盖续航off」 关闭。
- 撤销随时运行
node "<SKILL_DIR>/install.mjs" awake-teardown,恢复正常休眠。
- 合盖跑任务时机器在包里会发热、耗电,提醒注意散热。
选 先不配 → 跳到步骤 6。
步骤 6:安装完成摘要
向用户展示(按实际情况调整):
✅ cc-wechat-remote 安装完成!
已安装: ~/.claude/hooks/ 下的 lib.mjs、wx-notify.mjs、cc-wm.mjs
口令(在 CC 会话里输入):
微信通知on # 开启本会话推送
微信通知off # 关闭
微信托管on # 开启托管(每条 bash 命令/选择题发微信等你回)
微信托管off # 退回纯通知
合盖续航on # 合盖也让任务跑完(仅 macOS,需先 awake-setup 授权)
合盖续航off # 关闭,恢复正常休眠
托管等待时,微信回「准」批准 / 「否」拒绝 / 数字答选择题 /「全部放行」放行本会话后续所有命令。
💡 新手提示:CC 还没调顺手时(很多命令没进 allowlist),默认权限模式会频繁弹权限请求;一旦开了微信通知/托管,这些请求会一条条全发到微信,容易刷屏打扰。建议先把 CC 用顺、常用命令放行得差不多了再开微信;或者把 CC 切到 bypassPermissions 模式、另配自定义的敏感操作询问,让只有真正危险的操作才来打扰你。
设置立即生效,无需重启 CC。
故障排查
node "<SKILL_DIR>/install.mjs" --check
node "<SKILL_DIR>/hooks/wx-notify.mjs" "测试 $(date)"