agent-Specialization/README.md

140 lines
6.0 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.

# AI Agent 系统v2
多用户、多终端的智能开发助手。每位登录用户都会获得一个独立 Docker 容器,所有终端、一次性命令以及文件操作都在容器内完成;宿主机仅提供挂载和备份,配合实时监控界面可以随时观察容器 CPU/内存/网络/磁盘配额的使用情况。
> ⚠️ **定位**:学习与实验用项目,主要用于探索“智能体 + 真实 Dev Workflow”。代码大量由 AI 生成,尚未达到生产级别,请谨慎部署。
---
## 近期亮点
| 能力 | 说明 |
| --- | --- |
| **单用户-单容器** | `modules/user_container_manager.py` 会在登录时启动专属容器并在退出或空闲超时后自动销毁。CLI/Web/Toolbox 复用同一容器,资源配额(默认 0.5 vCPU / 1GB RAM / 2GB 磁盘)由 `.env` 控制。 |
| **容器内文件代理** | `modules/container_file_proxy.py` 通过 `docker exec` 调用内置 Python 脚本,对 `create/read/search/write/modify` 等操作进行沙箱化处理,宿主机不再直写用户代码。 |
| **实时监控面板** | Web “用量统计”抽屉实时展示 Token 消耗、容器 CPU/内存、网络上下行速率0.5s 刷新以及项目存储占用5s 刷新。CLI `/status` 命令也会附带容器状态。 |
| **联网能力 + 最小工具集** | 终端镜像改为 `bridge` 网络并预装 `iputils-ping`,方便验证网络连通性;遇到受限环境可以随时在 `.env` 中切换网络模式。 |
---
## 架构概览
```
┌─────────────┐ ┌────────────────┐ ┌────────────────────────┐
│ Browser │◀───▶│ Flask + Socket │◀───▶│ UserContainerManager │
│ (Vue 前端) │ Web │ Web Server │调度 │ (管理 Docker 容器) │
└─────────────┘ │ ├─ WebTerminal │ └────┬───────────────────┘
│ └─ REST APIs │ │
└────────────────┘ ▼
Container
├─ PersistentTerminal / Toolbox
└─ Container File Proxy
```
- **core/**`MainTerminal` / `WebTerminal` 负责命令路由、上下文管理与工具调度。
- **modules/**终端管理、FileManager、容器调度、搜索、记忆等独立能力模块。
- **utils/**:模型 API 客户端、上下文压缩、日志、终端工厂等辅助工具。
- **static/**Vue + Socket.IO 单页应用,负责对话流/终端输出/资源监控。
- **docker/**:终端镜像 Dockerfile 及工具容器依赖清单。
更多目录说明请查阅 `tree -L 2` 或仓库内注释。
---
## 快速开始
### 1. 环境需求
- Python 3.11+
- Docker 20+(需启用 cgroup v1/v2 任一,默认通过 `bridge` 网络运行容器)
- Node/Vue 非必需,前端为静态文件
### 2. 安装依赖
```bash
pip install -r requirements.txt
```
### 3. 配置
1. 复制 `.env.example``.env`,填入以下关键变量:
- `AGENT_API_*`:兼容 OpenAI API 的模型服务
- `WEB_SECRET_KEY`Flask session 密钥
- `TERMINAL_SANDBOX_*`:容器镜像/资源/网络(默认 `my-agent-shell:latest` + `bridge`
2. 若需定制终端镜像:
```bash
docker build -f docker/terminal.Dockerfile -t my-agent-shell:latest .
```
### 4. 运行
```bash
# CLI 模式
python main.py
# Web 模式(默认 8091
python web_server.py
```
首次启动会在 `users/<username>/` 下初始化个人工作区与容器。
---
## 监控与调试
- **Web 用量面板**:点击右下角「用量统计」可查看 Token/CPU/内存/网络/存储实时状态。
- **CLI `/status`**:显示当前会话、上下文大小、容器资源等,日志位于 `logs/debug_stream.log`
- **容器日志**`logs/container_stats.log` 存储 `docker stats/inspect` 样本,可配合 `tail -f` 或外部监控系统。
---
## 常见命令
| 命令 | 说明 |
| --- | --- |
| `/help` | CLI 指令列表 |
| `/status` | 查看系统/容器资源状态 |
| `read_file` / `modify_file` | 读写项目文件(自动通过容器代理) |
| `terminal_session` / `terminal_input` | 管理多终端会话 |
| `run_command` / `run_python` | 工具容器快速执行命令/Python 代码 |
| `todo_*`, `update_memory` | 维护待办与长期记忆 |
---
## 配置速览
`config/terminal.py` 支持以下常用变量:
| 变量 | 默认值 | 说明 |
| --- | --- | --- |
| `TERMINAL_SANDBOX_IMAGE` | `my-agent-shell:latest` | 终端容器镜像 |
| `TERMINAL_SANDBOX_NETWORK` | `bridge` | 容器网络模式(`none`/`bridge`/`host` 等) |
| `TERMINAL_SANDBOX_CPUS` | `0.5` | 上限 CPU |
| `TERMINAL_SANDBOX_MEMORY` | `1g` | 上限内存 |
| `TERMINAL_SANDBOX_REQUIRE` | `0` | 若容器启动失败是否降级宿主机模式 |
| `PROJECT_MAX_STORAGE_MB` | `2048` | 每个工作区的磁盘配额 |
| `MAX_ACTIVE_USER_CONTAINERS` | `8` | 并发容器数量 |
更多配置请查阅 `.env.example`
---
## 开发建议
1. **安全**:新增模块前请优先考虑是否可以在容器中实现,避免回退宿主机;如需联网,务必评估外部依赖。
2. **日志**:尽量使用 `utils.logger.setup_logger`,便于统一收集。
3. **测试**`users/<username>/project/test_scripts/` 提供内存压测脚本,可验证容器限制是否生效;可在 `test/` 下添加更多集成测试。
4. **文档**:第二阶段总结见 `doc/phase2_summary.md`,安全基线更新见 `doc/security_review.md`
---
## Roadmap
- [ ] CSRF / 防爆破 / 会话绑定设备指纹
- [ ] 文件上传内容扫描与白名单策略
- [ ] 用户/会话数据迁移到数据库并加密备份
- [ ] 自动化测试与 CI含容器镜像构建
- [ ] Skeleton Web UI组件化、国际化、Dark Mode
欢迎通过 Issue/PR 贡献。