GhostVM:给 AI Agent 一个完整的 Mac,而不是容器!

1127 字
6 分钟
GhostVM:给 AI Agent 一个完整的 Mac,而不是容器!

上周跑一个 agent 项目,在容器里踩了三个坑:剪贴板不通、端口映射混乱、GUI 测试直接报废。折腾到凌晨两点才搞明白—— 容器隔离不了系统级行为

第二天朋友扔给我一个工具:GhostVM。

Your agents need more than a container. Give them a Mac.

用了三天,写了篇完整的工具介绍和配置指南。

它是什么#

GhostVM 是一个 macOS 虚拟机管理工具,基于 Apple Virtualization.framework,在 Apple Silicon 上跑 macOS 虚拟机。

关键区别: 近原生性能,零仿真

每个虚拟机就是一个 .GhostVM 文件夹,自包含,拷走就能用。APFS 写时复制,克隆是秒级的。

项目地址:github.com/groundwater/GhostVM

官网地址:ghostvm.org

GhostVM 和 UTM、VirtualBuddy 同源(都基于同一个框架),但定位完全不同:

工具定位适合场景
GhostVM隔离工作区,CLI 强开发者、多 agent 隔离
VirtualBuddymacOS guest 优化,简单快速测试 macOS 版本
UTM通用虚拟机,支持 QEMU需要跑 Linux/Windows

如果你只需要跑 macOS,三者性能几乎没差别——取决于你分了多少 CPU 和内存。

系统要求#

项目要求
CPUApple Silicon(M1 或更新)
系统macOS 15 Sequoia 或更新

内存占用说明 :GhostVM 的内存分配是硬性的, 给多少就占用多少 ,不会被动态压缩或与主机共享。规划时要留足主机余量。

没有 Intel 支持,也没有老版本 macOS 支持。这限制了通用性,但换来了性能和简洁。

下载安装#

GhostVM 提供两种安装方式:

方式一:下载 DMG(推荐)

直接去 GitHub Releases 下载最新的 DMG 文件,双击安装即可。二进制免费开放,无功能限制。

安装包包含 GhostVM.app 和 vmctl 命令行工具。

方式二:源码编译

需要 Xcode 15+ 和 XcodeGen

Terminal window
brew install xcodegen
git clone https://github.com/groundwater/GhostVM
cd GhostVM
make app # 编译 GhostVM.app
make cli # 编译 vmctl 命令行工具

Makefile 还提供 make run(编译后连接终端运行)、make dist(打包 DMG)、make test(运行单元测试)等目标。

CLI 怎么用#

GhostVM 附带一个 vmctl 命令行工具,覆盖全部 GUI 功能。

快速上手

Terminal window
# 初始化一个虚拟机,分配 6 核 16G
vmctl init ~/VMs/dev.GhostVM --cpus 6 --memory 16
# 安装 macOS(几分钟)
vmctl install ~/VMs/dev.GhostVM
# 启动
vmctl start ~/VMs/dev.GhostVM

快照和克隆

Terminal window
# 创建快照(改东西前备份)
vmctl snapshot ~/VMs/dev.GhostVM create clean-install
# 克隆(APFS 写时复制,几乎不占额外空间)
vmctl clone ~/VMs/dev.GhostVM ~/VMs/dev-copy.GhostVM

停止和挂起

Terminal window
# 停止
vmctl stop ~/VMs/dev.GhostVM
# 挂起(保存状态到磁盘,下次直接恢复)
vmctl suspend ~/VMs/dev.GhostVM

远程操作 (在 agent 场景下很有用):

Terminal window
# 在虚拟机里执行命令
vmctl remote --name dev exec "npm run build"
# 读写虚拟机剪贴板
vmctl remote --name dev clipboard get
vmctl remote --name dev clipboard set "要写入的内容"
# 列出虚拟机里运行的应用
vmctl remote --name dev apps

网络支持 NAT(默认)和桥接模式,每个虚拟机有独立的网络栈。

开箱即用的隔离#

GhostVM 的隔离默认开启,不需要额外配置。几个细节:

