MiroFish Offline
在本地模拟文档引发的舆情、情绪与社会互动。
这个 Agent 能做什么,适合哪些场景?
MiroFish Offline 是 MiroFish 的全本地化英文分支,用于从上传文档构建多智能体社会模拟。它以 Flask API 提供图谱、模拟和报告功能,并以 Neo4j Community Edition 5.15 保存图谱与记忆,以 Ollama 提供本地模型和嵌入。系统会围绕文档生成数百个具有个性、立场、反应速度、影响力和记忆的角色,在模拟社交平台上持续互动。模拟结束后,ReportAgent 会结合焦点群体访谈和知识图谱检索生成结构化分析;用户还可以继续与模拟中的角色聊天。项目可通过 Docker Compose 部署,也提供 Python、Node.js、Neo4j 和 Ollama 的手动运行路径。
用户上传新闻稿、政策草案或财报等文档后,Graph Build 会抽取人物、公司、事件及其关系,并写入 Neo4j 的知识图谱和个体、群体记忆。Env Setup 为模拟环境生成数百个角色,配置 personality、opinion bias、reaction speed、influence level 与历史记忆。Simulation 让角色在模拟社交平台发帖、回复、争论和改变观点,同时跟踪 sentiment evolution、topic propagation 与 influence dynamics。ReportAgent 在模拟后访谈一组角色、检索知识图谱证据并生成结构化报告;Interaction 支持继续询问任一角色发帖原因。后端通过 app.extensions['neo4j_storage'] 注入 GraphStorage,Neo4jStorage 内包含 EmbeddingService、NERExtractor 和 SearchService,其中混合搜索采用 0.7 向量相似度与 0.3 BM25 关键词搜索。
- 公关团队在发布新闻稿前,上传草稿并观察模拟公众在社交平台上的讨论、争论和情绪变化。
- 市场研究或交易研究人员将金融新闻输入系统,观察模拟环境中的市场情绪与话题传播。
- 政策团队将拟议法规作为文档上传,测试不同角色对政策内容的可能反应。
- 研究人员需要把人物、组织和事件从材料中抽取为可检索的 Neo4j 知识图谱时,可将其作为模拟前的数据准备环节。
- 创作者希望基于一段文本,让带有持续记忆和人格的角色产生后续互动与叙事反应时,可以运行完整模拟。
这个 Agent 有哪些优点和局限?
- 用 Neo4j Community Edition 5.15 和 Ollama 替代 Zep Cloud 与云端模型 API,部署后可在本地运行且不需要云 API 密钥。
- 从文档图谱构建、角色生成、社交互动模拟到 ReportAgent 报告和角色追问,提供了完整的端到端流程。
- GraphStorage 抽象接口将应用服务层与图数据库分开,文档明确说明可通过实现一个类替换 Neo4j。
- SearchService 的混合检索明确结合向量相似度与 BM25,权重为 0.7 与 0.3。
- 推荐的 qwen2.5:32b 配置需要 24 GB 显存;最低配置仍建议 16 GB 内存和 10 GB 显存,CPU-only 模式会明显更慢。
- 运行环境依赖 Neo4j、Ollama 和嵌入模型,Docker 方案还需要 Docker 与 Docker Compose。
- 默认 Neo4j 用户名和密码在示例配置中为 neo4j/mirofish,部署者需要自行评估和修改本地安全配置。
- 项目虽称可通过修改 LLM_BASE_URL 和 LLM_API_KEY 更换提供商,但 README 未给出各第三方提供商的具体配置示例或兼容性测试结果。
如何安装或部署这个 Agent?
推荐 Docker 部署:
git clone https://github.com/nikmcfly/MiroFish-Offline.git
cd MiroFish-Offline
cp .env.example .env
docker compose up -d
docker exec mirofish-ollama ollama pull qwen2.5:32b
docker exec mirofish-ollama ollama pull nomic-embed-text
然后打开 http://localhost:3000。默认配置指向本地 Ollama 与 Neo4j:LLM_API_KEY=ollama、LLM_BASE_URL=http://localhost:11434/v1、LLM_MODEL_NAME=qwen2.5:32b、NEO4J_URI=bolt://localhost:7687、NEO4J_USER=neo4j、NEO4J_PASSWORD=mirofish、EMBEDDING_MODEL=nomic-embed-text。
如何使用这个 Agent?
启动服务后访问 http://localhost:3000,并上传待分析文档。依次执行或使用界面中的 Graph Build、Env Setup 和 Simulation:先建立实体关系图谱,再创建角色环境并运行社交互动模拟。模拟完成后查看 ReportAgent 生成的结构化分析,并通过 Interaction 与某个模拟角色继续对话。显存较少时,可在 .env 中将 LLM_MODEL_NAME 改为 qwen2.5:14b 或 qwen2.5:7b;文档说明嵌入模型仍使用 nomic-embed-text。
这个 Agent 与同类方案有什么区别?
相较于原始 MiroFish,本分支将中文界面改为英文,并将 Zep Cloud 图谱记忆、DashScope/OpenAI API 和 Zep 嵌入替换为本地 Neo4j Community Edition 5.15、Ollama 以及通过 Ollama 运行的 nomic-embed-text;原项目面向中国市场,而此分支强调零云端依赖。