MiroFish 是一款基于多智能体技术的新一代 AI 预测引擎。通过提取现实世界的种子信息(如突发新闻、政策草案、金融信号),自动构建出高保真的平行数字世界。在此空间内,成千上万个具备独立人格、长期记忆与行为逻辑的智能体进行自由交互与社会演化。你可透过「上帝视角」动态注入变量,精准推演未来走向——让未来在数字沙盘中预演,助决策在百战模拟后胜出。
你只需:上传种子材料(数据分析报告或者有趣的小说故事),并用自然语言描述预测需求
MiroFish 将返回:一份详尽的预测报告,以及一个可深度交互的高保真数字世界
MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体互动引发的群体涌现,突破传统预测的局限:
- 于宏观:我们是决策者的预演实验室,让政策与公关在零风险中试错
- 于微观:我们是个人用户的创意沙盘,无论是推演小说结局还是探索脑洞,皆可有趣、好玩、触手可及
从严肃预测到趣味仿真,我们让每一个如果都能看见结果,让预测万物成为可能。
欢迎访问在线 Demo 演示环境,体验我们为你准备的一次关于热点舆情事件的推演预测:mirofish-live-demo
金融方向推演预测、时政要闻推演预测等示例陆续更新中...
- 图谱构建:现实种子提取 & 个体与群体记忆注入 & GraphRAG构建
- 环境搭建:实体关系抽取 & 人设生成 & 环境配置Agent注入仿真参数
- 开始模拟:双平台并行模拟 & 自动解析预测需求 & 动态更新时序记忆
- 报告生成:ReportAgent���有丰富的工具集与模拟后环境进行深度交互
- 深度互动:与模拟世界中的任意一位进行对话 & 与ReportAgent进行对话
PrediHermes 使用的 fork 增加了反事实分支工作台,用于查看已经生成的历史分支。
- 使用
/simulation/<simulation_id>/counterfactual打开只读分支面板 /simulation/<simulation_id>/start仍然只用于实时启动或重启分支- 工作台整合了 Step 3 历史时间线、按轮次查看、base/branch 事件对比,以及注入 actor 影响的关系时间线
PrediHermes 是建立在 WorldOSINT + Polymarket + MiroFish 之上的本地优先操作层,用于把新闻包、市场价格、仿真结果、证据链、告警和反事实分支整理成可浏览的决策工件。
快速路径:
# 编译本地运行工件
./predihermes compile-artifacts \
--mirofish-root /absolute/path/to/MiroFish-main
# 在终端查看最新 ASCII 控制台
./predihermes dashboard \
--topic-id iran-conflict \
--mirofish-root /absolute/path/to/MiroFish-main
# 打开 Rust TUI 工作台(无前端依赖)
./predihermes tui \
--topic-id iran-conflict \
--mirofish-root /absolute/path/to/MiroFish-main
# 从已有 base simulation 创建新的反事实分支
./predihermes create-branch \
--base-simulation-id sim_19463d1a091e \
--actor-name "Swiss backchannel envoy" \
--entity-type Diplomat \
--profession Diplomat \
--country Switzerland \
--persona "Quiet mediator pushing phased verification and face-saving sequencing." \
--bio "Backchannel envoy with access to both US and Iranian negotiators." \
--interested-topic Diplomacy \
--interested-topic Verification \
--injection-round 8 \
--opening-statement "Swiss channel indicates a verification-first formula could still bridge the deadline gap."
# 也可以通过仓库 package script 调用
npm run predihermes -- dashboard --topic-id iran-conflict --mirofish-root /absolute/path/to/MiroFish-main默认跟踪运行现在会在基础 packet 之外附加两条经过本地裁剪的 feed:
intelligence_findingspolymarket_intel
默认模拟路径现在也会额外生成一份更干净的 simulation_brief.md,MiroFish 图谱构建优先吃这份 brief 而不是完整 seed packet。这样可以显著减少把 UTC、Deadline、Seed Packet 之类元数据误识别成 actor 的情况。
如果需要人工干预 cast / persona,可以先导出 operator 可编辑的人设清单:
./predihermes profile-template \
--simulation-id sim_0e4e0705893c \
--mirofish-root /absolute/path/to/MiroFish-main导出的 manifest 默认写到 ~/.hermes/data/geopolitical-market-sim/profile-manifests/。修改后可以把 JSON 路径挂到 tracked topic 上,让下一次运行直接采用 operator override,而不是重新让本地模型随意拼 persona:
./predihermes update-topic iran-conflict \
--set-profile-overrides-path /absolute/path/to/mirofish_a3d3a53a301d4487.json这个 manifest 本身就是给 operator 改的。可以直接禁用某些 actor,或者改写 entity_type、name、user_name、persona、bio 等字段,再把它挂回下一次 tracked run。
Rust TUI 启动时会先播放一段更明确的 ASCII PREDIHERMES boot sequence,进入工作台后会进入 control-room 布局:
- Topics
- Runs
- Branches
- Detail
头部、pane 标题和 control footer 会保持轻量动态效果,保证纯终端里也能看见“活”的状态而不是静态截图。
Rust TUI 会读取 ~/.hermes/data/geopolitical-market-sim/compiled/ 下的编译工件,支持浏览:
- topic 列表
- run 历史
- 决策工件
- evidence lineage
- alerts
- accountability ledger
- counterfactual branch summary
Rust TUI 常用按键:
1/2/3/4/5:快速切换 Topics、Runs、Branches、Tabs、Detail 焦点Tab:循环切换焦点j/k:在当前 pane 中移动h/l:切换 detail tabEnter:在 Branches pane 中直接打开当前 branch 详情c:基于当前 run 在 footer 中生成一条可直接执行的create-branch命令模板?:打开帮助覆盖层r:重新加载本地编译工件q:退出
如果希望 PrediHermes 全链路本地运行,可将 MiroFish 后端的 LLM_BASE_URL 指向任意 OpenAI-compatible 本地模型服务,例如 Ollama / vLLM / LM Studio。
仓库根目录内置了 ./predihermes 启动脚本,它会优先使用 backend/.venv/bin/python,避免系统 Python 缺少依赖时导致网络命令失败。
| 工具 | 版本要求 | 说明 | 安装检查 |
|---|---|---|---|
| Node.js | 18+ | 前端运行环境,包含 npm | node -v |
| Python | ≥3.11, ≤3.12 | 后端运行环境 | python --version |
| uv | 最新版 | Python 包管理器 | uv --version |
# 复制示例配置文件
cp .env.example .env
# 编辑 .env 文件,填入必要的 API 密钥必需的环境变量:
# 本地 LLM 配置(默认推荐 Ollama + Qwen,保持 PrediHermes 全链路本地)
LLM_API_KEY=ollama
LLM_BASE_URL=http://127.0.0.1:11434/v1
LLM_MODEL_NAME=qwen2.5:7b
LOCAL_LLM_REQUEST_TIMEOUT_SECONDS=900
LOCAL_LLM_MAX_TOKENS=192
# 图谱后端配置(推荐先用 local)
# 可选值: auto | local | zep
GRAPH_BACKEND=local
LOCAL_GRAPH_EXTRACTION_MODE=fast
LOCAL_SIMULATION_PROFILE=lean
LOCAL_SIM_MAX_AGENTS=48
LOCAL_SIM_MAX_ROUNDS=16
# Zep Cloud 配置(仅在 GRAPH_BACKEND=zep 时必需)
# 本地模式下建议留空,避免误以为模拟流程还在走 Zep。
# ZEP_API_KEY=your_zep_api_key说明:
GRAPH_BACKEND=local会将图谱存储在backend/uploads/graphs/*.sqlite3,不依赖 Zep。LOCAL_GRAPH_EXTRACTION_MODE=fast会让本地图谱构建优先走规则提取,适合本地 PrediHermes 快速模拟;如需更重的 LLM 图谱抽取,可改为llm。LOCAL_SIMULATION_PROFILE=lean、LOCAL_SIM_MAX_AGENTS=48、LOCAL_SIM_MAX_ROUNDS=16是当前本地 PrediHermes 的默认轻量模拟配置,目的是让 Ollama/Qwen 在单机上稳定跑通而不是默认假设云端吞吐。GRAPH_BACKEND=auto会在存在ZEP_API_KEY时使用 Zep,否则自动回退到本地 SQLite。GRAPH_BACKEND=zep会强制要求ZEP_API_KEY。- 本仓库默认建议的模型路径是
Ollama -> qwen2.5:7b,也就是http://127.0.0.1:11434/v1。
# 一键安装所有依赖(根目录 + 前端 + 后端)
npm run setup:all或者分步安装:
# 安装 Node 依赖(根目录 + 前端)
npm run setup
# 安装 Python 依赖(后端,自动创建虚拟环境)
npm run setup:backend# 同时启动前后端(在项目根目录执行)
npm run dev服务地址:
- 前端:
http://localhost:3000 - 后端 API:
http://localhost:5001
单独启动:
npm run backend # 仅启动后端
npm run frontend # 仅启动前端# 1. 配置环境变量(同源码部署)
cp .env.example .env
# 2. 拉取镜像并启动
docker compose up -d默认会读取根目录下的 .env,并映射端口 3000(前端)/5001(后端)
在
docker-compose.yml中已通过注释提供加速镜像地址,可按需替换
MiroFish团队长期招募全职/实习,如果你对多Agent应用感兴趣,欢迎投递简历至:mirofish@shanda.com
MiroFish 得到了盛大集团的战略支持和孵化!
MiroFish 的仿真引擎由 OASIS 驱动,我们衷心感谢 CAMEL-AI 团队的开源贡献!









