# Phase 2 Summary – 单用户容器与资源可视化 ## 交付成果 1. **单用户-单容器架构落地** - 新增 `modules/user_container_manager.py`,Web/CLI 登录即分配专属容器,退出或空闲超时自动释放。 - 终端会话、一次性命令、Toolbox 都复用该容器的 PID/网络空间,彻底与其它租户隔离。 - `.env`/`config/terminal.py` 默认启用 `bridge` 网络,新 Dockerfile 内置 `iputils-ping`,在受控环境下具备最小联网能力。 2. **文件操作容器化** - `modules/container_file_proxy.py` 将 FileManager 的读写/搜索/补丁全部转发至容器内脚本执行。 - 宿主机仅保留挂载点与备份逻辑,用户代码不会直接触碰宿主文件系统,横向越权窗口显著收窄。 3. **容器监控与审计** - `modules/container_monitor.py` 提供 `docker stats`/`inspect` 的解析,`logs/container_stats.log` 保留采样轨迹。 - `/api/status`、CLI `/status` 命令和新的 `/api/container-status`、`/api/project-storage` 轮询接口都会返回 CPU/内存/网络速率与磁盘配额使用情况。 4. **前端用量面板升级** - “用量统计”抽屉拆成 Token 区 + 容器资源卡片,实时展示 CPU/内存/网络上下行速率与项目配额占用。 - 轮询间隔:容器指标 0.5s、项目存储 5s,异常情况(宿主机模式、容器停止)均有提示。 ## 影响评估 - **安全面**:终端 + FileManager 都锁在用户容器内,结合 1GB/0.5 vCPU 限制与 `bridge` 网络,大幅降低对宿主机的侵入风险。 - **可观测性**:管理员能通过 CLI/Web 即时查看资源走势,日志中也有容器采样点,方便审计与容量规划。 - **用户体验**:联网需求不再需要回退宿主机;用量面板让使用者清楚看到自己消耗的配额。 ## 仍待处理 - 鉴权/速率限制、CSRF 体系仍未落地,下一阶段需要引入 Flask-Limiter、CSRF token 以及更严格的会话管理。 - 用户与会话数据依旧保存在 JSON 文件,建议迁移到数据库并加入加密/备份策略。 - 文件上传缺乏内容扫描与 MIME 校验,后续需要联动杀毒/白名单策略。 ## 验证 - `python3 -m py_compile` 检查核心模块语法。 - Web UI/CLI 手动验证:登录创建容器、执行命令、上传/下载文件,观察实时监控数据。 - `users/jojo/project/test_scripts/memory_pressure_test.py` 用于确认 1GB 内存限制,`docker stats` 监控 CPU/Mem/Net。 - 构建镜像 `docker build -f docker/terminal.Dockerfile -t my-agent-shell:latest .` 并在 `.env` 中启用 `TERMINAL_SANDBOX_NETWORK=bridge`。