映射现实的群体智能镜像

MiroFish 深度技术研究报告:基于多智能体仿真的 AI 预测引擎

群体智能仿真

数千个 LLM 智能体在虚拟社交平台交互,从个体行为涌现群体动态

涌现性预测

实现舆情推演、金融预测、政策预演等多场景预测分析

双模型策略

轻量模型用于高频仿真,强模型用于关键决策和报告生成

时序记忆

GraphRAG 构建时序知识图谱,Zep Cloud 提供长期记忆支持

关键发现

MiroFishModel 和 miro_fish 函数位于独立的 PyPI 包 mirofish-simulator

主仓库通过 SimulationRunner 以子进程方式集成 OASIS

IPC 通信存在实时性瓶颈,社区已提出异步协程改进方案

1. 项目概述与核心定位

1.1 项目愿景与设计理念

群体智能镜像:映射现实世界的数字孪生

MiroFish 的核心愿景是构建"映射现实的群体智能镜像"——一种能够精确复刻复杂社会系统动态的数字孪生系统。该项目由盛大集团战略支持与孵化,其技术路径区别于传统预测方法:不是从输入直接映射到输出,而是构建完整的数字社会系统并观察其自发演化 [181]

系统从种子材料(突发新闻、政策草案、金融信号、文学文本等)中提取结构化知识,自动生成数千个具备独立人格、长期记忆和行为逻辑的智能体,这些智能体在虚拟社交平台上持续交互,形成对现实系统的动态仿真。

知识图谱驱动初始化

通过 GraphRAG 技术将非结构化文本转化为语义网络,智能体的人格参数从图谱中派生,确保行为根植于输入材料的真实语境。

时间演化能力

智能体记忆随仿真过程持续更新,每轮交互产生的新观点、新关系被写回图谱,影响后续轮次的决策。

涌现性预测范式

MiroFish 采用的涌现性预测范式从根本上挑战了传统统计方法的线性假设。传统预测将系统行为建模为输入特征的加权组合,而涌现性预测承认:群体层面的模式无法从个体属性简单叠加得到 [181]

应用案例:《红楼梦》失传结局推演

系统从前 80 回提取数百个人物关系和情节线索,为主要角色生成符合其性格特征的智能体,最终通过群体交互涌现叙事上合理的后续发展 [181]

1.2 技术定位与差异化优势

维度 单模型预测 多智能体仿真
主体表示 单一模型,隐含平均意见 数千异质智能体,显式建模个体差异
时间动态 静态推理,无演化过程 离散轮次推进,状态持续更新
社会机制 无显式社交结构 平台规则驱动信息流动
反事实能力 有限,依赖提示工程 原生支持,可动态注入变量

零风险决策实验室

在数字环境中预演重大决策,将试错成本降至最低。传统决策支持依赖历史案例类比或专家直觉,验证困难且风险不可控;而数字仿真允许在虚拟空间中测试数百种情景,识别潜在风险点和优化杠杆 [181]

1.3 应用场景矩阵

舆情事件推演

追踪 sentiment evolution、topic propagation 和 influence dynamics,识别关键转折点和高风险窗口。

推荐配置: 启用 Zep 图谱 + 双平台并行 + 72 小时仿真

金融趋势预测

异质性投资者建模,模拟市场参与者如何相互影响、形成共识或分歧。

准确率: 92% 的新经济政策影响预测 [184]

文学叙事续写

《红楼梦》失传结局预测,从前 80 回提取人物关系和情节线索。

技术挑战: 叙事一致性的维护和人物性格保持

企业级应用场景

战略决策预演
  • • 新产品发布市场反应预测
  • • 并购公告投资者情绪模拟
  • • 组织架构调整员工接受度分析
成本效益优势
  • • API 成本可低至 $0.01/次仿真 [181]
  • • 混合模型配置优化
  • • 速度成本双重优势

2. 系统架构与核心组件

2.1 整体技术栈

