atlas-agent-control-plane
Health Gecti
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 56 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
AtlasAgent - an auditable AI agent control plane: evidence-backed memory, governed tool runtime, checkpoint DAG recovery, and a 55-chapter engineering tutorial. FastAPI / Next.js PWA / Textual TUI
🚀 AtlasAgent · 可审计的 AI Agent 控制平面
把 Agent 从会话应用升级为可控系统 —— 事实可溯源、记忆可信、工具受治理、任务可恢复、每一步可审计。
简介
AtlasAgent 是一套可运行的 AI Agent 控制平面与中文工程教程。它把原始事件、长期记忆、知识库检索、技能指引、工具调用、Artifact 和 Checkpoint 放进同一条可追溯链路,集中处理六个生产边界:事实从哪里来、记忆为什么可信、资料引用能否追溯、工具何时允许执行、任务如何恢复,以及每一步如何审计。
同一套 FastAPI 控制平面同时服务 Next.js Web(PWA)与 Textual TUI,并配有从基础服务到 Memory / RAG / Skill / Tool Control Plane 的 0–56 章教程(共 55 章)。
🎉 最近更新
- [2026.08] 🎯 步骤内多轮工具调用 + 原生 Function Calling:模型在单个步骤内自主多次调用工具、观察结果再决策,真正像 Agent 一样工作。
- [2026.08] 🎯 Web 端升级为 PWA:可安装到桌面 / 移动端,离线缓存应用外壳;移除 Electron 桌面客户端,收敛为 Web + TUI 双客户端。
- [2026.08] 🎯 任务失败后从断点续跑:复用已有计划、跳过已完成步骤,从失败处继续,不必从头再来。
- [2026.08] 🎯 直答分流与推理直播:普通问答直接流式回答,思考过程实时展示并可回看。
- [2026.08] 🎯 知识库自动召回 + 带引用作答:每轮对话自动召回相关文档并标注来源。
- [2026.08] 🎯 网页正文读取作答与工具自愈:补上读取真实网页正文的能力。
✨ 核心能力
| 控制边界 | AtlasAgent 如何处理 | 关键机制 |
|---|---|---|
| Evidence-backed Memory | 只把仍然有效、来源明确且通过门禁的事实注入上下文 | 类型化记忆、Write Gate、证据链、作用域、有效期、替代关系、可解释检索 |
| RAG Knowledge Base | 让团队文档成为可检索、可引用、可验证的证据来源 | 段落切分与重叠、可替换向量后端(pgvector / Qdrant)、向量+词法混合重排、编号引用、检索审计、多模态摄取、每轮对话自动召回并标注来源 |
| Transparent Reasoning | 把模型的思考与作答过程实时暴露给使用者 | 直答与流水线分流、规划/执行/直答三阶段 thinking 增量、推理落库可回看、打字机节流展示 |
| Multi-round Tool Calling | 步骤内模型自主多次调用工具、看结果再决策 | 原生 Function Calling、JSON 兜底、并发工具执行、重复调用护栏 |
| Skill Registry | 把团队沉淀的操作指引变成受治理、可回溯的行为规范 | draft/published/deprecated 生命周期、semver 版本、启停分离、相关度注入 |
| Checkpoint DAG | 为长任务提供可验证的暂停、恢复与回溯点 | 父子 Checkpoint、事件区间、状态哈希、环境指纹、校验报告 |
| Unified Tool Runtime | 在 handler 之前统一约束权限与副作用 | 风险分级、审批、幂等、超时、脱敏、大输出制品化、全程审计 |
| Artifact Store | 让日志、补丁、截图和报告成为稳定事实源 | SHA-256 内容寻址、来源引用、任务与 Checkpoint 关联 |
| Multi-client Workspace | 在浏览器与 SSH 场景中观察同一运行状态 | Next.js Web(PWA)、Textual TUI,共用 FastAPI 接口 |
| Isolated Sandbox | 把文件、Shell 与浏览器自动化限制在独立运行边界 | 工作区限制、输出限制、网页正文读取、VNC / noVNC、统一网关 |
🏗️ 运行机制
控制面的事实优先级很明确:原始事件与 Artifact 是事实源,任务状态是可重建的物化视图,Checkpoint 是经过验证的恢复点。
一次任务会沿着这条链路推进:
- 创建带目标和验收标准的结构化任务。
- 从候选记忆中筛选有来源、未过期且相关的事实。
- 工具进入统一 Runtime,先经过风险、权限和幂等检查,再执行 handler。
- 大输出转为内容寻址 Artifact,调用过程写入审计记录。
- 状态哈希、环境指纹和校验报告共同生成可恢复 Checkpoint。
Plan / Execute / Reflect / Summarize 执行机
工具型对话使用项目内的、不依赖工作流框架的异步状态机推进;普通问答仍走直接流式回答。每个执行步骤内部,StepAgentLoop 驱动模型进行多轮工具调用,直到给出该步骤的结论。
| 状态 | 职责 | 可观察结果 |
|---|---|---|
| Plan | Planner 生成结构化计划并写入 plan_created |
规划思考增量与 plan_created |
| Execute | ReActStepExecutor + StepAgentLoop 为当前步骤进行多轮受治理工具调用 |
step_started、多次 tool_called |
| Reflect | Critic 根据步骤目标和工具观察作出 accept、retry、replan 或 fail 决定 |
step_reflected,随后路由到下一状态 |
| Summarize | AgentSummaryService 仅依据已观察到的工具证据流式生成最终回答 |
最终回答增量、message_created、task_done |
flowchart LR
subgraph Clients["客户端"]
direction TB
Web["Web · Next.js (PWA)"]
TUI["TUI · Textual"]
end
Gateway["Nginx Gateway"]
API["FastAPI Control Plane"]
subgraph Runtime["Agent Runtime"]
direction TB
Planner["Planning & Events"]
Loop["StepAgentLoop · 多轮工具调用"]
Tools["Tool Runtime"]
Memory["Memory & Checkpoints"]
end
subgraph Data["事实与基础设施"]
direction TB
Postgres["PostgreSQL"]
Redis["Redis"]
Sandbox["Sandbox & Artifacts"]
end
Web --> Gateway
TUI --> API
Gateway --> API
API --> Planner
API --> Loop
Loop --> Tools
API --> Memory
Planner --> Redis
Tools --> Sandbox
Memory --> Postgres
## 🚀 快速开始
需要 Git、Docker 与 Docker Compose v2。
git clone https://github.com/malevrigns/atlas-agent-control-plane.git
cd atlas-agent-control-plane
cp .env.example .env
BUILD=true ./scripts/start.sh
启动后访问:
- Web 工作台(PWA):http://localhost:8088
- API 健康检查:http://localhost:8088/api/status
- 数据库状态:http://localhost:8088/api/status/database
启动脚本会为 API 与 PostgreSQL 生成随机密钥,并在终端打印 Web 登录所需的 API Key。除 /api/status 外的接口都需要浏览器 HttpOnly 会话或 X-Atlas-API-Key 请求头。
Windows 请在 Git Bash 或已启用 Docker 集成的 WSL 中运行同一脚本。再次启动无需重建:
./scripts/start.sh
停止服务:
./scripts/stop.sh # 保留数据卷
CLEAN_VOLUMES=true ./scripts/stop.sh # 连同数据库、Redis、上传文件一起清理
[!TIP]
默认网关端口为8088。端口冲突时设置NGINX_PORT=18088后重新启动。
📱 客户端
| 客户端 | 最适合 | 特色 |
|---|---|---|
| Web(PWA) | 浏览器协作与完整功能体验,可安装到桌面 / 移动端 | 会话、流式问答、思考直播、执行日志、文件、Sandbox、设置、MCP、A2A、RAG 与 Skill 管理 |
| TUI | SSH、低带宽与键盘工作流 | 任务 / Checkpoint / 审计三栏、快捷键、三套终端主题、离线演示数据 |
TUI 的快捷键与客户端配置见 客户端指南。
🧩 Control Plane 最小调用
1. 创建结构化任务
ATLAS_KEY="$(sed -n 's/^ATLAS_API_KEY=//p' .env)"
curl -X POST http://localhost:8088/api/control-plane/tasks -H "X-Atlas-API-Key: ${ATLAS_KEY}" -H "Content-Type: application/json" -d '{"title": "更新交付物", "goal": "完成可验证升级", "acceptance_criteria": ["测试通过"], "project_id": "atlas"}'
2. 通过统一 Runtime 调用工具
curl -X POST http://localhost:8088/api/agent-core/tools/draft_plan/invoke -H "X-Atlas-API-Key: ${ATLAS_KEY}" -H "Content-Type: application/json" -d '{"arguments": {"task": "检查交付质量"}, "project_id": "atlas", "allowed_permissions": [], "idempotency_key": "demo-001"}'
3. 回读工具审计
curl -H "X-Atlas-API-Key: ${ATLAS_KEY}" "http://localhost:8088/api/control-plane/tool-invocations?project_id=atlas"
4. 检索知识库并拿到带引用的证据
curl -X POST http://localhost:8088/api/rag/knowledge-bases/${KB_ID}/query -H "X-Atlas-API-Key: ${ATLAS_KEY}" -H "Content-Type: application/json" -d '{"query": "数据库迁移怎么回滚", "top_k": 3}'
完整数据模型、生命周期和接口说明见 Memory 与 Tool Control Plane 与 RAG 与 Skill 注册中心。
⚙️ 配置与安全
服务端常用配置集中在根目录的 .env.example:
LLM_API_KEY:模型服务密钥;未配置时仍可使用不依赖模型的演示与控制平面能力。任何 OpenAI 兼容服务都可接入:在backend/api/config/llm.yaml中把base_url换成服务商地址(如 DeepSeekhttps://api.deepseek.com/v1、阿里云百炼https://dashscope.aliyuncs.com/compatible-mode/v1),default_model换成对应模型名。llm.thinking: true可开启思考过程流式输出(Qwenenable_thinking),Web 端实时展示并支持事后展开回看;llm.vision_model启用多模态 RAG。ATLAS_API_KEY:控制平面与 Sandbox 的共享访问密钥;启动脚本会替换示例占位符。NGINX_PORT:统一网关端口,默认8088。NGINX_HOST:默认127.0.0.1;确需远程访问时必须配合 TLS 与上游身份系统。TOOL_AUTO_APPROVE_RISK:工具自动批准的最高风险等级。TOOL_DEFAULT_TIMEOUT_SECONDS:工具默认超时。TOOL_OUTPUT_INLINE_LIMIT:大输出转为 Artifact 的阈值。RAG_VECTOR_BACKEND:RAG 向量后端,pgvector(默认)或qdrant。RAG_EMBEDDING_PROVIDER:auto按llm.yaml与密钥自动选择,local_hash强制离线哈希向量。EMBEDDING_API_KEY:OpenAI 兼容 embedding 服务密钥;留空时自动降级为本地向量。
TUI 通过 ATLAS_API_URL 与 ATLAS_API_KEY 连接后端。
[!IMPORTANT]
不要提交真实.env、模型密钥或第三方服务凭据。stdio MCP、MCP HTTP 与 A2A HTTP 默认关闭或无允许主机,必须由运维通过 allowlist 显式放行。内置 API Key 是单租户/内网边界,互联网多用户部署仍应在网关前接入 TLS、OIDC/RBAC 与限流。
🛠️ 本地开发
先准备 PostgreSQL 与 Redis:
docker compose up -d postgres redis
| 模块 | 启动命令 | 默认地址 / 行为 |
|---|---|---|
| API | cd backend/api && uv sync && uv run uvicorn app.main:app --reload |
http://localhost:8000 |
| Web | cd frontend/web && pnpm install && pnpm dev |
http://localhost:3000 |
| TUI | cd frontend/tui && uv sync && ATLAS_API_URL=http://localhost:8000 uv run atlas-tui |
后端不可达时自动进入演示模式 |
| Sandbox | cd backend/sandbox && docker build -t atlas-sandbox . && docker run -d -p 8100:8100 -p 6080:6080 -e SANDBOX_AUTH_ENABLED=false atlas-sandbox |
Agent 的虚拟电脑:http://localhost:8100;API 侧设 SANDBOX_API_BASE_URL=http://localhost:8100/api 与 TOOL_AUTO_APPROVE_RISK=high 后,对话即可真实执行代码/浏览器任务 |
开发与验证:
# 后端测试
cd backend/api
uv run python -m unittest discover -s tests
# TUI 测试
cd ../../frontend/tui
uv run python -m unittest discover -s tests
# Web 类型检查与构建
cd ../web
pnpm typecheck
pnpm build
📁 项目结构
atlas-agent-control-plane/
├── frontend/
│ ├── web/ Next.js Web 客户端(PWA)
│ └── tui/ Textual 终端客户端
├── backend/
│ ├── api/ FastAPI、数据库迁移、Control Plane 与测试
│ └── sandbox/ 文件、Shell、浏览器与 VNC 隔离执行环境
├── nginx/ 统一网关配置
├── docs/ Control Plane 与客户端专题文档
├── tutorial/ 0–56 章中文工程教程(55 章)
├── scripts/ 启停与运行时配置脚本
├── tests/ 根级生产配置测试
└── docker-compose.yml
📚 文档与教程
- 整体架构
- API 架构
- Memory / Tool Control Plane
- RAG 知识库与 Skill 注册中心
- Web 与 TUI 客户端
- 完整教程目录 —— 从最小可运行服务逐步演进到完整控制平面
🤝 贡献
欢迎提交 Issue 与 Pull Request。提交前请运行对应的测试与类型检查,并确保不提交真实密钥与 .env。
📄 License
AtlasAgent · Build agents that can explain what they know, what they did, and how to recover.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi