Agent Sandbox 平台分析报告
12 Jan 2026
目录
平台特性对比表
| 特性 | Genspark | OpenAI Chat | OpenAI Agent | AnyGen | Manus |
|---|---|---|---|---|---|
| 基础平台 | E2B | 自定义容器 | Kata容器 | E2B | E2B + 自定义 |
| 操作系统 | Debian 13 (trixie) | Debian 12 (bookworm) | Debian 12 (bookworm) | Ubuntu 24.04.3 | Ubuntu 22.04.5 |
| 内核版本 | 6.1.158 | 4.4.0 | 6.12.13 | 6.1.158 | 6.1.102 |
| Init系统 | systemd | Supervisor | Supervisor | systemd | systemd |
| 用户 | user (1000:1000) | oai (1000:1000) | oai (1000:1000) | user (1001:1001) | ubuntu (1000:1000) |
| 容器化 | ✅ E2B容器 | ✅ Docker-like | ✅ Kata容器 | ✅ E2B容器 | ✅ E2B容器 |
| 网络IP | 169.254.0.21/30 | 172.30.0.35/16 | 172.19.0.4/16 + 172.31.1.67/28 | 169.254.0.21/30 | 169.254.0.21/30 |
| 网关 | 169.254.0.22 | 172.30.0.1 | 172.19.0.1 | 169.254.0.22 | 169.254.0.22 |
| Jupyter | ✅ 端口8888 | ✅ 端口8080 | ✅ 端口8888 | ❌ | ❌ |
| Chrome/Chromium | ❌ | ❌ (禁用) | ✅ 可能启用 | ✅ 端口9222 | ✅ 端口9222 |
| VNC | ❌ | ❌ (禁用) | ✅ 端口5901/NEKO | ✅ 端口5900 | ✅ 端口5900 |
| Code Server | ❌ | ❌ | ❌ | ❌ | ✅ 端口8329 |
| 终端服务器 | ❌ | ✅ | ✅ | ❌ | ❌ |
| 存储方案 | S3FS + AIDriveFUSE | Overlay | KataShared (virtiofs) | SharedVFS | 本地ext4 |
| S3FS挂载 | ✅ 多个挂载点 | ❌ | ❌ | ❌ | ❌ |
| 包管理器 | dpkg/apt/pip/npm | dpkg/apt/pip/npm | dpkg/apt/pip/npm/nvm | dpkg/apt/pip/npm | dpkg/apt/pip/npm/pnpm/uv |
| 端口转发 | ❌ | ❌ | ❌ | ✅ socat | ✅ socat |
| 进程管理 | envd | supervisord | supervisord | envd | supervisord + envd |
| 安全限制 | 中等 | 严格 | 严格 | 中等 | 中等 |
| sudo限制 | 部分 | 完全禁用 | 完全禁用 | 部分 | 部分 |
| 特殊服务 | - | Nebula VPN | NEKO/PDF Reader/rsync | browser_use | neko/playwright |
| 安全评分 | 6.5/10 | 7.0/10 | 7.5/10 | 7.0/10 | 5.5/10 |
| 综合评分 | 7.25/10 | 6.75/10 | 8.25/10 | 7.75/10 | 8.25/10 |
Genspark (E2B基础)
环境标识
- E2B标识:
E2B_SANDBOX=true,E2B_SANDBOX_ID,E2B_TEMPLATE_ID - 平台标识:
GENSPARK_BASE_URL,GENSPARK_ROUTE_IDENTIFIER,GENSPARK_TOKEN - 用户:
user(uid=1000, gid=1000) - HOME:
/home/user
系统环境
- OS: Debian GNU/Linux 13 (trixie)
- Kernel: Linux 6.1.158-x86_64
- Init系统: systemd (
/sbin/init) - CGroup:
0::/system.slice/envd.service - 容器化: 是 (envd服务)
- Uptime: 37天10小时49分钟
核心服务
envd
- E2B平台的环境守护进程
- 管理容器生命周期
jupyter-server
- Jupyter服务器运行在端口8888
- 提供Notebook开发环境
- 使用uvicorn作为ASGI服务器
s3fs挂载
多个S3挂载点用于数据持久化:
/mnt/user-data/outputs- 输出数据/mnt/user-data/backups- 备份数据/mnt/user-data/uploads- 上传数据/mnt/knowledge- 知识库/mnt/skills- 技能数据
AIDriveFUSE
/mnt/aidrive- 自定义FUSE文件系统- 用于AI驱动的存储访问
网络配置
- IP地址:
169.254.0.21/30(eth0) - 网关:
169.254.0.22 - 监听端口:
127.0.0.1:8888(Jupyter)169.254.0.21:49999(未知服务)- 多个随机高端口
存储方案
- 根文件系统:
/dev/vdaext4 (26G总容量) - S3FS挂载: 显示64P (Pebibytes) 可用空间 (虚拟,实际由S3后端提供)
- NPM缓存:
/opt/npm-cache- Node.js包缓存目录
包管理器
dpkg- Debian包管理器apt- APT包管理器pip- Python包管理器npm- Node.js包管理器corepack- Node.js包管理器工具
安全特性
/proc/1/environ访问被拒绝 (权限控制)- systemd服务受限访问
crontab不可用- 部分sudo功能受限
安全风险评估
敏感信息暴露
- ⚠️ GENSPARK_TOKEN: 明文存储在环境变量中 (
<REDACTED>) - ⚠️ GENSPARK_ROUTE_IDENTIFIER: 包含JWT token,暴露在环境变量中
- ⚠️ E2B标识信息: E2B_SANDBOX_ID、E2B_TEMPLATE_ID暴露
安全措施
- ✅
/proc/1/environ访问被拒绝,防止环境变量泄露 - ✅ 非root用户运行服务
- ✅ 部分sudo功能受限
安全评分: 6.5/10
- 权限控制良好,但存在敏感信息明文存储问题
支持的特性
- Jupyter Notebook - 提供交互式Notebook开发环境,端口8888
- S3FS存储 - 多个S3挂载点用于数据持久化(outputs、backups、uploads、knowledge、skills)
- AIDriveFUSE - 自定义FUSE文件系统用于AI驱动的存储访问
- Python环境 - 完整的Python 3.12开发环境
- Node.js环境 - 支持Node.js和npm包管理
- 多内核支持 - IPython内核和IJS内核(JavaScript)
- 端口转发 - 通过socat实现端口转发功能
进程列表 (关键进程)
envd # E2B环境守护进程
jupyter-server # Jupyter服务器
uvicorn # ASGI服务器
ipykernel_launcher # IPython内核
s3fs # S3文件系统挂载 (多个实例)
OpenAI Chat (自定义容器 - Chat模式)
环境标识
- 用户:
oai(uid=1000, gid=1000, groups=1000,1001) - HOME:
/home/oai - 工作目录:
/home/oai/share - 挂载目录:
/mnt/data
系统环境
- OS: Debian GNU/Linux 12 (bookworm)
- Kernel: Linux 4.4.0 (较旧内核,可能是定制内核)
- Init系统: Supervisor (
/usr/bin/python3 /usr/bin/supervisord) - CGroup: Docker容器ID格式 (
pids:/84ccc21d86e9...) - 容器化: 是 (Docker-like, overlay文件系统)
- Uptime: 9分钟 (新启动的容器)
核心服务
supervisord
- 进程管理器,作为PID 1运行
- 管理所有子进程
jupyter_server
- Jupyter服务器 (使用uvicorn)
- API端口: 8080
- 提供Notebook API服务
terminal-server
- 终端服务器
- 提供远程终端访问能力
log_forwarder
- 日志转发服务
- 将容器日志转发到外部系统
功能开关 (环境变量)
CUA_DD_ENABLE_CHROME=false # Chrome禁用
CUA_DD_ENABLE_NOTEBOOK_SERVER=false # Notebook服务器禁用
CUA_DD_ENABLE_VNC=false # VNC禁用
CUA_DD_INIT_TERMINAL_SERVER=true # 终端服务器启用
CUA_DD_PYTHON_TOOL=true # Python工具启用
CUA_DD_ENABLE_APPLY_PATCH=true # 补丁应用启用
网络配置
- IP地址:
172.30.0.35/16(eth0) - 网关:
172.30.0.1 - 监听端口:
0.0.0.0:8080(Jupyter Server API)127.0.0.1:1384(未知服务)- 多个随机高端口
存储方案
- 根文件系统: overlay (8.0E虚拟大小,实际由宿主机提供)
- 9p文件系统:
/etc/hosts,/etc/hostname,/etc/resolv.conf(只读挂载) - cgroup挂载: 多个cgroup子系统
包管理器
dpkg,apt,pip,node,npm,corepack
安全特性
- sudo限制: “no new privileges” 标志设置,完全阻止sudo提权
- systemd不可用: 非systemd环境,使用supervisor
- netlink限制:
ss命令失败 (协议不支持,可能是内核限制) - supervisor权限: 用户无法查询supervisor状态 (权限控制)
- 进程隔离: 严格的进程隔离
安全风险评估
敏感信息暴露
- ⚠️ CAAS_ARTIFACTORY_READER_PASSWORD: 明文密码暴露 (
<REDACTED>) - ⚠️ NEKO_PASSWORD: 弱密码暴露 (
neko) - ⚠️ NEKO_PASSWORD_ADMIN: 弱密码暴露 (
admin) - ⚠️ 环境变量可访问:
/proc/1/environ可能可访问(进程以root运行)
安全措施
- ✅ sudo完全禁用 (“no new privileges”)
- ✅ 严格的进程隔离
- ✅ supervisor权限控制
- ⚠️ 进程以root用户运行(PID 1)
安全评分: 7.0/10
- 权限控制严格,但存在弱密码和可能的root进程风险
支持的特性
- Jupyter Server API - 提供Notebook API服务,端口8080
- 终端服务器 - 提供远程终端访问能力
- 日志转发 - log_forwarder服务将容器日志转发到外部系统
- Nebula VPN - VPN连接或网络隧道支持
- Python工具 - 完整的Python开发环境
- 包管理代理 - 通过内部Artifactory代理访问各种包仓库(npm、pip、maven等)
特殊配置
Nebula VPN
NEBULA_RUN=<value>
NEBULA_USER=<value>
NEBULA_VM_ID=<value>
- 可能用于VPN连接或网络隧道
Chrome配置 (虽然禁用)
CHROME_USER_DATA_DIR=/home/oai/.chromium
CHROMIUM_VERSION=133
- 配置存在但功能被禁用
VNC配置 (虽然禁用)
VNC_PORT=5901
NEKO_BIND=<value>
NEKO_PASSWORD=<value>
NEKO_PASSWORD_ADMIN=<value>
- Neko相关配置,但VNC被禁用
进程列表 (关键进程)
supervisord # 进程管理器 (PID 1)
log_forwarder # 日志转发
uvicorn # Jupyter服务器
terminal-server # 终端服务器
ipykernel_launcher # IPython内核
OpenAI Agent (Kata容器 - Agent模式)
环境标识
- 用户:
oai(uid=1000, gid=1000, groups=1000,1001) - HOME:
/home/oai - 工作目录:
/home/oai/share - 挂载目录:
/mnt/data - 共享目录:
/home/oai/share(通过rsync同步)
系统环境
- OS: Debian GNU/Linux 12 (bookworm)
- Kernel: Linux 6.12.13 (较新内核)
- Init系统: Supervisor (
/usr/bin/python3 /usr/bin/supervisord) - CGroup:
0::/(Kata容器) - 容器化: 是 (Kata Containers, virtiofs文件系统)
- Uptime: 1分钟 (新启动的容器)
核心服务
supervisord
- 进程管理器,作为PID 1运行
- 管理所有子进程
notebook_server (Jupyter)
- Jupyter Notebook服务器
- 端口: 8888
- 无token认证 (
--NotebookApp.token='') - 监听所有接口 (
--ip 0.0.0.0)
rsync_daemon
- rsync守护进程
- 端口: 873
- 用于文件同步和共享
sync_share
- 文件同步服务
- 使用inotify监控文件变化
- 同步
/home/oai/share/目录
log_forwarder
- 日志转发服务
- 将容器日志转发到外部系统
功能开关 (环境变量)
CUA_DD_ENABLE_CHROME= # Chrome启用 (空值表示启用)
CUA_DD_ENABLE_NOTEBOOK_SERVER=true # Notebook服务器启用
CUA_DD_TERMINAL_MODE=true # 终端模式启用
CUA_DD_PDF_READER_SERVICE=true # PDF阅读器服务启用
CUA_DD_ENABLE_APPLY_PATCH=true # 补丁应用启用
网络配置
- IP地址:
172.19.0.4/16(eth0) - 主网络接口172.31.1.67/28(eth1) - 辅助网络接口
- 网关:
172.19.0.1(eth0) - 监听端口:
0.0.0.0:8888(Jupyter Notebook)0.0.0.0:873(rsync)127.0.0.1:323(chronyd)
存储方案
- 根文件系统:
/dev/vdaext4 (63G总容量, 11%使用, stripe=128) - KataShared (virtiofs):
/etc/resolv.conf- DNS配置/etc/hostname- 主机名/etc/hosts- 主机文件
- tmpfs:
/dev(64M)/dev/shm(989M)/proc/interrupts,/proc/keys,/proc/timer_list
包管理器
dpkg,apt,pip,node(v22.16.0 via NVM),npm(v10.9.2),corepack
特殊配置
Chrome/Chromium配置
CDP_PORT=9222 # Chrome DevTools端口
CHROME_USER_DATA_DIR=/home/oai/.chromium
CHROMIUM_VERSION=133
CHROMIUM_POLICY_DIR=/etc/chromium/policies/managed
POLICY_CATALOG_DIR=/usr/local/chromium/policies/managed
- Chrome可能启用 (CUA_DD_ENABLE_CHROME为空)
- 已安装chromium包
VNC/NEKO配置
DISPLAY=:0
DISPLAY_RESOLUTION=1024x768x24
DISPLAY_SCALE_FACTOR=0.8
DISPLAY_SIZE=1280,960
VNC_PORT=5901
NEKO_BIND=127.0.0.1:8081
NEKO_DISPLAY=:0
NEKO_PORT=8081
NEKO_PROXY_PORT=8082
NEKO_SCREEN=1024x768@0
NEKO_VIDEO_CODEC=h264
- NEKO WebRTC桌面共享配置完整
- 已安装x11vnc、xvfb、websockify等VNC相关包
PDF Reader服务
PDF_READER_PORT=8451
PDF_READER_FETCH_TIMEOUT=120
PDF_READER_PARSE_TIMEOUT=10
- 独立的PDF阅读器服务
文件同步配置
OAI_SHARE_DIR=/home/oai/share
OAI_SHARE_SLIDES_DIR=/home/oai/share/slides
REMOTE_SHARE_HOST=chrome.local
- 使用rsync进行文件同步
- 支持slides目录
代理配置
ALL_PROXY=socks5://proxy.local:8888
HTTP_PROXY=http://proxy.local:8889
HTTPS_PROXY=http://proxy.local:8889
NO_PROXY=localhost,127.0.0.1
- 完整的代理配置
- 支持SOCKS5和HTTP代理
NVM配置
NVM_DIR=/opt/nvm
NODE_VERSION=22.16.0
NODE_INSTALL_PATH=/opt/nvm/versions/node/v22.16.0
NODE_PATH=/opt/nvm/versions/node/v22.16.0/lib/node_modules
- Node.js版本管理
- 全局包包括tailwindcss、typescript、sharp等
Python环境
PATH包含: /opt/pyvenv/bin
- Python虚拟环境
- 已安装大量科学计算包 (numpy, pandas, scikit-learn, matplotlib等)
安全特性
- sudo限制: “no new privileges” 标志设置,完全阻止sudo提权
- systemd不可用: 非systemd环境,使用supervisor
- 文件系统只读:
/sys只读挂载 - supervisor权限: 用户无法查询supervisor状态 (权限控制)
- 进程隔离: Kata容器提供更强的隔离
安全风险评估
敏感信息暴露
- ⚠️ NEKO_PASSWORD: 弱密码暴露 (
neko) - ⚠️ NEKO_PASSWORD_ADMIN: 弱密码暴露 (
admin) - ⚠️ Jupyter Notebook: 无token认证,端口8888对外开放
- ⚠️ rsync服务: 端口873对外开放,可能存在未授权访问风险
安全措施
- ✅
/proc/1/environ访问被拒绝 - ✅ sudo完全禁用
- ✅ Kata容器提供更强的隔离性
- ✅ 文件系统只读挂载
- ✅ 进程以root运行但权限受限
安全评分: 7.5/10
- 容器隔离性强,但存在无认证服务和弱密码问题
支持的特性
- Jupyter Notebook - 完整的Notebook服务器,端口8888,无token认证
- Chrome/Chromium - 浏览器支持(可能启用),远程调试端口9222
- VNC/NEKO - WebRTC桌面共享,支持NEKO和x11vnc
- PDF阅读器服务 - 独立的PDF阅读器服务,端口8451
- 文件同步 - rsync守护进程和sync_share服务,支持文件同步和共享
- 终端服务器 - 提供远程终端访问能力
- 代理支持 - 完整的SOCKS5和HTTP代理配置
- NVM - Node.js版本管理,支持多版本切换
- Python虚拟环境 - 预配置的Python虚拟环境
- 科学计算库 - 预装numpy、pandas、scikit-learn等科学计算包
- 图形工具 - inkscape、libreoffice、imagemagick等图形处理工具
已安装的关键包
- 浏览器: chromium (141.0.7390.122)
- VNC: x11vnc, xvfb, websockify
- 开发工具: git, vim, jq, curl, wget
- 图形工具: inkscape, libreoffice, imagemagick
- 科学计算: python3-numpy, python3-pandas, scikit-learn
- PDF处理: poppler, pdf2image (Python包)
进程列表 (关键进程)
supervisord # 进程管理器 (PID 1)
log_forwarder # 日志转发
notebook_server # Jupyter Notebook服务器
rsync_daemon # rsync守护进程
sync_share # 文件同步服务
inotifywait # 文件监控
python -m notebook # Jupyter Notebook进程
与Chat模式的主要区别
- 内核更新: 6.12.13 vs 4.4.0
- 容器技术: Kata Containers vs Docker-like
- 网络配置: 双网卡 vs 单网卡
- Jupyter端口: 8888 vs 8080
- Chrome状态: 可能启用 vs 禁用
- VNC支持: 完整配置 vs 禁用
- 文件同步: rsync服务 vs 无
- PDF服务: 独立服务 vs 无
- 存储方案: virtiofs vs overlay
- 包丰富度: 更多图形和科学计算包
AnyGen (E2B基础)
环境标识
- E2B标识:
E2B_SANDBOX=true,E2B_SANDBOX_ID,E2B_TEMPLATE_ID - 平台标识:
ANYGEN_ACCESS_TOKEN,ANYGEN_SERVER_API_DOMAIN - 用户:
user(uid=1001, gid=1001) - HOME:
/home/user - 工作目录:
/home/user/workspace
系统环境
- OS: Ubuntu 24.04.3 LTS (Noble Numbat)
- Kernel: Linux 6.1.158-x86_64
- Init系统: systemd (
/sbin/init) - CGroup:
0::/user - 容器化: 是
- Uptime: 17小时30分钟
核心服务
envd
- E2B平台的环境守护进程
Xvfb (X Virtual Framebuffer)
- 虚拟X服务器
- 显示:
:1 - 分辨率: 1280x1024x24
- 用于无头环境下的图形应用
fluxbox
- 轻量级窗口管理器
- 提供基本的窗口管理功能
Chrome浏览器
- Google Chrome浏览器
- 配置参数:
--remote-debugging-port=9222- 远程调试端口--remote-debugging-address=0.0.0.0- 允许外部访问--user-data-dir=/home/user/.config/browser- 用户数据目录--no-first-run- 跳过首次运行--disable-gpu- 禁用GPU加速--ozone-platform=x11- 使用X11平台
x11vnc
- VNC服务器
- 端口: 5900
- 共享模式,无密码访问
websockify/noVNC
- Web VNC代理
- 端口: 6080
- 提供基于Web的VNC客户端
browser_use
- HTTP服务
- 端口: 8000
- 提供浏览器自动化API
socat
- 端口转发工具
- 将
169.254.0.21:9222转发到localhost:9222 - 允许外部访问Chrome调试端口
SharedVFS
- FUSE文件系统
- 挂载点:
/home/user/shared - 用于共享存储
网络配置
- IP地址:
169.254.0.21/30(eth0) - 网关:
169.254.0.22 - 监听端口:
0.0.0.0:8000(browser_use)0.0.0.0:5900(x11vnc)0.0.0.0:6080(websockify)169.254.0.21:9222(Chrome调试端口转发)127.0.0.1:9222(Chrome本地调试)0.0.0.0:22(SSH)
存储方案
- 根文件系统:
/dev/vdaext4 (37G总容量, 46%使用) - SharedVFS: FUSE文件系统用于共享存储
- tmpfs:
/dev/shm(3.9G),/run(1.6G)
包管理器
dpkg,apt,pip,node,npm,corepack
安全风险评估
敏感信息暴露
- ⚠️ ANYGEN_ACCESS_TOKEN: 明文存储在环境变量中 (
<REDACTED>) - ⚠️ OPENAI_API_KEY: 明文API密钥暴露 (
<REDACTED>)
安全措施
- ✅
/proc/1/environ访问被拒绝 - ✅ 非root用户运行服务
- ✅ 容器隔离
安全评分: 7.0/10
- 基础安全措施到位,但API密钥明文存储
支持的特性
- Chrome浏览器 - Google Chrome浏览器,远程调试端口9222
- VNC服务器 - x11vnc服务器,端口5900,支持共享模式
- Web VNC - websockify/noVNC提供基于Web的VNC客户端,端口6080
- Xvfb - 虚拟X服务器,显示:1,分辨率1280x1024x24
- fluxbox - 轻量级窗口管理器
- browser_use - 浏览器自动化API服务,端口8000
- socat端口转发 - 将Chrome调试端口转发到外部IP
- SharedVFS - FUSE文件系统用于共享存储
- Puppeteer - 配置支持Puppeteer浏览器自动化
- OpenAI API代理 - 通过代理访问OpenAI API
特殊配置
Puppeteer
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable
- 配置Puppeteer使用Chrome
Python环境
VIRTUAL_ENV=/home/user/.venv
PYTHONPATH=/mnt/aglib
- Python虚拟环境
- 自定义Python路径
OpenAI API代理
OPENAI_API_BASE=https://www.anygen.io/api/page/llm_proxy/v1
OPENAI_API_KEY=<token>
OPENAI_BASE_URL=https://www.anygen.io/api/page/llm_proxy/v1
- 通过代理访问OpenAI API
进程列表 (关键进程)
envd # E2B环境守护进程
Xvfb # 虚拟X服务器
fluxbox # 窗口管理器
chrome # Chrome浏览器 (主进程)
chrome (多个子进程) # Chrome渲染进程
x11vnc # VNC服务器
websockify # Web VNC代理
browser_use # 浏览器自动化服务
socat # 端口转发
shared_vfs_fuse.py # FUSE文件系统
Manus (完整自定义方案)
环境标识
- 用户:
ubuntu(uid=1000, gid=1000) - HOME:
/home/ubuntu - 平台标识:
APP_DOMAIN,RUNTIME_API_HOST,OPENAI_API_BASE
系统环境
- OS: Ubuntu 22.04.5 LTS (Jammy Jellyfish)
- Kernel: Linux 6.1.102-x86_64
- Init系统: systemd (
/sbin/init nomodules) - CGroup:
0::/system.slice/supervisor.service - 容器化: 是 (
.dockerenv存在, E2B基础) - Uptime: 2天18小时54分钟
核心服务
envd
- E2B环境守护进程 (两个实例运行)
- 一个运行
/usr/bin/envd-v0.0.1 - 另一个运行
/usr/bin/envd -cmd /e2b-startup.sh
supervisord
- 进程管理器
- 管理多个服务进程
Xorg
- X服务器
- 显示:
:0 - 配置文件:
/etc/X11/xorg.conf
x11vnc
- VNC服务器
- 端口: 5900
- 分辨率: 1280x1029
- 共享模式,允许文件传输
websockify
- WebSocket代理
- 端口: 5901
- Web目录:
/opt/.manus/.packages/chrome-extensions/manus-helper
Chromium浏览器
- Chromium浏览器
- 配置参数:
--remote-debugging-port=9222- 远程调试端口--load-extension- 加载扩展 (ublock-lite, manus-helper)--user-data-dir=/home/ubuntu/.browser_data_dir- 用户数据目录--disable-gpu- 禁用GPU--use-angle=swiftshader-webgl- 软件渲染--ozone-override-screen-size=1280,1029- 屏幕尺寸
code-server
- VS Code Web版本
- 端口: 8329
- 配置:
/home/ubuntu/.config/code-server/config.yaml - 禁用工作区信任
manus-mcp-cli
- MCP CLI服务器
- 端口: 8350
- 提供MCP协议服务
neko
- WebRTC桌面共享服务器
- 端口: 8333
- 配置:
/opt/.manus/neko/config/neko.yml - 使用Cloudflare STUN/TURN服务器
start_server
- Manus主服务器
- 端口: 8330 (外部), 9330 (内部)
- 提供核心API服务
upgrade
- 升级服务
- 端口: 8340
- 处理系统升级
playwright
- Playwright驱动
- 提供浏览器自动化能力
statesync
- 状态同步服务
- 配置:
/home/ubuntu/.config/state-sync/state-sync-config.yaml - 同步状态到外部存储
socat (多个实例)
- 端口转发工具
9330: 169.254.0.21 -> localhost:93309222: 169.254.0.21 -> localhost:92228350: 169.254.0.21 -> localhost:8350
网络配置
- IP地址:
169.254.0.21/30(eth0) - 网关:
169.254.0.22 - 监听端口:
0.0.0.0:22(SSH)0.0.0.0:5900(x11vnc)0.0.0.0:5901(websockify)0.0.0.0:8329(code-server)0.0.0.0:8330(start_server)0.0.0.0:8333(neko)0.0.0.0:8340(upgrade)127.0.0.1:8350(manus-mcp-cli)127.0.0.1:9330(start_server内部)127.0.0.1:9222(Chromium调试)
存储方案
- 根文件系统:
/dev/vdaext4 (42G总容量, 24%使用) - Manus目录:
/opt/.manus/current/- 当前版本neko/- Neko服务器.packages/- 包和扩展.sandbox-runtime/- 运行时环境deploy/- 部署模板
包管理器
dpkg,apt,pip,node,npm,pnpm,corepack,uv,code-server
特殊配置
NVM (Node Version Manager)
NVM_DIR=/home/ubuntu/.nvm
NVM_BIN=/home/ubuntu/.nvm/versions/node/v22.13.0/bin
- Node.js版本管理
PNPM
PNPM_HOME=/home/ubuntu/.local/share/pnpm
- PNPM包管理器
Chrome扩展
ublock-lite- 广告拦截扩展manus-helper- Manus辅助扩展
OpenTelemetry
OTEL_EXPORTER_OTLP_ENDPOINT=https://http.butterflyotel.online
OTEL_SERVICE_NAME=sandbox-runtime
- 遥测和监控
Sentry
SENTRY_DSN=https://...@sentry.butterflyotel.online/9
- 错误追踪
安全风险评估
敏感信息暴露
- 🔴 OPENAI_API_KEY: 明文API密钥暴露 (
sk-<REDACTED>) - ⚠️ CODE_SERVER_PASSWORD: 明文密码暴露 (
<REDACTED>) - ⚠️ NEKO_ADMIN_PASSWORD: 明文密码暴露 (
<REDACTED>) - ⚠️ NEKO_USER_PASSWORD: 明文密码暴露 (
<REDACTED>) - ⚠️ SENTRY_DSN: 包含token的DSN暴露 (
https://<REDACTED>@sentry.example.com/9) - ⚠️ GH_TOKEN: 环境变量存在但为空(可能泄露)
- ⚠️ GOOGLE_DRIVE_TOKEN: 环境变量存在但为空(可能泄露)
- ⚠️ Neko WebRTC凭证: Cloudflare TURN服务器用户名和密码暴露在进程参数中
安全措施
- ✅
/proc/1/environ访问被拒绝 - ✅ 非root用户运行服务
- ✅ 容器隔离
- ✅ 部分sudo功能受限
安全评分: 5.5/10
- 存在大量敏感信息明文暴露,包括API密钥、密码和凭证
支持的特性
- Chromium浏览器 - Chromium浏览器,远程调试端口9222,加载ublock-lite和manus-helper扩展
- VNC服务器 - x11vnc服务器,端口5900,分辨率1280x1029
- WebSocket VNC - websockify提供Web VNC代理,端口5901
- Code Server - VS Code Web版本,端口8329
- Neko - WebRTC桌面共享服务器,端口8333,使用Cloudflare STUN/TURN
- Manus主服务器 - start_server提供核心API服务,端口8330(外部)和9330(内部)
- MCP CLI服务器 - manus-mcp-cli提供MCP协议服务,端口8350
- 升级服务 - upgrade服务处理系统升级,端口8340
- Playwright - Playwright驱动提供浏览器自动化能力
- 状态同步 - statesync服务同步状态到外部存储
- 端口转发 - 多个socat实例实现端口转发(9330、9222、8350)
- Manus Helper扩展 - 浏览器扩展,提供文章提取、关键词查找、元素高亮、Cookie自动接受、图片提取、点击可视化、元素定位、PDF内容提取、页面加载检测、网络请求跟踪等功能
- uBlock Lite扩展 - 广告拦截扩展
- OpenTelemetry - 遥测和监控支持
- Sentry - 错误追踪和监控
目录结构特点
/opt/.manus/
├── current/ # 当前版本
│ ├── start_server # 主服务器
│ ├── upgrade # 升级程序
│ └── assets/ # 资源文件
├── neko/ # Neko服务器
├── .packages/ # 包和扩展
│ ├── chrome-extensions/
│ └── scripts/
├── .sandbox-runtime/ # 运行时环境
└── deploy/ # 部署模板
/home/ubuntu/
├── .browser_data_dir/ # 浏览器数据
├── .config/
│ ├── code-server/ # Code Server配置
│ └── state-sync/ # 状态同步配置
└── .nvm/ # NVM
进程列表 (关键进程)
envd # E2B环境守护进程 (2个实例)
supervisord # 进程管理器
Xorg # X服务器
x11vnc # VNC服务器
websockify # Web VNC代理
chromium-browser # Chromium浏览器 (主进程)
chromium-browser (多个) # Chromium渲染进程
code-server # VS Code Web
manus-mcp-cli # MCP CLI服务器
neko # WebRTC桌面共享
start_server # Manus主服务器
upgrade # 升级服务
playwright # Playwright驱动
statesync # 状态同步
socat (多个) # 端口转发
技术架构分析
1. 容器化基础
共同特征
- 所有平台都使用容器化: Docker或类似技术
- E2B基础: Genspark、AnyGen、Manus使用E2B平台
- 自定义容器: OpenAI使用自定义容器方案
容器标识
- E2B容器:
- 环境变量:
E2B_SANDBOX=true - CGroup路径包含
envd.service或user - IP地址:
169.254.0.21/30 - 网关:
169.254.0.22
- 环境变量:
- Docker容器:
.dockerenv文件存在- CGroup路径包含容器ID
- 使用overlay文件系统
- IP地址:
172.30.0.x/16或172.17.0.x/16
- Kata容器:
- CGroup路径:
0::/ - 使用virtiofs文件系统 (kataShared)
- 双网卡配置 (主网卡 + 辅助网卡)
- 更强的隔离性
- CGroup路径:
2. 网络架构
IP地址分配模式
- E2B模式:
169.254.0.21/30(链路本地地址)- 子网:
169.254.0.20/30 - 网关:
169.254.0.22 - 特点: 使用链路本地地址段,避免与公网冲突
- 子网:
- Docker模式:
172.30.0.x/16或172.17.0.x/16- 标准Docker网络
- 网关通常是
.1
- Kata模式:
172.19.0.x/16+172.31.x.x/28(双网卡)- 主网卡: 标准Docker网络段
- 辅助网卡: 可能用于特殊网络需求
- 网关:
172.19.0.1
端口转发策略
- socat: 用于将外部IP的端口转发到localhost
- 常见转发:
- Chrome调试端口:
9222 - 应用服务端口:
9330,8350等
- Chrome调试端口:
- 目的: 允许外部访问内部服务,同时保持安全性
服务暴露模式
- 内部服务: 仅监听
127.0.0.1(localhost) - 外部服务: 监听
0.0.0.0(所有接口) 或特定IP - VNC/Web服务: 通常监听
0.0.0.0以允许外部访问
3. 存储架构
文件系统类型
- 根文件系统: ext4 (持久化)
- Genspark: 26G
- AnyGen: 37G
- Manus: 42G
- S3FS: 云存储挂载 (Genspark)
- 多个挂载点
- 虚拟64P空间
- FUSE文件系统:
- AIDriveFUSE (Genspark)
- SharedVFS (AnyGen)
- Overlay: Docker容器 (OpenAI Chat)
- 8.0E虚拟大小
- KataShared (virtiofs): Kata容器 (OpenAI Agent)
/etc/resolv.conf,/etc/hostname,/etc/hosts通过virtiofs挂载- 提供更好的性能和隔离性
数据持久化策略
- 用户数据:
/home/user或/home/ubuntu - 应用数据:
/opt/.manus/(Manus) - 浏览器数据:
~/.browser_data_dir/或~/.config/browser/ - 云存储: S3FS挂载点 (Genspark)
4. 进程管理
Init系统选择
- systemd: Genspark, AnyGen, Manus
- 完整的系统服务管理
- 支持服务依赖和自动重启
- Supervisor: OpenAI
- 轻量级进程管理
- 适合容器环境
- envd: E2B平台的环境守护进程
- 管理E2B特定功能
进程管理器
- supervisord: 用于管理多个服务
- 配置文件:
/etc/supervisor/supervisord.conf - 支持进程组和优先级
- 配置文件:
- systemd: 系统级服务管理
- 服务文件:
/etc/systemd/system/ - 支持服务依赖和资源限制
- 服务文件:
- 自定义脚本: 启动脚本管理服务
/startup.sh,/e2b-startup.sh
5. 浏览器集成
Chrome/Chromium配置
- 远程调试:
--remote-debugging-port=9222 - 用户数据目录: 独立目录避免冲突
--user-data-dir=/home/user/.config/browser--user-data-dir=/home/ubuntu/.browser_data_dir
- 扩展加载:
--load-extension- Manus: ublock-lite, manus-helper
- 沙箱禁用:
--no-zygote-sandbox(某些情况) - GPU禁用:
--disable-gpu--use-angle=swiftshader-webgl(软件渲染)
VNC/远程桌面
- x11vnc: VNC服务器
- 端口: 5900
- 共享模式,无密码或固定密码
- websockify/noVNC: Web VNC客户端
- 端口: 5901 或 6080
- 提供基于Web的VNC访问
- Xvfb: 虚拟X服务器 (无头环境)
- 显示:
:1 - 分辨率: 1280x1024x24
- 显示:
- Xorg: 真实X服务器 (有显示设备)
- 显示:
:0 - 配置文件:
/etc/X11/xorg.conf
- 显示:
6. 开发工具集成
Jupyter
- Jupyter Server: 提供Notebook服务
- 端口: 8888 (标准) 或 8080
- API端口: 通常与Web端口分离
- 内核: IPython内核 (ipykernel_launcher)
Code Server
- VS Code Web: 基于Web的IDE
- 配置: YAML配置文件
- 端口: 8329 (Manus)
- 特性: 禁用工作区信任
终端服务器
- terminal-server: 提供远程终端访问
- SSH: 标准SSH服务 (端口22)
7. 安全机制
权限控制
- 非root用户: 所有服务以非root运行
- sudo限制:
- OpenAI: 完全禁用 (“no new privileges”)
- 其他: 部分限制
- 文件权限:
/proc/1/environ访问被拒绝
网络隔离
- 私有网络: 容器使用私有IP
- 端口过滤: 仅暴露必要端口
- 防火墙: iptables规则限制
进程隔离
- CGroup: 资源限制和隔离
- 命名空间: PID、网络、挂载等命名空间隔离
安全分析总结
敏感信息暴露情况
高风险暴露
- API密钥和Token
- Genspark: GENSPARK_TOKEN, GENSPARK_ROUTE_IDENTIFIER (JWT)
- AnyGen: ANYGEN_ACCESS_TOKEN, OPENAI_API_KEY
- Manus: OPENAI_API_KEY (sk-开头), SENTRY_DSN
- 密码和凭证
- OpenAI Chat: CAAS_ARTIFACTORY_READER_PASSWORD, NEKO弱密码
- OpenAI Agent: NEKO弱密码
- Manus: CODE_SERVER_PASSWORD, NEKO_ADMIN_PASSWORD, NEKO_USER_PASSWORD, WebRTC凭证
- 无认证服务
- OpenAI Agent: Jupyter Notebook无token,rsync服务对外开放
安全措施对比
| 平台 | /proc/1/environ保护 | sudo限制 | root进程 | 容器隔离 | 敏感信息保护 |
|---|---|---|---|---|---|
| Genspark | ✅ | 部分 | ❌ | ✅ | ⚠️ 明文token |
| OpenAI Chat | ⚠️ | 完全禁用 | ✅ | ✅ | ⚠️ 弱密码 |
| OpenAI Agent | ✅ | 完全禁用 | ✅ | ✅✅ (Kata) | ⚠️ 无认证服务 |
| AnyGen | ✅ | 部分 | ❌ | ✅ | ⚠️ 明文API key |
| Manus | ✅ | 部分 | ❌ | ✅ | 🔴 大量暴露 |
安全建议
- 敏感信息管理
- 使用密钥管理服务(如AWS Secrets Manager、HashiCorp Vault)
- 避免在环境变量中明文存储敏感信息
- 使用临时凭证和定期轮换
- 服务认证
- 所有对外服务应启用认证(Jupyter、VNC、Code Server等)
- 使用强密码或密钥认证
- 实施最小权限原则
- 进程权限
- 避免以root用户运行应用进程
- 使用非特权用户运行所有服务
- 实施”no new privileges”标志
- 容器安全
- 使用只读文件系统挂载
- 限制容器能力(capabilities)
- 使用更强的隔离技术(如Kata Containers)
- 监控和审计
- 实施日志记录和监控
- 定期审计敏感信息访问
- 检测异常行为
平台评分总结
综合评分表
| 平台 | 功能完整性 | 安全性 | 易用性 | 可扩展性 | 综合评分 |
|---|---|---|---|---|---|
| Genspark | 7.5/10 | 6.5/10 | 8.0/10 | 7.0/10 | 7.25/10 |
| OpenAI Chat | 6.0/10 | 7.0/10 | 7.5/10 | 6.5/10 | 6.75/10 |
| OpenAI Agent | 9.0/10 | 7.5/10 | 8.0/10 | 8.5/10 | 8.25/10 |
| AnyGen | 8.0/10 | 7.0/10 | 8.5/10 | 7.5/10 | 7.75/10 |
| Manus | 9.5/10 | 5.5/10 | 9.0/10 | 9.0/10 | 8.25/10 |
评分说明
功能完整性 (0-10)
- Genspark (7.5): Jupyter + S3FS,功能较基础
- OpenAI Chat (6.0): 仅终端和Jupyter API,功能最少
- OpenAI Agent (9.0): 完整功能集,包括浏览器、VNC、PDF等
- AnyGen (8.0): 浏览器自动化完整,但缺少Code Server
- Manus (9.5): 功能最全面,包括Code Server、MCP、Neko等
安全性 (0-10)
- Genspark (6.5): 基础安全措施,但token明文存储
- OpenAI Chat (7.0): 权限控制严格,但存在弱密码
- OpenAI Agent (7.5): Kata容器隔离强,但无认证服务
- AnyGen (7.0): 基础安全到位,但API密钥暴露
- Manus (5.5): 大量敏感信息暴露,安全风险最高
易用性 (0-10)
- Genspark (8.0): E2B平台,易于使用
- OpenAI Chat (7.5): 轻量级,简单直接
- OpenAI Agent (8.0): 功能丰富但配置复杂
- AnyGen (8.5): 浏览器自动化友好
- Manus (9.0): 功能全面,开发体验好
可扩展性 (0-10)
- Genspark (7.0): E2B生态,扩展性中等
- OpenAI Chat (6.5): 功能受限,扩展性较低
- OpenAI Agent (8.5): 模块化设计,扩展性好
- AnyGen (7.5): 基于E2B,扩展性良好
- Manus (9.0): 完全自定义,扩展性最强
总结
通过对五个Agent Sandbox平台(包括OpenAI的两种模式)的详细分析,我们发现:
- E2B平台是主流: 三个平台基于E2B,说明E2B提供了良好的基础架构
- 容器化是标准: 所有平台都使用容器技术实现隔离
- 容器技术演进: 从Docker到Kata Containers,追求更强的隔离性
- 网络模式多样: E2B使用链路本地地址,Docker使用标准网络,Kata支持双网卡
- 服务组合灵活: 不同平台根据需求选择不同的服务组合
- Chat模式: 轻量级,仅终端和Jupyter API
- Agent模式: 完整功能,包括浏览器、VNC、文件同步等
- 安全策略差异: 不同平台的安全限制程度不同,但都采用非root用户运行
- 功能模块化: 通过环境变量控制功能开关,实现同一镜像的不同配置
- 安全风险普遍存在: 所有平台都存在敏感信息暴露问题,需要改进
关键发现
- 功能最全面: Manus (9.5/10) 和 OpenAI Agent (9.0/10)
- 安全性最好: OpenAI Agent (7.5/10) - Kata容器 + 严格权限控制
- 安全性最差: Manus (5.5/10) - 大量敏感信息暴露
- 最易用: Manus (9.0/10) 和 AnyGen (8.5/10)
- 最可扩展: Manus (9.0/10) - 完全自定义架构
推荐使用场景
- 快速原型开发: Genspark、AnyGen
- 生产环境(高安全要求): OpenAI Agent(需修复无认证服务)
- 功能丰富需求: Manus(需加强安全措施)
- 轻量级任务: OpenAI Chat
这些分析为自建Agent Sandbox提供了重要的参考依据。