沙箱容器
在企业管理端的设置 → 沙箱容器中,可以查看脚本任务和插件 Runtime 的运行状态。标准 Docker Compose 部署通过 ./movo up 启动沙箱服务,要求 Docker Engine 26 或更新版本。沙箱由服务端管理,普通用户无需选择容器或配置运行环境。
哪些操作会启动容器
| 操作 | 运行位置 | 容器生命周期 |
|---|---|---|
| 普通对话、搜索、知识检索等不执行代码的工具 | 共享 DSH Runtime 或对应服务 | 不为该操作创建脚本容器 |
| Skill 中的脚本、对话里的“代码执行”工具 | 独立的脚本任务容器 | 同一次助手回复中的多次代码调用复用一个容器;任务结束后归档并释放 |
| 需要 DSH Host 服务的 DSH 插件 | 独立的插件 Runtime 容器 | 按组织与已发布的 Runtime 配置复用;空闲后回收 |
这里的“任务”指一次助手回复,不是整个会话。不同任务的脚本容器拥有不同的可写工作目录;同一任务的后续代码调用可以读取前一步写下的中间文件。只有实际调用代码能力时才启动脚本容器,安装或阅读 Skill 不会为每位用户常驻一个脚本容器。
插件 Runtime 的隔离粒度与脚本任务不同:它按组织和配置版本建立,并非每位用户或每次调用各启动一个容器。用户会话仍由 DSH 分开管理。管理员不应把插件 Runtime 理解为“每人一台独占容器”,也不应让插件依赖跨会话共享的可写全局状态。
容器隔离只决定插件在哪里运行,不代表 MOVO 支持插件的全部功能。依赖 DSH 自带界面的插件可能无法在 MOVO 中使用该界面;安装和兼容性判断见企业插件管理。
Skill 安装与环境准备
包含脚本的 Skill 可以在包内声明 requirements.txt、package.json(必须同时提供 package-lock.json)或 apt-packages.txt。MOVO 在安装后准备所需依赖镜像,并按 Skill 包内容和基础镜像复用。新安装的 Skill 在环境准备中或准备失败时不能启用;失败可在界面重试。没有这些依赖清单的 Skill 不需要专门准备镜像。
准备依赖可能需要数分钟,取决于包大小和下载速度。使用 ./movo --mirror cn up 时,后续依赖准备优先采用国内源;默认优先采用官方源。下载连接或超时故障会尝试备用源,包冲突或安装脚本失败不会靠切换源解决。普通任务复用已准备好的镜像,不会每次重新安装依赖。
执行、联网和产物
脚本容器有独立工作目录、只读根文件系统及 CPU、内存、进程数限制。Skill 包只读挂载;脚本可以在任务工作目录中创建文件、运行代码,并将需要交付的文件放到指定输出目录。容器通过受控代理访问公网;代理拒绝本地和私有网络地址。程序仍需正确使用代理环境变量,访问公网不等于允许访问企业内网。
一次任务中的每次代码调用都会记录调用信息、标准输出、错误输出和工作目录文件快照。任务结束时,MOVO 将工作目录与记录归档到对象存储,再释放容器。归档为后续审计保留依据;当前管理端的“沙箱容器”页面只展示运行状态和统计,不提供逐次执行记录的浏览界面。对用户交付的文件仍通过对话中的文件卡片获取。
浏览器 Agent 与桌面 Code 会话使用桌面端能力,不属于此处的服务端脚本容器。
管理员查看与调整
“沙箱容器”页面显示服务是否可用、正在执行的脚本任务、排队任务、脚本并发上限、运行中的插件 Runtime,以及插件空闲回收时间。页面可修改最多排队任务数;脚本并发上限和插件空闲时间由部署参数控制,修改后需重启相关服务。
默认脚本并发上限为 2,最多排队 8 个任务,插件空闲回收时间为 900 秒。排队任务等待执行名额最多约 20 秒;高峰期应结合实际负载调整并发和排队上限。插件 Runtime 在空闲回收后再次使用需要重新启动,首次调用可能比复用时慢。
如果页面显示“未启用”或“不可用”,先检查 Docker Engine 版本、sandbox-manager 与 sandbox-egress 服务状态及其日志;不要通过禁用隔离来绕过错误。自定义部署应确保沙箱管理服务和代理均已启动,且不要将 Docker socket 挂载给脚本或插件容器。
