日报 20260409:跨设备自动化:家庭 AI 工作台的首个小目标

前段时间折腾家庭服务器改造,将 Mac mini、Windows 迷你主机、硬盘柜三者有机结合,构成了初级的家庭数据中心:

  • Mac mini 是家庭中枢,目前负责影音服务、远程开发服务,平常在家时也用来直接办公;
  • Windows 迷你主机连接了硬盘柜,提供资源下载和文件存储服务,本机硬盘和外置硬盘会被 Mac mini 自动挂载。

同时,Mac mini 和 Windows 迷你主机上分别安装了 WorkBuddy 与 QClaw 作为电脑小管家做些批处理、自动化任务,可被我用微信远程下达指令控制。

虽说 Mac mini 自动挂载外部设备硬盘这件事,让 Windows 迷你主机与硬盘盒整体看起来像是 Mac mini 的「外置硬盘」。

但俩电脑间无法自动化地互相操作,即便都装了🦞也不行(从我目前所知来看),这使得家庭数据中心在一体化上失去了美感,也阻碍了脱离人类控制而让 AI 接管的理想。

我现在有个需求迫切需要被满足——当 Windows 迷你主机上有资源下载完成时,自动通过 Mac mini 上的服务发送通知到我手机。

既然暂时没有适合我的解决方案,那就只能靠自己创造了;也顺便借此机会,开始研发想弄很久了的「家庭 AI 工作台」!

实现方案

由于我是用 qBittorrent 下载资源,它本身提供了下载完成时的自定义操作触发点,那我的需求实现起来就会很简单——

开发 Webhook

第一步是开发个 HTTP API 用来接收下载完成的资源信息。

我简单描述了下需求,用 Trae 的 SOLO 模式发送出去进行 vibe coding,因为用的是免费模型,时不时会出现排队情况:

模型请求排队
模型请求排队

否则,代码会更快完成。

主体功能很快就实现了,但发现参数支持得不全,完整的参数应该包括:

qBittorrent 参数
qBittorrent 参数

发了参数表格给 Trae 后,它自己补充代码把全部参数都支持了。

配置 qBittorrent

第二步是将执行代码设置到 qBittorrent 中。

在那之前,我先让 AI 生成在 Windows 迷你主机中测试 HTTP API 能否正常调通的一条 curl 命令,经测试功能正常。

但当将参数替换成 qBittorrent 指定占位符并设置为下载完成的自定义操作后,正式执行时所接受到的数据不对,那些参数信息没有正常传进来。

把直接通过 curl 调用改为用 .bat 脚本包装一层调用也不行;问了豆包后得知,可能是因为 Windows 中文件路径转译问题导致的。

我在 .bat 脚本中关于路径的代码全部删除后再测试,就能接收到数据了——果然是路径转译问题。

这时我想起来,前两天让🦞写批量修改文件名的技能时也出现这种问题,除此之外还有中文字符兼容性问题,无论是命令提示符还是 PowerShell 都处理不好,最终它选择了用 Python 处理。

这给我提了个醒,那我也改用 Python 实现——还真就搞定了!

操作系统间成功通信
操作系统间成功通信

至此,两台电脑间相互「协作」的自动化之墙已经打通,日后根据需要进行更多能力扩展。

发送飞书通知

第三步是接收到数据后通过某个途径向我手机发送通知。

一开始想的是,让🦞用已配置的微信通道发消息给我,但 WorkBuddy 和 QClaw 都很难实现;尤其是 WorkBuddy,没有看到任何被动触发的扩展点。

最终还是选择用飞书机器人,而且还是群机器人,配置起来比带有机器人能力的应用简单方便得多,相关功能也是一句话需求就被 Trae 给实现出来了。

飞书通知
飞书通知

这只是临时方案,之后肯定要将接收通知与下达指令的通道进行整合,尽可能统一起来。

结语

在 AI 时代,开发软件应当优先考虑「无头(headless)模式」,也就是 HTTP API 或纯 CLI。

具体到我自己的这个场景,考虑到以后的扩展,采取一个服务端搭配多个客户端的架构,客户端可以是 GUI 或 CLI,因而服务端的技术选型就用相对轻量、简洁的 Koa。

因为客户端的事暂时不急,就不用头疼花时间用户体验问题,服务端的功能按需渐进式开发就好。

我的这「家庭 AI 工作台」有很大想象空间。