Files
openfang/plans/radiant-yawning-raven.md
iven 92e5def702
Some checks failed
CI / Check / macos-latest (push) Has been cancelled
CI / Check / ubuntu-latest (push) Has been cancelled
CI / Check / windows-latest (push) Has been cancelled
CI / Test / macos-latest (push) Has been cancelled
CI / Test / ubuntu-latest (push) Has been cancelled
CI / Test / windows-latest (push) Has been cancelled
CI / Clippy (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Security Audit (push) Has been cancelled
CI / Secrets Scan (push) Has been cancelled
CI / Install Script Smoke Test (push) Has been cancelled
初始化提交
2026-03-01 16:24:24 +08:00

1733 lines
48 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.

# OpenFang 项目深度分析与头脑风暴报告
## 目录
1. [项目概览](#1-项目概览)
2. [架构深度分析](#2-架构深度分析)
3. [核心优势识别](#3-核心优势识别)
4. [潜在改进领域](#4-潜在改进领域)
5. [技术创新机会](#5-技术创新机会)
6. [生态系统扩展](#6-生态系统扩展)
7. [商业化路径](#7-商业化路径)
8. [头脑风暴:未来方向](#8-头脑风暴未来方向)
---
## 1. 项目概览
### 1.1 基本信息
- **项目名称**: OpenFang - 开源 Agent 操作系统
- **版本**: v0.1.0 (2026-02-24 发布)
- **语言**: Rust (2021 edition)
- **架构**: 14-crate 工作空间
- **测试覆盖**: 1731+ 测试用例
### 1.2 核心定位
OpenFang 是一个用 Rust 编写的 Agent 操作系统,提供完整的 Agent 生命周期管理、多 LLM 提供商支持、40+ 消息渠道集成,以及可视化工作流构建能力。
### 1.3 竞争格局
| 维度 | OpenClaw | OpenFang | 优势方 |
|------|----------|----------|--------|
| 性能/内存 | Node.js (~200MB) | Rust (~30MB) | **OpenFang** |
| 消息渠道 | ~15 | **40+** | **OpenFang** |
| 内置工具 | ~19 | **41** | **OpenFang** |
| 安全系统 | Token + sandbox | **16 层防御** | **OpenFang** |
| Agent 模板 | 手动配置 | **30 预配置** | **OpenFang** |
| 工作流引擎 | Cron + webhooks | **完整 DAG** | **OpenFang** |
| 知识图谱 | 扁平向量存储 | **实体关系图** | **OpenFang** |
| P2P 网络 | 无 | **OFP 协议** | **OpenFang** |
| WASM 沙箱 | 仅 Docker | **双计量 WASM** | **OpenFang** |
| 桌面应用 | Electron (~200MB) | **Tauri (~30MB)** | **OpenFang** |
| LLM 提供商 | ~15 | **27/130+ 模型** | **OpenFang** |
| 可视化构建器 | 无 | **拖拽式** | **OpenFang** |
| 移动应用 | iOS + Android | 仅 Web 响应式 | OpenClaw |
| 语音唤醒 | 有 | 基础语音 | OpenClaw |
**结论**: OpenFang 在 18 个类别中领先 15 个。
---
## 2. 架构深度分析
### 2.1 工作空间结构
```
┌─────────────────────────────────────────────────────────────────┐
│ 表现层 (Presentation) │
│ CLI (openfang-cli) / Desktop (Tauri) / HTTP API │
└───────────────────────────────┬─────────────────────────────────┘
┌───────────────────────────────▼─────────────────────────────────┐
│ 服务层 (Service) │
│ openfang-api (Axum) │
│ HTTP/WebSocket/SSE/OpenAI-Compat/A2A │
└───────────────────────────────┬─────────────────────────────────┘
┌───────────────────────────────▼─────────────────────────────────┐
│ 核心层 (Kernel) │
│ openfang-kernel │
│ Registry / Scheduler / Supervisor / EventBus / Metering │
└──────┬────────────────────────────────────────────────┬─────────┘
│ │
┌──────▼──────┐ ┌──────────────┐ ┌───────────────────▼─────────┐
│ Runtime │ │ Memory │ │ Integrations │
│ (LLM/WASM) │ │ (SQLite/向量)│ │ (channels/skills/hands/ext) │
└──────┬──────┘ └──────────────┘ └─────────────────────────────┘
┌──────▼──────────────────────────────────────────────────────────┐
│ 基础类型层 (Types) │
│ openfang-types │
│ Agent / Message / Tool / Config / Error │
└─────────────────────────────────────────────────────────────────┘
```
### 2.2 Crate 职责矩阵
| Crate | 职责 | 依赖数 | 关键特性 |
|-------|------|--------|----------|
| `openfang-types` | 基础类型定义 | 0 | 零依赖,被所有 crate 使用 |
| `openfang-memory` | 存储层 | 1 | SQLite + 语义搜索 + 知识图谱 |
| `openfang-runtime` | Agent 运行时 | 3 | LLM 驱动 + 工具执行 + WASM |
| `openfang-kernel` | 核心协调器 | 8+ | 组装所有子系统 |
| `openfang-api` | HTTP 服务 | 10+ | 100+ 端点 + WebSocket |
| `openfang-wire` | P2P 协议 | 1 | OFP + HMAC 认证 |
| `openfang-channels` | 消息渠道 | 2 | 40+ 适配器 |
| `openfang-skills` | 技能系统 | 1 | 4 运行时 + 60 技能 |
| `openfang-hands` | 自主能力包 | 2 | 7 预构建 Agent |
| `openfang-extensions` | 集成系统 | 2 | 25+ MCP 模板 |
| `openfang-cli` | 命令行 | 5 | 14+ 子命令 |
| `openfang-desktop` | 桌面应用 | 6 | Tauri 2.0 |
| `openfang-migrate` | 迁移工具 | 2 | OpenClaw 导入 |
### 2.3 关键设计模式
1. **KernelHandle Trait** - 解决 runtime ↔ kernel 循环依赖
2. **Plugin Architecture** - Skills/Hands/Extensions 可扩展
3. **Event-Driven** - EventBus 发布订阅模式
4. **Capability-Based Security** - 细粒度权限控制
5. **Dual Metering** - WASM fuel + epoch 双重限制
---
## 3. 核心优势识别
### 3.1 技术优势
#### 性能优势
- **内存占用**: 30MB vs Electron 200MB (85% 减少)
- **单二进制部署**: 无运行时依赖
- **异步高效**: Tokio 运行时,支持高并发
#### 安全优势 (16 层防御)
1. Capability-based access control
2. Path traversal protection
3. SSRF protection (私有 IP 阻断)
4. Ed25519 signed manifests
5. Merkle hash chain audit
6. Information flow taint tracking
7. HMAC-SHA256 mutual auth
8. API key Bearer auth
9. GCRA rate limiter
10. Security headers (CSP/HSTS/X-Frame-Options)
11. Secret zeroization
12. Subprocess environment isolation
13. Health endpoint redaction
14. Loop guard with SHA256 detection
15. Session repair
16. Circuit breaker thresholds
#### 架构优势
- **模块化**: 清晰的 crate 边界
- **可扩展**: Plugin 系统设计
- **可观测**: Prometheus metrics + audit log
### 3.2 功能优势
| 功能领域 | 具体优势 |
|----------|----------|
| LLM 支持 | 27 提供商 / 130+ 模型 / 智能路由 / Fallback |
| 工具系统 | 41 内置工具 / 动态加载 / Profile 过滤 |
| 工作流 | DAG 引擎 / 并行 / 条件 / 循环 / 可视化构建 |
| 渠道 | 40+ 平台 / 统一抽象 / RBAC |
| Agent | 30 模板 / 多模式调度 / 父子关系 |
| 记忆 | SQLite + 向量 + 知识图谱 |
### 3.3 生态优势
- **SDK**: JavaScript + Python 官方客户端
- **迁移**: OpenClaw 一键导入
- **兼容**: OpenAI API / MCP / A2A 协议
- **桌面**: Tauri 2.0 原生应用
---
## 4. 潜在改进领域
### 4.1 当前短板
| 领域 | 问题描述 | 优先级 |
|------|----------|--------|
| 移动端 | 无原生 iOS/Android 应用 | 高 |
| 语音唤醒 | 缺少 wake word 检测 | 中 |
| 多租户 | 无 SaaS 多租户隔离 | 中 |
| 集群 | 无分布式部署支持 | 中 |
| 可视化调试 | Agent 决策过程不透明 | 低 |
| 测试覆盖 | 缺少 E2E 自动化测试 | 中 |
### 4.2 技术债务
1. **Agent Registry** - 仅内存存储,重启丢失 (部分 SQLite 持久化)
2. **Peer Registry** - 无服务发现,需手动配置节点
3. **知识图谱** - `max_depth` 未完全实现递归遍历
4. **Channels** - 部分适配器未完整测试
5. **WASM** - 仅支持 wasi, 不支持 wasip2
### 4.3 文档缺口
- 缺少架构决策记录 (ADR)
- API 文档未自动生成
- 缺少贡献者指南详细版
- 缺少性能调优指南
---
## 5. 技术创新机会
### 5.1 短期机会 (1-3 个月)
#### A. Agent 编排语言 (Agent Orchestration Language)
```
概念: DSL for multi-agent workflows
价值: 简化复杂 Agent 协作场景
实现: 扩展现有 workflow TOML
示例:
parallel:
- agent: researcher
task: "搜索最新 AI 论文"
- agent: analyst
task: "分析市场趋势"
collect: merge_results
then:
agent: writer
task: "生成报告"
```
#### B. 实时协作层
```
概念: WebSocket-based multi-user sessions
价值: 团队共享 Agent 会话
实现: 扩展 WebSocket 协议
功能:
- 会话共享/移交
- 实时光标/选区
- 评论/批注
```
#### C. Agent 市场
```
概念: 去中心化 Agent 分发
价值: 社区驱动的 Agent 生态
实现:
- Agent Card 扩展
- IPFS/去中心化存储
- 信誉/评分系统
```
### 5.2 中期机会 (3-6 个月)
#### D. 自适应工具学习
```
概念: Agent 自动学习新工具
价值: 减少手动配置
实现:
- 工具 schema 推断
- API 文档解析
- 示例学习
```
#### E. 联邦 Agent 网络
```
概念: 跨组织的 Agent 协作
价值: 隐私保护的分布式 AI
实现:
- 扩展 OFP 协议
- 同态加密 (可选)
- 差分隐私
```
#### F. 多模态 Agent 记忆
```
概念: 图像/音频/视频记忆存储
价值: 更丰富的上下文
实现:
- 扩展 memory substrate
- 多模态嵌入
- 跨模态检索
```
### 5.3 长期机会 (6-12 个月)
#### G. Agent 操作系统内核
```
概念: 真正的 "Agent OS"
价值: 独立的 Agent 运行环境
实现:
- unikernel 设计
- 硬件加速
- 形式化验证
```
#### H. 神经符号 Agent
```
概念: LLM + 规则引擎混合
价值: 可解释 + 灵活
实现:
- 规则 DSL
- 神经接口
- 推理链追踪
```
#### I. Agent 沙箱云
```
概念: 云原生 Agent 执行环境
价值: 弹性扩展 + 隔离
实现:
- Firecracker microVM
- Kubernetes operator
- 按需冷启动
```
---
## 6. 生态系统扩展
### 6.1 技能生态
#### 当前状态
- 60 个内置技能
- 4 种运行时 (Python/WASM/Node/Builtin)
- FangHub 市场
#### 扩展方向
1. **社区技能仓库** - GitHub-based skill distribution
2. **技能版本管理** - 语义化版本 + 依赖解析
3. **技能测试框架** - 自动化技能验证
4. **技能性能分析** - 资源使用监控
### 6.2 渠道生态
#### 当前状态
- 40+ 消息渠道
- 统一 ChannelAdapter trait
- Bridge 管理器
#### 扩展方向
1. **协议适配器** - MQTT/CoAP/AMQP
2. **IoT 网关** - Home Assistant/Philips Hue
3. **企业系统** - SAP/Salesforce/ServiceNow
4. **区块链** - Ethereum/Solana 智能合约
### 6.3 工具生态
#### 当前状态
- 41 个内置工具
- MCP 客户端/服务器
- 动态工具加载
#### 扩展方向
1. **数据库工具** - PostgreSQL/MySQL/MongoDB
2. **云服务工具** - AWS/GCP/Azure SDK
3. **数据分析工具** - Pandas/Polars 集成
4. **安全工具** - 漏洞扫描/渗透测试
---
## 7. 商业化路径
### 7.1 开源核心模式 (Open Core)
| 层级 | 功能 | 授权 |
|------|------|------|
| 核心 | Agent 运行时 + 基础工具 | MIT/Apache |
| Pro | 高级工作流 + 企业渠道 | 商业 |
| Enterprise | SSO + 审计 + SLA | 商业 |
| Cloud | 托管服务 + 自动扩展 | SaaS |
### 7.2 潜在收入流
1. **企业许可** - 大规模部署授权
2. **云托管** - OpenFang Cloud (类似 OpenAI Assistants)
3. **专业服务** - 咨询/定制开发/培训
4. **市场抽成** - Hands/Skills 市场交易费
5. **支持订阅** - 技术支持 + SLA
### 7.3 竞争定位
```
价格
│ ┌──────────────────┐
│ │ OpenAI │
│ │ Assistants │
│ └──────────────────┘
│ ▲
│ ┌─────┴────────┐
│ │ OpenFang │
│ │ Cloud │
│ └──────────────┘
│ ▲
│ ┌─────┴────────┐
│ │ OpenFang │
│ │ Enterprise │
│ └──────────────┘
│ ▲
│ ┌─────┴────────┐
│ │ OpenFang │ ◄── 开源免费
│ │ Core │
│ └──────────────┘
└──────────────────────────────────► 功能
基础 Pro Enterprise
```
---
## 8. 头脑风暴:未来方向
### 8.1 产品愿景
**"成为 Agent 时代的 Linux"**
- 像 Linux 是服务器操作系统一样
- OpenFang 成为 Agent 操作系统
- 开放、可扩展、高性能
### 8.2 技术路线图建议
#### Phase 1: 巩固基础 (Q2 2026)
- [ ] 完善测试覆盖率 (目标 90%+)
- [ ] 性能基准测试 + 优化
- [ ] 文档自动化 (API/架构)
- [ ] 移动端 Web PWA
#### Phase 2: 生态扩展 (Q3 2026)
- [ ] 社区技能市场
- [ ] 第三方工具 SDK
- [ ] Agent 模板贡献流程
- [ ] 多语言 SDK (Go/Java/Rust)
#### Phase 3: 企业就绪 (Q4 2026)
- [ ] 多租户架构
- [ ] SSO 集成 (SAML/OIDC)
- [ ] 合规认证 (SOC2/GDPR)
- [ ] 企业支持计划
#### Phase 4: 云原生 (2027)
- [ ] Kubernetes Operator
- [ ] Serverless Agent 执行
- [ ] 多区域部署
- [ ] 联邦学习支持
### 8.3 创新实验项目
#### 项目 A: Agent 梦境
```
概念: Agent 空闲时自主探索/学习
实现:
- 后台思考循环
- 知识整合
- 技能优化
启发: 人类睡眠学习
```
#### 项目 B: Agent 人格持久化
```
概念: 可移植的 Agent 身份/记忆
实现:
- 加密身份包
- 跨平台迁移
- 人格市场
启发: 数字孪生
```
#### 项目 C: Agent 宪法
```
概念: 可配置的行为准则
实现:
- 宪法 DSL
- 行为审计
- 违规纠正
启发: AI 对齐研究
```
#### 项目 D: 群体智能
```
概念: Agent 蜂群协作
实现:
-涌现行为
- 自组织
- 分布式决策
启发: 蚁群/蜂群算法
```
### 8.4 关键成功因素
| 因素 | 当前状态 | 目标状态 |
|------|----------|----------|
| 社区活跃度 | 起步阶段 | 活跃贡献者 100+ |
| 企业采用 | 无 | 10+ 企业客户 |
| 文档质量 | 基础 | 完整 + 示例 |
| 性能 | 优秀 | 行业领先 |
| 安全 | 16 层 | 认证级别 |
| 生态 | 60 技能 | 500+ 技能 |
### 8.5 风险评估
| 风险 | 概率 | 影响 | 缓解措施 |
|------|------|------|----------|
| LLM 提供商封锁 | 中 | 高 | 多提供商 + 本地模型 |
| 竞争对手复制 | 高 | 中 | 快速迭代 + 社区壁垒 |
| 安全漏洞 | 中 | 高 | 审计 + 赏金计划 |
| 许可证纠纷 | 低 | 高 | 法律审查 + CLA |
| 核心开发者流失 | 中 | 高 | 文档 + 知识传递 |
---
## 总结
OpenFang 是一个技术扎实、架构清晰的 Agent 操作系统。它在性能、安全、功能丰富度方面相比竞争对手有显著优势。未来的成功取决于:
1. **生态建设** - 社区驱动的技能/Agent/工具生态
2. **企业采用** - 从开源项目到企业解决方案
3. **持续创新** - 在 Agent 编排、多模态、群体智能等方向探索
4. **商业模式** - 找到可持续的开源商业化路径
**核心建议**: 专注于 "开发者体验" 和 "企业就绪" 两条主线,同时保持开源社区的活力。
---
# 附录:详细执行计划
以下是根据用户需求制定的四个详细方向计划。
---
## 附录 A: 具体功能实现计划
### A.1 Agent 编排语言 (AOL) - 详细设计
#### 目标
创建一种声明式 DSL简化多 Agent 协作场景的配置。
#### 核心语法设计
```toml
# workflow.toml
[workflow]
name = "research-pipeline"
description = "研究 -> 分析 -> 写作 流水线"
[workflow.steps]
# 并行执行阶段
[[workflow.steps.parallel]]
agent = "researcher"
task = "搜索关于 {{topic}} 的最新研究论文"
output = "papers"
[[workflow.steps.parallel]]
agent = "analyst"
task = "分析 {{topic}} 的市场趋势"
output = "market_analysis"
# 收集阶段
[workflow.steps.collect]
strategy = "merge" # merge, concatenate, first_non_empty
inputs = ["papers", "market_analysis"]
output = "combined_research"
# 串行阶段
[[workflow.steps.sequential]]
agent = "writer"
task = "基于 {{combined_research}} 生成报告"
output = "final_report"
# 条件分支
[workflow.steps.condition]
if = "{{complexity_score}} > 0.8"
then = { agent = "expert", task = "审核报告" }
else = { agent = "editor", task = "编辑报告" }
```
#### 实现计划
| 阶段 | 任务 | 文件 | 预估时间 |
|------|------|------|----------|
| 1 | 定义 AST 类型 | `openfang-types/src/workflow_dsl.rs` | 2 天 |
| 2 | TOML 解析器 | `openfang-runtime/src/workflow/parser.rs` | 3 天 |
| 3 | 变量展开引擎 | `openfang-runtime/src/workflow/variables.rs` | 2 天 |
| 4 | 并行执行器 | `openfang-runtime/src/workflow/parallel.rs` | 3 天 |
| 5 | 条件分支 | `openfang-runtime/src/workflow/condition.rs` | 2 天 |
| 6 | API 端点 | `openfang-api/src/routes.rs` | 1 天 |
| 7 | UI 集成 | `static/js/pages/workflows.js` | 2 天 |
| 8 | 测试 | `tests/workflow_dsl_test.rs` | 2 天 |
**总计**: ~17 天
#### API 设计
```
POST /api/workflows/compile
Body: { "toml": "..." }
Response: { "ast": {...}, "validation_errors": [] }
POST /api/workflows/{id}/execute
Body: { "variables": {...} }
Response: { "execution_id": "...", "status": "running" }
GET /api/workflows/{id}/executions/{exec_id}
Response: { "status": "...", "steps": [...], "outputs": {...} }
```
---
### A.2 实时协作层 - 详细设计
#### 目标
支持多用户实时共享 Agent 会话。
#### 协议设计
```json
// 客户端 -> 服务器
{
"type": "session_join",
"session_id": "uuid",
"user_id": "uuid",
"cursor": { "line": 10, "column": 5 }
}
// 服务器 -> 客户端 (广播)
{
"type": "presence_update",
"users": [
{ "id": "uuid", "name": "Alice", "cursor": {...}, "color": "#ff0000" }
]
}
// 评论/批注
{
"type": "annotation",
"message_id": "uuid",
"user_id": "uuid",
"content": "这个回答不准确",
"range": { "start": 0, "end": 50 }
}
```
#### 实现计划
| 阶段 | 任务 | 文件 | 预估时间 |
|------|------|------|----------|
| 1 | 扩展 WebSocket 协议 | `openfang-api/src/ws.rs` | 2 天 |
| 2 | Presence 管理器 | `openfang-kernel/src/presence.rs` | 2 天 |
| 3 | 注释存储 | `openfang-memory/src/annotations.rs` | 2 天 |
| 4 | 前端 Presence UI | `static/js/components/presence.js` | 3 天 |
| 5 | 前端注释 UI | `static/js/components/annotations.js` | 2 天 |
| 6 | 测试 | `tests/collab_test.rs` | 2 天 |
**总计**: ~13 天
---
### A.3 Agent 市场 - 详细设计
#### 目标
创建去中心化的 Agent 分发平台。
#### Agent Card 扩展
```json
{
"schema_version": "2.0",
"id": "com.example.researcher",
"name": "Research Agent",
"description": "高级研究助手",
"version": "1.2.0",
"author": { "name": "OpenFang Team", "verified": true },
"category": "research",
"tags": ["web-search", "analysis", "citations"],
"rating": { "average": 4.8, "count": 1250 },
"downloads": 15000,
"price": "free",
"license": "MIT",
"manifest_url": "ipfs://QmXxx...",
"signature": "ed25519:..."
}
```
#### 实现计划
| 阶段 | 任务 | 预估时间 |
|------|------|----------|
| 1 | Agent Card v2 schema | 1 天 |
| 2 | IPFS 集成 | 3 天 |
| 3 | 签名验证 | 2 天 |
| 4 | 评分系统 | 2 天 |
| 5 | 搜索索引 | 2 天 |
| 6 | UI 市场页面 | 3 天 |
| 7 | 一键安装 | 2 天 |
**总计**: ~15 天
---
## 附录 B: 深入架构分析
### B.1 Kernel 模块深度分析
#### 核心结构
```rust
// openfang-kernel/src/kernel.rs
pub struct OpenFangKernel {
// 配置
pub config: KernelConfig,
// Agent 管理
pub registry: AgentRegistry, // Agent 注册表
pub scheduler: AgentScheduler, // 资源调度
pub supervisor: Supervisor, // 进程监控
// 存储
pub memory: Arc<MemorySubstrate>, // 统一存储
// 事件
pub event_bus: EventBus, // 发布订阅
// 执行
pub workflows: WorkflowEngine, // 工作流
pub triggers: TriggerEngine, // 触发器
pub background: BackgroundExecutor, // 后台任务
// 安全
pub audit_log: Arc<AuditLog>, // 审计日志
pub auth: AuthManager, // RBAC
pub capabilities: CapabilityManager, // 权限
// 计量
pub metering: Arc<MeteringEngine>, // 成本追踪
// LLM
pub default_driver: Arc<dyn LlmDriver>,
pub model_catalog: RwLock<ModelCatalog>,
// 扩展
pub skill_registry: RwLock<SkillRegistry>,
pub hand_registry: HandRegistry,
pub extension_registry: RwLock<IntegrationRegistry>,
pub mcp_connections: Mutex<Vec<McpConnection>>,
// 网络
pub peer_registry: Option<PeerRegistry>,
pub peer_node: Option<Arc<PeerNode>>,
pub channel_adapters: DashMap<String, Arc<dyn ChannelAdapter>>,
// ... 更多字段
}
```
#### 关键流程
**1. Agent 创建流程**
```
spawn_agent_with_parent()
├─→ 生成 AgentId (UUID v4)
├─→ 创建 Session (MemorySubstrate)
├─→ 创建工作区目录结构
│ ├── data/
│ ├── output/
│ ├── sessions/
│ ├── skills/
│ ├── logs/
│ └── memory/
├─→ 生成身份文件
│ ├── SOUL.md
│ ├── USER.md
│ ├── TOOLS.md
│ ├── MEMORY.md
│ ├── AGENTS.md
│ ├── BOOTSTRAP.md
│ └── IDENTITY.md
├─→ 注册能力 (CapabilityManager)
├─→ 注册调度 (AgentScheduler)
├─→ 创建 AgentEntry
├─→ 持久化到 SQLite
├─→ 记录审计日志
└─→ 发布 AgentSpawned 事件
```
**2. 消息处理流程**
```
send_message_streaming()
├─→ 检查配额 (Scheduler)
├─→ 获取 Agent Entry (Registry)
├─→ 构建系统提示词 (PromptBuilder)
│ ├── 基础提示词
│ ├── 召回记忆 (MemorySubstrate)
│ ├── 身份文件
│ └── 技能上下文
├─→ 准备工具定义 (CapabilityManager)
├─→ 调用 run_agent_loop_streaming()
│ │
│ ├─→ 上下文管理
│ │ ├── Token 估算
│ │ ├── 溢出恢复
│ │ └── 紧急压缩
│ │
│ ├─→ LLM 调用 (带重试/熔断)
│ │ ├── call_with_retry()
│ │ └── stream_with_retry()
│ │
│ └─→ 响应处理
│ ├── EndTurn → 返回结果
│ ├── ToolUse → 执行工具 → 循环
│ └── MaxTokens → 继续生成
├─→ 保存会话 (MemorySubstrate)
├─→ 更新计量 (MeteringEngine)
└─→ 返回响应
```
### B.2 Runtime 模块深度分析
#### Agent Loop 核心逻辑
```rust
// openfang-runtime/src/agent_loop.rs
pub async fn run_agent_loop_streaming(
kernel: &dyn KernelHandle,
agent_id: AgentId,
session_id: SessionId,
user_message: String,
tx: Sender<StreamEvent>,
) -> Result<AgentLoopResult, AgentLoopError> {
let mut iterations = 0;
let mut messages = load_history(&session_id)?;
// 添加用户消息
messages.push(Message {
role: Role::User,
content: MessageContent::Text(user_message),
});
loop {
iterations += 1;
// 安全检查
if iterations > MAX_ITERATIONS {
return Err(AgentLoopError::MaxIterationsExceeded);
}
// 上下文管理
if needs_compaction(&messages)? {
messages = compact_messages(&messages)?;
}
// 构建 LLM 请求
let request = CompletionRequest {
model: model_id.clone(),
messages: messages.clone(),
tools: available_tools.clone(),
max_tokens,
temperature,
system_prompt: build_system_prompt()?,
};
// 调用 LLM (流式)
let response = driver.stream(request, tx.clone()).await?;
// 处理响应
match response.stop_reason {
StopReason::EndTurn => {
// 保存会话
save_session(&session_id, &messages)?;
return Ok(AgentLoopResult {
response: response.content,
iterations,
});
}
StopReason::ToolUse => {
// 执行工具
for tool_call in response.tool_calls {
let result = execute_tool(&tool_call, kernel).await?;
messages.push(Message {
role: Role::User,
content: MessageContent::Blocks(vec![
ContentBlock::ToolResult(result)
]),
});
}
// 继续循环
}
StopReason::MaxTokens => {
// 继续生成
continue;
}
}
}
}
```
### B.3 Memory 模块深度分析
#### 三层存储架构
```
┌─────────────────────────────────────────────────────────────┐
│ MemorySubstrate │
│ (统一接口层) │
└───────────────────────────┬─────────────────────────────────┘
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Structured │ │ Semantic │ │ Knowledge │
│ (SQLite) │ │ (Vector) │ │ (Graph) │
└───────────────┘ └───────────────┘ └───────────────┘
│ │ │
▼ ▼ ▼
KV Store Embedding Entity-Relation
Sessions Similarity Graph Queries
Agent State Search Traversal
```
#### 知识图谱实现
```rust
// openfang-memory/src/knowledge.rs
pub struct KnowledgeGraph {
conn: rusqlite::Connection,
}
impl KnowledgeGraph {
// 添加实体
pub fn add_entity(&self, entity: &Entity) -> Result<String, Error> {
let id = uuid();
self.conn.execute(
"INSERT INTO entities (id, entity_type, name, properties) VALUES (?1, ?2, ?3, ?4)",
params![id, entity.entity_type, entity.name, json!(entity.properties)]
)?;
Ok(id)
}
// 添加关系
pub fn add_relation(&self, relation: &Relation) -> Result<(), Error> {
self.conn.execute(
"INSERT INTO relations (source_id, target_id, relation_type, properties)
VALUES (?1, ?2, ?3, ?4)",
params![relation.source_id, relation.target_id,
relation.relation_type, json!(relation.properties)]
)
}
// 图查询
pub fn query(&self, pattern: &GraphPattern) -> Result<Vec<GraphMatch>, Error> {
// 支持: 实体类型过滤、关系类型过滤、属性匹配
// TODO: max_depth 递归遍历
}
}
```
### B.4 架构改进建议
| 问题 | 当前状态 | 建议改进 | 优先级 |
|------|----------|----------|--------|
| Agent Registry 持久化 | 部分持久化 | 完全持久化 + WAL | 高 |
| 知识图谱递归遍历 | 未实现 | 实现 `max_depth` 遍历 | 中 |
| Peer 服务发现 | 手动配置 | mDNS/DNS-SD 自动发现 | 中 |
| WASM 运行时 | wasi only | 升级到 wasip2 | 低 |
| 热重载粒度 | 文件级别 | 字段级别 diff | 低 |
---
## 附录 C: 商业策略规划
### C.1 产品分层设计
#### OpenFang Core (开源免费)
```
功能:
- 完整 Agent 运行时
- 41 个内置工具
- 27 个 LLM 提供商
- 基础工作流引擎
- SQLite 存储
- 命令行工具
- Web UI
- 40 个消息渠道
限制:
- 单租户
- 无 SSO
- 社区支持
```
#### OpenFang Pro ($99/月)
```
额外功能:
- 高级工作流模板
- 企业渠道 (SAP/Salesforce)
- 优先级支持
- 月度功能抢先体验
- 技能市场高级内容
```
#### OpenFang Enterprise (定制报价)
```
额外功能:
- 多租户架构
- SSO (SAML/OIDC)
- 完整审计日志
- SLA 保证
- 专属客户经理
- 定制开发
- 培训服务
```
#### OpenFang Cloud (按使用计费)
```
定价模型:
- Agent 执行: $0.001/请求
- LLM 代理: 成本 + 10%
- 存储: $0.10/GB/月
- 带宽: $0.05/GB
免费层:
- 10,000 请求/月
- 1 GB 存储
- 5 GB 带宽
```
### C.2 市场进入策略
#### 第一阶段: 开发者采用 (0-6 个月)
```
目标: 1,000+ GitHub Stars, 100+ 活跃用户
策略:
1. Hacker News / Reddit 发布
2. AI/ML 会议演讲
3. 技术博客系列
4. 开发者文档完善
5. 社区 Discord/论坛
KPI:
- GitHub Stars: 1,000+
- 周活跃用户: 100+
- PR 贡献者: 20+
```
#### 第二阶段: 中小企业 (6-12 个月)
```
目标: 10+ 付费客户, $10K MRR
策略:
1. 产品引导式试用
2. 案例研究发布
3. 合作伙伴计划
4. 内容营销 (SEO)
5. 网络研讨会
KPI:
- 付费客户: 10+
- MRR: $10K
- 转化率: 5%
```
#### 第三阶段: 企业市场 (12-24 个月)
```
目标: 5+ 企业客户, $100K MRR
策略:
1. 企业销售团队
2. 合规认证 (SOC2)
3. Gartner/CB Insights 报道
4. 行业会议赞助
5. 咨询合作伙伴
KPI:
- 企业客户: 5+
- MRR: $100K
- 客户留存: 90%+
```
### C.3 竞争差异化
| 维度 | OpenAI Assistants | LangChain | AutoGPT | OpenFang |
|------|-------------------|-----------|---------|----------|
| 开源 | ❌ | ✅ | ✅ | ✅ |
| 自托管 | ❌ | ✅ | ✅ | ✅ |
| 性能 | 云端 | Python | Python | **Rust** |
| 工具生态 | 有限 | 丰富 | 中等 | **41+40 渠道** |
| 工作流 | 基础 | 链式 | 自主 | **DAG+可视化** |
| 安全 | 云端信任 | 用户负责 | 用户负责 | **16 层** |
| 成本 | 高 | LLM 费用 | LLM 费用 | **透明** |
### C.4 收入预测
```
年份 2026 2027 2028
─────────────────────────────────────
Pro 订阅 $50K $200K $500K
Enterprise $100K $500K $2M
Cloud $20K $300K $1M
服务收入 $30K $200K $500K
─────────────────────────────────────
总计 $200K $1.2M $4M
```
---
## 附录 D: 技术债务修复计划
### D.1 高优先级债务
#### D.1.1 Agent Registry 完全持久化
```
问题: Agent 元数据重启后部分丢失
影响: 用户体验差,生产环境不可靠
修复方案:
1. 所有 AgentEntry 写入 SQLite
2. 启动时从 SQLite 恢复
3. 使用 WAL 模式提高可靠性
4. 添加定期快照备份
文件:
- crates/openfang-kernel/src/registry.rs
- crates/openfang-memory/src/structured.rs
预估: 3 天
```
#### D.1.2 E2E 测试框架
```
问题: 缺少端到端自动化测试
影响: 回归风险高,发布信心不足
修复方案:
1. 使用 Playwright/Cypress
2. 覆盖核心用户流程:
- Agent 创建/对话/删除
- 工作流创建/执行
- 渠道配置/测试
3. CI/CD 集成
4. 每日运行
文件:
- tests/e2e/
预估: 5 天
```
### D.2 中优先级债务
#### D.2.1 知识图谱递归遍历
```
问题: max_depth 参数未实现
影响: 复杂关系查询不支持
修复方案:
1. 实现递归 CTE 查询
2. 添加深度限制保护
3. 性能优化 (索引)
文件:
- crates/openfang-memory/src/knowledge.rs
预估: 2 天
```
#### D.2.2 Peer 服务发现
```
问题: 需手动配置节点地址
影响: P2P 网络扩展困难
修复方案:
1. mDNS/DNS-SD 本地发现
2. Bootstrap 节点列表
3. DHT 分布式发现 (可选)
文件:
- crates/openfang-wire/src/discovery.rs (新建)
预估: 4 天
```
#### D.2.3 文档自动化
```
问题: API 文档手动维护
影响: 文档与代码不同步
修复方案:
1. utoipa 自动生成 OpenAPI
2. cargo-doc 自动化
3. CI 自动部署
预估: 2 天
```
### D.3 低优先级债务
#### D.3.1 WASM wasip2 支持
```
问题: 仅支持 wasi preview 1
影响: 部分现代 WASM 模块不支持
修复方案:
1. 升级 Wasmtime
2. 测试兼容性
3. 更新文档
预估: 3 天
```
#### D.3.2 配置热重载优化
```
问题: 文件级别重载,粒度粗
影响: 不必要的重启
修复方案:
1. 字段级别 diff
2. 精确热更新
3. 变更通知
预估: 2 天
```
### D.4 技术债务修复时间线
```
周次 任务
────────────────────────────────
W1 Agent Registry 持久化
W2 E2E 测试框架搭建
W3 E2E 核心流程覆盖
W4 知识图谱递归遍历
W5 Peer 服务发现
W6 文档自动化
W7-8 WASM 升级 + 热重载优化
```
---
## 附录 E: 行动计划总结
### 优先级矩阵
```
高业务价值
┌──────────────┼──────────────┐
│ │ │
Agent 市场 实时协作 企业功能
创新功能 用户粘性 商业化
│ │ │
低复杂度 ─┼──────────────┼──────────────┼─ 高复杂度
│ │ │
技术债务 AOL DSL 云原生
稳定性 生产力 扩展性
│ │ │
└──────────────┼──────────────┘
低业务价值
```
### 推荐执行顺序
1. **立即开始** (Week 1-4)
- Agent Registry 持久化
- E2E 测试框架
- 实时协作层
2. **短期目标** (Month 2-3)
- Agent 编排语言 (AOL)
- Agent 市场
- 企业功能 (SSO/多租户)
3. **中期目标** (Month 4-6)
- 云原生架构
- 联邦 Agent 网络
- 多模态记忆
4. **长期愿景** (Month 7-12)
- Agent OS 内核
- 神经符号 Agent
- 群体智能
---
## 附录 F: 实施记录
### F.1 添加智谱 GLM-5 和百炼 Coding Plan 支持 (2026-03-01)
#### 变更摘要
本次更新为 OpenFang 添加了对以下新模型和提供商的支持:
1. **智谱 GLM-5** - 智谱 AI 最新旗舰模型
- GLM-5: 744B 总参数40B 激活参数200K 上下文
- GLM-5 Flash: 轻量级版本
2. **阿里云百炼 Coding Plan** - 编程订阅服务
- qwen3.5-plus
- qwen3-coder-next
- glm-5-bailian
- minimax-m2.5-bailian
- kimi-k2.5-bailian
#### 修改的文件
| 文件 | 更改 |
|------|------|
| `crates/openfang-types/src/model_catalog.rs` | 添加 `BAILIAN_BASE_URL` 常量 |
| `crates/openfang-runtime/src/model_catalog.rs` | 添加 GLM-5 模型、百炼提供商和 Coding Plan 模型 |
| `crates/openfang-runtime/src/drivers/mod.rs` | 添加百炼提供商支持和测试 |
#### 配置示例
```toml
# 使用智谱 GLM-5
[default_model]
provider = "zhipu"
model = "glm-5"
api_key_env = "ZHIPU_API_KEY"
# 使用百炼 Coding Plan
[default_model]
provider = "bailian"
model = "qwen3-coder-next"
api_key_env = "BAILIAN_API_KEY"
```
#### 新增模型列表
**智谱 GLM 系列 (新增 2 个)**:
- `glm-5` - 旗舰模型200K 上下文
- `glm-5-flash` - 快速版本
**百炼 Coding Plan (新增 5 个)**:
- `qwen3.5-plus` - Qwen 3.5 Plus
- `qwen3-coder-next` - Qwen 3 Coder Next
- `glm-5-bailian` - GLM-5 (通过百炼)
- `minimax-m2.5-bailian` - MiniMax M2.5 (通过百炼)
- `kimi-k2.5-bailian` - Kimi K2.5 (通过百炼)
#### 验证步骤
```bash
# 1. 构建项目
cargo build --workspace --lib
# 2. 运行测试
cargo test --workspace
# 3. 启动守护进程
ZHIPU_API_KEY=your_key target/release/openfang.exe start
# 4. 测试 GLM-5
curl -s -X POST "http://127.0.0.1:4200/api/agents" \
-H "Content-Type: application/json" \
-d '{"name": "glm5-test", "model": {"provider": "zhipu", "model": "glm-5"}}'
# 5. 测试百炼 Coding Plan
BAILIAN_API_KEY=your_key target/release/openfang.exe start
curl -s -X POST "http://127.0.0.1:4200/api/agents" \
-H "Content-Type: application/json" \
-d '{"name": "bailian-test", "model": {"provider": "bailian", "model": "qwen3-coder-next"}}'
```
---
## 附录 G: Agent Registry 持久化修复 (2026-03-01)
### 问题分析
原有实现中,以下 Agent 修改操作只更新内存中的 DashMap不持久化到 SQLite
- `set_mode` - Agent 模式切换
- `set_state` - Agent 状态更新
- `update_identity` - Agent 身份信息更新
- `update_name` - Agent 名称更新
- `update_description` - Agent 描述更新
这导致重启后这些修改会丢失。
### 解决方案
1. **在 `kernel.rs` 添加包装方法**:每个方法先更新 registry内存然后调用 `memory.save_agent()` 持久化
2. **更新 `routes.rs` 调用**:将直接调用 `registry.xxx()` 改为调用 `kernel.xxx()` 方法
### 修改的文件
| 文件 | 更改 |
|------|------|
| `crates/openfang-kernel/src/kernel.rs` | 添加 5 个新方法: `set_agent_state`, `set_agent_mode`, `update_agent_identity`, `update_agent_name`, `update_agent_description` |
| `crates/openfang-api/src/routes.rs` | 更新调用: `registry.set_mode``kernel.set_agent_mode`, `registry.update_identity``kernel.update_agent_identity`, 等 |
| `crates/openfang-kernel/src/registry.rs` | 添加 8 个新测试用例 |
### 新增的 Kernel 方法
```rust
/// Set an agent's state with persistence.
pub fn set_agent_state(&self, agent_id: AgentId, state: AgentState) -> KernelResult<()>
/// Set an agent's mode with persistence.
pub fn set_agent_mode(&self, agent_id: AgentId, mode: AgentMode) -> KernelResult<()>
/// Update an agent's identity with persistence.
pub fn update_agent_identity(&self, agent_id: AgentId, identity: AgentIdentity) -> KernelResult<()>
/// Update an agent's name with persistence.
pub fn update_agent_name(&self, agent_id: AgentId, name: String) -> KernelResult<()>
/// Update an agent's description with persistence.
pub fn update_agent_description(&self, agent_id: AgentId, description: String) -> KernelResult<()>
```
### 验证
```bash
# 运行 registry 测试
cargo test -p openfang-kernel registry
# 预期输出
# test_register_and_get ... ok
# test_find_by_name ... ok
# test_duplicate_name ... ok
# test_remove ... ok
# test_set_state ... ok
# test_set_mode ... ok
# test_update_identity ... ok
# test_update_name ... ok
# test_update_description ... ok
# test_update_model ... ok
# test_update_skills ... ok
# test_update_mcp_servers ... ok
```
### 已验证的持久化操作
| 操作 | 内存 | SQLite | 状态 |
|------|------|--------|------|
| `spawn_agent` | ✅ | ✅ | 正常 |
| `kill_agent` | ✅ | ✅ | 正常 |
| `set_agent_state` | ✅ | ✅ | **已修复** |
| `set_agent_mode` | ✅ | ✅ | **已修复** |
| `update_agent_identity` | ✅ | ✅ | **已修复** |
| `update_agent_name` | ✅ | ✅ | **已修复** |
| `update_agent_description` | ✅ | ✅ | **已修复** |
| `update_agent_model` | ✅ | ✅ | 正常 |
| `update_agent_system_prompt` | ✅ | ✅ | 正常 |
| `set_agent_skills` | ✅ | ✅ | 正常 |
| `set_agent_mcp_servers` | ✅ | ✅ | 正常 |
---
## 附录 H: 知识图谱递归遍历设计 (2026-03-01)
### 问题分析
当前 `query_graph` 方法的 `max_depth` 参数完全未实现,只支持单跳查询 (depth=1)。
### 解决方案: 递归 CTE 查询
```sql
WITH RECURSIVE graph_path AS (
-- 基础情况: depth = 1
SELECT r.id, r.source_entity, r.relation_type, r.target_entity,
r.properties, r.confidence, 1 as depth
FROM relations r
WHERE 1=1
{source_filter}
{relation_filter}
UNION ALL
-- 递归情况
SELECT r.id, r.source_entity, r.relation_type, r.target_entity,
r.properties, r.confidence, gp.depth + 1
FROM relations r
INNER JOIN graph_path gp ON r.source_entity = gp.target_entity
WHERE gp.depth < ?1
)
SELECT ... FROM graph_path ...
```
### 安全限制
- 最大深度: 10 (防止滥用)
- 环路检测: 使用 HashSet 或 CTE 路径追踪
- 结果限制: LIMIT 1000
### 修改文件
- `crates/openfang-memory/src/knowledge.rs` - 实现递归 CTE
---
## 附录 I: 实时协作层架构设计 (2026-03-01)
### 核心组件
1. **PresenceManager** - 管理用户在线状态
2. **CollabSession** - 协作会话状态
3. **AnnotationStore** - 评论/批注存储
### WebSocket 协议扩展
```json
// 客户端 -> 服务器
{"type": "collab_join", "session_id": "uuid"}
{"type": "cursor", "line": 10, "column": 5}
{"type": "handover_request", "target_user_id": "..."}
// 服务器 -> 客户端
{"type": "presence_update", "users": [...]}
{"type": "cursor_update", "connection_id": "...", "cursor": {...}}
{"type": "user_joined", "connection_id": "...", "display_name": "..."}
```
### 数据库扩展 (Migration v8)
```sql
CREATE TABLE annotations (
id TEXT PRIMARY KEY,
session_id TEXT NOT NULL,
annotation_type TEXT NOT NULL DEFAULT 'comment',
content TEXT NOT NULL,
message_index INTEGER NOT NULL,
char_start INTEGER, char_end INTEGER,
parent_id TEXT,
status TEXT DEFAULT 'open',
created_at TEXT NOT NULL
);
```
### 实现阶段
1. Phase 1: Presence 基础设施
2. Phase 2: 会话共享
3. Phase 3: 注释存储
4. Phase 4: 前端集成
5. Phase 5: 测试与优化
---
## 附录 J: Agent 编排语言 (AOL) 设计 (2026-03-01)
### DSL 语法 (TOML)
```toml
[workflow]
name = "research-pipeline"
version = "1.0.0"
[workflow.input]
topic = { type = "string", required = true }
[[workflow.steps.parallel]]
id = "search_papers"
agent = "researcher"
task = "Search for papers about {{input.topic}}"
output = "papers"
[workflow.steps.collect]
strategy = "merge"
inputs = ["papers", "market_data"]
output = "combined"
[[workflow.steps.conditional]]
id = "expert_review"
condition = "{{input.depth}} == 'exhaustive'"
agent = "reviewer"
task = "Review: {{draft_report}}"
```
### AST 核心类型
```rust
pub struct AolWorkflow {
pub id: WorkflowDefId,
pub name: String,
pub input: HashMap<String, InputParam>,
pub steps: Vec<AolStep>,
pub outputs: HashMap<String, String>,
}
pub enum AolStep {
Parallel(ParallelStepGroup),
Sequential(SequentialStep),
Conditional(ConditionalStep),
Loop(LoopStep),
Collect(CollectStep),
Subworkflow(SubworkflowStep),
}
```
### 执行引擎
- DAG 构建与拓扑排序
- 并行执行支持
- 模板变量展开
- 错误处理与重试
### 新增文件
- `crates/openfang-types/src/aol.rs` - AST 类型定义
- `crates/openfang-kernel/src/aol_executor.rs` - 执行引擎
- `crates/openfang-kernel/src/aol/template.rs` - 模板引擎
---
## 附录 K: CLAUDE.md 开发规则更新 (2026-03-01)
### 新增规则类别
1. **架构规则** - 14-crate 结构、依赖关系、职责边界
2. **持久化规则** - 内存+SQLite 双写模式
3. **API 开发规则** - 路由注册、类型匹配、错误处理
4. **安全规则** - 16 层安全架构清单
5. **测试规则** - 单元测试、集成测试、E2E 测试
6. **前端规则** - Alpine.js SPA 开发模式
7. **LLM 提供商规则** - 添加新提供商的步骤
### 关键规则摘要
| 规则 | 描述 |
|------|------|
| 双写模式 | 所有修改操作必须同时更新内存和 SQLite |
| Kernel 包装 | API 层调用 kernel 方法,不直接调用 registry |
| 路由注册 | 新路由必须在 server.rs 和 routes.rs 两处注册 |
| 配置字段 | 需要 struct 字段 + `#[serde(default)]` + Default impl |
| 类型位置 | 共享类型放 openfang-types特有类型放对应 crate |
---
## 附录 L: 实现完成记录 (2026-03-01)
### 知识图谱递归遍历实现 ✅
**文件**: `crates/openfang-memory/src/knowledge.rs`
**实现内容**:
- 迭代 BFS 遍历算法
- 最大深度限制: 10 (防止滥用)
- 环路检测: HashSet 追踪已访问关系
- 结果限制: 1000 条
**新增方法**:
- `query_recursive()` - 递归遍历主逻辑
- `resolve_entity_ids()` - 解析实体 ID
- `get_all_entity_ids()` - 获取所有实体
- `query_from_sources()` - 从源实体集查询
**测试用例**:
- `test_recursive_traversal_depth_2` - 两层遍历
- `test_recursive_traversal_with_cycle` - 环路处理
- `test_recursive_traversal_with_relation_filter` - 关系过滤
- `test_max_depth_safety_limit` - 安全限制
---
### AOL AST 类型定义 ✅
**文件**: `crates/openfang-types/src/aol.rs` (新建, 1074 行)
**定义的类型**:
- `WorkflowDefId` - 工作流定义 ID
- `ParamType` - 参数类型枚举
- `InputParam` - 输入参数规格
- `ErrorMode` - 错误处理模式
- `AgentRef` - Agent 引用
- `CollectStrategy` - 收集策略
- `WorkflowConfig` - 工作流配置
- `AolStep` - 步骤类型枚举
- `AolWorkflow` - 完整工作流定义
**特性**:
- 所有类型 Serialize + Deserialize
- Builder 模式支持
- 40+ 单元测试
---
### E2E 测试框架 ✅
**新建文件**:
- `tests/e2e_test.rs` - 主测试入口
- `tests/e2e_common.rs` - 测试工具函数
- `tests/e2e_api_test.rs` - API 端点测试
- `tests/e2e_fixtures.rs` - 测试 fixtures
- `tests/fixtures/manifests.rs` - Agent manifest fixtures
**测试工具**:
- `spawn_daemon()` / `spawn_daemon_with_config()`
- `wait_for_health()` / `wait_for_health_with_timeout()`
- `create_test_agent()` / `kill_agent()`
- `send_message()` / `list_agents()`
- `get()` / `post()` / `put()` / `delete()`
**测试覆盖**:
- Health & Status (4 tests)
- Agent CRUD (7 tests)
- Error Handling (3 tests)
- Auth (4 tests)
- Integration (12 tests)
- LLM Integration (2 tests, ignored)
---
### 实时协作层 Migration v8 ✅
**文件**: `crates/openfang-memory/src/migration.rs`
**新增表**:
```sql
-- 注释/批注表
annotations (
id, session_id, agent_id, connection_id, author_name,
annotation_type, content, message_index, char_start, char_end,
parent_id, status, priority, created_at, updated_at
)
-- 注释反应表
annotation_reactions (
id, annotation_id, connection_id, reaction_type, reaction_value
)
-- 协作会话表
collab_sessions (
id, session_id, owner_connection_id, share_mode, max_participants
)
-- 在线状态日志表
presence_log (
id, collab_session_id, connection_id, display_name, status,
joined_at, left_at, last_activity
)
```
**SCHEMA_VERSION**: 7 → 8
---
### 实现统计
| 功能 | 文件 | 代码行数 | 测试数 |
|------|------|----------|--------|
| 知识图谱递归遍历 | knowledge.rs | +200 | +4 |
| AOL AST 类型 | aol.rs | 1074 | 40+ |
| E2E 测试框架 | tests/e2e_*.rs | ~800 | 30+ |
| Migration v8 | migration.rs | +80 | +2 |
| **总计** | | **~2154** | **~76** |