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