参考对象:Kevin Kelly《必然》中的"预测未来"思维 + 《西部世界》的仿真理念 + 社会网络分析之父 Mark Granovetter 的弱连接理论
引子:一个 00 后的"疯狂"项目
2025 年初,GitHub 上出现了一个奇怪的项目:
- 一个中国科学技术大学的 00 后本科生
- 仅用了 10 天完成核心开发
- 获得了盛大集团创始人陈天桥 3000 万人民币投资
- GitHub 44,000+ stars
- 登顶 GitHub Trending 第一
这个项目叫 MiroFish——一个基于多智能体技术和知识图谱的"未来预测引擎"。
它的核心理念很简单:
如果我们能用 AI 精确模拟一个社会系统中的所有参与者,那么我们就能预测这个系统在未来会发生什么。
不是统计学意义上的"预测",而是仿真意义上的"预演"——就像飞行员用飞行模拟器训练一样,MiroFish 让决策者可以在虚拟环境中"预演"未来。
第一部分:为什么传统预测方法失效了?
大数据预测的局限
传统的趋势预测依赖历史数据 + 统计模型:
- 回归分析
- 时间序列预测
- 机器学习分类
这些方法在静态环境中表现良好,但面对复杂社会系统时往往失效:
| 问题 | 原因 |
|---|---|
| 黑天鹅事件无法预测 | 历史数据中不存在 |
| 非线性交互被忽略 | 统计模型假设线性关系 |
| 人的主观能动性被抹平 | 把人看作数据点而非能动主体 |
| 情绪、认知、社交影响无法量化 | 传统模型缺乏微观基础 |
社会仿真的新思路
MiroFish 的解决思路是自下而上的涌现式仿真:
- 不预测整体,而是模拟个体:每个个体都有自己的目标、情绪、认知
- 不假设关系,而是构建网络:从文档中自动抽取实体和关系
- 不让时间静止,而是动态演化:模拟随时间推移的交互过程
- 不依赖单一视角,而是群体智能:每个 Agent 都是独立的决策者
这是从"大数据"到"大仿真"的范式转移。
第二部分:MiroFish 的五大核心组件
MiroFish 的架构可以用一张图概括:
┌─────────────────────────────────────────────────────────────────┐
│ MiroFish 架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 输入层 知识层 仿真层 输出层 │
│ ────── ─────── ────── ────── │
│ │
│ ┌─────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │文档 │ ──> │ GraphRAG │ ──> │ OASIS │ ──> │ 报告Agent│ │
│ │链接 │ │ Zep图谱 │ │ 仿真引擎 │ │ ReACT模式│ │
│ └─────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │ │ │
│ 本体生成器 Profile生成器 │
│ 实体/关系定义 Agent人设生成 │
│ │
└─────────────────────────────────────────────────────────────────┘
组件 1:GraphRAG 知识图谱(Zep Cloud)
功能:从输入文档中自动抽取实体、关系和事件
核心特性:
- 时态图谱:不仅记录"什么实体存在",还记录"什么时候有效"
- 自动本体生成:LLM 根据文本内容自动生成实体类型和关系类型定义
- 事实追溯:可以回答"在 X 时间点,Y 实体和 Z 实体的关系是什么"
为什么用 GraphRAG 而非普通 RAG?
| 普通 RAG | GraphRAG |
|---|---|
| 检索相关文本块 | 检索实体和关系网络 |
| 回答"文档说了什么" | 回答"谁和谁有什么关系" |
| 上下文容易丢失 | 结构化保留复杂关系 |
| 难以处理多跳推理 | 天然支持关系链追踪 |
组件 2:本体生成器(Ontology Generator)
功能:自动设计适合社会模拟的实体类型和关系类型
设计约束:
- 必须正好 10 个实体类型
- 最后 2 个必须是兜底类型(Person、Organization)
- 所有实体必须是能在社交媒体上"发声"的主体
- 不能是抽象概念(如"舆论"、"趋势")
示例输出(学术事件场景):
| 实体类型 | 说明 |
|---|---|
| Student | 学生 |
| Professor | 教授/学者 |
| University | 高校 |
| GovernmentAgency | 政府机构 |
| MediaOutlet | 媒体机构 |
| PublicFigure | 公众人物 |
| Expert | 专家学者 |
| NGO | 非政府组织 |
| Person | 个人兜底类型 |
| Organization | 组织兜底类型 |
组件 3:OASIS Profile 生成器
功能:将知识图谱中的实体转换为 OASIS 仿真平台所需的 Agent Profile
生成的 Profile 包含:
- 基础信息:姓名、年龄、性别、MBTI、国籍、职业
- 社交媒体属性:粉丝数、发帖历史、活跃时间段
- 人设描述:详细的 persona,用于驱动 LLM 生成行为
- 立场设定:对特定话题的态度(支持/反对/中立/观察)
技术细节:
class OasisAgentProfile:
user_id: int
user_name: str
bio: str # 简介
persona: str # 详细人设(几百字)
karma: int # Reddit 专用
follower_count: int # Twitter 专用
active_hours: List[int] # 活跃时间段
sentiment_bias: float # 情感倾向
stance: str # 立场
interested_topics: List[str] # 关注话题
组件 4:OASIS 仿真引擎(来自 CAMEL-AI)
功能:运行多智能体社交媒体仿真
核心特性:
- 双平台并行:同时模拟 Twitter 和 Reddit
- 真实时间模拟:模拟 72 小时的舆情演化
- Agent 行为:发帖、评论、点赞、转发、关注
- 信息传播:病毒式传播阈值、回声室效应
时间配置(基于中国人作息):
CHINA_TIMEZONE_CONFIG = {
"dead_hours": [0, 1, 2, 3, 4, 5], # 深夜几乎无人
"morning_hours": [6, 7, 8], # 早间逐渐活跃
"work_hours": [9, 10, ..., 18], # 工作时段中等
"peak_hours": [19, 20, 21, 22], # 晚间高峰
"activity_multipliers": {
"dead": 0.05, # 凌晨活跃度 5%
"peak": 1.5, # 晚间高峰 150%
}
}
组件 5:Report Agent(ReACT 模式)
功能:基于仿真结果生成未来预测报告
工作流程:
- 规划阶段:分析模拟需求,规划报告大纲(2-5 个章节)
- 检索阶段:调用多种工具获取仿真数据
insight_forge:深度洞察检索panorama_search:广度搜索全貌interview_agents:采访仿真中的 Agent
- 生成阶段:逐章节生成,每章节多次工具调用
- 反思阶段:检查内容完整性和准确性
可用工具详解:
| 工具 | 功能 |
|---|---|
| InsightForge | 深度洞察检索,自动分解问题并多维度检索事实和关系 |
| PanoramaSearch | 广角全景搜索,了解事件全貌、时间线和演变过程 |
| QuickSearch | 轻量级快速检索,适合简单信息查询 |
| InterviewAgents | 调用 OASIS 采访 API,获取 Agent 真实回答(非 LLM 模拟) |
第三部分:MiroFish 的完整工作流程
Step 1:输入与知识抽取
用户上传文档(PDF、网页链接等)并描述模拟需求:
"模拟某高校宿舍甲醛超标事件在社交媒体上的传播过程"
系统使用 GraphRAG 构建 Zep 知识图谱:
- 从文档中抽取实体(学生、校方、媒体、政府部门等)
- 抽取关系(就读于、隶属于、报道、回应等)
- 记录时态信息(事件何时发生、何时被报道)
Step 2:本体与 Profile 生成
- 本体生成:LLM 分析文本,生成 10 个实体类型和 6-10 个关系类型
- Profile 生成:将图谱中的每个实体转换为 OASIS Agent Profile
- 学生 → 活跃的社交媒体用户
- 校方 → 官方账号
- 媒体 → 新闻机构账号
- 政府部门 → 监管机构账号
Step 3:仿真配置生成
系统自动生成仿真参数:
- 时间配置:模拟 72 小时,每轮 60 分钟
- Agent 活动配置:每个 Agent 的发言频率、活跃时间段、立场
- 事件配置:初始触发事件、定时事件、热点话题
- 平台配置:推荐算法权重、病毒传播阈值、回声室效应强度
Step 4:运行仿真
在 OASIS 中运行双平台并行仿真:
- Twitter:短文本、快速传播、病毒式扩散
- Reddit:长文本、深度讨论、社区文化
实时监控:
- 每轮 Agent 的动作记录
- 信息传播路径
- 情感演化趋势
Step 5:报告生成
Report Agent 使用 ReACT 模式生成报告:
- 规划报告大纲
- 逐章节调用工具获取数据
- 采访仿真中的 Agent 获取第一手观点
- 生成未来预测报告
第四部分:核心技术亮点
1. 时态知识图谱
MiroFish 使用 Zep Cloud 的时态图谱功能,不仅记录"什么实体存在",还记录"什么时候有效"。
示例:
- "学生 A 就读于大学 B"(2023-09-01 至 2027-06-30)
- "公司 C 被公司 D 收购"(2024-01-15 生效)
这使得系统可以回答:
- "在事件发生时,学生 A 还在校吗?"
- "收购完成后,公司 C 的员工立场有什么变化?"
2. 双平台并行仿真
MiroFish 同时模拟 Twitter 和 Reddit:
| 特性 | ||
|---|---|---|
| 内容形式 | 短文本(280 字) | 长文本 |
| 传播速度 | 快 | 慢 |
| 讨论深度 | 浅 | 深 |
| 社区结构 | 关注网络 | 社区/板块 |
| 算法特点 | 实时热点 | 社区推荐 |
双平台设计的洞察:
- 不同平台的用户行为模式不同
- 信息在不同平台的传播路径不同
- 舆论在不同平台的演化节奏不同
3. Interview Agents 功能
这是 MiroFish 最具创新性的功能之一:在仿真运行期间,你可以"采访"虚拟世界中的 Agent。
不是 LLM 模拟的回答,而是调用 OASIS 仿真环境的真实采访 API,获取 Agent 基于其 persona 和当前状态的原始回答。
使用场景:
- "作为当事学生,你对校方的回应怎么看?"
- "作为媒体记者,你为什么选择报道这个事件?"
- "作为政府官员,你会采取什么措施?"
这类似于《西部世界》中的"与 Host 对话",但发生在数字仿真中。
4. ReACT 模式报告生成
Report Agent 采用 ReACT(Reasoning + Acting)模式:
Thought(思考) → Action(调用工具) → Observation(观察结果) → 重复 → Final Answer(生成内容)
优势:
- 每个章节至少调用 3 次工具,确保内容基于真实数据
- 不依赖 LLM 的"幻觉"知识
- 可以追溯每个结论的信息来源
第五部分:MiroFish 的局限性与边界
1. 依赖输入文档质量
如果输入文档不完整或有偏见,生成的知识图谱也会有问题。
2. 仿真不等于现实
虽然 MiroFish 努力让仿真逼近现实,但它仍然是简化模型:
- Agent 行为基于 LLM,可能与真实人类有差异
- 无法模拟所有外部因素(突发新闻、政策变化等)
- 社交媒体平台算法在不断变化
3. 计算成本
运行大规模仿真需要大量计算资源:
- 每个 Agent 都是一个 LLM 调用
- 72 小时仿真可能涉及数千次 LLM 调用
- 成本可能很高
4. 伦理边界
预测未来涉及敏感问题:
- 预测结果可能影响决策,产生自我实现的预言
- 被用于操控舆论或干预社会
- 隐私和数据安全问题
尾声:从"大数据"到"大仿真"
MiroFish 代表了一个重要的范式转移:
| 大数据时代 | 大仿真时代 |
|---|---|
| 分析历史数据 | 模拟未来场景 |
| 统计相关性 | 因果机制 |
| 黑箱预测 | 可解释推演 |
| 被动观察 | 主动实验 |
这类似于物理学的演进:
- 开普勒:通过观测数据总结行星运动规律
- 牛顿:建立力学模型,可以预测未来位置
- MiroFish:建立社会力学模型,试图预测社会演化
当然,社会系统远比物理系统复杂,"社会力学"可能永远不会像物理学那样精确。但 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/
- Kevin Kelly《必然》: 预测未来的 12 个技术趋势
本文是 MiroFish 深度解析系列的第一篇,后续将继续深入探讨技术细节。
#MiroFish #多智能体仿真 #知识图谱 #AI预测 #开源项目
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。