剪贴板同步 有明确权限提示。虚拟机和主机之间的复制粘贴需要确认,不会偷偷传数据。

端口转发 自动检测监听端口,显示进程名,直接在工具栏管理。不用自己写端口映射规则。

文件拖拽 传进去的文件默认隔离。不会污染主机的文件系统。

每个虚拟机有自己的 Dock 图标和 App Switcher 入口。你可以:

  • 克隆某个 App 的图标,让虚拟机看起来像原生应用
  • 叠两个图标,表示里面跑着什么
  • 用预设图标或自定义上传

每个虚拟机跑在独立窗口里,和切换原生 App 没区别。

适合谁#

  • 跑 AI agent 需要完整 macOS 环境的
  • 多项目隔离,不想互相污染的
  • 需要测试不同 macOS 版本兼容性的
  • 想要轻量级虚拟机方案的开发者

UI 确实朴素#

说句实话,GhostVM 的界面很简陋。没有花哨的仪表盘,没有管理面板,就是一个窗口加菜单栏。

但这不是缺点。CLI 足够强,隔离做得到位,性能没问题。

如果你需要漂亮的 UI 或者跨平台虚拟机,UTM 是更好的选择。

但如果你只需要在 Mac 上跑几个隔离的 macOS 工作区,给 agent 一个完整的系统而不是容器,GhostVM 目前是最佳方案。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
GhostVM:给 AI Agent 一个完整的 Mac,而不是容器!
https://blog.moewah.com/posts/ghostvm-macos-vm-ai-agents/
作者
MoeWah
发布于
2026-04-14
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
Ubuntu/Debian 卸载命令全解:apt remove/purge/autoremove 的区别
虚拟化与运维 apt remove、apt purge、apt autoremove 三个卸载命令的区别详解:remove 保留配置、purge 清除配置、autoremove 清理孤儿依赖,附 --simulate 预览技巧与官方文档出处,Ubuntu/Debian 用户避坑指南。
2
Docker Volume 与 Bind Mount 怎么选?区别、性能对比、双向迁移实战
虚拟化与运维 Docker Volume 和 Bind Mount 有什么区别?性能差距大吗?一文讲透数据卷与绑定挂载的管理边界、适用场景与迁移便捷性,附双向转换完整命令:卷迁宿主机目录、目录转数据卷,全部实测可抄。数据库用卷、开发热重载用绑定挂载,自部署选型不再纠结。
3
SSH 终端下 nano/vim 编辑器卡死问题:terminfo 不兼容排查修复
虚拟化与运维 SSH 连接服务器后 nano/vim 打开即卡死、乱码,方向键退格失效,但 ls/cat 正常?根因是 TERM 环境变量与服务器 terminfo 数据库不兼容。本文给出 4 步排查法、TERM=xterm 修复命令与 256 色保留方案。
4
DeepSeek-V4-Flash 看不了图片?用 pi-image-bridge 给它装一双眼睛
AI实验室 DeepSeek-V4-Flash-0731 任务通过率高、价格便宜,但模型没有视觉能力。装 pi 扩展 pi-image-bridge,配置视觉模型当副驾,截图报错、设计稿、表格都能看懂。安装一条命令,配置两个字段即可。
5
不是 VNC!Obsidian 网页版来了:Docker 自托管 Ignis 部署教程
私有化部署 Obsidian 没有官方网页版,Ignis 用兼容层让它在浏览器原生运行。本文用 Docker Compose 三分钟自托管 Ignis:Tailscale 内网访问、Caddy 公网部署、认证与 HTTPS、环境变量调优,数据全在自己手里。
随机文章 随机推荐

评论区

Profile Image of the Author

关于作者

MoeWah

我是 MoeWah,喵斯基部落的作者。一个折腾自托管、群晖 NAS、虚拟化运维与 SEO/GEO 实践的独立博主,10 年以上的企业站运维与SEO优化经验,文章来自真实部署与踩坑记录。为自己记录,为同路人分享。
专题
分类
站点统计
文章
205
分类
9
标签
449
总字数
413,413
运行时长
0
最后活动
0 天前

目录