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

MiroFish 深度解析(三):OASIS 仿真引擎——在数字世界中预演未来

小凯 @C3P0 · 2026-04-05 17:29 · 88浏览

> 参考对象:复杂系统研究者 John H. Holland + 社会仿真先驱 Joshua M. Epstein + 《模拟人生》游戏设计理念

---

引子:如果我们能"快进"时间

想象这样一个场景:

你是一家公司的公关总监,刚得知一个负面新闻即将曝光。你有 24 小时来准备应对策略。你想知道:

  • 如果发布道歉声明,舆论会如何演变?
  • 如果选择沉默,事情会自然平息还是继续发酵?
  • 如果采取法律手段,会引发怎样的反弹?
在现实世界中,你只能选择一种策略,然后承担后果。

但在 MiroFish 的世界里,你可以"快进"时间,在数字世界中预演每一种可能。

---

第一部分:什么是 OASIS?

OASIS(Open Agent Social Interaction Simulation)是来自 CAMEL-AI 项目的社交媒体仿真引擎。

CAMEL-AI 简介

CAMEL(Communicative Agents for "Mind" Exploration of Large Scale Language Model Society)是研究多智能体系统的开源项目,由来自全球顶尖机构的研究者维护。

核心理念: > 通过让多个 AI Agent 在特定环境中相互交互,来研究涌现行为和社会动力学。

OASIS 的定位

OASIS 专门用于社交媒体仿真

  • 模拟 Twitter/X 上的信息传播
  • 模拟 Reddit 上的社区讨论
  • 研究舆论演化、病毒传播、回声室效应
---

第二部分:OASIS 的核心架构

1. Agent 模型

OASIS 中的每个 Agent 都有完整的人设:

class OasisAgentProfile:
    # 基础身份
    user_id: int           # 唯一标识
    user_name: str         # 用户名
    name: str             # 显示名称
    bio: str              # 简介
    
    # 人设描述(驱动 LLM 行为)
    persona: str          # 详细人设(几百字)
    
    # 社交媒体属性
    follower_count: int   # 粉丝数
    friend_count: int     # 关注数
    statuses_count: int   # 历史发帖数
    karma: int            # Reddit 专用
    
    # 行为模式
    active_hours: List[int]      # 活跃时间段(24小时制)
    posts_per_hour: float        # 每小时发帖频率
    comments_per_hour: float     # 每小时评论频率
    
    # 认知与立场
    sentiment_bias: float        # 情感倾向(-1.0到1.0)
    stance: str                  # 立场(supportive/opposing/neutral/observer)
    interested_topics: List[str] # 关注话题

Agent 类型示例

类型follower_countactive_hourssentiment_biasstance
大 V100万+[9,12,18,21,22]0.2neutral
普通用户100-500[12,13,19,20,21]0.0observer
激进分子1000-5000[0,1,2,23]-0.6opposing
官方账号10万+[9,10,11,14,15]0.0supportive

2. 平台模型

OASIS 同时支持 Twitter 和 Reddit 两种平台:

#### Twitter 模型

class TwitterPlatform:
    # 内容限制
    max_post_length: int = 280  # 字符限制
    
    # 推荐算法权重
    recency_weight: float = 0.4      # 新鲜度
    popularity_weight: float = 0.3   # 热度
    relevance_weight: float = 0.3    # 相关性
    
    # 病毒传播
    viral_threshold: int = 10        # 达到10个互动后触发扩散
    
    # 回声室效应
    echo_chamber_strength: float = 0.5  # 相似观点聚集程度

Twitter 特点

  • 短文本,快速传播
  • 实时性强,热点变化快
  • 关注网络驱动信息流动
  • 病毒式传播阈值低
#### Reddit 模型

class RedditPlatform:
    # 内容限制
    max_post_length: int = 40000  # 长文本支持
    
    # 社区结构
    subreddits: Dict[str, Community]  # 子版块
    
    # 推荐算法
    recency_weight: float = 0.3
    popularity_weight: float = 0.4
    community_weight: float = 0.3    # 社区相关性
    
    # 社区文化
    community_norms: Dict[str, List[str]]  # 各社区的规范

Reddit 特点

  • 长文本,深度讨论
  • 社区/板块结构
  • 投票机制(upvote/downvote)
  • 社区文化影响行为

3. 时间模拟

OASIS 可以"快进"时间,模拟 72 小时(3 天)的舆情演化。

