微信遥控 Claude Code:XACPX Mac 安装指南

人在外面,Mac 留家里。掏出手机,在微信里发一句话,家里的 Claude Code 就开始干活,结果流式回传到手机。这是我最近几个月的一个工作流,分享给同样想"遥控干活"的朋友。


起因:出门在外,总惦记家里的 Mac

先说说我是怎么折腾上这个的。

我平时上班,Mac 留家里开着。通勤地铁上、在外面开会、中午吃饭的时候,经常会突然想到一些事情:昨晚写的代码不知道跑通了没?那个 bug 现在看感觉哪里不对?有个需求想让 Claude 先起草个方案?

以前我会试着用手机 SSH 到 Mac,说实话体验挺糟的 —— 屏幕小、键盘难敲、还没有流式输出。也试过远程桌面,手机上操作窗口应用,卡顿到想摔手机。大部分时候就忍一忍,结果到了公司又忘了。

后来偶然看到 XACPX 这个项目,试了一下,发现它精准地解决了我这个痛点。用了几个月,感觉可以分享出来了。


XACPX 大概是什么

用我自己的话讲:它把我微信里的消息,转发给家里的 Claude Code,再把 Claude 的输出回传到微信。

看它的 GitHub 介绍,原理大概是这样:

组件 干嘛的
聊天渠道 微信、飞书、元宝(手机上的入口)
XACPX daemon Mac 上的常驻进程,接收消息并路由
ACP 协议 Agent Control Protocol,管理 Agent 会话
Agent CLI Claude Code / Codex / Gemini / OpenCode

数据流长这样:

手机微信 ──消息──> XACPX daemon (Mac)
                        │
                        ├─> acpx session ──> Claude Code CLI
                        │                         │
                        └<──流式结果──────────────┘
                        │
手机微信 <──回复──────────┘

最打动我的几个点:

  1. Claude Code 进程是常驻的。我一开始以为每条消息都会起一个新进程,后来发现不是,它有个 bridge 子进程一直跑着,会话状态是持久的。这点很重要,不然每次都要重新加载上下文,根本没法用。
  2. 可以多 session。我有时候同时让它写个功能、查个 bug,各跑各的互不干扰。
  3. 流式回复。Claude 一边想一边往微信推,不用等全部执行完才看到。
  4. 不只支持 Claude Code。Codex、Gemini、OpenCode 都能接,虽然我个人 90% 时间都用 Claude。

我当时的环境

开始装之前,说下我当时手头的环境,给各位参考:

项目 我当时用的 备注
电脑 Mac Linux 理论上也行,我没试过
Node.js 22+ 一开始用的 20,跑不起来,升了才行
Claude Code 已装好 终端 claude 命令能跑通
手机 装了微信 后来也试过飞书,都能用
网络 Mac 有线,手机 4G/5G 不在同一局域网,照样能用

当时踩的第一个小坑是 Node.js 版本。我机器上是 20,装上 XACPX 跑不起来,升级到 22 才通。如果你也有 nvm,可以先 nvm install 22 && nvm use 22 切一下。


我装的时候走了四步

第 1 步:装 XACPX

npm install -g @ganglion/xacpx

装完我习惯性地验证一下:

xacpx --version

能输出版本号就行。

bd886d375822876dbe307f5f294c6dc2.png

第 2 步:扫码登录

xacpx login

这一步会出来一个二维码,用微信扫一下,绑定你的微信账号。

image.png

扫完之后,微信里会多一个"机器人"对话,具体名字看 XACPX 版本。这个就是后续发消息的入口。

(顺便说一句,XACPX 也支持飞书、元宝等其他渠道。微信是最省事的入口,扫码即用。飞书的配置相对繁琐一些,但登录态更稳定 —— 这个我后面专门写了一篇文章聊。)

第 3 步:改一下 config.json

登录后,配置文件在 ~/.xacpx/config.json。我第一次打开的时候,里面是默认配置:

