# 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`，了解之前的风险总览及尚未推进的条目。祝顺利！
