我现在做项目,手边这台电脑不再是唯一的工作现场。

我带出门的是 MacBook,家里常驻着我自己的 Mac mini、一台 16GB 的 MacBook Pro 和一台 48GB 的 MacBook Pro;两位朋友也把他们的 Mac mini 放在我家。需要继续项目时,我可以 SSH 回对应的机器,接着看原来的目录和进程;有些任务就留在那里跑,完成后再通过 Git 把改动带回来。

最近不少云端 Agent 工作流给我的感觉是:任务可以留在一台常驻的远程机器里继续跑,人不用一直守在那块屏幕前。我也想要这种工作节奏,于是先把自己手边已有的电脑接起来,给 Agent 留一间我能自己维护的“云端工作室”。

这里的“云端”不是无限大的算力,也不是把几台电脑的内存自动合并。模型 API 仍由模型服务商执行和计费;我自己搭起来的是 Agent 可以进入的电脑、项目环境、网络和工具。系统更新、供电、备份和故障恢复,也都由我负责。

笔记本通过私有网络和 SSH 连接到家里的 Mac 工作站,工作站承载开发环境、Agent、Runner 和私有工具
个人云工作站的结构示意图。箭头表示可能的连接与任务流,不代表每个 Agent、模型或网站都能直接访问这台机器。

这几台机器,现在替我接哪些活#

把开发环境留在远端。 我把项目依赖、长时间运行的进程和工作目录留在常驻机器上。笔记本带走后,只要工作站仍有电、联网且没有休眠,我就能从另一台设备连进去。Git 负责版本与协作;重要改动照常推到 GitHub,避免机器损坏时只剩一份孤本。

让 Agent 有地方干活。 我会把适合远程运行的开发任务放进那台机器:代码、依赖和命令都在项目环境里,笔记本不用一直开着。OpenAI 在 2026 年的 Codex 桌面更新说明中,把通过 SSH 连接 remote devbox 列为开发工作流能力之一;当时该能力处于 alpha 阶段,具体入口和可用范围以你使用的版本为准。它和 Codex Cloud 不是一回事:Codex Cloud 在 OpenAI 管理的电脑和隔离工作区中运行任务;自己维护的 Mac 则由我负责联网、更新、磁盘、权限和恢复。我借用的是“远端持续工作”的方式,不是托管产品的全部功能或额度。OpenAI:Codex 的远程开发工作流 · Codex Cloud 如何运行

把家里的 Mac 接成 Runner。 我让可信仓库的 GitHub Actions 在自己的机器上构建、打包。家用 Mac mini Runner 的接入和故障记录,我放在了文末。Runner 会在我的电脑上执行工作流命令,所以我只把它用于自己信任的仓库和触发流程;GitHub 也提醒,自托管 Runner 不适合接收公开仓库里陌生 PR 的任务。GitHub:自托管 Runner 安全说明

给 Agent 接上自己的工具和资料。 远程机器可以承载私有项目文件、脚本、数据库只读入口,或者一个只在私有网络里开放的 MCP 服务。MCP 的作用是把明确的工具能力交给兼容的 Agent;模型是否能连上它,取决于运行模型的一侧是否能安全访问这个服务。不要为了省一步配置,把管理页面、SSH 或包含个人资料的服务直接暴露到公网。OpenAI:构建 MCP Server

整理公开资讯。 我可以让常驻机器定期读取它有权访问的公开页面,整理成订阅摘要。能不能访问 X 或其他网站,仍取决于账号权限、服务条款和所在地规则;换一台机器不会改变这些条件。

我的 48GB MacBook Pro 也能用来试验适配的本地模型。不过这和调用模型 API 是两种成本结构:用 API 时,推理仍在服务商一侧,API 费用照算;本地推理消耗自己的内存、功耗和等待时间,实际速度与能跑的模型要看设备和模型。把电脑放在家里,不会让 API 免费。

省钱这件事,我先摊开自己的账单#

我原本想写“自托管 Runner 帮我省了多少钱”,所以打开了自己的 GitHub 账单。结果是:2026 年截至 10 月 6 日,Actions 的标价用量累计为 38.92 美元,实际计费为 0 美元。 其中 Linux Runner 用了 1,684 分钟,标价 10.10 美元;macOS 3-core Runner 用了 464.29 分钟,标价 28.79 美元;Actions 存储约 0.03 美元。我的账号是 GitHub Free,账单中的免费用量和适用折扣抵掉了这部分金额,付款记录也没有已支付的账单。

所以这 38.92 美元是折前标价,不是我已经付出、再被我省下来的钱。拿 9 月举例:Actions 标价 12.35 美元,账单中的免费用量和折扣也抵掉 12.35 美元,实际扣费 0 美元。账单把公开仓库的免费使用和包含额度等折扣一起显示;光看这个金额,不能精确倒推出当月到底用了多少免费分钟。

