48 KiB
OpenFang 项目深度分析与头脑风暴报告
目录
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 关键设计模式
- KernelHandle Trait - 解决 runtime ↔ kernel 循环依赖
- Plugin Architecture - Skills/Hands/Extensions 可扩展
- Event-Driven - EventBus 发布订阅模式
- Capability-Based Security - 细粒度权限控制
- Dual Metering - WASM fuel + epoch 双重限制
3. 核心优势识别
3.1 技术优势
性能优势
- 内存占用: 30MB vs Electron 200MB (85% 减少)
- 单二进制部署: 无运行时依赖
- 异步高效: Tokio 运行时,支持高并发
安全优势 (16 层防御)
- Capability-based access control
- Path traversal protection
- SSRF protection (私有 IP 阻断)
- Ed25519 signed manifests
- Merkle hash chain audit
- Information flow taint tracking
- HMAC-SHA256 mutual auth
- API key Bearer auth
- GCRA rate limiter
- Security headers (CSP/HSTS/X-Frame-Options)
- Secret zeroization
- Subprocess environment isolation
- Health endpoint redaction
- Loop guard with SHA256 detection
- Session repair
- 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 技术债务
- Agent Registry - 仅内存存储,重启丢失 (部分 SQLite 持久化)
- Peer Registry - 无服务发现,需手动配置节点
- 知识图谱 -
max_depth未完全实现递归遍历 - Channels - 部分适配器未完整测试
- 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 市场
扩展方向
- 社区技能仓库 - GitHub-based skill distribution
- 技能版本管理 - 语义化版本 + 依赖解析
- 技能测试框架 - 自动化技能验证
- 技能性能分析 - 资源使用监控
6.2 渠道生态
当前状态
- 40+ 消息渠道
- 统一 ChannelAdapter trait
- Bridge 管理器
扩展方向
- 协议适配器 - MQTT/CoAP/AMQP
- IoT 网关 - Home Assistant/Philips Hue
- 企业系统 - SAP/Salesforce/ServiceNow
- 区块链 - Ethereum/Solana 智能合约
6.3 工具生态
当前状态
- 41 个内置工具
- MCP 客户端/服务器
- 动态工具加载
扩展方向
- 数据库工具 - PostgreSQL/MySQL/MongoDB
- 云服务工具 - AWS/GCP/Azure SDK
- 数据分析工具 - Pandas/Polars 集成
- 安全工具 - 漏洞扫描/渗透测试
7. 商业化路径
7.1 开源核心模式 (Open Core)
| 层级 | 功能 | 授权 |
|---|---|---|
| 核心 | Agent 运行时 + 基础工具 | MIT/Apache |
| Pro | 高级工作流 + 企业渠道 | 商业 |
| Enterprise | SSO + 审计 + SLA | 商业 |
| Cloud | 托管服务 + 自动扩展 | SaaS |
7.2 潜在收入流
- 企业许可 - 大规模部署授权
- 云托管 - OpenFang Cloud (类似 OpenAI Assistants)
- 专业服务 - 咨询/定制开发/培训
- 市场抽成 - Hands/Skills 市场交易费
- 支持订阅 - 技术支持 + 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 操作系统。它在性能、安全、功能丰富度方面相比竞争对手有显著优势。未来的成功取决于:
- 生态建设 - 社区驱动的技能/Agent/工具生态
- 企业采用 - 从开源项目到企业解决方案
- 持续创新 - 在 Agent 编排、多模态、群体智能等方向探索
- 商业模式 - 找到可持续的开源商业化路径
核心建议: 专注于 "开发者体验" 和 "企业就绪" 两条主线,同时保持开源社区的活力。
附录:详细执行计划
以下是根据用户需求制定的四个详细方向计划。
附录 A: 具体功能实现计划
A.1 Agent 编排语言 (AOL) - 详细设计
目标
创建一种声明式 DSL,简化多 Agent 协作场景的配置。
核心语法设计
# 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 会话。
协议设计
// 客户端 -> 服务器
{
"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 扩展
{
"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 模块深度分析
核心结构
// 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 核心逻辑
// 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
知识图谱实现
// 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 云原生
稳定性 生产力 扩展性
│ │ │
└──────────────┼──────────────┘
│
低业务价值
推荐执行顺序
-
立即开始 (Week 1-4)
- Agent Registry 持久化
- E2E 测试框架
- 实时协作层
-
短期目标 (Month 2-3)
- Agent 编排语言 (AOL)
- Agent 市场
- 企业功能 (SSO/多租户)
-
中期目标 (Month 4-6)
- 云原生架构
- 联邦 Agent 网络
- 多模态记忆
-
长期愿景 (Month 7-12)
- Agent OS 内核
- 神经符号 Agent
- 群体智能
附录 F: 实施记录
F.1 添加智谱 GLM-5 和百炼 Coding Plan 支持 (2026-03-01)
变更摘要
本次更新为 OpenFang 添加了对以下新模型和提供商的支持:
-
智谱 GLM-5 - 智谱 AI 最新旗舰模型
- GLM-5: 744B 总参数,40B 激活参数,200K 上下文
- GLM-5 Flash: 轻量级版本
-
阿里云百炼 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 |
添加百炼提供商支持和测试 |
配置示例
# 使用智谱 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 Plusqwen3-coder-next- Qwen 3 Coder Nextglm-5-bailian- GLM-5 (通过百炼)minimax-m2.5-bailian- MiniMax M2.5 (通过百炼)kimi-k2.5-bailian- Kimi K2.5 (通过百炼)
验证步骤
# 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 描述更新
这导致重启后这些修改会丢失。
解决方案
-
在
kernel.rs添加包装方法:每个方法先更新 registry(内存),然后调用memory.save_agent()持久化 -
更新
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 方法
/// 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<()>
验证
# 运行 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 查询
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)
核心组件
- PresenceManager - 管理用户在线状态
- CollabSession - 协作会话状态
- AnnotationStore - 评论/批注存储
WebSocket 协议扩展
// 客户端 -> 服务器
{"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)
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
);
实现阶段
- Phase 1: Presence 基础设施
- Phase 2: 会话共享
- Phase 3: 注释存储
- Phase 4: 前端集成
- Phase 5: 测试与优化
附录 J: Agent 编排语言 (AOL) 设计 (2026-03-01)
DSL 语法 (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 核心类型
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)
新增规则类别
- 架构规则 - 14-crate 结构、依赖关系、职责边界
- 持久化规则 - 内存+SQLite 双写模式
- API 开发规则 - 路由注册、类型匹配、错误处理
- 安全规则 - 16 层安全架构清单
- 测试规则 - 单元测试、集成测试、E2E 测试
- 前端规则 - Alpine.js SPA 开发模式
- 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()- 解析实体 IDget_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- 工作流定义 IDParamType- 参数类型枚举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- 测试 fixturestests/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
新增表:
-- 注释/批注表
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 |