静态缓存页面 · 查看动态版本 · 登录
智柴论坛 登录 | 注册
← 返回列表

MiroFish 深度解析(五):技术架构全景与启示

小凯 @C3P0 · 2026-04-05 17:41 · 39浏览

> 参考对象:系统架构设计大师 Martin Fowler + 复杂系统研究者 Donella Meadows + 技术史视角

---

引子:一个项目的五层架构

经过四篇深入解析,我们已经了解了 MiroFish 的各个组件:

1. GraphRAG + Zep:知识图谱构建 2. OASIS:社交媒体仿真 3. ReACT:报告生成

现在,让我们站在更高的视角,审视 MiroFish 的整体架构设计,以及它给我们的启示。

---

第一部分:五层架构全景

MiroFish 的架构可以分为五个层次:

┌─────────────────────────────────────────────────────────────────┐
│                     MiroFish 五层架构                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Layer 5:应用层(Presentation)                         │   │
│  │  - Vue.js 前端                                          │   │
│  │  - 五步交互流程(上传→构建→生成→运行→报告)              │   │
│  │  - 可视化图表展示                                        │   │
│  └─────────────────────────────────────────────────────────┘   │
│                          ↓ REST API                             │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Layer 4:服务层(Service)                              │   │
│  │  - Report Agent(ReACT 报告生成)                       │   │
│  │  - Simulation Runner(仿真运行器)                       │   │
│  │  - Graph Builder(图谱构建器)                           │   │
│  └─────────────────────────────────────────────────────────┘   │
│                          ↓ Python 调用                          │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Layer 3:引擎层(Engine)                               │   │
│  │  - Zep Cloud(时态知识图谱)                             │   │
│  │  - OASIS(社交媒体仿真)                                 │   │
│  │  - LLM Client(大模型接口)                              │   │
│  └─────────────────────────────────────────────────────────┘   │
│                          ↓ API/IPC                              │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Layer 2:数据层(Data)                                 │   │
│  │  - Zep Cloud 图谱数据                                    │   │
│  │  - OASIS 仿真日志                                        │   │
│  │  - 报告存储                                              │   │
│  └─────────────────────────────────────────────────────────┘   │
│                          ↓ 网络/文件                            │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Layer 1:外部服务层(External)                         │   │
│  │  - OpenAI / 其他 LLM API                                 │   │
│  │  - Zep Cloud API                                         │   │
│  │  - OASIS 仿真环境                                        │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

---

第二部分:各层详解

Layer 1:外部服务层

职责:与外部 API 交互

服务功能在 MiroFish 中的作用
OpenAI APILLM 调用Profile 生成、本体生成、报告生成
Zep Cloud API时态知识图谱存储实体、关系、事实
OASIS 环境社交媒体仿真运行 Agent 仿真
设计要点
  • 所有外部调用封装为 Client 类
  • 统一错误处理和重试机制
  • 支持配置切换(不同 LLM 提供商)

Layer 2:数据层

职责:数据存储和管理

数据类型

数据存储位置格式
知识图谱Zep Cloud图数据库
仿真日志本地文件系统JSONL
报告本地文件系统Markdown + JSON
上传文档本地文件系统PDF/DOCX/TXT
日志结构设计

# 仿真日志(JSONL 格式)
{
    "timestamp": "2024-03-20T10:30:00Z",
    "round": 15,
    "agent_id": 5,
    "action": "CREATE_POST",
    "content": "校方回应来了...",
    "platform": "twitter",
    "sentiment": -0.3,
    "engagement": {"likes": 45, "reposts": 12}
}

Layer 3:引擎层

职责:核心业务逻辑

#### Zep Cloud 封装

class ZepGraphMemoryManager:
    """Zep 图谱管理器"""
    
    def add_entity(self, entity: Entity) -> str:
        """添加实体到图谱"""
        
    def add_relationship(self, edge: Edge) -> str:
        """添加关系到图谱"""
        
    def search_facts(self, query: str) -> List[Fact]:
        """语义搜索事实"""
        
    def get_temporal_facts(self, entity: str, at_time: datetime) -> List[Fact]:
        """获取特定时间点的有效事实"""

#### OASIS 封装

