agent-Specialization/doc/phases/phase2_summary.md

40 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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