把本地 AI 命令行接到微信远程使用(CLI-WeChat-Bridge)

CLI-WeChat-Bridge 把本机运行的 Codex、Claude Code、OpenCode、Pi 接入微信与企业微信,让你在手机上向本地会话发指令、收输出和审批提示。它用 TypeScript 写,走 npm 全局安装,本地终端仍是主界面。这篇文章拆解它的适用场景、主要功能、安装步骤、关键参数与几个已知坑,帮读者判断自己的远程工作流要不要用它。

本地的 AI 命令行工具很适合跑长任务,Codex、Claude Code 这类 CLI 一次会话可能持续十几分钟到几十分钟。人一离开电脑,这段进程就只能回来再看,中间补不了指令,也处理不了审批提示。

CLI-WeChat-Bridge 是一个用 TypeScript 写的桥接工具,把本机运行的 Codex、Claude Code、OpenCode、Pi 接入微信和企业微信,让手机也能向本地会话发指令、收输出与审批提示。

它的定位是本地优先。CLI 仍然是主工作界面,微信或企业微信承担远程输入和结果回流,会话状态、线程和审批流都以本地会话为中心,不另起一套托管环境。

它的定位是本地优先。CLI 仍然是主工作界面,微信或企业微信承担远程输入和结果回流,会话状态

它解决的是什么问题

要把手机和本地终端连起来,常见的两条路都不顺手。一条是把工作流整体搬到网页版客户端或者托管机器人上,搬过去之后本地的工作目录、启动参数和已有的 history 会话都用不上,等于重建一套环境。另一条是远程桌面,手机上的操作体验差,还得让桌面一直在线。

这个项目走的是第三条路:本地 CLI 原样运行,bridge 在中间转发消息。你在终端里用什么启动参数、在哪个目录工作,微信这一侧接的就是同一段会话。

覆盖范围是 Codex、Claude Code、OpenCode、Pi 四个 CLI,通道上支持个人微信与企业微信。企业微信走的是官方智能机器人长连接,不需要公网回调地址。

典型使用场景

  • 本地跑长任务的人。在终端里起一段 Codex 会话处理重构或排错,出门后用微信继续看输出、补指令,bridge 保留同一段 thread。
  • 企业微信用户。在企业微信客户端的「工作台 → 智能机器人」里创建 API 模式机器人,选择使用长连接,拿到 Bot ID 和 Secret 后跑 wecom-setup 接入。
  • 同时用多个 CLI 的人。用 wechat-daemon 常驻,在微信或企微里发 /codex、/claude、/opencode、/pi 切换当前活动终端,不用回到电脑上开窗口。
  • 想在手机上处理审批的人。本地 CLI 的审批请求会同步回对应通道,人不在电脑前也能处理。

几个常见疑问

Claude Code 只回 (no final reply) 是怎么回事?

这是早期版本暴露的问题:跑 claude code 时,回答完成后微信侧收到的是 (no final reply),拿不到真正的回复正文。这条 Issue 有 13 条评论,目前状态为已解决。

本地执行 /resume 之后微信为什么还连着旧会话?

在 wechat-codex 里键入 /resume 可以切到本地历史会话,但微信侧仍连在启动时新建的那个会话上,两边对不上。相关 Issue 状态为已解决。

同一个目录下并行跑的 codex 消息为什么会串?

只启动一个 wechat-bridge-codex 和一个 wechat-codex 时,同目录下另有一个更早启动的 codex 在干活,结果后者的消息出现在微信上。这个串话问题状态为已解决。

主要功能

  • 四个 CLI 适配器。Codex 已验证 0.149.x–0.161.x,OpenCode 同时支持 1.18.x 与 2.0.x,Pi 已验证 0.85.1 且需要本机可执行 pi 命令,Claude Code 通过 PTY 交互模式工作。
  • 双向线程共享。微信或企业微信与本地终端共享 thread/session,双向对话,本地输出、审批请求与运行状态都会同步回对应通道。
  • 文件双向传输。本地文件可以传到微信,微信也能发文件回终端。
  • 多 CLI 切换。wechat-daemon 常驻后,在对应通道发 /codex [prompt]、/claude [prompt]、/opencode [prompt]、/pi [prompt] 切换活动终端;带 prompt 时切换后立即转发剩余文本。
  • 远程模型与计划模式控制。1.1.8 起 /model、/model <编号> 与 /plan 扩展到全部四个适配器。
  • /all 广播。1.2.0 新增,把同一段提示词发给全部已启动的 CLI。
  • daemon IPC。1.2.0 起 wechat-daemon 与 wecom-daemon 通过带认证的本地 IPC 接口向外部程序开放。
  • 微信表情绑定指令。可以把微信表情绑定成指令使用。

安装与最短示例

环境要求是 Node.js 大于等于 22.13.0,以及本机 PATH 中已装好至少一个受支持的 CLI。bridge 只调用可直接执行的独立 CLI,不会去发现 ChatGPT.app 这类桌面应用内部捆绑的私有可执行文件。

npm install -g cli-wechat-bridge@latest

旧包名 @unlinearity/cli-wechat-bridge 会继续同步发布,装过旧包名的可以直接升级,新用户用更短的 cli-wechat-bridge。

安装时如果 npm 提示 install/postinstall 脚本未被 allowScripts 允许,需要带上包名重装:

npm uninstall -g cli-wechat-bridge
npm install -g cli-wechat-bridge@latest --allow-scripts=cli-wechat-bridge,node-pty

Linux 上还需要编译工具。Debian / Ubuntu 用 sudo apt install build-essential python3,RHEL / Fedora 用 sudo dnf groupinstall "Development Tools" && sudo dnf install python3,Alpine 用 apk add build-base python3。macOS 遇到编译问题装 Xcode 命令行工具。Windows 需要 Windows 10 1809(build 18309)或更高版本,并装好 Visual C++ Redistributable。

登录个人微信:

wechat-setup

二维码默认是 small 模式,Windows 终端渲染异常时改用 wechat-setup --qr-mode normal。企业微信先建好 API 模式机器人,再跑 wecom-setup,然后在企微里发 /pair <code> 完成配对。

进入项目目录后启动:

cd D:\work\your-project
wechat-codex

四个直接启动命令分别是 Codex 的 wechat-codex、Claude Code 的 wechat-claude、OpenCode 的 wechat-opencode、Pi 的 wechat-pi,企业微信侧对应 wecom-codex、wecom-claude、wecom-opencode、wecom-pi。

想让通道长期在线并在多个 CLI 之间切换,改用 daemon:

wechat-daemon
wecom-daemon --adapter claude

启动后先在微信里发一条消息,比如 hello,让 bridge 拿到最新的 context_token。这样本地终端的输入、最终回复和审批提示才能稳定同步回微信;冷启动后直接从本地先发消息,回发时可能因为旧 token 失效而失败。

关键参数

  • --qr-mode normal:把登录二维码从 small 切成普通模式。
  • --adapter codex 或 --adapter claude:daemon 启动时指定初始 CLI。
  • --profile work:daemon 启动时指定 profile,可写成 wechat-daemon --adapter claude --profile work。
  • --doctor:wechat-daemon --doctor 用来快速检查环境状态。
  • --cwd <project-dir>:源码运行方式下指定工作目录,例如 bun run bridge:codex -- --cwd <project-dir>。
  • 数据目录、上传大小限制、调试开关通过环境变量配置,具体字段名在 docs/configuration.md,README 没有直接列出。

结果在哪里看

终端是主界面。Codex、Claude、OpenCode、Pi 的重要输出发回通道时会分别带上 [codex]、[claude]、[opencode]、[pi] 标签,方便分辨消息来自哪一路。

微信或企业微信这一侧接收回复与状态,1.2.0 起在派发任务期间会显示原生「正在输入」状态。会话对应的 thread 在两边共享,直接用 /resume 可以恢复。

出错时看 bridge.log,Issue 里的报错信息就是从这里来的。数据目录与状态文件的位置在 docs/troubleshooting.md 中说明。

实际使用中的坑