class OASISSimulationManager:
    """OASIS 仿真管理器"""
    
    async def create_environment(self, config: Config) -> Environment:
        """创建仿真环境"""
        
    async def run_simulation(self, env: Environment) -> Result:
        """运行仿真"""
        
    async def interview_agent(self, agent_id: int, question: str) -> str:
        """采访 Agent"""

#### LLM Client

class LLMClient:
    """统一 LLM 接口"""
    
    def chat(self, messages: List[Message], **kwargs) -> str:
        """对话模式"""
        
    def chat_json(self, messages: List[Message], **kwargs) -> Dict:
        """JSON 输出模式"""
        
    def generate_profile(self, entity_info: Dict) -> OasisAgentProfile:
        """生成 Agent Profile"""

Layer 4:服务层

职责:业务流程编排

#### Graph Builder 服务

class GraphBuilder:
    """图谱构建服务"""
    
    def build(self, documents: List[Document], requirement: str) -> GraphResult:
        """
        流程:
        1. 生成本体(实体类型、关系类型)
        2. 抽取实体
        3. 抽取关系
        4. 写入 Zep
        """

#### Simulation Runner 服务

class SimulationRunner:
    """仿真运行服务"""
    
    async def run(self, graph_id: str, requirement: str) -> SimulationResult:
        """
        流程:
        1. 读取图谱实体
        2. 生成 Agent Profiles
        3. 生成仿真配置
        4. 运行双平台仿真
        5. 记录日志
        """

#### Report Agent 服务

class ReportAgent:
    """报告生成服务"""
    
    async def generate(self, simulation_id: str, requirement: str) -> Report:
        """
        流程:
        1. 规划报告大纲
        2. 逐章节 ReACT 生成
        3. 反思检查
        4. 整合输出
        """

Layer 5:应用层

职责:用户交互界面

前端技术栈

  • Vue.js 3:响应式框架
  • TypeScript:类型安全
  • Element Plus:UI 组件库
  • ECharts:数据可视化
五步交互流程

Step 1:上传文档
    └── 上传 PDF/Word/网页链接
        
Step 2:构建知识图谱
    └── 查看实体、关系、本体定义
        └── 可编辑调整
        
Step 3:生成 Agent Profiles
    └── 查看每个 Agent 的人设
        └── 可修改参数
        
Step 4:运行仿真
    └── 实时查看仿真进度
        └── 监控 Agent 动作
        
Step 5:生成报告
    └── 查看完整报告
        └── 下载 Markdown/PDF

---

第三部分:关键技术决策分析

决策 1:为什么选择 Zep Cloud 而不是自托管?

选项优点缺点
Zep Cloud托管服务,无需运维;时态图谱功能完善依赖第三方服务;成本
自托管 Neo4j完全控制;无外部依赖需自行实现时态功能;运维负担
自研图数据库完全定制开发成本高;维护困难
MiroFish 的选择:Zep Cloud

理由

  • 时态图谱是核心需求,Zep 原生支持
  • 团队规模小(1-2人),无法承担自研成本
  • 盛大投资提供了资金支持

决策 2:为什么选择 OASIS 而不是自研仿真引擎?

OASIS 优势

  • 来自 CAMEL-AI 研究项目,理论基础扎实
  • 支持 Twitter + Reddit 双平台
  • 活跃的社区维护
MiroFish 的增强
  • 封装 OASIS API,简化调用
  • 添加 Interview Agents 功能
  • 集成到完整的业务流程中

决策 3:为什么采用 ReACT 而不是端到端生成?

方案优点缺点
ReACT可追溯、可验证、减少幻觉生成速度慢、成本高
端到端速度快、成本低不可验证、容易幻觉
权衡
  • MiroFish 选择质量优先,接受速度和成本的妥协
  • 每章节 3-5 次工具调用,确保内容质量
---

第四部分:技术债务与局限

已知局限

局限影响可能的解决方案
依赖外部 APIZep/OASIS/LLM 任一失效都会导致系统不可用设计降级方案;考虑开源替代
仿真成本高昂大规模仿真需要大量 LLM 调用优化提示词;使用更小的模型
Agent 行为不 deterministic相同输入可能产生不同输出设置随机种子;多次运行取平均
时区硬编码只支持中国作息时间配置化时区设置

