auto-sync: 2026-05-16 23:34:26

This commit is contained in:
cfdaily
2026-05-16 23:34:26 +08:00
parent baf7ddb32c
commit 9620fbc7a4
2 changed files with 161 additions and 7 deletions
+7 -6
View File
@@ -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 ticker30s
├── asyncio background task: Inbox watcher1s 轮询)
── ActiveAgentCounter(异步信号量
── Agent spawn: asyncio.create_subprocess_exec(异步非阻塞
└── ActiveAgentCounterasyncio.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 作为外部通知通道
```
+154 -1
View File
@@ -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. 技术栈
| 组件 | 选型 | 版本 | 理由 |
|------|------|------|------|