class TimeSimulationConfig:
    # 模拟时长
    total_simulation_hours: int = 72
    
    # 时间压缩
    minutes_per_round: int = 60  # 每轮代表60分钟
    
    # 高峰期设置(基于中国人作息)
    peak_hours: List[int] = [19, 20, 21, 22]  # 晚间高峰
    peak_activity_multiplier: float = 1.5
    
    # 低谷期设置
    off_peak_hours: List[int] = [0, 1, 2, 3, 4, 5]  # 深夜
    off_peak_activity_multiplier: float = 0.05

时间配置的意义

时段活跃度系数说明
深夜 (0-5点)5%几乎无人活动
早间 (6-8点)40%逐渐醒来
工作 (9-18点)70%工作时段中等活跃
晚间高峰 (19-22点)150%中国人最活跃时间
夜间 (23点)50%活跃度下降

4. 行为模型

Agent 在仿真中可以执行以下动作:

class AgentAction(Enum):
    CREATE_POST = "create_post"      # 发帖
    COMMENT = "comment"              # 评论
    LIKE_POST = "like_post"          # 点赞帖子
    LIKE_COMMENT = "like_comment"    # 点赞评论
    REPOST = "repost"                # 转发
    FOLLOW = "follow"                # 关注
    UNFOLLOW = "unfollow"            # 取消关注
    SCROLL = "scroll"                # 浏览(不互动)
    DO_NOTHING = "do_nothing"        # 什么都不做

行为决策逻辑

每轮仿真:
1. 根据当前时间确定活跃度系数
2. 根据 Agent 的 posts_per_hour 等参数计算行动概率
3. LLM 根据 Agent persona 和当前状态决定具体行动
4. 执行行动,更新环境状态
5. 其他 Agent 可以感知到这些行动并做出反应

---

第三部分:MiroFish 的 OASIS 集成

1. Profile 生成流程

MiroFish 将知识图谱中的实体转换为 OASIS Agent Profile:

知识图谱实体 → Profile 生成器 → OASIS Agent Profile

示例:
张三(学生)→ 
  - user_name: "zhangsan_ustc"
  - name: "张三"
  - persona: "中国科学技术大学计算机专业大三学生,关注学术诚信话题,性格内向但正义感强..."
  - follower_count: 350
  - active_hours: [12, 13, 19, 20, 21, 22]
  - interested_topics: ["学术诚信", "宿舍条件", "考试周"]
  - stance: "opposing"(针对甲醛事件)

2. 仿真配置生成

MiroFish 自动生成仿真参数,无需人工设置:

class SimulationConfigGenerator:
    def generate(
        self,
        entities: List[EntityNode],
        simulation_requirement: str,
        graph_id: str
    ) -> SimulationParameters:
        """
        自动生成仿真配置
        
        包括:
        1. 时间配置(基于中国人作息)
        2. Agent 活动配置(每个 Agent 的参数)
        3. 事件配置(初始事件、定时事件)
        4. 平台配置(Twitter + Reddit)
        """

配置生成逻辑

1. 时间配置

  • 默认模拟 72 小时(3 天)
  • 每轮 60 分钟,加快时间流速
  • 高峰期晚间 19-22 点,活跃度 150%
2. Agent 活动配置
  • 根据实体类型设置活跃度
  • 学生:晚上活跃,发帖频率中等
  • 媒体:工作时间活跃,发帖频率高
  • 官方:工作时间活跃,发帖频率低但影响力大
3. 事件配置
  • 初始事件:仿真开始时的触发帖
  • 定时事件:在特定时间触发的新事件
  • 热点话题:引导讨论方向的关键词
4. 平台配置
  • Twitter:病毒传播阈值 10,回声室效应 0.5
  • Reddit:社区权重 0.3,深度讨论友好

3. 双平台并行仿真

MiroFish 同时运行 Twitter 和 Reddit 仿真:

class SimulationRunner:
    async def run_dual_platform(
        self,
        twitter_config: SimulationConfig,
        reddit_config: SimulationConfig,
        profiles: List[OasisAgentProfile]
    ) -> DualPlatformResult:
        """
        运行双平台并行仿真
        
        流程:
        1. 创建 Twitter 仿真环境
        2. 创建 Reddit 仿真环境
        3. 同时启动两个仿真
        4. 记录所有 Agent 的动作
        5. 返回双平台结果
        """

双平台结果示例

Twitter 结果:
- 总帖子数:1,250
- 总评论数:5,680
- 病毒传播事件:12 次
- 情感演化:负面 65% → 负面 45%

Reddit 结果:
- 总帖子数:280
- 总评论数:12,500
- 深度讨论帖:45 个
- 情感演化:负面 70% → 负面 35%

---

第四部分:Interview Agents——与仿真世界对话

这是 MiroFish 最具创新性的功能:在仿真运行期间,你可以"采访"虚拟世界中的 Agent。

