Mudroom

在 Linux 微虚拟机里跑编码智能体,改动像 Pull Request 一样审阅后再落地到项目。

Star 数
★ 11
最近更新
今天
License
MIT
主语言
Swift

30 秒速览

运行形态
桌面应用命令行工具
可在哪里用
兼容但需适配ChatGPT · Codex · Claude Code · Claude.ai · OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
Apple 芯片 Mac 且 macOS 26+(应用与 `apple` 后端)Apple 的 `container` CLI 1.5+(apple 后端)Docker 或 Podman(非 Apple 芯片及 Linux/Windows 场景)从源码构建需要 Xcode 26+ / Swift 6.2+Agent 登录或模型提供商 API 密钥Shell / 命令行网络访问本地文件系统
典型场景
在 Apple 芯片 Mac 上想关掉权限确认、放心让 Claude Code 或 Codex 大改代码的开发者
不适合
  • 需要完全隔离主机本地服务(如 AirPlay、开发服务器)的团队
  • 以 Linux 为主要桌面、又需要图形化审阅界面的用户
  • 要求稳定 API、不愿承受早期原型破坏性变更的团队

这个 Agent 能做什么,适合哪些场景?

Mudroom 是一个运行编码智能体的沙箱工具:它把你的项目以写时复制克隆(APFS clone)复制一份,在 Linux 微虚拟机或 Docker/Podman 容器中运行 Claude Code、Codex、Gemini CLI、opencode、Aider 或任意命令,真实目录从不会被挂载。网络默认处于 Locked 模式,VM 只连到本机代理,代理按允许列表放行主机并把每条连接写入 network.jsonl。会话结束后,你在 macOS 应用或终端里查看 diff,按文件、按 hunk 选择应用,每次应用都可一步撤销。它由 Swift 编写:MudroomCore(无 UI)、MudroomApp(SwiftUI,macOS 26+)和 mudroom 命令行三部分组成,macOS 用 Apple 的 container 后端,其他平台用 Docker 或 Podman。项目自述为早期原型,接口与行为可能变动。

mudroom new/run 先把项目克隆到 sessions/<id>/base 和 work,后端选择 apple(Apple container,每个会话一个轻量 VM)、docker 或 podman,在沙箱里把 work/ 挂到 /workspace 并启动智能体;mudroom start 期间运行本机 HTTP 代理,VM 通过 HTTP_PROXY/HTTPS_PROXY 走允许列表,代理执行 CONNECT、拒绝内网/回环解析结果、限制请求头与并发,并把连接记录写入 network.jsonl。智能体运行时每 5 分钟对 work/ 做一次快照(snapshots/<n>-<time>),可用 mudroom diff --from/--to 查看任意时间点之后的变更。mudroom diff 以内容哈希而非时间戳比较 base 与 work,输出 M/A/D/P/L/T 标记、二进制提示、.git 折叠行以及 ?、!、~ 风险标记;mudroom hunks 列出编号 hunk,mudroom apply last --all、按路径或 --hunks 1,3 应用,应用前核对项目是否等于 base、写临时文件再改名、用 rollback 包记录并在 mudroom undo 中恢复。凭据通过名称以 --env NAME 传入,Claude 令牌存 Keychain(Linux 为 0600 文件,Windows 为 Credential Manager)。

  1. 在 Apple 芯片 Mac 上想关掉权限确认、放心让 Claude Code 或 Codex 大改代码的开发者
  2. 需要在应用前逐 hunk 检查、还能一键回滚改动的代码审阅流程
  3. 担心智能体联网上传代码或访问内网,希望按主机白名单限制出口的团队
  4. 在 Linux/Windows 上用 Docker 或 Podman 给编码智能体加隔离层,并用 CLI 完成 diff 与 apply 的工程师
  5. 项目不是 git 仓库或包含大量未跟踪/忽略文件,无法用 git 审阅的场合
  6. 想让本地 Ollama / LM Studio 模型在受限网络下被智能体调用的用户

如何安装或部署这个 Agent?

Apple 芯片 Mac(macOS 26+)可用安装脚本或 Homebrew,二者都会处理隔离标记;脚本不需要 sudo:

curl -fsSL https://raw.githubusercontent.com/Kernel-Hunter/mudroom/main/install.sh | sh
brew install --cask kernel-hunter/tap/mudroom

Windows 可用 Scoop 或 release 压缩包:

scoop bucket add kernel-hunter https://github.com/Kernel-Hunter/scoop-bucket
scoop install mudroom

从源码构建(需 Xcode 26+ / Swift 6.2+):

git clone https://github.com/Kernel-Hunter/mudroom
cd mudroom
scripts/build-app.sh
open build/Mudroom.app

只装命令行(macOS 或 Linux):

swift build -c release
cp .build/release/mudroom /usr/local/bin/

安装后必须完成运行时准备:安装并启动 VM 运行时、构建一次 agent 镜像(约 1.5 GB)、检查 VM 网络并登录智能体。

如何使用这个 Agent?

首次使用运行 Setup,或无人值守执行:

mudroom setup
mudroom setup --yes --no-sign-in

