# 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`。
