agent-Specialization/doc/phase2_summary.md

2.6 KiB
Raw Blame History

Phase 2 Summary 单用户容器与资源可视化

交付成果

  1. 单用户-单容器架构落地

    • 新增 modules/user_container_manager.pyWeb/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