Skip to content

Workspace backend

每个 Memoh 机器人都在一个 workspace 里工作。workspace 可以是隔离容器,也可以是在 Desktop/local 场景下明确受信任的本机目录。Backend 决定 workspace 跑在哪里,以及隔离、网络、快照和 display 能力是否可用。

容器后端

容器 workspace 在 config.toml 里配置:

toml
[container]
backend = "containerd" # containerd、docker 或 apple
Backend适合说明
containerdDocker Compose Server Deploy、Linux 服务器、开发环境官方 server 镜像默认用它。支持 CNI 网络、快照、CDI 设备、provider sidecar,本地 workspace 功能最完整。
dockerMemoh 直接跑在宿主机,宿主机有 Docker Engine走宿主机 Docker API。container.runtime_dir 这类 bind mount 源路径必须在 Docker 宿主机上真实存在。
applemacOS 本地测试通过 socktainer 和 Apple Containerization。provider sidecar 不支持。

一键 Docker Compose Server Deploy 固定使用 containerd。这是有意的:server 镜像会启动内置 containerd,并挂好机器人 workspace 需要的 runtime 文件。dockerapple 更适合你能控制宿主机 runtime 路径的手动部署。

Trusted local workspace

Desktop 和本地开发可以在容器后端之外启用 trusted local workspace:

toml
[local]
enabled = true

Trusted local workspace 直接用 server 进程权限在宿主机上运行。它适合个人桌面工作流和本地开发,但没有容器隔离。不要在不受信任的 server 部署里打开 local workspace。

当机器人使用 local workspace 时,依赖容器桌面或容器 display session 的界面能力可能会隐藏或不可用。

containerd

toml
[container]
backend = "containerd"
default_image = "debian:bookworm-slim"
image_pull_policy = "if_not_present"
snapshotter = "overlayfs"
data_root = "/opt/memoh/data"
runtime_dir = "/opt/memoh/runtime"
cni_bin_dir = "/opt/cni/bin"
cni_conf_dir = "/etc/cni/net.d"

[containerd]
socket_path = "/run/containerd/containerd.sock"
namespace = "default"

官方 Docker Compose 栈和直接连接 containerd 的 Linux 主机都用它。

Docker

toml
[container]
backend = "docker"
default_image = "debian:bookworm-slim"
runtime_dir = "/opt/memoh/runtime"
data_root = "/opt/memoh/data"

[docker]
# 留空时使用 Docker 标准环境发现:DOCKER_HOST、DOCKER_TLS_VERIFY、
# DOCKER_CERT_PATH 或平台默认 socket。
host = ""

Docker backend 通过标准 Docker 环境连接 Docker Engine。它更适合 Memoh 服务直接跑在宿主机上的部署,或者你能保证 Docker bind mount 的源路径就是宿主机真实路径的环境。

不要把官方 Docker Compose 安装里的 containerd 直接改成 docker,除非你同时处理好 Docker socket 和 runtime_dir 的宿主机路径。否则 workspace 容器可能建出来,但拿不到 bridge runtime 文件。

Apple

toml
[container]
backend = "apple"

[apple]
socket_path = ""
binary_path = ""

Apple backend 用于通过 socktainer 和 Apple Containerization 做 macOS 本地测试。它仍是实验性能力,不支持 provider sidecar。

Display、Browser Use 与 Computer Use

容器 workspace 可以提供 display runtime:Xvnc/RFB 作为 workspace 桌面显示与输入基础,有头 Chrome/Chromium 提供 CDP,网页端 Display pane 通过 WebRTC 打开会话。

当网站需要真实图形浏览器时,用这条路径。Headless Playwright 仍然可以作为普通 workspace 命令运行,但 Browser Use 和 Computer Use 面向的是有头 workspace 桌面。

Local workspace 不提供同样的容器桌面隔离。工具层面的区别见 Browser / Computer Use

网络和 overlay

机器人网络有两层:

  • runtime network:把 workspace 接到基础容器或 Pod 网络。
  • overlay provider:如 Tailscale、NetBird,可给单个机器人附加私有网络。

不同后端能力不同:

BackendRuntime networkOverlay sidecarCDI 设备容器 display
containerdCNI支持支持支持
docker加入 Docker 容器网络受 Docker runtime 能力限制不支持runtime 文件和镜像组件齐全时支持
apple基础本地 runtime不支持不支持有限
local宿主机网络不支持宿主机级别无容器桌面

Overlay provider 在机器人界面里配置,不在全局 TOML 里配。全局 backend 仍然重要,因为它决定能跑哪类 overlay driver。

Published under AGPLv3