# Phase 1 Summary – 环境变量与容器隔离 ## 已完成的关键改动 1. **配置去硬编码** - `config/api.py` / `config/auth.py` 读取 `.env` 中的密钥和凭证,`config/__init__.py` 自动加载 `.env`,彻底清理仓库里的明文 key。 - `.env.example` 提供可复制的模板,`.env` 记录当前部署所用值,防止环境遗漏。 2. **终端容器化** - 所有实时终端、`run_command`、`run_python` 全部运行在 `my-agent-shell` 镜像(基于 `python:3.11-slim`)中;镜像预装常用系统工具与 Python 依赖,并内置虚拟环境。 - 工具容器懒加载,可复用同一个会话,空闲超时自动回收,日志可追踪容器启动/释放。 3. **资源配额** - `.env` 控制 0.5 vCPU / 1GB RAM 的容器配额,项目目录写入前会进行 2GB 存储配额检查。 - `TERMINAL_SANDBOX_*`/`PROJECT_MAX_STORAGE_MB`/`TOOLBOX_TERMINAL_IDLE_SECONDS`/`MAX_ACTIVE_USER_CONTAINERS` 等可在环境中统一调整。 4. **并发保护与体验** - 新增 `active_users` 计数,限制同时在线账户总数;超限时 `/login` 与 Ajax 登录都会跳转到 `resource_busy` 页面,提示“资源繁忙,请稍后重试”。 - 登出/会话释放时及时归还 slot,确保超过配额不会导致服务器崩溃。 5. **系统提示同步** - main prompt 中不再暴露宿主机路径,只告知模型“你在隔离容器(挂载目录 `/workspace`)中工作”,附带 CPU/内存/磁盘配额说明,减少对真实环境的暴露。 6. **安全检查** - `doc/security/security_review.md` 更新了第一阶段完成项:环境变量治理、终端容器化、资源限制、繁忙提示等,便于下一阶段延续。 ## 后续建议 1. **用户级容器** - 当前仍是“多终端共享多个容器”。下一阶段可收敛为“每用户一个长生命周期容器”,集中处理终端/文件/工具请求,进一步简化资源管理。 2. **文件操作代理** - 目前 `FileManager` 仍在宿主机写入。可以考虑在用户容器内提供文件服务/API,让 append/modify 等也走容器,宿主机只负责挂载和备份。 3. **监控与预警** - 接入 Docker/系统 metrics,记录容器 CPU/Mem/IO 使用情况,并在触达阈值前告警;后续可结合日志汇报高危命令。 4. **CI / 镜像自动构建** - 将 `docker/terminal.Dockerfile` 与 `toolbox-requirements.txt` 纳入 CI pipeline,自动构建并推送 `my-agent-shell`,避免手工 build。 5. **权限最小化** - 研究 rootless Docker 或容器内非 root 用户,进一步降低 /etc/shadow 等容器内敏感文件被误读的风险。 如需接手下一阶段,请先阅读 `doc/security/security_review.md`,了解之前的风险总览及尚未推进的条目。祝顺利!