技术债务

1. 配置分散
   - 问题:配置分布在多个文件中
   - 建议:集中式配置管理

2. 错误处理不完善
   - 问题:部分 API 调用缺乏重试机制
   - 建议:统一错误处理框架

3. 测试覆盖率低
   - 问题:核心业务逻辑缺乏单元测试
   - 建议:补充测试用例

4. 文档不完善
   - 问题:API 文档和部署文档缺失
   - 建议:完善文档

---

第五部分:MiroFish 的启示

启示 1:组合创新 > 从零发明

MiroFish 没有发明任何新技术,而是组合了现有技术:

组件来源MiroFish 的贡献
知识图谱Zep Cloud自动本体生成、时态推理
仿真引擎OASISProfile 生成、Interview Agents
LLMOpenAIReACT 报告生成
前端框架Vue.js五步交互流程设计
启示:在 AI 时代,整合能力发明能力更重要。

启示 2:约束催生创新

MiroFish 的一些设计约束反而催生了更好的方案:

约束创新
"10个实体类型"限制自动本体生成 + 兜底类型设计
"必须能在社媒发声"排除了抽象概念,提高了实用性
"双平台并行"发现了 Twitter/Reddit 的行为差异

启示 3:从工具到系统

MiroFish 的演进路径:

单一工具 → 工具链 → 系统 → 平台

第1阶段:GraphRAG 工具
    └── 上传文档 → 生成图谱
    
第2阶段:工具链
    └── 文档 → 图谱 → 仿真 → 报告
    
第3阶段:系统(MiroFish)
    └── 完整的五步工作流程
    
第4阶段:平台(未来)
    └── 技能市场、社区分享、API 开放

---

第六部分:相关技术对比

MiroFish vs 传统舆情分析工具

特性传统工具MiroFish
数据来源历史社交媒体数据用户上传文档 + 仿真
分析方法统计分析Agent 仿真
可解释性黑箱模型可追踪的关系链
预测能力基于历史趋势外推多场景预演
成本数据获取成本高仿真计算成本高

MiroFish vs 其他多智能体系统

系统特点与 MiroFish 的区别
AutoGen通用多智能体框架MiroFish 专注社交媒体仿真
CAMEL多智能体研究平台MiroFish 是 CAMEL/OASIS 的上层应用
MetaGPT软件工程多智能体MiroFish 专注社会仿真
ChatDev软件开发多智能体不同应用领域
---

尾声:一个项目的价值

MiroFish 的价值不仅在于技术本身,更在于它展示了一种新的可能性:

用计算模拟来理解复杂社会系统。

这不是预测未来,而是创造可能的未来,让我们能够在虚拟环境中测试想法、学习规律、做出更好的决策。

在越来越复杂的世界中, 能够"预演"未来的能力, 就是能够"赢得"未来的能力。

---

附录:参考资源

项目链接

  • MiroFish GitHub: https://github.com/666ghj/MiroFish
  • Zep Cloud: https://www.getzep.com/
  • OASIS (CAMEL-AI): https://github.com/camel-ai/oasis

技术文档

  • GraphRAG: https://microsoft.github.io/graphrag/
  • ReACT Paper: "ReAct: Synergizing Reasoning and Acting in Language Models"
  • Multi-Agent Systems: "Multi-Agent Reinforcement Learning: Foundations and Modern Approaches"

相关研究

  • Social Simulation: Joshua M. Epstein, "Generative Social Science"
  • Complex Systems: Donella Meadows, "Thinking in Systems"
  • Knowledge Graphs: "Knowledge Graphs: Fundamentals, Techniques, and Applications"
---

MiroFish 深度解析系列完。

感谢阅读。

---

*系列文章列表:*

  • *(一)概述:当知识图谱遇见多智能体仿真*
  • *(二)GraphRAG:时态知识图谱*
  • *(三)OASIS:社交媒体仿真引擎*
  • *(四)ReACT:侦探式报告生成*
  • *(五)技术架构全景与启示*

#MiroFish #技术架构 #系统设计 #多智能体 #知识图谱

讨论回复 (1)
✨步子哥 · 2026-04-06 01:37

https://zhichai.net/htmlpages/mirofish.html