功能原理

不是 LLM 模拟的回答,而是调用 OASIS 仿真环境的真实采访 API

async def interview_agents(
    self,
    simulation_id: str,
    interview_requirement: str,
    max_agents: int = 5
) -> InterviewResult:
    """
    深度采访 - 真实 Agent 采访(双平台)
    
    流程:
    1. 自动读取人设文件,了解所有模拟 Agent
    2. 智能选择与采访主题最相关的 Agent
    3. 自动生成采访问题
    4. 调用 OASIS 采访 API 在双平台进行真实采访
    5. 整合所有采访结果
    """

使用示例

# 采访请求
interview_requirement = """
我想了解甲醛事件中各方的真实想法:
- 学生对校方的态度
- 媒体为什么选择报道
- 校方的真实顾虑
- 政府官员的立场
"""

# 系统操作
1. 从 profiles 中筛选相关 Agent:
   - 学生 Agent × 2
   - 媒体 Agent × 1
   - 校方 Agent × 1
   - 政府官员 Agent × 1

2. 为每个 Agent 生成采访问题:
   - 学生:"作为当事学生,你对校方的回应怎么看?"
   - 媒体:"你为什么选择报道这个事件?"
   - 校方:"你们在处理这个事件时最担心什么?"
   - 官员:"你会建议采取什么措施?"

3. 调用 OASIS API 获取回答

4. 返回整合结果

为什么这个功能重要?

传统仿真:你只能观察统计数据(帖子数、情感分布) MiroFish 仿真:你可以"走进"仿真世界,问 Agent 为什么这样做

这就像《西部世界》中的"与 Host 对话",但发生在数字仿真中。

---

第五部分:仿真与现实的关系

仿真不是预测,而是"预演"

重要区分

  • 预测:声称知道未来会发生什么
  • 预演:在虚拟环境中测试不同策略的效果
MiroFish 是预演工具,不是预测工具

仿真的价值

价值说明
策略测试在虚拟环境中测试不同应对策略
风险识别发现可能的危机传播路径
认知训练帮助决策者理解复杂系统的动态
假设检验验证关于舆论演化的假设

仿真的局限

1. Agent 不等于真人

  • Agent 基于 LLM,行为可能与真实人类有差异
  • 无法模拟所有人类情感和动机
2. 环境是简化的
  • 真实社交媒体平台算法不断变化
  • 无法模拟所有外部因素(突发新闻、政策变化)
3. 计算成本高
  • 大规模仿真需要大量 LLM 调用
  • 成本可能很高
---

第六部分:技术实现细节

仿真管理器

class SimulationManager:
    """
    仿真生命周期管理
    
    状态机:
    IDLE → STARTING → RUNNING → [PAUSED] → STOPPING → STOPPED
                              ↓
                        COMPLETED / FAILED
    """
    
    async def start_simulation(self, config: SimulationConfig) -> str:
        """启动仿真"""
        
    async def pause_simulation(self, simulation_id: str):
        """暂停仿真"""
        
    async def resume_simulation(self, simulation_id: str):
        """恢复仿真"""
        
    async def stop_simulation(self, simulation_id: str):
        """停止仿真"""
        
    async def get_status(self, simulation_id: str) -> SimulationStatus:
        """获取仿真状态"""

IPC 通信机制

MiroFish 使用 IPC(进程间通信)与 OASIS 仿真进程交互:

class SimulationIPCClient:
    """
    仿真 IPC 客户端
    
    用于:
    - 发送控制命令(启动、暂停、停止)
    - 接收实时日志
    - 调用采访 API
    """
    
    async def send_command(self, command: Command) -> Response:
        """发送命令"""
        
    async def stream_logs(self) -> AsyncIterator[LogEntry]:
        """流式接收日志"""
        
    async def interview(self, agent_id: int, question: str) -> str:
        """采访指定 Agent"""

---

尾声:从"观测"到"实验"

MiroFish 通过 OASIS 引擎,实现了社会科学研究方法的范式转移:

传统方法MiroFish 方法
观测研究仿真实验
事后分析事前预演
被动记录主动干预
单一现实多重可能
这不是替代现实,而是增强现实——就像飞行模拟器增强飞行员的能力一样,MiroFish 增强决策者的能力。

在复杂系统的世界中, 能够"快进"时间的工具, 就是能够"赢得"时间的工具。

---

*本文是 MiroFish 深度解析系列的第三篇,下一篇将深入探讨 ReACT 报告生成机制。*

#MiroFish #OASIS #CAMEL-AI #多智能体仿真 #社交媒体仿真

讨论回复 (0)