
人在外面,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
│ │
└<──流式结果──────────────┘
│
手机微信 <──回复──────────┘
最打动我的几个点:
- Claude Code 进程是常驻的。我一开始以为每条消息都会起一个新进程,后来发现不是,它有个 bridge 子进程一直跑着,会话状态是持久的。这点很重要,不然每次都要重新加载上下文,根本没法用。
- 可以多 session。我有时候同时让它写个功能、查个 bug,各跑各的互不干扰。
- 流式回复。Claude 一边想一边往微信推,不用等全部执行完才看到。
- 不只支持 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
能输出版本号就行。

第 2 步:扫码登录
xacpx login
这一步会出来一个二维码,用微信扫一下,绑定你的微信账号。

扫完之后,微信里会多一个"机器人"对话,具体名字看 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..." 的字样就说明起来了。

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

我用下来觉得值得调的几个配置
~/.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 完全够用,而且入口就是每天都在用的微信,几乎不用任何心智切换。
用了几个月,我的几点感受
最后总结下吧。
- XACPX 对我来说解决了一个真问题:人不在电脑前,但想远程让 Claude 干活。以前靠 SSH / 远程桌面都不舒服,现在一条微信消息搞定。
- 安装其实就四步:
npm install→login→config.json→start。5 分钟能跑起来。 - 配置上最影响体验的是
replyMode:stream / final / verbose 三个模式,按任务长短切着用。 - 坑一定要记得避:Mac 不能休眠,微信登录态会掉,安全白名单一定要设。
- 和其他方案对比:想"让 AI 远程干活",目前我用下来 XACPX 是最顺的。
如果你也有"出门在外惦记家里 Mac"的烦恼,强烈推荐试一下。装一次 5 分钟,从此你的 Claude Code 就不再被绑在电脑前了。
下一篇预告:用了一阵子微信之后,我嫌登录态老掉,又试了飞书渠道。配置比微信繁琐一些,但登录态稳得多,一两个月不用管。下一篇专门聊飞书渠道怎么配,以及微信 vs 飞书的真实对比。
相关链接
- XACPX 主仓库:github.com/gadzan/xacpx
- Weacpx(前身项目):github.com/gadzan/weacpx
- ACP 协议:Agent Control Protocol,XACPX 底层使用的协议
- Claude Code 官方文档:code.claude.com/docs
本文首发于 良人伊欣小窝,转载请注明出处。
原创文章,作者:宁白久,如若转载,请注明出处:《微信遥控 Claude Code:XACPX Mac 安装指南》https://www.liangrenyixin.cn/article/p/13785816299209728
支付宝扫一扫
微信扫一扫




全部评论: 条