auto-sync: 2026-05-16 23:34:26
This commit is contained in:
@@ -41,16 +41,17 @@ PM2 (进程管理器)
|
||||
|
||||
进程内部结构:
|
||||
sanguo-moziplus-v2
|
||||
├── uvicorn (FastAPI)
|
||||
├── uvicorn (FastAPI) — asyncio event loop
|
||||
│ ├── API 路由(黑板/Daemon/SSE/项目)
|
||||
│ ├── 静态文件服务(frontend/dist/)
|
||||
│ └── SSE 推送端点(/api/events)
|
||||
├── asyncio background task: Daemon ticker(30s)
|
||||
├── asyncio background task: Inbox watcher(1s 轮询)
|
||||
└── ActiveAgentCounter(异步信号量)
|
||||
├── Agent spawn: asyncio.create_subprocess_exec(异步非阻塞)
|
||||
└── ActiveAgentCounter(asyncio.Semaphore)
|
||||
```
|
||||
|
||||
**关键:v2 是单进程。** Daemon ticker 和 API 在同一个 asyncio event loop 中。不新增 PM2 进程。
|
||||
**纯 asyncio 单线程。** Daemon ticker、API、SSE、Agent spawn 全部在同一个 asyncio event loop 中,无同步阻塞调用。Full Agent spawn 用 `asyncio.create_subprocess_exec`(不 await 完成),Subagent 用 Gateway 内部 API。不新增 PM2 进程。
|
||||
|
||||
---
|
||||
|
||||
@@ -376,9 +377,9 @@ Phase 4: v1 下线
|
||||
├── v2 可选接管 8082
|
||||
└── v1 代码和数据库保留只读(历史归档)
|
||||
|
||||
Phase 5: Mail 逐步下线
|
||||
├── 黑板评论替代 Mail 协作
|
||||
├── 逐个 Agent 关闭 Mail poller
|
||||
Phase 5: Mail 逐步下线(远期目标,与黑板评论长期共存)
|
||||
├── v2 上线后 Mail 和黑板评论并行
|
||||
├── 所有 Agent 的 Skill 更新支持黑板评论后逐步关闭 Mail poller
|
||||
└── 最终只保留 Mail 作为外部通知通道
|
||||
```
|
||||
|
||||
|
||||
@@ -7,7 +7,160 @@
|
||||
|
||||
---
|
||||
|
||||
## 1. 技术栈
|
||||
## 1. 总体技术架构
|
||||
|
||||
### 1.1 全局架构图
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ 用户层 │
|
||||
│ ┌──────────────────┐ ┌──────────────────┐ │
|
||||
│ │ Agent 对话入口 │ │ Dashboard (8083) │ │
|
||||
│ │ (OpenClaw Chat) │ │ React + Vite │ │
|
||||
│ └────────┬─────────┘ └────────┬─────────┘ │
|
||||
│ │ │ │
|
||||
└───────────┼───────────────────────┼────────────────────────────────────────┘
|
||||
│ │ SSE
|
||||
│ CLI / sessions_send │ REST API
|
||||
▼ ▼
|
||||
┌───────────────────────────────────────────────────────────────────────────┐
|
||||
│ API 层 (FastAPI) │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │ 黑板 API │ │ Daemon │ │ SSE 推送 │ │ 项目管理 │ │
|
||||
│ │ CRUD │ │ 控制API │ │ /events │ │ API │ │
|
||||
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
|
||||
└───────┼────────────┼────────────┼────────────┼────────────────────────────┘
|
||||
│ │ │ │
|
||||
┌───────┼────────────┼────────────┼────────────┼────────────────────────────┐
|
||||
│ │ Daemon 引擎层 (asyncio event loop) │
|
||||
│ │ │ │ │ │
|
||||
│ ┌────▼────────────▼────────────▼────────────▼─────┐ │
|
||||
│ │ Daemon ticker (30s) │ │
|
||||
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │
|
||||
│ │ │ Inbox │ │ 审查流水线│ │ 依赖推进/反驳权 │ │ │
|
||||
│ │ │ JSONL │ │ (4级分级) │ │ /蒸馏/健康自检 │ │ │
|
||||
│ │ └──────────┘ └──────────┘ └──────────────────┘ │ │
|
||||
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │
|
||||
│ │ │ Agent │ │ Bootstrap│ │ ActiveAgent │ │ │
|
||||
│ │ │ 调度器 │ │ 拼装器 │ │ Counter │ │ │
|
||||
│ │ └────┬─────┘ └──────────┘ └──────────────────┘ │ │
|
||||
│ └───────┼─────────────────────────────────────────┘ │
|
||||
│ │ 3级调度: Daemon直接 / Full Agent / Subagent │
|
||||
│ │ │
|
||||
│ ┌───────▼─────────────────────────────────────────┐ │
|
||||
│ │ Agent Spawn 层 │ │
|
||||
│ │ asyncio.create_subprocess_exec │ │
|
||||
│ │ ┌──────────────┐ ┌──────────────┐ │ │
|
||||
│ │ │ Full Agent │ │ Subagent │ │ │
|
||||
│ │ │ (openclaw │ │ (sessions_ │ │ │
|
||||
│ │ │ agent CLI) │ │ spawn API) │ │ │
|
||||
│ │ └──────┬───────┘ └──────┬───────┘ │ │
|
||||
│ └─────────┼───────────────────┼───────────────────┘ │
|
||||
│ │ │ │
|
||||
│ ┌─────────▼───────────────────▼───────────────────┐ │
|
||||
│ │ Agent 执行环境 │ │
|
||||
│ │ SOUL.md + IDENTITY.md + Skills + 工具集 │ │
|
||||
│ │ ┌──────────────────────────────────────┐ │ │
|
||||
│ │ │ L0 铁律 (Hook注入) │ │ │
|
||||
│ │ │ L1 角色 (Agent自带) │ │ │
|
||||
│ │ │ L2 引擎注入 (操作规范+背景+上下文) │ │ │
|
||||
│ │ │ L3 被动参考 (Skill按需加载) │ │ │
|
||||
│ │ └──────────────────────────────────────┘ │ │
|
||||
│ └──────────────┬──────────────────────────────────┘ │
|
||||
│ │ 产出写入/评论/决策/观察 │
|
||||
│ ▼ │
|
||||
│ ┌──────────────────────────────────────────────────┐ │
|
||||
│ │ 黑板数据层 (per-project SQLite) │ │
|
||||
│ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │
|
||||
│ │ │tasks │ │comments│ │outputs│ │reviews│ │events│ │ │
|
||||
│ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ │
|
||||
│ │ ┌──────┐ ┌──────┐ ┌──────────────┐ │ │
|
||||
│ │ │decisions│ │observations│ │experiences│ │ │
|
||||
│ │ └──────┘ └──────┘ └──────────────┘ │ │
|
||||
│ └──────────────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌──────────────▼──────────────────────────────────┐ │
|
||||
│ │ 配置 & 知识层 │ │
|
||||
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
|
||||
│ │ │ _registry │ │ guardrails │ │ review_ │ │ │
|
||||
│ │ │ .yaml │ │ .yaml │ │ protocols/ │ │ │
|
||||
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
|
||||
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
|
||||
│ │ │ prompt_ │ │ schemas/ │ │ skills/ │ │ │
|
||||
│ │ │ templates/ │ │ (JSON) │ │ (builtin+ │ │ │
|
||||
│ │ │ │ │ │ │ custom) │ │ │
|
||||
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
|
||||
│ │ ┌────────────┐ │ │
|
||||
│ │ │ project.yaml│ (per-project 覆盖) │ │
|
||||
│ │ └────────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ 全部运行在单一 asyncio event loop 中(与 FastAPI 共享) │
|
||||
└───────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 1.2 核心数据流
|
||||
|
||||
```
|
||||
用户需求 → 庞统规划 → 任务拆解 → 写入黑板
|
||||
│
|
||||
┌───────────────┘
|
||||
▼
|
||||
Daemon tick 扫描
|
||||
│
|
||||
┌───────────┼───────────┐
|
||||
▼ ▼ ▼
|
||||
pending任务 review任务 blocked任务
|
||||
调度Agent执行 处理审查流水线 检查依赖推进
|
||||
│ │
|
||||
▼ ▼
|
||||
Agent执行 ┌─────────────┐
|
||||
(Full/Sub) │ 审查分级 │
|
||||
│ │ high→辩论 │
|
||||
▼ │ standard→单审│
|
||||
写入产出 │ low→Guardrail│
|
||||
到黑板 └──────┬──────┘
|
||||
│ │
|
||||
│ ┌──────┴──────┐
|
||||
│ ▼ ▼
|
||||
│ 通过→done 不通过→反驳权
|
||||
│ │
|
||||
│ max_rounds
|
||||
│ │
|
||||
│ 超轮次→庞统裁决
|
||||
│ │
|
||||
└───────────────────┘
|
||||
│
|
||||
▼
|
||||
任务完成 → 一级蒸馏 → 经验注入
|
||||
```
|
||||
|
||||
### 1.3 组件职责矩阵
|
||||
|
||||
| 层 | 组件 | 职责 | 技术 |
|
||||
|----|------|------|------|
|
||||
| **用户层** | Agent 对话 | 自然语言交互入口 | OpenClaw Chat |
|
||||
| | Dashboard | 可视化监控/配置/Checkpoint | React + Vite (8083) |
|
||||
| **API 层** | FastAPI | REST API + SSE + 静态文件 | uvicorn |
|
||||
| **引擎层** | Daemon ticker | 30s 状态扫描 + 事件驱动 | asyncio background task |
|
||||
| | 调度器 | 三级调度 (Daemon/Full/Sub) | DISPATCH_RULES 配置表 |
|
||||
| | 审查流水线 | 分级审查 + 反驳权 + 辩论 | review_flow.py |
|
||||
| | Bootstrap 拼装 | 四层上下文 L0-L3 | prompt_templates + YAML |
|
||||
| | Inbox watcher | JSONL 秒级事件推送 | asyncio 1s 轮询 |
|
||||
| | 健康自检 | 逻辑死循环检测 | 连续 N tick 无变更告警 |
|
||||
| **Agent 层** | Full Agent | 有身份角色的任务执行 | openclaw agent CLI |
|
||||
| | Subagent | 无身份一次性检查 | sessions_spawn API |
|
||||
| **数据层** | 黑板 DB | 任务/评论/产出/审查/经验 | SQLite per-project |
|
||||
| | Inbox | 跨进程事件队列 | JSONL + truncate |
|
||||
| | _registry.yaml | 项目注册表 | YAML (人可读) |
|
||||
| **配置层** | guardrails.yaml | L1/L2 检查规则 | YAML |
|
||||
| | review_protocols/ | 审查协议 | YAML |
|
||||
| | skills/ | 三层载体 (Memory/Skill/Rule) | SKILL.md + meta.yaml |
|
||||
| | project.yaml | per-project 配置覆盖 | YAML |
|
||||
|
||||
---
|
||||
|
||||
## 2. 技术栈
|
||||
|
||||
| 组件 | 选型 | 版本 | 理由 |
|
||||
|------|------|------|------|
|
||||
|
||||
Reference in New Issue
Block a user