{
  "channel": "wechat",
  "agent": "claude-code",
  "replyMode": "stream",
  "workdir": "~/projects"
}

我基本没改什么,默认配置就能跑。workdir 我改成了我自己的项目目录,这样 Claude 进来默认就在我的工作区里,省得每次都要 cd。

第 4 步:启动

xacpx start

终端会出一段 daemon 启动日志,看到类似 "listening..." 的字样就说明起来了。

9015c75a5a6088aaa8bb1d2fc8050a95.png

到这里,就装好了。 我第一次试的时候,在手机微信里给"机器人"发了个"你好",几秒钟后 Claude 回我了,手机上也能看到 —— 当时那种"通了"的感觉,挺爽的。

3f9bc85a78d000be30b8c0228fec7a7c.jpg

我用下来觉得值得调的几个配置

~/.xacpx/config.json 这个文件,用着用着我慢慢摸清了几个字段的意思。分享下我的理解和用法。

核心字段

字段 干嘛的 我用什么
channel 聊天渠道 默认 wechat,最省事
agent 用哪个 Agent 默认 claude-code,偶尔切 codex
replyMode 回复怎么推 日常 stream,看思路时 verbose
workdir Claude 的工作目录 我设成 ~/projects

三种回复模式,我用下来差别挺大

这个我一开始没在意,后来发现影响体验:

模式 我看到什么 我什么时候用
stream 边生成边推 默认用这个,体验最好
final 全部执行完再一次性推 跑长任务时,免得手机被刷屏
verbose 包含工具调用、思考过程 想研究 Claude 怎么想的时候

一个小教训:有一次我让 Claude 跑 mvn test,用了 stream 模式,结果手机被几百行日志刷屏,根本看不了。后来我学乖了,长任务一律切 final,或者在消息里跟 Claude 说"执行完只给我结果摘要"。

Session 管理,我用得最多的功能

XACPX 支持多 session,我在微信里直接发:

/session new          # 起一个新 session
/session list         # 看当前所有 session
/session switch <id>  # 切到某个 session

我一般是这么用的:

  • Session A:让它写一个功能
  • Session B:同时让它查另一个 bug
  • 两边各干各的,互不干扰

几个我实际用过的场景

讲几个我自己实际用过的场景,给各位一点感觉。

场景 1:查一个 bug

有时候看代码感觉哪里有问题,但又懒得开电脑,就让 Claude 帮我看:

看一下 nest-server-parent 里 ArticleController.java 的 getDetail 方法,有没有空指针风险

它会去读代码、分析、给我结论。我手机上扫一眼就知道大概了,回头到公司再细看。

场景 2:写一段临时代码

中午吃饭时突然想到一个小工具想试,发一句:

写一个 Python 脚本,统计 ~/Desktop 下所有图片的文件大小,输出 Top 10

等我吃完回到工位,代码已经写好放那了,甚至它会自动帮我跑一下。

这种感觉挺奇妙的 —— 人不在电脑前,但 Claude 在帮你干活,你随时能在手机上看到进度。


我顺手试过的几个进阶玩法

用熟之后,我也试过一些进阶的功能,分享下感受。

多 Agent 切换

XACPX 不只能跑 Claude Code。我有时候会让它临时用 Codex 处理一下:

/use codex
# 这条消息用 Codex 处理
/use claude-code
# 再切回来

说实话,我 90% 时间还是用 Claude Code,Codex 只是在某些特定代码生成场景下试过,各有优劣吧。

定时任务

这个功能我用的不多,但偶尔挺有用:

/later 30m 跑一下 tests,把结果发我

30 分钟后,它会自动执行,把结果推给我。适合那种"我现在不想等,但一会儿想看"的场景。


我踩过的坑

这部分可能是最值得看的。用了几个月,踩过的坑大概有这些。

1. Mac 不能休眠

这是我踩的第一个坑。XACPX daemon 跑在 Mac 上,Mac 一休眠,daemon 也跟着挂,微信消息就收不到了。