下面这些是仓库 Issue 里出现过的实际问题,状态都已解决,列出来是为了让你遇到时知道不是自己装错了。

  • Windows 上 Node v24.16.0 环境里,微信登录成功后执行 wechat-codex-start 报错 Timed out waiting for the codex bridge,日志里是 wechat_send_failed: context=fatal_error。这条 Issue 有 10 条评论。
  • macOS 26.1 上跑 wechat-claude-start 提示 posix_spawnp failed,排查下来是本机 Node 还停在 14 版本,而项目要求 22.13.0 以上。
  • Claude adapter 状态卡在 busy,回复完成后内部状态没有回到 idle,之后从微信发的消息被拒绝,返回 Claude is still working on: ...。
  • OpenCode 升到 2.0.18 后 bridge 起不来,报 fatal_error: Failed to start OpenCode: OpenCode health check failed (HTTP 401),1.2.1 已接入 OpenCode 2。

和同类的差别在哪

项目适合谁部署方式主要限制什么情况下选它更合适项目地址
CLI-WeChat-Bridge 本地用 Codex、Claude Code 跑长任务,想用微信或企微远程接手同一段会话的人 npm 全局安装,需要 Node.js 22.13.0 以上;Claude Code 适配器依赖 node-pty 原生模块 daemon 绑定启动时的工作目录,不支持从远程通道切换目录;Claude Code 依赖 PTY,node-pty 不可用时回退模式可能无法正常桥接 主工作流留在本地终端,缺的只是手机端一个入口 CLI-WeChat-Bridge
stablyai/orca 要在一个界面里同时驾驭大量并行 agent 的开发者 仓库没有说明 定位是并行 agent 的 ADE,入口不是微信这类即时通讯通道 需要图形化的多 agent 编排界面,而不是把单段会话接到手机上 stablyai/orca
iOfficeAI/AionUi 想要一个常驻桌面应用来跑 OpenClaw、Hermes、Claude Code、Codex、OpenCode 等的人 仓库没有说明 定位是独立的 cowork 应用,未逐一核实它与微信通道的集成方式 希望有独立图形界面常驻运行,不依赖微信作为入口 iOfficeAI/AionUi

本项目做的是单段会话的桥接,没有多 agent 编排面板。要在同一个界面里管理多支并行 agent,或者希望用图形客户端而不是微信当入口,Orca 与 AionUi 的形态更合适。另一个实际差异在环境:Windows 上 node-pty 容易加载失败,遇到时得 npm rebuild node-pty 或重装,Linux 服务器上这一步相对省事。

适合谁:本地终端是你的主工作界面,用 Codex、Claude Code、OpenCode 或 Pi 跑长任务,需要一个手机端入口又不想迁移工作流的人;已经习惯把企业微信当协作入口的团队也能用上,企微通道走官方长连接,不用自己配公网地址。

不适合谁:需要图形化多 agent 编排的人;不想在本机装 Node.js 与原生编译工具的人;以及希望不依赖微信登录态就能远程接入的场景。个人微信通道依赖扫码登录,使用前需要自行确认账号的使用方式是否符合平台条款。

焚评:这个项目的量化评分

本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.3 分(满分 10)。下表是各维度的得分:

评分维度得分
热度动量(权重 25%)10.0 / 10
开发活跃(权重 25%)7.4 / 10
社区响应(权重 15%)10.0 / 10
文档质量(权重 15%)10.0 / 10
发布节奏(权重 10%)9.8 / 10
风险控制(权重 10%)10.0 / 10

评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。

内容核验说明

这篇把本地 CLI 接微信的边界写到了可照做的程度:安装、参数、已知坑都落在能核对的位置,README 没列的环境变量也注明去哪找。适合已经用 Codex、Claude Code 跑长任务、只缺手机端入口的人;想多 agent 编排或不愿装 Node 与编译工具的不必看。

文中的 CLI 版本兼容范围、功能清单与参数说明来自原作者公开披露,诀.com未独立验证;焚评评分由焚.com授权引用,同样未在本站复核。提到的报错、串话、状态卡 busy 等现象均出自仓库 Issue 报告,未在本站环境实测,结果不保证在读者环境复现。

项目来源与说明

开源项目:UNLINEARITY(UNLINEARITY)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库