我能确定的是,GitHub Free 每月包含 2,000 分钟托管 Runner 用量。对私有仓库来说,自托管 Runner 的实际价值,是把可信构建从有限的托管额度里挪出来,给其他工作流留空间。只有托管用量超过免费额度后,它才会转化成避免额外 Runner 费用的现金节省;目前我的账单还不能证明已经省下了这笔钱。标准 Linux Runner 的公开单价是每分钟 $0.006,macOS 3-core 是 $0.062;如果工作流本来跑在公开仓库的标准托管 Runner 上,GitHub 已经不按分钟收费,也就谈不上从 Runner 分钟费里省钱。GitHub:各套餐包含用量 · GitHub:Runner 计费与单价

我之前确实碰到过私有项目的 Actions 工作流跑不起来。看过账单后,我会把“额度受限”和“已经扣了钱”分开看:如果 GitHub 账户用完免费额度、又没有有效付款方式,额外用量会被阻止。我的这份账单显示了当前用量和抵扣,但不能单凭它证明过去某一次失败的唯一原因。GitHub:超过包含用量后的处理方式

网络这笔也要看原来付钱买的是什么。Tailscale 的个人计划可以免费连接个人设备;如果你此前单独花钱租中转入口、只是为了远程连回自己的电脑,这部分可能就不必再付。它默认建立的是设备之间的私有网络,不会自动把所有网页流量都转过去;Exit Node 是另一种配置。所以我不会把任何商业 VPN 的年费都算成“已经省下”。Tailscale 个人计划 · Tailscale Exit Node

展开:把自己每月的 Runner 和设备成本放进来算

先记下原方案真正支付的托管 Runner 超额费用,以及只为远程接入设备购买的中转服务费用。再把机器平均功耗乘以在线小时数、除以 1,000,得到用电量;乘当地电价得到电费。最后加上硬盘、宽带增量、折旧和维护时间。自托管 Runner 本身不收 GitHub Runner 分钟费,但 GitHub 的存储等用量仍需另算。我的简化公式是:实际现金节省 = 原方案本会产生的超额账单 − 新增电费、网络、硬盘和维护成本。 如果原本都在免费额度内,现金节省就是 0;如果机器本来就在家里开着,新增成本可能较低。

我是从一台机器开始的#

我没有先把家里所有电脑编成一支队伍,而是从一台能长期供电、散热正常、网络相对稳定的机器开始。它先替我解决远程开发,再慢慢接上可信项目的构建。机器放在自己家还是朋友家,也不只是技术细节:谁能碰设备、谁来处理断网维修、数据能不能留在那里,最好先说清楚。

我用 Tailscale 私有网络 + SSH 把自己的设备连起来:客户端进同一个私有网络,再 SSH 到工作站,通常不用在家用路由器上开放公网 SSH 端口。访问名单和权限仍要收紧,并使用 SSH 密钥。Tailscale 默认连的是 tailnet 里的设备,不会把普通网页流量自动转到那台机器;需要全流量经过某个节点时,才另外配置 Exit Node。Tailscale:Exit Node 与普通私有网络的区别

其他方式也能用,但用途不同:

  • Cloudflare Tunnel:适合把某个明确的 Web 服务接到 Cloudflare,再加访问控制;它不是整台电脑的通用 VPN。发布前要确认访问策略和服务范围。Cloudflare Tunnel 文档
  • 自己维护 WireGuard 或反向 SSH:可控性更高,但你还得负责入口服务器、密钥轮换、更新和故障排查。刚起步时,不妨先把一个 SSH 场景跑通。

接下来只加一个工作负载:先用自己的私有仓库做远程开发;稳定后再接 Runner 或 MCP。每一步都能单独验证,出了问题也容易找到是网络、机器、项目依赖还是 Agent 权限出了差错。SSH 密钥、API Key 和 GitHub 凭据各自保管,不要贴进文章、截图或公开仓库。

把它变成你自己的工作站#

我已经把搭建步骤整理成一个可复制给 Agent 的 Skill。打开下面页面,点“复制提示词”,再把你要解决的任务补给自己的 Agent;它会先盘点现有设备和需求,再带你选择网络方案、完成远程连接,最后只接入一个具体工作流。

打开「搭建个人云工作站」Skill,复制给你的 Agent →

搭好以后,继续完善 Runner 的经验可以看我把家里的小 Mac mini 交给 GitHub Actions 当 Runner;如果你想看朋友把 Mac mini 放在我家、通过远程桌面和隔离环境工作的实践,可以看我把开发电脑放在东京家里,给远方的朋友搭了一个入口。

对我来说,这不是把旧电脑包装成“无限云算力”,而是把已经拥有的机器重新放回工作流里:代码、工具、构建和 Agent 有了一个能持续在线的地方,我的笔记本则不必一直扛着所有事情。