登录智能体(例如 Claude 账号)并构建镜像:

mudroom agent login claude
mudroom image build --backend docker
mudroom network check --backend docker

启动一个会话并在结束后审阅与应用:

mudroom run ~/code/myapp -- claude --dangerously-skip-permissions
mudroom diff last
mudroom hunks last src/parser.swift
mudroom apply last src/parser.swift --hunks 1,3
mudroom undo last

配置网络允许列表与密钥:

mudroom network allow registry.npmjs.org '*.githubusercontent.com'
mudroom network mode offline
mudroom keys set OPENROUTER_API_KEY

在 macOS 应用中则是:New Session(⌘N)选目录、智能体和网络模式 → 智能体在 Terminal.app 中运行 → 在 Review 的 Files/Network/Timeline 标签中查看 → Apply Selected(⌘↩)、Apply All(⇧⌘↩)或 Undo(⌥⌘Z)。

这个 Agent 有哪些优点和局限?

优点
  • 真实项目目录从不挂载:会话在写时复制克隆上工作,只有你 apply 时改动才进入原目录
  • 审阅粒度细:按文件、按 hunk 应用,每次 apply 都写入 rollback 包,可一步 undo,并对你期间自己改过的文件报冲突不覆盖
  • Locked 网络通过本机代理按主机白名单放行,network check 给出可复核的隔离结果,包括忽略代理的裸连接、DNS 与 UDP
  • 同时提供 SwiftUI 桌面应用和 CLI,macOS 用 Apple container 每会话一个 VM,其他平台可切 Docker/Podman
  • 覆盖未跟踪、被忽略和非 git 项目,不依赖 git 审阅;?、!、~ 标记未读条目、会由宿主执行的敏感文件并默认不选中
局限
  • 项目自述为 early prototype,预期会有粗糙之处和破坏性变更
  • macOS 应用要求 macOS 26+ 与 Apple 芯片;Linux 和 Windows 只有 CLI,没有图形化审阅界面
  • apple 后端下 VM 仍可通过 host-only 网关访问 Mac 上监听所有接口的服务(如 7000 端口),目前无法用包过滤封闭
  • 会话运行期间令牌和密钥以明文留在运行时的配置或 inspect 输出中;Docker 后端在 Linux 与宿主共享内核,隔离弱于 VM
  • Locked 模式依赖代理变量,忽略代理或开原始套接字的工具会失败;允许主机即完全放行,不检查 TLS 内容
  • Windows 上没有 Unix 权限位,NTFS 上克隆是完整拷贝,Claude 通过宿主 claude CLI 登录尚未实现

这个 Agent 与同类方案有什么区别?

README 中与 Docker Sandboxes(--clone 模式)、Apple containerization 示例 sandboxy、ArcBox 以及 Claude Code 自身的 sandboxing 做了对比:Docker Sandboxes 默认把目录以读写方式挂载、靠 git 审查;sandboxy 直接共享目录立即写入;ArcBox 不挂载任何东西但也没有审阅界面;Claude Code sandboxing 在真实目录上用操作系统级限制而非 VM。Mudroom 的差异点在于 VM/clone 隔离加上按文件与 hunk 的应用与撤销。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Mudroom 当前 78 · 表现良好 桌面应用免费 + 模型费 ★ 11 今天 Swift ChatGPT · Codex · Claude Code · Claude.ai · OpenAI API · Claude API
ABCA 74 · 存在缺口 自托管服务免费 + 模型费 ★ 161 3 天前 TypeScript Claude Code
Concord MCP 67 · 存在缺口 — ★ 558 今天 TypeScript Codex · Claude Code
Pi Subagent 65 · 存在缺口 Agent 插件 / 技能免费 + 模型费 ★ 82 10 天前 JavaScript —

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
表现良好
78/ 100 五分制 3.9 / 5
信任安全 22/29
可靠稳定 9/14
适用触发 16/18
规范维护 14/18
有效结果 12/13
证据核验 5/8
查看各维度的扣分理由
信任安全22 / 29 · 3.8/5

README 明确说明沙箱设计:真实目录从不挂载,使用写时复制克隆,默认 Locked 模式仅允许白名单主机,网络日志逐条记录;应用前需人工审阅 diff 并支持部分应用与撤销,用户确认与回滚做得充分。但敏感数据处理存在自述弱点:Apple container 以 0644 明文写入含环境变量的 config.json,Docker/Podman 可通过 inspect 读取密钥,且 opencode/Aider/自定义命令会拿到全部 API key,属于已知暴露面,故扣分。依赖安全方面仅见 CI 使用 actions/checkout@v7 等,未见依赖锁定或漏洞扫描证据,给 1。外部效应方面 Open 模式完全不过滤不记录,属用户可选但默认安全,给 2。来源归属仅 README 与 LICENSE 署名,无发布者验证,给 1。

可靠稳定9 / 14 · 3.2/5