我当时排查了好久,最后发现是 Mac 休眠了。

我现在的做法:Mac 接电源,系统设置里把"允许硬盘休眠"关掉。或者用命令更稳:

caffeinate -s xacpx start

2. 微信登录态会掉

这个比较烦。微信的网页版 / 桌面协议登录态不是永久的,过几天就要重新扫码。

我一开始不知道,某天突然发现收不到消息了,排查半天才发现是登录态掉了。

经验

  • 发现收不到消息,第一反应先 xacpx login 重新扫码
  • 如果实在嫌烦,可以换飞书渠道 —— 登录态稳得多。飞书渠道的配置我后面专门写了一篇文章聊,有需要的可以去看

3. 网络稳定性

Mac 和手机都得联网。我家里路由器有一次重启,当时 Mac 连着 Wi-Fi,结果断了一阵子。

后来我给 Mac 换成了有线网络,稳了很多。

4. 安全性,我自己加了白名单

XACPX 本质上是:微信消息可以驱动 Mac 上的 Agent 执行任意代码。这一点我自己想清楚了才用的。

我给自己定了几条规矩:

  • 微信账号不能借给别人用
  • 不在不信任的设备上扫码登录
  • config.json 里设了白名单,只接受我自己微信号的消息

最后一条挺重要。万一哪天登录态被别人拿到,至少只有我自己的微信能驱动 Mac。

5. 长任务用 stream 模式会刷屏

前面提到过,再强调一次。让 Claude 跑 5 分钟的任务,stream 模式会把几千行输出全推到手机,根本看不了。

我的做法:长任务一律切 final 模式,或者在消息里加一句"执行完只给我结果摘要"。


我对比过的几种远程方案

XACPX 不是唯一的选择,我自己也试过其他几种。放一起对比一下,给各位参考:

方案 我用的感受 最喜欢的点 最吐槽的点 我现在用来干嘛
XACPX 体验最自然 微信直接用,流式回复 登录态要维护 让 AI 干活(90% 场景)
SSH + tmux 经典稳 控制粒度最细 手机敲命令太痛苦 临时操作,10% 场景
Tailscale + VNC 配置略复杂 完整桌面 手机上体验差,流量大 偶尔需要 GUI 时用
ToDesk / 向日葵 开箱即用 穿透 NAT 收费,不是开发者向 帮家人修电脑用过一次
Claude Code Headless 官方方案 稳定 功能有限,没聊天入口 还没真正用起来

我现在的分工

  • 让 AI 干活:XACPX
  • 自己想敲命令:SSH + tmux
  • 必须操作 GUI:Tailscale + VNC

对我来说,90% 的需求都是"让 Claude 帮我跑个任务、查个东西",XACPX 完全够用,而且入口就是每天都在用的微信,几乎不用任何心智切换


用了几个月,我的几点感受

最后总结下吧。

  1. XACPX 对我来说解决了一个真问题:人不在电脑前,但想远程让 Claude 干活。以前靠 SSH / 远程桌面都不舒服,现在一条微信消息搞定。
  2. 安装其实就四步npm installloginconfig.jsonstart。5 分钟能跑起来。
  3. 配置上最影响体验的是 replyMode:stream / final / verbose 三个模式,按任务长短切着用。
  4. 坑一定要记得避:Mac 不能休眠,微信登录态会掉,安全白名单一定要设。
  5. 和其他方案对比:想"让 AI 远程干活",目前我用下来 XACPX 是最顺的。

如果你也有"出门在外惦记家里 Mac"的烦恼,强烈推荐试一下。装一次 5 分钟,从此你的 Claude Code 就不再被绑在电脑前了。

下一篇预告:用了一阵子微信之后,我嫌登录态老掉,又试了飞书渠道。配置比微信繁琐一些,但登录态稳得多,一两个月不用管。下一篇专门聊飞书渠道怎么配,以及微信 vs 飞书的真实对比。


相关链接


本文首发于 良人伊欣小窝,转载请注明出处。