home 远程控制 Mac Mini 实施计划
日期:2026-09-08
计划状态
- 计划名称:home Windows 远程控制 Mac Mini
- 阶段位置:P9 关联专题;依赖现有 Tailnet 与 macOS 接入边界
- 计划状态:完善中
- 阶段状态:进行中
- 当前工作包:RC-2 Mac Mini 远控服务准备(部分完成)
- 当前记录:本文件
- 进入条件:home 与 Mac Mini 已加入同一 Tailnet,且用户已确认两台主机位于同一局域网
- 目标与完成边界:在 home 的 Windows 上远程操作 Mac Mini;局域网直连优先,Tailnet 地址作为跨网络和其他授权终端的备用入口;支持无人值守连接、键盘鼠标控制、文字与文件传递,并验证图片剪贴板、2K 分辨率和 60 Hz 体验。本文不记录任何软件已经安装或功能已经通过实测的结论。
当前执行记录
- RC-1:已完成。计划、macOS 页面、全站索引、MkDocs 导航和 Console 文档快捷入口已落盘并通过本地检查。
- RC-2:部分完成。Mac Mini
macOS 15.7.7、Intelx86_64;局域网地址已确认有192.168.9.109和192.168.9.106,Tailnet 地址为100.64.0.14。 - RC-2:RustDesk
1.4.9从官方 GitHub Release 下载;DMG SHA-256 为fa1129a0635019f9c5841937942cc2b08be028a192f47c009edde7e53812904e;代码签名验证通过,Gatekeeper 返回accepted/Notarized Developer ID。 - RC-2:应用安装在
/Users/administrator/Applications/RustDesk.app,设备 ID 为427953956;用户级com.carriez.RustDeskLaunchAgent 已加载,状态为running。 - RC-2:Mac Mini 的 RustDesk 日志显示已完成官方协调服务 NAT 探测;截图中 ShadowsocksX-NG 的实际下载代理为 SOCKS5
127.0.0.1:1086,本次 GitHub 下载明确使用该代理。HTTP127.0.0.1:1087、PAC127.0.0.1:1089未被误当作 SOCKS5 下载端口。 - RC-2:发现手动启动与 LaunchAgent 曾产生重复 RustDesk 进程,已结束已确认的旧进程并重新 kickstart;当前 LaunchAgent 单实例为
running,后续日志未再出现 IPCAddress already in use。 - RC-2:后续核验显示 RustDesk 配置中的无人值守密码字段已设置(仅记录存在性,不读取或输出密码值);但此前曾重置 macOS“屏幕录制”权限,因此不能把服务进程运行或密码字段存在等同于无需本地确认的远程桌面可用。
- 2026-09-08 追加核验:当前执行主机已确认是
pcdell-101/100.64.0.2;rr是独立的agentmeshos-main/100.64.0.1节点。101 → home (Administrator@100.64.0.7:22)已恢复为直连成功。根因不是 Tailnet、端口或别名:101 原来错误复用了agentmeshos-101-to-rr私钥,Home Windows OpenSSH 拒绝该公钥;Mac Mini 上保存的 Home 专用管理密钥经实测有效,已用 SHA-256/公钥指纹核对后以0600权限部署到 101,并替换ssh home的专用 IdentityFile。后续 Home/Mac Mini 的常规管理固定由 101 直连,RR 不是默认中转。 - 2026-09-08 追加核验:101 的
~/.codex/config.toml是用户级 Provider 配置,包含多个第三方 Provider 的认证字段;已作为受控小配置直接复制至 Mac Mini~/.codex/config.toml,两端 SHA-256 一致,权限为0600。配置不进入项目、规则或普通日志。 - 2026-09-08 追加执行:用户要求清除 Mac Mini 的旧 Codex 运行目录、应用与用户级应用数据后重装。旧对象已移出活动路径至该用户废纸篓的本次重装目录,未被重新使用;新配置只来自 101。Home 的实时
AGENTS.md已通过恢复后的直连读取;其内容以 Codex 平台行为与安全规则为主,Mac 专用规则保留 101 的真实性、Git、编码、认证、别名直连和文件传输规则,并适配 Mac 的 PAC/代理与主机边界,不迁移 Home Windows 或 WebBridge 专属限制。 - 2026-09-08 追加执行:Mac Mini 通过本机
socks5h://127.0.0.1:1086下载官方 Intel 安装包Codex-latest-x64.dmg,没有经 Tailnet 传输。DMG 完整性、代码签名和 Gatekeeper 均验证通过(已公证 Developer ID);桌面应用已全新安装至/Users/administrator/Applications/Codex.app,bundle idcom.openai.codex、版本26.901.51231,进程已启动。内置 CLI0.153.4以配置的customProvider 成功返回PROVIDER_SMOKE_OK。一个无关 MCP 子进程初始化返回 HTTP 403 后退出,未阻断 Provider 请求;该 MCP 连接未作为已验收能力。 - 2026-09-08 追加执行:Home 已通过本机
socks5h://127.0.0.1:40000从官方 GitHub Release 下载rustdesk-1.4.9-x86_64.exe,API 声明大小24472432字节,Home 下载文件 SHA-256 为EAEDEB0088E687BF46F7C46A9C6EA5493CE51F3134DFD6ACBEDB47B5B9136274。RustDesk 服务已安装并运行,启动类型为Automatic,版本1.4.9,Home 设备 ID 为522674692。用户已确认 Home 无人值守密码已经设置,本文不读取或记录密码值。 - 2026-09-08 追加执行:从 Home 到 Mac Mini 的 RustDesk TCP
21118已实测可达:局域网192.168.9.109、备用局域网地址192.168.9.106和 Tailnet100.64.0.14均可达。Mac RustDesk1.4.9、设备 ID427953956、用户级 LaunchAgent 均为运行状态。Home 服务重启后仍为Running/Automatic,并已从 Home 发起到 Mac ID 的连接请求。SSH 无法读取用户可见桌面窗口,因此连接画面、鼠标键盘、剪贴板、竖屏显示和 2K/60 Hz 仍需在 Home 可见桌面完成一次真实连接后记录。 - 待用户可见桌面完成:macOS“屏幕录制”“辅助功能”“输入监控”授权、无人值守密码设置、Windows 客户端安装、竖屏窗口布局、局域网直连、Tailnet 兜底、剪贴板、2K/60 Hz 和重启后 GUI 重连。
当前事实与拓扑
home是 Windows 节点,当前 Tailnet 地址为100.64.0.7。- Mac Mini 当前 Tailnet 地址为
100.64.0.14。 - Tailnet 当前观察到 home 与 Mac Mini 之间存在局域网直连路径;实际使用前仍需在 home 上确认 Mac Mini 的局域网地址和端口可达性。
- Windows 横屏显示器连接 Windows 主机,Mac Mini 的 HDMI 接到该横屏显示器的另一输入口。
- 目标远程画面通常在 Windows 竖屏显示器上的 RustDesk/VNC 全屏窗口中显示。远程窗口所在的 Windows 显示器与 Mac Mini 的物理 HDMI 输出是两个独立问题。
- SSH 可用于 Mac Mini 主机维护,但 SSH 本身不能提供图形桌面、剪贴板和显示器验证。
架构、数据与接口契约
技术栈与选型
| 方案 | 可维护性 | 部署复杂度 | 性能 | 团队学习成本 | 后续扩展 | 决策 |
|---|---|---|---|---|---|---|
| RustDesk 直连,局域网优先,Tailnet 备用 | 开源客户端和协议边界清晰,可按需自建 ID/Relay | 先装两端即可;需要多终端发现时再增加自建服务 | 桌面压缩和交互通常优于普通 VNC,需实测 2K/60 Hz | 低 | 可扩展到其他 Windows、Linux、手机终端 | 主方案 |
| macOS 屏幕共享 + Windows VNC 客户端 | 复用系统能力,组件最少 | macOS 开启屏幕共享,Windows 配置客户端 | 管理桌面稳定,高分辨率和高刷新率体验有限 | 低 | 适合应急维护,不适合复杂终端管理 | 备用方案 |
| NoMachine | 桌面能力完整,客户端体验较好 | 引入独立软件和授权边界 | 通常优于普通 VNC | 中 | 商业授权和平台策略会影响扩展 | 不作为首选 |
| Sunshine/Moonlight | 图形串流性能强 | macOS 捕获、输入和登录权限配置较复杂 | 低延迟和高帧率有优势 | 高 | 更适合视频或 3D,不适合完整办公控制 | 不作为首选 |
| 商业远控平台 | 成熟度高 | 依赖第三方账户、服务和授权 | 通常较好 | 低 | 受供应商策略限制 | 不采用 |
采用 RustDesk 的原因是它同时覆盖局域网直连、Tailnet 地址连接、无人值守、键盘鼠标控制和文件/剪贴板能力,且不要求引入商业远控平台。RustDesk 自建 hbbs/hbbr 不是第一批前置条件;只有直连发现、跨网络连接或多终端管理的真实需求出现后才增加。
数据、权限与网络边界
- 远程桌面视频流属于远程控制数据面,局域网连接时优先使用局域网地址;跨网络时使用 Mac Mini 的 Tailnet 地址。
- Tailnet 继续作为私有控制和管理网络,不承担项目文件、安装包、镜像或备份分发。
- RustDesk 的无人值守凭据只保存在 Mac Mini 与授权 Windows 客户端的受控配置中,不进入 Git、文档、日志、Console API 或模型上下文。
- Mac Mini 只授予必要的 macOS“屏幕录制”“辅助功能”“输入监控”和登录项权限;不把远控客户端赋予超出用户需求的系统服务权限。
- 其他终端通过 Tailnet 访问时,ACL 只允许明确授权的设备访问 Mac Mini 的远控端口;不开放生产节点、Cloudreve、Nomad 或 Codex 系统服务。
- 文字剪贴板、文件传输和图片剪贴板分别验收。不能把文字剪贴板通过当作图片剪贴板已经可用。
显示契约
- Windows 竖屏显示器承载远程桌面窗口,Windows 横屏显示器继续承载 Windows 主工作区。
- Mac Mini 的 HDMI 物理输出仍连接横屏显示器的另一输入;切换显示器输入不会影响 RustDesk 的远程窗口。
- “随连随显”定义为:Mac Mini 开机、网络已连接、远控服务已启动且无人值守权限有效时,Windows 客户端可以立即连接并显示桌面。
- Mac Mini 的物理输出如果需要竖屏旋转,必须另行配置 macOS 显示器旋转或虚拟显示器;该需求不作为 RustDesk 默认能力假设。
目标、成果与验收契约
目标
- home 在局域网内优先连接 Mac Mini,并获得完整的用户授权范围内桌面控制能力。
- 局域网不可用时,home 或其他授权终端可以通过
100.64.0.14连接 Mac Mini。 - Mac Mini 重启后远控服务自动恢复,连接不依赖人工打开本地桌面应用。
- Windows 竖屏显示器可以稳定显示远程桌面,验证目标分辨率、缩放和刷新率。
- 文字、文件、图片剪贴板分别得到真实结果;失败项保留明确替代路径。
非目标
- 不把 Mac Mini 注册为 Nomad Worker。
- 不通过 Tailnet 分发安装包、镜像、备份或业务文件。
- 不部署公共 RustDesk 中继或商业远控账户作为默认依赖。
- 不把远程桌面服务暴露到公网,不改变主机系统 DNS、默认路由或 Exit Node 配置。
- 不把“SSH 可登录”作为图形远控验收证据。
验收标准
- 必需:在同一局域网内从 home 连接成功,并记录实际连接地址、直连状态、连接延迟和客户端日志摘要。
- 必需:禁用或断开局域网路径后,从 home 使用
100.64.0.14连接成功;恢复局域网后确认客户端重新优先走局域网。 - 必需:可以操作鼠标、键盘、窗口、菜单、锁定/解锁后的授权范围内桌面。
- 必需:Mac Mini 重启后服务自动启动;Windows 客户端无需到 Mac Mini 本地点击确认即可连接。
- 必需:Windows 竖屏显示器显示远程桌面,至少验证 2560×1440 或 Mac Mini 实际可用的最高 2K 模式;目标刷新率为 60 Hz,无法达到时记录真实测量值和原因。
- 必需:文字复制粘贴成功,文件传输成功;图片剪贴板单独用 PNG/JPEG 样本测试 Windows→Mac 和 Mac→Windows 两个方向。
- 必需:Tailnet ACL 仅允许授权终端到 Mac Mini 的远控端口,不能访问未授权项目服务。
- 可选:另一台已授权 Tailnet 终端连接 Mac Mini;不以可选项替代 home 主链路验收。
证据
保存客户端版本、MacOS 权限页状态、连接路径、分辨率/刷新率读数、剪贴板样本结果、重启后服务状态和 ACL 验证结果。调试日志与截图统一放入项目 temp/,不写入正式文档或 Git。
工作包与依赖
RC-1 方案与验收契约
- 前置依赖:当前文件、Tailnet 节点在线、局域网拓扑确认。
- 实施范围:确认 RustDesk 主方案、VNC 备用方案、地址优先级、显示器定义和验收样本。
- 预期成果:本计划、macOS 接入文档、Console 文档入口。
- 验收:计划字段完整,路径加入文档导航,未把未实测内容写成已完成。
RC-2 Mac Mini 远控服务准备
- 前置依赖:RC-1 完成;确认 Mac Mini 当前登录用户和物理显示输出。
- 实施范围:安装受控来源的 RustDesk;启用 macOS 屏幕录制、辅助功能、输入监控、登录项和无人值守权限;保留 macOS 屏幕共享作为备用入口。
- 预期成果:Mac Mini 远控服务状态、版本、权限清单和局域网/Tailnet 地址记录。
- 失败与回滚:撤销新增 macOS 权限、停止并卸载 RustDesk;保留系统屏幕共享和 SSH 维护入口。
RC-3 home Windows 客户端与显示布局
- 前置依赖:RC-2 服务已启动。
- 实施范围:安装 RustDesk Windows 客户端;配置局域网地址优先、
100.64.0.14备用;把全屏窗口放到 Windows 竖屏显示器;记录显示缩放策略。 - 预期成果:Windows 客户端配置和可重复连接步骤。
- 失败与回滚:删除客户端连接配置,不修改 Windows 默认路由、代理或显示器主布局。
RC-4 局域网优先与 Tailnet 兜底验收
- 前置依赖:RC-2、RC-3。
- 实施范围:分别验证局域网直连、Tailnet 连接、路径切换、连接恢复和其他授权终端访问。
- 预期成果:连接路径证据和 ACL 结果。
- 失败与回滚:关闭新增远控端口规则,恢复原有 Tailnet ACL;不以中继或公网暴露绕过失败。
RC-5 剪贴板、画质与重启恢复验收
- 前置依赖:RC-4。
- 实施范围:文字、文件、PNG/JPEG 图片双向测试;2K/60 Hz、缩放、窗口拖拽、锁屏/解锁、Mac Mini 重启和 Windows 客户端重连。
- 预期成果:验收表、已知限制和必要的替代操作。
- 失败与回滚:保留可用的文字/文件能力;图片失败时记录为限制,不伪造通过;必要时回退到 VNC 备用入口。
RC-6 文档与控制台收尾
- 前置依赖:RC-5 所有必需项有真实证据或明确阻塞记录。
- 实施范围:更新 macOS 接入页、全站索引、MkDocs 导航、Console 文档快捷入口和本计划状态。
- 预期成果:正式文档发布产物、路径可访问、GitHub Actions 与 Docs 页面验证记录。
- 验收:控制台能进入文档中心和本计划;文档标明“已验证/待验证/限制”。
分布式底座接入声明
- 接入结论:本阶段不接入 AgentMeshOS 分布式执行底座。
- Network:使用既有局域网和 Tailnet 连接;不修改 Headscale/Tailnet 控制面,不创建新的生产网络。
- Nomad:不使用;远程桌面服务不属于 Worker 任务。
- Compute:不使用;Mac Mini 保持受控 macOS 节点定位。
- Storage:不使用 Cloudreve 或 Runtime Artifact;配置由目标操作系统和远控客户端保存。
- Observability:只保存本次验收所需的最小客户端、服务状态和连接证据,不新增采集服务。
- Adapter:不使用 NomadAdapter、StorageAdapter、ToolAdapter 或 FeedbackAdapter。
- 执行映射:由用户在 home 和 Mac Mini 本机完成安装与权限授权;101 只维护计划与文档,不通过项目服务代替用户控制桌面。
- 数据路径:远程桌面流走局域网或 Tailnet;临时测试截图和日志只放项目
temp/,完成后按任务范围清理。 - 凭据路径:RustDesk 无人值守凭据仅存在目标端和授权客户端;不得进入仓库、Console、Worker 或模型。
- 生命周期:安装、验证、升级和卸载均由用户明确操作;连接失败保留诊断证据,修复后重测;不自动删除用户数据。
- 验收证据:连接路径、权限、ACL、分辨率/刷新率、剪贴板、重启恢复和备用 VNC 入口的真实结果。
实施步骤
- 在 Mac Mini 确认 macOS 版本、当前用户、局域网地址、Tailnet 地址和物理显示器状态。
- 在 Mac Mini 安装 RustDesk,配置无人值守访问和最小 macOS 权限;记录版本和权限状态。
- 在 home 安装 RustDesk,先配置局域网地址,再登记
100.64.0.14作为 Tailnet 备用地址。 - 将远程窗口移动到 Windows 竖屏显示器,确认全屏、缩放和鼠标边缘行为。
- 执行局域网、Tailnet、重连、重启、文字、文件、图片剪贴板和 2K/60 Hz 验收。
- 若 RustDesk 关键能力不满足,使用 macOS 屏幕共享和 VNC 客户端完成备用入口验证,并记录差异。
- 更新正式文档和 Console 文档快捷入口,运行文档构建、链接和仓库检查。
发布批次与阶段门
- 批次一:RC-1 文档与契约。退出条件是计划、索引和导航一致,未改变运行环境。
- 批次二:RC-2 至 RC-3 客户端准备。退出条件是两端安装、权限和地址记录完成。
- 批次三:RC-4 至 RC-5 真实验收。退出条件是所有必需验收通过,或逐项记录真实阻塞和回退路径。
- 批次四:RC-6 文档发布。退出条件是文档站构建成功、Console 入口可达、GitHub Actions 结果可核验。
- 阶段出口:局域网优先、Tailnet 兜底、随连随显、显示器布局、剪贴板、画质和重启恢复均有真实证据;否则计划保持进行中。
验收与发布
- 代码、文档和运行态检查:运行仓库基础检查、计划状态检查、Markdown/MkDocs 构建和 Console 文档契约测试。
- 底座接入的真实证据:本阶段不接入 Nomad/Runtime;记录局域网与 Tailnet 的实际远控客户端路径和 ACL 结果。
- 回滚和清理:卸载 RustDesk 或撤销 macOS 权限后,SSH 和 macOS 屏幕共享仍可维护;清理测试截图、日志和临时样本,不清理用户文件或系统恢复入口。