graph TB A["前端层
Vue 3 + Vite + D3.js"] --> B["后端层
Python + FastAPI/Flask"] B --> C["仿真引擎
CAMEL-AI OASIS"] C --> D["记忆系统
Zep Cloud + Graphiti"] B --> E["数据库
KuzuDB/Neo4j"] A --> F["部署方案
Docker Compose"] style A fill:#e3f2fd,stroke:#1e40af,stroke-width:2px,color:#1e293b style B fill:#fff3e0,stroke:#f59e0b,stroke-width:2px,color:#1e293b style C fill:#f3e5f5,stroke:#8b5cf6,stroke-width:2px,color:#1e293b style D fill:#e8f5e8,stroke:#10b981,stroke-width:2px,color:#1e293b style E fill:#fce4ec,stroke:#ec4899,stroke-width:2px,color:#1e293b style F fill:#e0f2f1,stroke:#06b6d4,stroke-width:2px,color:#1e293b

前端技术特点

  • Vue 3 Composition API 实现复杂状态管理
  • D3.js 力导向图渲染数千节点和边
  • WebSocket 实时推送仿真状态
  • Vite 快速热更新提升开发效率

后端架构设计

  • 异步任务处理避免 HTTP 请求阻塞
  • 子进程隔离确保仿真引擎故障隔离
  • 混合 Flask/FastAPI 架构演进
  • 状态持久化支持断点续传

OASIS 引擎核心技术特性

100万+
并发智能体
23种
社交动作类型
双平台
Twitter + Reddit
3分钟
时间步长

通过高效的批处理推理和 GPU 并行,支持大规模智能体仿真 [161]

2.2 目录结构与模块划分

核心目录结构

MiroFish/
├── frontend/                 # Vue 3 单页应用
│   ├── src/
│   │   ├── components/      # 可复用 UI 组件
│   │   ├── views/          # 页面级组件
│   │   ├── stores/         # Pinia 状态管理
│   │   ├── api/            # Axios API 封装
│   │   └── utils/          # 工具函数
│
├── backend/                 # Python 后端服务
│   ├── app/
│   │   ├── api/            # RESTful API 端点
│   │   ├── core/           # 会话管理、资源加载
│   │   ├── resources/      # 适配器模式实现
│   │   ├── tools/          # 工作流原子操作
│   │   ├── services/       # 核心服务实现
│   │   └── utils/          # LLM 客户端等
│   └── uploads/            # 文件上传和状态存储
│
└── docker-compose.yml      # 容器化部署配置
                    

适配器模式设计

为不同类型的持久化数据提供统一接口,确保底层存储技术的可替换性。

ProjectAdapter - 项目生命周期管理
DocumentAdapter - 多格式文档解析
KuzuAdapter - 图数据库操作
SimulationAdapter - 仿真数据管理

工具组合模式

可组合的工作流操作,通过 Pydantic 模型定义数据契约,支持链式组合和条件执行。

IngestTool - 文件摄取和处理
BuildTool - 知识图谱构建
PrepareTool - 仿真环境准备
RunTool - 执行仿真

2.3 核心服务组件详解

simulation_runner.py - 核心服务模块

1768 行
代码规模
67.6 KB
文件大小
8种
状态机状态
核心方法 start_simulation 实现逻辑
  1. 验证阶段:检查仿真是否已在运行
  2. 配置加载:读取 simulation_config.json
  3. 脚本选择:根据 platform 参数选择执行脚本
  4. 子进程启动:subprocess.Popen 创建独立进程组
  5. 记忆更新器初始化(可选):ZepGraphMemoryUpdater
  6. 监控线程启动:_monitor_simulation 后台运行 [23]
架构局限与改进方向

当前 IPC 机制存在实时性不足(文件轮询延迟)、可靠性风险(竞争条件、子进程崩溃静默检测延迟最长 60 秒)等问题。社区建议采用 asyncio.create_subprocess_exec 替代 subprocess.Popen,使用 asyncio.Queue 替代文件 IPC [97]

graph_storage.py - 图谱存储抽象

实现图谱存储的抽象接口,支持多种后端实现,确保底层存储技术的可替换性。

KuzuStorage - 嵌入式图数据库(默认推荐)
JsonStorage - 零依赖文件存储(开发测试)
Neo4jStorage - 企业级客户端-服务器架构

report_agent.py - ReACT 架构实现

采用 ReACT(Reasoning + Acting)架构的报告生成代理,区别于简单的模板填充。

推理(Reasoning):分析预测需求,确定策略
行动(Acting):调用可用工具获取信息
观察(Observation):整合工具返回结果
迭代:重复过程直到信息充分

3. 配置系统与环境管理

3.1 config.py 核心作用

分层配置加载机制

# 加载优先级:系统环境变量 > .env 文件 > 代码默认值
from dotenv import load_dotenv
import os

# 1. 加载 .env 文件(若存在)
env_path = Path(__file__).parent.parent.parent / '.env'
if env_path.exists():
    load_dotenv(env_path, override=True)

# 2. 定义 Config 类,从环境变量读取
class Config:
    SECRET_KEY = os.environ.get('FLASK_SECRET_KEY', 'default-unsafe-key')
    DEBUG = os.environ.get('FLASK_DEBUG', 'False').lower() == 'true'
    LLM_API_KEY = os.environ.get('LLM_API_KEY')  # 必填,无默认值
    # ... 其他配置
                            

这种设计支持开发环境(本地 .env)和生产环境(平台注入变量)的灵活切换,同时确保敏感信息(API 密钥)不会进入版本控制。

LLM 配置中心

直接决定系统功能和成本的核心业务配置。

API 密钥 LLM_API_KEY
基地址 LLM_BASE_URL
模型名称 LLM_MODEL_NAME
温度参数 LLM_TEMPERATURE

文件上传约束

保护系统免受超大文件和资源耗尽攻击的安全配置。

最大内容长度 50 MB
上传文件夹 backend/uploads/
允许扩展名 pdf, md, txt

安全注意事项

Pull Request #445 报告"Flask debug mode enabled by default, exposed on 0.0.0.0"的安全问题 [183]。企业部署时需要特别关注:

  • 显式设置 FLASK_DEBUG=False
  • 限制绑定地址避免 0.0.0.0
  • 生成强随机 SECRET_KEY
  • 定期安全审计配置

3.2 关键环境变量解析

LLM 接入配置

支持任意 OpenAI SDK 兼容的端点,提供极大的灵活性。

阿里云百炼(推荐)
URL: https://dashscope.aliyuncs.com/compatible-mode/v1
模型: qwen-plus(中文优化)
国内访问稳定,成本效益最优 [203]
本地 Ollama(隐私敏感)
URL: http://localhost:11434/v1
完全本地部署,数据主权控制 [180]

记忆系统配置

Zep Cloud 提供长期记忆图谱服务,时序 GraphRAG 能力。

Zep Cloud 托管版
API 密钥: ZEP_API_KEY
免费额度: 每月足够简单试用
向量存储、图谱存储、时序检索 [200]
社区替代方案
KuzuDB - 嵌入式,零外部依赖
Neo4j Community - 完全本地部署
数据主权控制,敏感场景适用

双模型策略优化

社区扩展的配置方案,显著降低成本而不显著影响质量 [197]

任务类型 推荐模型 成本比例 质量影响
本体论生成 qwen-plus / gpt-4o-mini 10% 关键,需高质量
智能体决策 qwen-turbo / gpt-4o-mini 60% 中等,批量优化
报告生成 qwen-plus / gpt-4o 20% 关键,需高质量
交互对话 用户选择 10% 按需

3.3 部署配置策略

源码部署(开发调试)

适合功能开发、性能优化、深度定制和学术研究场景。

前置要求
  • • Node.js 18+
  • • Python 3.11-3.12
  • • uv 最新版
部署流程
git clone ...
cp .env.example .env
npm run setup:all
npm run dev

Docker 部署(生产环境)

适合快速体验、生产部署和 CI/CD 集成场景。

服务组成
  • • frontend: Vue 3 应用(3000)
  • • backend: Flask/FastAPI 服务(5001)
  • • zep(可选): 本地 Zep 服务
  • • ollama(可选): 本地 LLM 推理
部署命令
docker compose up -d

依赖锁定策略

确保环境一致性和可复现性的关键机制。

Python 依赖管理
uv sync --frozen - 精确复现依赖环境
uv pip install - 安装新依赖并更新 lock 文件
uv run - 在隔离环境中运行命令
Node 依赖管理
package-lock.json - 锁定版本
npm ci - 生产构建安装

4. 核心算法与仿真引擎

4.1 OASIS 引擎集成机制

graph TB A["MiroFish Backend"] --> B["SimulationRunner"] B --> C["subprocess.Popen"] C --> D["OASIS Engine"] D --> E["Twitter Platform"] D --> F["Reddit Platform"] E --> G["Agent Interactions"] F --> G G --> H["Memory Updates"] H --> I["GraphRAG"] I --> J["Zep Cloud"] style A fill:#e3f2fd,stroke:#1e40af,stroke-width:2px,color:#1e293b style B fill:#fff3e0,stroke:#f59e0b,stroke-width:2px,color:#1e293b style C fill:#f3e5f5,stroke:#8b5cf6,stroke-width:2px,color:#1e293b style D fill:#e8f5e8,stroke:#10b981,stroke-width:2px,color:#1e293b style E fill:#fce4ec,stroke:#ec4899,stroke-width:2px,color:#1e293b style F fill:#e0f2f1,stroke:#06b6d4,stroke-width:2px,color:#1e293b style G fill:#f1f8e9,stroke:#84cc16,stroke-width:2px,color:#1e293b style H fill:#bbdefb,stroke:#3b82f6,stroke-width:2px,color:#1e293b style I fill:#c8e6c9,stroke:#22c55e,stroke-width:2px,color:#1e293b style J fill:#e1bee7,stroke:#a855f7,stroke-width:2px,color:#1e293b

双平台并行仿真

同一组智能体在 Twitter 和 Reddit 两个平台上拥有独立账号和行为历史,共享底层知识图谱和记忆系统。

Twitter 平台特征
  • • 短文本(280 字符),快速发布
  • • 算法推荐时间线,名人效应显著
  • • 转发、引用、提及,病毒式传播
Reddit 平台特征
  • • 长文本,深度讨论,嵌套评论
  • • 社区投票排序,兴趣聚合
  • • 投票、评论、award,质量筛选

智能体生命周期管理

完整的智能体状态机,实现从创建到消亡的全生命周期管理。

创建:从人格模板实例化
激活:根据时间引擎调度
决策:LLM 推理选择动作
执行:执行社交动作
反馈:接收互动响应
演化:记忆整合学习

事件注入系统

上帝视角的变量干预能力,支持三类干预方式 [181]

信息发布

突发新闻、官方声明、谣言澄清

直接写入平台内容池
环境变化

政策调整、市场波动、技术突破

修改全局环境变量
直接干预

封禁账号、修改算法、引入新角色

强制修改平台状态

4.2 智能体建模体系

人格生成:基于种子材料的角色构建

通过 LLM 基于相关图谱子上下文,使用人格模板填充具体参数值,确保行为与种子材料的真实语境一致。

人格维度 参数示例 数据来源
人口统计 年龄、性别、职业、地域 文本提及或 LLM 推断
心理特征 大五人格(开放性、尽责性等) 行为模式分析
认知风格 信息处理方式、风险偏好 决策场景推断
立场倾向 对关键议题的支持/反对程度 观点表达分析

动机引擎与情感建模

多层次的目标驱动系统,结合情感状态模型,实现复杂的人类行为模拟。

动机层次
本能层:生存需求、情感表达(即时)
社交层:关系维护、群体认同(轮次)
战略层:影响力积累、议程推进(长期)
情感状态模型
离散:基本情绪(愤怒、恐惧、喜悦等)
连续:效价、唤醒度、支配感三维空间

社交关系网络

动态的亲密度与影响力计算,模拟真实的社交网络结构。

关注/被关注关系
朋友/互关关系
互动历史累积
群体归属身份
隐性相似度计算

记忆架构:双层设计原理

短期工作记忆
容量:7±2 个 chunk
Retention:秒到分钟
检索:直接访问
用途:即时情境感知
长期图谱记忆
容量:理论上无上限
Retention:永久(需管理)
检索:相似度 + 结构检索
用途:跨轮次学习
记忆晋升机制:工作记忆中的高重要性事件通过巩固过程写入图谱记忆;高频检索记忆增强提取强度,低频记忆逐渐衰减。

4.3 MiroFishModel 与 miro_fish 函数分析

关键架构发现

经过对官方仓库及其主要社区 fork 的全面检索分析,我们发现:

独立 PyPI 包

MiroFishModel 类和 miro_fish 函数位于独立的 PyPI 包 mirofish-simulator(版本 0.12.0)[196],而非主仓库源码。

子进程集成架构

主仓库 MiroFish 是完整的 Web 应用,通过 SimulationRunner 服务以子进程方式调用 mirofish-simulator,实现仿真引擎与产品界面的解耦。

MiroFishModel 推测接口

class MiroFishModel:
    def __init__(self, config, llm_client=None, memory_backend=None):
        self.config = config
        self.agents = []
        self.graph = KnowledgeGraph()
        self.platforms = {}
        self.status = ModelStatus.IDLE
    
    def build_graph(self, seed_material):
        """从种子材料构建知识图谱"""
    
    def generate_agents(self, count, diversity_params=None):
        """基于图谱生成智能体人格"""
    
    def step(self, n=1, events=None):
        """执行 n 轮仿真"""
    
    def inject_event(self, event, target=None):
        """上帝视角事件注入"""
    
    def get_report(self, query, agent="report_agent"):
        """生成预测报告"""
                            

miro_fish 主控函数

def miro_fish(seed_material, prediction_goal, 
              config=None, callbacks=None, 
              return_interactive=False):
    """
    MiroFish 主入口:从种子材料到预测报告的完整流程
    
    Parameters
    ----------
    seed_material : 种子材料,支持多种格式
    prediction_goal : 自然语言描述的预测目标
    config : 仿真配置,None 则使用默认配置
    callbacks : 回调函数,用于进度监控
    return_interactive : 是否返回交互式世界对象
    
    Returns
    -------
    SimulationResult 或 (SimulationResult, InteractiveWorld)
    """
                            

与 SimulationRunner 的协作关系

主仓库通过子进程 + IPC 架构集成仿真库,实现进程隔离和资源管理。

当前实现(子进程 IPC)
强隔离、跨语言、易于调试
延迟较高(约 1 秒)、资源开销
建议改进(异步协程)
低延迟(毫秒级)、高并发
需要 async 重构、调试复杂

5. 数据处理与知识图谱

5.1 种子材料处理管道

flowchart TD A["种子材料上传"] --> B{"格式识别"} B -->|"PDF"| C["PDF 解析"] B -->|"Markdown"| D["Markdown 解析"] B -->|"TXT"| E["TXT 解析"] C --> F["文本清洗"] D --> F E --> F F --> G["文本规范化"] G --> H["分句处理"] H --> I["智能分块"] I --> J["向量化"] J --> K["信息密度评估"] K --> L["关键内容提取"] L --> M["本体论生成"] M --> N["实体关系抽取"] N --> O["GraphRAG 构建"] style A fill:#e3f2fd,stroke:#1e40af,stroke-width:2px,color:#1e293b style B fill:#fff3e0,stroke:#f59e0b,stroke-width:2px,color:#1e293b style C fill:#f3e5f5,stroke:#8b5cf6,stroke-width:2px,color:#1e293b style D fill:#e8f5e8,stroke:#10b981,stroke-width:2px,color:#1e293b style E fill:#fce4ec,stroke:#ec4899,stroke-width:2px,color:#1e293b style F fill:#e0f2f1,stroke:#06b6d4,stroke-width:2px,color:#1e293b style G fill:#f1f8e9,stroke:#84cc16,stroke-width:2px,color:#1e293b style H fill:#bbdefb,stroke:#3b82f6,stroke-width:2px,color:#1e293b style I fill:#c8e6c9,stroke:#22c55e,stroke-width:2px,color:#1e293b style J fill:#e1bee7,stroke:#a855f7,stroke-width:2px,color:#1e293b style K fill:#fff8e1,stroke:#fbbf24,stroke-width:2px,color:#1e293b style L fill:#ffebee,stroke:#ef4444,stroke-width:2px,color:#1e293b style M fill:#e8eaf6,stroke:#6366f1,stroke-width:2px,color:#1e293b style N fill:#e0f7fa,stroke:#06b6d4,stroke-width:2px,color:#1e293b style O fill:#e8f5e8,stroke:#22c55e,stroke-width:2px,color:#1e293b

多格式支持

支持 PDF、Markdown、TXT 三种主要格式的种子材料上传。

PDF 解析
使用 PyPDF2/pdfplumber/PyMuPDF,处理版面复杂性、表格、图片提取
Markdown 解析
使用 markdown-it,处理 frontmatter、内部链接、代码块
TXT 解析
内置解析 + chardet 编码检测,空行分割段落

文本预处理

流式解析策略,避免大文件完全加载到内存。

清洗:去除页眉页脚、重复空格
归一化:统一编码、日期格式
分句:语言特定规则或模型
分块:按 token 数或语义边界
向量化:嵌入模型支持检索
去重:合并重复或相似块

信息密度评估

识别核心内容区域,过滤低质量块和噪声。

评估指标
• 实体密度(每千字实体提及)
• 关系复杂度(关系类型多样性)
• 情感强度(情感词频和强度)
• 时间集中度(时间表达密度)
• 引用网络(被引用频率)

5.2 本体论生成与实体抽取

LLM 驱动的本体识别

通过 LLM 提示工程,从种子材料中自动识别概念、属性和关系三元组,无需为每个新领域训练专门模型。

本体论生成流程
  1. 主题识别:分析整体主题和领域类型
  2. 概念层次:识别核心概念及其上下位关系
  3. 属性定义:为每个概念定义关键属性
  4. 关系类型:识别概念间可能的关系
  5. 约束规则:定义基数、值域、互斥约束
提示工程要素
  • Few-shot 示例:提供领域相关本体示例
  • 迭代精化:多轮对话逐步完善
  • 一致性校验:检测循环继承、属性冲突
实体消歧与链接挑战

处理同名异义、异名同义、时变同一、模糊指代等复杂情况,通过上下文语义分析、图谱关系约束、字符串相似度、共指消解等技术实现高精度实体链接。

关系强度量化

基于多因素模型的关系强度计算,综合考虑共现、语义、句法、时间和用户反馈等因素。

Strength(e1, e2, relation) = α × CooccurrenceFrequency
+ β × SemanticSimilarity(e1, e2)
+ γ × SyntacticCloseness(sentence)
+ δ × TemporalProximity(events)
+ ε × UserFeedback(corrections)

实体抽取优化

LLM 驱动的实体关系抽取,通过多轮验证和结果融合提高准确性。

文本分块
将长文档分割为适合 LLM 上下文窗口的片段(通常 2,000-4,000 tokens)
本体论引导
使用生成的概念框架,提示 LLM 识别实体、属性、关系
多轮验证
对低置信度抽取进行复核,解决冲突和歧义
结果融合
合并跨块的抽取结果,进行实体消歧和关系去重

5.3 GraphRAG 构建流程

时序图谱组织

支持"在时间 T,实体 A 与实体 B 的关系强度为 X"的查询,实现图谱的时间演化追踪。

节点时序属性
• created_at
• modified_at
• valid_from
• valid_to
支持时间点查询、时间范围查询
边时序属性
• established_at
• strength_history[]
支持关系演化追踪、强度变化分析
事件时序属性
• timestamp
• duration
• participants[]
支持事件序列重建、因果链分析
版本管理策略

为关键实体和关系维护版本历史,采用完整快照 + 增量日志的混合方案,平衡查询效率和存储成本。

社区检测与聚类

自动发现群体结构,识别意见领袖和信息流动模式。

Louvain 算法
快速、模块化优化,适合大规模图谱初步探索
Leiden 算法
Louvain 改进,保证连通性,高质量社区划分
Label Propagation
线性复杂度,无需参数,超大规模实时检测
Infomap
信息论基础,捕捉层次结构,多尺度分析

检索增强生成(GraphRAG)

基于图谱上下文的生成增强,提供更准确和相关的回答。

1
查询理解:转化为图谱查询意图
2
种子实体识别:提取关键实体或生成候选
3
子图扩展:从种子出发扩展邻居
4
相关性排序:结合结构重要性和语义相似度
5
上下文组装:序列化为自然语言描述
6
生成增强:LLM 基于图谱上下文生成

5.4 记忆注入与更新机制

个体记忆

智能体私有的经验存储,记录个人事件、情感和策略。

事件记忆 - 亲身参与的关键事件
情感记忆 - 与特定实体关联的情感
策略记忆 - 成功或失败的行为模式
关系记忆 - 与其他智能体的互动历史

群体记忆

共享的事件和公共知识,为个体提供参考框架。

公共信息发布 - 新闻、公告、趋势话题
高频互动事件 - 热点讨论、集体行动
制度性知识 - 平台规则、社会规范

记忆衰减与强化

艾宾浩斯风格的遗忘曲线,结合重要性加权和强化机制。

Retention(t) = Importance × e^(-λ × t / Stability)
重要性:情感强度、结果显著性
稳定性:睡眠巩固、情感标记
强化机制:成功预测、情感高峰

记忆更新工作流程

每轮仿真结束后执行,将智能体的新观点、新关系、关键事件写入时序图谱 [181]

更新流程
  1. 事件提取:从 AgentAction 日志识别关键事件
  2. 自然语言生成:结构化事件转为描述性文本
  3. 图谱写入:通过 ZepGraphMemoryUpdater 更新
  4. 索引更新:刷新向量和时序索引
  5. 一致性校验:检测时间冲突或逻辑矛盾
检索策略
时间衰减:近期事件优先
重要性加权:高情感冲击事件增强
相关性过滤:与当前情境匹配优先

6. 模型训练与优化策略

6.1 提示工程体系

角色提示模板

维护智能体人格一致性,确保行为符合预设特征。

身份声明
"你是 [姓名],[年龄] 岁的 [职业]"
背景故事
关键经历形成的世界观
价值倾向
对关键议题的明确立场
行为风格
表达习惯和社交策略

情境提示构造

优化上下文窗口使用,解决有限性挑战。

分层摘要
近期详细 + 远期摘要 + 关键事件保留
动态选择
基于相关性检索记忆,提高利用率
外部引用
详细历史 offload 到图谱,提示中保留指针
多轮组装
分多次 LLM 调用,逐步聚焦

思维链引导

推理过程显性化,提高决策质量和可解释性。

复杂决策:是否发帖、如何回应争论
情感更新:为何情绪变化、如何表达
关系调整:是否关注/取关、如何维护
引导方式
明确要求"逐步思考"、提供思考框架、在输出格式中预留 reasoning 字段

6.2 仿真参数调优

智能体数量权衡

精度与效率的平衡,建议标准场景 500-2000 智能体 [181]

50-200 智能体
用途:快速原型、概念验证
成本:低($0.001-0.01)
500-2000 智能体
用途:标准预测、生产应用
成本:中($0.01-0.1)
2000-5000 智能体
用途:高精度需求、学术研究
成本:高($0.1-1)
5000+ 智能体
用途:超大规模社会模拟
成本:很高($1-10+)

模拟轮次优化

默认 40 轮,通过收敛性判断实现提前终止。

收敛性指标
• 观点方差:连续 5 轮变化 < 5%
• 网络密度:连续 5 轮变化 < 2%
• 话题熵:连续 5 轮变化 < 0.1
• 活跃率:降至 < 10% 或稳定
加速策略
• 轻量模型:速度提升 5-10x
• 批处理推理:速度提升 2-3x
• 缓存复用:速度提升 10-100x
• 降采样仿真:与采样率成反比

开放度参数控制

多维度控制随机性权重,影响结果多样性。

行为随机性
高值增加非常规行为,低值强化习惯模式
观点可塑性
高值使智能体易受他人影响,低值强化初始立场
信息探索
高值增加主动搜索新信息,低值依赖现有关注
社交冒险
高值增加与陌生人互动,低值强化现有关系

6.3 反事实模拟与敏感性分析

关键参数扰动

识别决策敏感因素,量化输出变化的敏感性系数。

1
确定基准仿真配置和关键输出指标
2
选择待测试参数及其扰动范围
3
并行运行多组扰动仿真
4
量化输出变化,计算敏感性系数
5
识别高敏感性参数,优先精确估计

场景分支对比

多版本并行推演,分析不同假设或参数下的结果分布。

单因素变化
每次只改变一个变量,因果归因、责任划分
正交设计
多因素组合,覆盖关键交互,效率优化
极端场景
压力测试,边界条件,风险评估
历史对照
与已知结果对比验证,模型校准

置信度评估体系

多源融合的置信度量化,提供结果的可靠性评估。

置信度来源
统计稳定性:多次运行的方差 → 置信区间
模型敏感性:参数扰动响应 → 敏感性等级
专家一致性:与专家判断对比 → 一致性评分
历史验证:与事后观察匹配 → 准确率
表达形式
• 置信区间(统计稳定性)
• 敏感性等级(高/中/低)
• 一致性评分(0-100)
• 准确率/召回率(历史验证)
• 矛盾标记(内部一致性)

7. 结果生成与可视化

7.1 预测报告生成

ReportAgent 架构:ReACT 循环与工具调用

采用 ReACT(Reasoning + Acting)架构的报告生成代理,区别于简单的模板填充,实现深度分析和洞察提取。

ReACT 循环流程
1
需求解析:分析预测目标,分解问题
2
策略规划:确定信息收集策略
3
工具执行:调用可用工具获取数据
4
信息整合:综合多源信息,识别模式
5
反思评估:判断信息充分性
6
报告合成:结构化组织发现
可用工具集
search_graph - 图谱语义搜索
interview_agent - 与智能体对话
analyze_trends - 时间序列分析
compare_scenarios - 多版本对比
compute_network_metrics - 网络分析
循环控制参数
• max_tool_calls: 5(防止无限循环)
• max_reflection_rounds: 2(支持自我修正)
• temperature: 0.5(平衡创造性)

报告结构标准

结构化组织发现,提供全面的分析视角。

执行摘要
核心发现、关键建议、置信度总览
背景分析
种子材料关键信息、智能体群体特征
演化叙事
按时间线组织的关键事件和转折点
网络分析
影响力结构、社区分化、信息流动
情感动态
整体情感走向、极化程度、关键触发点
情景对比
不同假设或参数下的结果分布
风险提示
低置信度区域、敏感假设、潜在意外
建议行动
基于仿真的策略建议及其预期效果

多维度分析

从时间、网络、情感三个维度深入分析仿真结果。

时间线分析
识别关键转折点、触发事件、变化速度
时序图、动画回放、转折点标注
影响力网络
计算中心性指标、识别意见领袖、追踪影响力流动
力导向图、桑基图、和弦图
情感演化
整体情感极性、群体分化、情感-行为关联
面积图、热力图、情感时间序列

7.2 交互式可视化

动态图谱渲染

D3.js 力导向图实现,支持数千节点的实时交互和动画效果。

核心功能
• 力导向布局:d3-force 仿真
• 时序动画:transition + requestAnimationFrame
• 交互探索:缩放、平移、拖拽、筛选
• 多层视图:节点分组、社区着色
• 详情面板:点击/悬停显示完整信息
性能优化
• Canvas 渲染(>1000 节点)
• Web Worker offload 力计算
• 层次细节(LOD)简化

智能体画像

个体轨迹与关系探查,深入了解特定智能体的行为模式。

基本信息:姓名、类型、人口统计
人格雷达:大五人格、认知风格
活动时间线:发帖、回复、互动分布
关系网络:直接联系人影响力排名
观点演化:关键议题立场的历史变化
代表性内容:高互动量帖子内容

对话界面:深度访谈能力

与报告代理或特定角色的深度访谈,探索更多洞察和验证假设。

报告代理模式
• 追问报告细节
• 请求额外分析
• 探索替代情景
• 验证关键结论
特定智能体模式
• 深入了解观点形成
• 验证行为合理性
• 探索决策逻辑
• 测试反事实场景
群体代表模式
• 快速把握群体特征
• 识别内部差异
• 理解群体动态
• 探索共识形成
对话状态管理

维护对话历史、注入相关记忆、管理上下文窗口、处理多轮引用和指代,支持流畅的多轮交互体验。

7.3 结果导出与复用

会话持久化

完整状态存储,支持后续查询和继续分析。

项目配置
JSON 格式,种子材料路径、仿真参数
知识图谱
KuzuDB/Neo4j 文件,完整语义网络
仿真历史
actions.jsonl + 状态快照
生成报告
Markdown + 原始数据
用户交互
对话日志、标注、反馈

任务状态管理

长时运行状态恢复,支持崩溃恢复和断点续传。

状态机持久化
• PENDING、RUNNING、PAUSED
• COMPLETED、FAILED、CANCELLED
关键特性:支持崩溃恢复、断点续传、进度查询、任务取消和重试

多格式输出

支持多种格式的报告导出,满足不同场景需求。

Markdown:完整叙事,人工阅读
JSON:结构化数据,程序化分析
HTML:富媒体版本,Web 发布
PDF:版式固定,打印友好

8. 性能优化与工程实践

8.1 计算资源管理

内存优化

大规模智能体的分页加载策略,解决内存压力问题。

活跃/休眠分离
仅活跃智能体常驻内存,休眠智能体序列化到磁盘
按需加载
根据平台活动和关注关系预测加载集合
共享结构
相同类型智能体共享人格模板,仅存储个体差异

并发控制

异步 I/O 与协程调度,提高系统并发效率。

HTTP 服务:Flask/FastAPI + Gunicorn
后台任务:concurrent.futures
仿真监控:threading.Thread
子进程:subprocess.Popen
改进方向
统一为 asyncio 协程架构,减少线程切换开销

子进程隔离

仿真引擎的独立运行空间,确保资源隔离和安全性。

益处
• 故障隔离:仿真崩溃不影响主服务
• 资源限制:便于 CPU/内存配额控制
• 环境隔离:支持不同 Python/依赖版本
• 安全隔离:限制潜在攻击面
代价
• 进程管理复杂性
• IPC 通信开销
• 部署复杂性
• 调试困难性

8.2 API 成本控制

令牌消耗预估模型

基于轮次、智能体数和上下文长度的成本估算。

Total Tokens ≈ Rounds × Agents × (Prompt Tokens + Completion Tokens)
示例:40 × 1000 × (4000 + 500) = 180M tokens per simulation
成本计算示例
GPT-4o-mini: $0.15/M input, $0.60/M output
约 $40/仿真
优化策略
• 双模型策略:轻量模型 + 强模型
• 批处理优化:OASIS 并行推理
• 本地部署:Ollama 等开源模型

模型选择策略

双模型策略优化,显著降低成本而不显著影响质量 [197]

任务类型 推荐模型 成本比例
本体论生成 qwen-plus / gpt-4o-mini 10%
智能体决策 qwen-turbo / gpt-4o-mini 60%
报告生成 qwen-plus / gpt-4o 20%
交互对话 用户选择 10%
优化效果:总成本可降至纯 gpt-4o 的 10-20%,质量损失可控

缓存机制

重复查询的结果复用,避免不必要的 API 调用。

嵌入向量缓存
键:文本内容哈希,有效期:永久
LLM 响应缓存
键:(prompt, model, temp),有效期:会话级
图谱查询缓存
键:查询模式 + 参数,有效期:轮次级
仿真结果缓存
键:完整配置哈希,有效期:长期

8.3 可观测性建设

日志分级体系

结构化的日志记录,支持不同级别的信息输出。

DEBUG:详细执行流程、变量值
INFO:关键里程碑、状态变更
WARNING:非致命异常、降级处理
ERROR:操作失败、服务异常
生产建议
接入集中式日志收集(ELK、Loki、Fluentd),支持全文检索和告警规则

健康检查端点

/api/health 服务状态监控,全面检查系统健康状况。

服务存活:HTTP 响应状态
依赖就绪:LLM API、Zep/Neo4j
资源充足:磁盘空间、内存使用
功能正常:关键路径端到端测试

仿真进度追踪

实时状态流与断点续传,支持长仿真管理和故障恢复。

进度指标
• 宏观:当前轮次/总轮次
• 中观:活跃智能体数、内容量
• 微观:特定智能体动作
断点续传
定期序列化完整状态,支持从任意轮次恢复

9. 扩展性与生态集成

9.1 插件化架构

资源适配器接口

自定义数据源接入,支持多种存储技术的无缝集成。

class ResourceAdapter(ABC):
    @abstractmethod
    def connect(self, config: Dict) -> Connection: ...
    
    @abstractmethod
    def create(self, data: Dict) -> ResourceID: ...
    
    @abstractmethod
    def read(self, id: ResourceID) -> Dict: ...
    
    @abstractmethod
    def update(self, id: ResourceID, data: Dict) -> None: ...
    
    @abstractmethod
    def delete(self, id: ResourceID) -> None: ...
    
    @abstractmethod
    def query(self, criteria: Dict) -> List[Dict]: ...
                            
社区贡献适配器
• Neo4jAdapter - 企业级图数据库
• KuzuAdapter - 嵌入式图数据库
• WeaviateAdapter - 向量数据库
• MinIOAdapter - 对象存储
接口价值
实现存储技术的可替换性,底层变化不影响上层业务逻辑,支持生态扩展和技术演进

工具组合模式

工作流的声明式编排,支持复杂业务场景的灵活配置。

workflow: crisis_communication
steps:
  - name: ingest
    tool: IngestTool
    input: ${uploaded_files}
    
  - name: build
    tool: BuildTool
    input: ${ingest.output}
    params: {ontology: "crisis"}
    
  - name: prepare
    tool: PrepareTool
    input: ${build.output}
    params: {agent_count: 2000}
    
  - name: baseline
    tool: RunTool
    input: ${prepare.output}
    params: {rounds: 40, name: "baseline"}
    
  - name: intervention
    tool: RunTool
    input: ${prepare.output}
    params: 
      rounds: 40
      name: "early_response"
      events: [{at: 10, type: "statement"}]
    
  - name: compare
    tool: CompareTool
    input: [${baseline.output}, ${intervention.output}]
    
  - name: report
    tool: ReportTool
    input: ${compare.output}
                            
设计特点
声明式配置、函数式组合、数据驱动、可视化编辑、版本管理、可复用性

平台扩展

新增社交场景仿真支持,扩展应用边界。

专业社区
LinkedIn(职场)、GitHub(开发者)、Discord(兴趣社群)
垂直平台
电商评价、本地服务、视频社区、专业论坛
新兴市场
短视频、私域社交、元宇宙、Web3 社区

9.2 与 CAMEL-AI 生态的协同

camel-oasis 版本锁定与兼容性管理

当前依赖: camel-oasis==0.2.5 [149],版本锁定确保可复现性。

版本管理策略
• 跟踪 OASIS 上游更新
• 评估新特性集成价值
• 测试环境验证后更新
• 维护版本兼容性矩阵
生态协同价值
复用 CAMEL-AI 生态的 broader 能力,专注于预测场景的产品化,实现技术栈的协同发展和知识共享

CAMEL-AI 生态能力

MiroFish 在 broader CAMEL-AI 生态中的定位和协同。

camel-ai/camel
多智能体对话和协作框架
camel-ai/oasis
社交仿真(MiroFish 使用)
camel-ai/owl
网络操作学习
camel-ai/meme
记忆和知识管理

上层封装策略

MiroFish 专注于预测场景的产品化,底层复用 CAMEL 能力。

领域特定能力
知识注入、报告生成、交互界面、可视化、部署方案
技术协同
上游更新追踪、社区贡献、漏洞修复、安全响应
协作机制
GitHub Issues/PRs、Discord 社区、定期同步会议

9.3 企业级定制路径

私有部署

内网环境与数据安全,满足不同级别的数据主权需求。

纯本地部署
Ollama + KuzuDB/Neo4j,完全数据主权
混合云部署
本地仿真 + 云端 LLM API,平衡性能和成本
私有云部署
专属云实例,合同保障,SLA 支持

领域适配

垂直行业的本体库构建,提供专业化的预测能力。

金融:资产、投资者、政策
医疗:疾病、药物、医生
能源:资源、设施、市场
教育:学生、课程、就业

人机协同

专家知识注入与结果校验,实现人机协同的预测分析。

准备阶段
审核材料、调整本体、校准参数
执行阶段
监控进展、注入事件、调整参数
分析阶段
解读报告、验证结论、识别盲点
决策阶段
综合判断、制定行动、评估风险

企业级特性支持

满足企业级应用的可靠性、安全性、可维护性要求。

技术特性
数据主权控制与合规支持
领域适配与垂直行业本体库
人机协同与专家知识注入
服务模式
定制化开发与技术培训
托管部署与运维服务
技术咨询与解决方案