README 与 CI 描述一致(macOS/Linux/Windows 构建与测试、Windows 沙箱端到端检查),自洽性尚可;但状态自述为 early prototype,且 README 中版本号示例不一致(0.1.1 与 0.2.1 混用),扣分。依赖可用性依赖 Apple container 1.5+、Swift 6.2、Docker/Podman 等外部运行时,文档说明清楚但未提供离线或降级路径,给 2。失败信息方面 README 提到 Aider 缺 key 立即报错、Windows 防火墙缺规则时给出 New-NetFirewallRule 提示,有具体证据,但整体错误处理未系统化,给 2。

适用触发16 / 18 · 4.4/5

受众与场景覆盖 macOS 应用、Linux/Windows CLI、多 agent(Claude Code、Codex、Gemini、opencode、Aider、自定义命令),场景描述充分。能力边界明确列出平台矩阵、后端差异、Open/Offline 模式限制。触发精度方面 CLI 子命令众多但缺少对参数冲突或误用的系统说明,给 2。环境适配对 Apple silicon、Intel、Linux、Windows 分别给出安装与构建路径,较完整。

规范维护14 / 18 · 3.9/5

信息架构清晰,目录与章节完整;安装说明覆盖 curl、Homebrew、Scoop、源码构建,非常详尽;示例与截图丰富。命名稳定性因 early prototype 与 breaking changes 声明而扣分。已知限制章节存在但内容被截断,仅见部分,给 2。许可证为 MIT 且文件完整。版本化与变更日志方面仅见 tag 发布流程,无 CHANGELOG,给 1。维护责任方面发布者未经验证,仅 LICENSE 署名 Karim Masmoudi,给 1。

有效结果12 / 13 · 4.6/5

输出可用性高:diff 审阅、按文件/按 hunk 应用、撤销、冲突检测、网络日志,直接服务于“审阅后应用”的核心工作流。边际价值明显:为编码 agent 提供 VM 隔离与网络白名单,填补权限提示关闭后的安全缺口。成本收益方面需构建约 1.5GB 镜像、依赖 Apple container 或 Docker,且仅 macOS 26+ 有完整应用,门槛较高,给 2。

证据核验5 / 8 · 3.1/5

README 的多数声明可在 CI 工作流中找到对应(构建、测试、Windows 沙箱检查、发布校验和),有一定可追溯性;但关键安全声明(如代理仅放行白名单、密钥不经命令行)未在可见文件中给出测试证据,给 2。跨源佐证限于 README 与 CI 两个文件,LICENSE 仅佐证许可,给 2。事实与推断分离方面 README 明确标注 early prototype 并区分已实现与限制,但部分表述(如“你的真实文件夹从不挂载”)缺少代码级佐证,给 2。

风险与缓解建议
  • 发布者身份未经验证,安装脚本通过 curl | sh 从 main 分支执行,存在供应链风险,建议固定版本并核对 SHA-256。
  • Apple container 以 0644 明文写入含环境变量的 config.json,Docker/Podman 可通过 inspect 读取密钥;opencode/Aider/自定义命令会获得全部 API key,需谨慎使用。
  • Open 网络模式完全不过滤、不记录,可能造成数据外泄,应优先使用默认 Locked 模式。
  • 项目自述为 early prototype,存在破坏性变更,且 README 中版本号示例不一致。
  • 完整应用仅支持 macOS 26+ Apple silicon,其他平台为 CLI,需 Docker/Podman 及约 1.5GB 镜像构建。
证据充分度:低 评估于 2026年10月20日 审查版本 c9a056360395
查看完整评分方法 →

常见问题

它自己收费吗?
不收,代码以 MIT 许可发布。费用来自你选择的智能体:Claude、ChatGPT 或 Gemini 的订阅/登录,或你配置的提供商 API 密钥;本地 Ollama、LM Studio 模型则不需要额外费用(需开启 Local models 且处于 locked 模式)。
智能体的改动什么时候会进到我的项目?
只有你执行 apply(应用全部、部分路径或部分 hunk)时才写入。每次 apply 前会校验项目是否仍等于会话开始时的 base,你自己改过的文件会被标记为冲突并跳过;apply 会先写 rollback 包,mudroom undo 可撤销,且智能体仍在运行时 apply 和 undo 会拒绝执行。
网络隔离到底有多强?
Locked 模式下沙箱只有到本机代理的一条路,代理按主机白名单放行并记录连接;mudroom network check 会实测 DNS、IPv4、IPv6、UDP 和绕过代理的裸连接。README 同时明确:apple 后端下 VM 仍能访问 Mac 上监听所有接口的服务,Docker 后端在 Linux 上共享宿主内核,因此并非与宿主完全隔离。
除了 macOS 还能用吗?
Linux x86_64/arm64 与 Windows 10/11 只能构建或下载 CLI,需要 Docker 或 Podman;没有图形审阅应用,用 mudroom review、diff、hunks、apply --hunks 完成审阅与应用。Windows 还存在无权限位、NTFS 全量拷贝、宿主 Claude 登录缺失等差异。
支持哪些智能体?
内置 Claude Code、Codex、Gemini CLI、opencode、Aider 的登录/导入方式和默认允许主机,也支持任意自定义命令;每个智能体有独立配置目录,会话只拿到副本,结束时仅把登录信息回写。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents