Go to file
2025-12-15 18:13:53 +08:00
__pycache__ chore: initial import 2025-11-14 16:44:12 +08:00
config chore: bump agent version to v5.3 2025-12-15 00:11:48 +08:00
core fix: improve terminal timeouts and clean outputs 2025-12-15 18:13:53 +08:00
doc feat: virtual monitor 2025-12-14 04:22:00 +08:00
docker docs: refresh readme and phase2 summary 2025-11-23 21:24:09 +08:00
modules fix: improve terminal timeouts and clean outputs 2025-12-15 18:13:53 +08:00
prompts chore: refresh deep mode styling 2025-11-30 17:57:48 +08:00
scratch_test feat: stable version before virtual monitor timing fix 2025-12-13 17:12:12 +08:00
scripts feat: stable version before virtual monitor timing fix 2025-12-13 17:12:12 +08:00
static fix: stabilize terminal tool timeouts 2025-12-15 15:15:03 +08:00
sub_agent chore: bump agent version to v5.3 2025-12-15 00:11:48 +08:00
test feat: add upload quarantine scanning and ui toasts 2025-11-24 14:31:13 +08:00
utils fix: correct terminal_input error reporting 2025-12-15 16:04:47 +08:00
截图 feat: stable version before virtual monitor timing fix 2025-12-13 17:12:12 +08:00
.DS_Store chore: checkpoint before tool playback change 2025-12-14 14:43:54 +08:00
.env.example docs: refresh readme and phase2 summary 2025-11-23 21:24:09 +08:00
.eslintrc.cjs feat: modularize frontend layout 2025-11-25 22:41:15 +08:00
.gitignore feat: modularize frontend layout 2025-11-25 22:41:15 +08:00
.prettierignore feat: modularize frontend layout 2025-11-25 22:41:15 +08:00
.prettierrc feat: modularize frontend layout 2025-11-25 22:41:15 +08:00
AGENTS.md chore: initial import 2025-11-14 16:44:12 +08:00
CLAUDE.md fix: stabilize conversation loading 2025-11-29 23:13:11 +08:00
main.py chore: initial import 2025-11-14 16:44:12 +08:00
package-lock.json feat: stable version before virtual monitor timing fix 2025-12-13 17:12:12 +08:00
package.json feat: stable version before virtual monitor timing fix 2025-12-13 17:12:12 +08:00
README.md feat: stable version before virtual monitor timing fix 2025-12-13 17:12:12 +08:00
testfile_from_ai feat: modularize frontend layout 2025-11-25 22:41:15 +08:00
tsconfig.json feat: modularize frontend layout 2025-11-25 22:41:15 +08:00
tsconfig.node.json feat: modularize frontend layout 2025-11-25 22:41:15 +08:00
vite.config.ts feat: stable version before virtual monitor timing fix 2025-12-13 17:12:12 +08:00
web_server.log <fix thinking chunk> 2025-11-19 20:47:56 +08:00
web_server.py fix: refine memory monitor scrolling and snapshots 2025-12-14 21:03:21 +08:00
webapp.log <fix thinking chunk> 2025-11-19 20:47:56 +08:00
webapp.pid <fix thinking chunk> 2025-11-19 20:47:56 +08:00
ystemctl status webapp --no-pager -l chore: initial import 2025-11-14 16:44:12 +08:00

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 命令也会附带容器状态。
管理员监控面板 管理员身份可在「个人空间」中打开 /admin/monitor,集中查看用户用量、容器状态、项目存储与上传审计,支持一键刷新与自动轮询。
联网能力 + 最小工具集 终端镜像改为 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. 安装依赖

pip install -r requirements.txt

3. 配置

  1. 复制 .env.example.env,填入以下关键变量:
    • AGENT_API_*:兼容 OpenAI API 的模型服务
    • WEB_SECRET_KEYFlask session 密钥
    • TERMINAL_SANDBOX_*:容器镜像/资源/网络(默认 my-agent-shell:latest + bridge
  2. 若需定制终端镜像:
    docker build -f docker/terminal.Dockerfile -t my-agent-shell:latest .
    

4. 运行

# 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. 安全:新增模块前请优先考虑是否可以在容器中实现,避免回退宿主机;如需联网,务必评估外部依赖。上传检测现阶段默认关闭 ClamAVUPLOAD_CLAMAV_ENABLED=0),以免 1GB+ 的常驻内存占用,必要时可以在环境变量中显式打开。

  2. 日志:尽量使用 utils.logger.setup_logger,便于统一收集。

  3. 测试users/<username>/project/test_scripts/ 提供内存压测脚本,可验证容器限制是否生效;可在 test/ 下添加更多集成测试。

  4. 文档:第二阶段总结见 doc/phases/phase2_summary.md,安全基线更新见 doc/security/security_review.md

  5. 前端组件化doc/frontend/phase1_setup.mddoc/frontend/phase2_sidebar.md 记录了脚手架与侧栏改造,可用以下命令构建体验版 UI执行 localStorage.setItem('useNewFrontend','1') 或设置 window.__USE_NEW_FRONTEND__ = true 可加载新入口,移除该键即回退 legacy UI

    npm install
    npm run dev   # watch 构建 static/dist
    npm run build # 生产包
    

Roadmap

  • CSRF / 防爆破 / 会话绑定设备指纹
  • 文件上传内容扫描与白名单策略
  • 用户/会话数据迁移到数据库并加密备份
  • 自动化测试与 CI含容器镜像构建
  • Skeleton Web UI组件化、国际化、Dark Mode

欢迎通过 Issue/PR 贡献。