不是写代码,而是“导演”代码。当Vibe Coding成为一种新的开发范式,一个大学生用自然语言指挥AI,十天里连续打造了两个登上GitHub全球趋势榜第一的项目。这背后到底用了什么架构?实际跑起来效果如何?我们拆开看。

一、从“微舆”到“万物预测”:两次登顶的故事

2025年暑假尾声,北京邮电大学大四学生郭航江(GitHub: 666ghj/BaiFu)打开Claude Code,开始了一场被称为“Vibe Coding”的开发实验——用自然语言与AI对话,快速、直觉驱动、不过度设计。

十天后,他的第一个开源项目 BettaFish(微舆) 诞生了——一个多智能体舆情分析助手,也是他的毕业设计。项目上线后迅速登顶GitHub Trending,累计获得37,700+ Star。

但这不是终点。盛大集团创始人陈天桥注意到BettaFish后,邀请郭航江到盛大实习。在盛大,他又花了十天,把BettaFish的“分析终点”变成了“预测的起点”——MiroFish 诞生了。2026年3月7日,MiroFish登顶GitHub全球趋势榜第一,两周内斩获25,000+ Star。陈天桥看了演示视频后,24小时内拍板投资3000万人民币

两个项目,一个分析“已经发生的事”,一个推演“可能发生的事”。它们共用一套技术血脉,却在架构设计上走向了完全不同的方向。

二、BettaFish深度拆解:五个引擎的“AI思维圈”

BettaFish不是简单地用LLM分析文本,而是构建了一个 “AI思维圈” ——多个智能体在虚拟论坛中激烈辩论、互相质疑、共同演化。

2.1 整体架构:五大核心引擎

整个系统由五个专门的引擎组成:

引擎职责数据来源底层LLM
QueryEngine国内外网页与新闻搜索Web/Tavily APIDeepSeek
MediaEngine多模态内容理解(视频/图片)Bocha APIGemini 2.5 Pro
InsightEngine私有数据库挖掘与情感分析MySQL舆情库Kimi (500K上下文)
ReportEngine多格式专业报告生成论坛综合输出Gemini API
ForumEngine智能主持人,协调代理辩论日志系统Qwen3 API

三个分析引擎并行启动,各自加载不同的LLM后端和工具集,通过 ForumEngine 这个“辩论主持人”进行协调。

2.2 核心创新:论坛辩论机制

BettaFish最独特的设计在于 ForumEngine 实现的“思维链碰撞”(chain-of-thought collision)机制:

  1. 并行分析阶段:三个分析引擎同时独立调研,各自将中间结果写入独立日志文件(insight.log / media.log / query.log)
  2. 主持人介入阶段:ForumEngine通过 llm_host.py 中的 synthesize_discussion() 方法读取各Agent的日志,识别知识盲区、发现观点冲突、检测逻辑偏差
  3. 广播反馈阶段:主持人将综合洞察写入共享的 forum.log,各Agent通过 forum_reader.py 中的 read_forum_insights() 读取反馈,调整自己的研究方向
  4. 迭代深化阶段:这个过程循环进行,直到产生足够高质量的集体结论

这里的精妙之处在于:它防止了多Agent系统中常见的“回声室效应”——当多个Agent用同一个底层模型时,它们往往会产生同质化的输出。而ForumEngine通过故意引入对立视角和质疑,迫使系统输出更有辩证张力的结论。

2.3 关键代码路径

# ForumEngine/llm_host.py - 核心辩论协调逻辑
def synthesize_discussion(self):
    # 读取各Agent日志
    insights = self.read_agent_logs()
    # 识别冲突与盲区
    conflicts = self.detect_conflicts(insights)
    gaps = self.identify_knowledge_gaps(insights)
    # 生成辩论引导
    guidance = self.generate_moderator_guidance(conflicts, gaps)
    # 写入共享论坛日志
    self.write_forum_log(guidance)

每条Agent日志是一个结构化的辩论轮次,ForumEngine在其中扮演着“挑刺者”的角色——它会追问:“你的这个结论有没有考虑反方观点?”“这个推论的数据支撑是否充分?”这种设计让三个AI从“各干各的”升级为“真正的集体思考”。

2.4 技术栈全景

  • 语言与框架:纯Python,基于Flask的Web界面,Streamlit作为各Agent的独立调试前端
  • 数据采集:MindSpider爬虫系统,基于Playwright自动化,覆盖微博、小红书、抖音、B站等30+社交媒体平台
  • 数据存储:PostgreSQL/MySQL双数据库支持
  • 情感分析:Fine-tuned BERT/GPT2/Qwen模型,支持22种语言的5级情感分类
  • 多模态分析:Gemini 2.5 Pro + Bocha/Anspire API组合
  • 部署方式:支持Docker一键部署

三、MiroFish技术深扒:用OASIS引擎构建“平行数字世界”

如果说BettaFish是“侦探”,MiroFish就是“预言家”。它的核心目标不是分析已经发生的事,而是在一个高保真的平行数字世界中,让成百上千个AI智能体自由交互,观察群体行为的涌现。

3.1 五步流水线:从文档到预言

MiroFish通过五个阶段完成一次完整的预测:

┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐
│  Step 1  │→│  Step 2  │→│  Step 3  │→│  Step 4  │→│  Step 5  │
│ 本体生成 │  │ 图谱构建 │  │ 环境搭建 │  │ 仿真运行 │  │ 报告生成 │
└──────────┘  └──────────┘  └──────────┘  └──────────┘  └──────────┘

Step 1 — 本体生成(Ontology Generation):

系统分析用户上传的“种子材料”(新闻、政策草案、金融报告,甚至一本小说),由LLM自动生成一个定制本体——定义这个世界里有什么类型的实体(学生、教授、政府机构、媒体等)以及它们之间的关系(为谁工作、评论了谁、回应了谁)。

设计上采用两层结构:8个基于内容提取的具体类型 + 2个兜底类型(Person和Organization),确保不会有实体因分类不匹配而丢失。

Step 2 — 时序GraphRAG构建:

这是MiroFish的一个核心技术亮点。传统的RAG只能回答“什么相关”,而时序GraphRAG能处理具有先后顺序的复杂记忆,精准还原事件的时间线关系。

文档按500字符窗口切片(50字符overlap),批量送入Zep Cloud。Zep负责实体识别、关系抽取,最终返回一个包含节点和边的完整知识图谱。关键在于Zep的时序关系记忆服务——它不仅记住实体间的关系类型,还记住这些关系在时间维度上的演化。

Step 3 — 环境搭建:

基于知识图谱,系统自动生成仿真配置:

  • 时间配置:基于中文社交媒体活跃时段(晚7-10点为高峰,凌晨0-5点为低谷)
  • 事件配置:初始帖子、热门话题
  • Agent行为配置:每小时发帖数、响应延迟、影响力权重
  • 平台配置:Twitter和Reddit双平台,不同病毒传播阈值

Step 4 — 双轨仿真运行:

Agent按照自己的活动时间表“醒来”,开始在模拟的Twitter和Reddit上发帖、评论、互动。所有行为实时写入JSONL日志。系统支持成千上万个Agent并发运行——这背后依赖的是CAMEL-AI团队开源的 OASIS仿真引擎

OASIS本身是为“百万级Agent社交模拟”设计的开源框架,具备动态更新的社交网络、多样化的行动空间(关注、评论、转发等)、以及基于兴趣和热度的推荐系统。MiroFish将它作为底层引擎,在上层构建了自己的知识注入层和报告生成层。

Step 5 — 报告生成:

ReportAgent采用ReACT(Reasoning & Acting)范式,不是被动地把日志汇总成文字,而是像一个研究员一样主动调研——查阅仿真日志、追问特定Agent的行为动机、对比Twitter和Reddit两个平台上的舆论差异,最终输出包含事件脉络、风险预警和策略建议的结构化报告。

3.2 技术选型一览

层级技术说明
知识层时序GraphRAG + Zep Cloud结构化知识抽取与关系维护
仿真层OASIS (CAMEL-AI)大规模多智能体社交平台模拟
Agent逻辑LLM角色扮演独立人格、长期记忆、行为逻辑
前后端Python (FastAPI) + Vue 3API服务与实时可视化
协议AGPL-3.0强Copyleft开源

3.3 为什么不用LangChain?

一个值得注意的细节:BettaFish和MiroFish都没有使用LangChain、AutoGPT等流行框架。BettaFish的代码库完全从零搭建(“built from scratch in Python”)。社区有开发者翻完源码后感叹:“原来不用LangChain,纯Python也能搞定多Agent协作”。

这个选择在Vibe Coding的语境下特别有意思——当你用自然语言指挥AI编程时,引入一个复杂框架反而可能增加AI出错的概率。越少的抽象层,越容易被AI准确理解和生成。

四、上手实测:跑起来,看看效果

光讲架构不够过瘾,我们来实际部署测试。

4.1 BettaFish快速部署

BettaFish支持Docker部署,社区已有大量保姆级教程。核心步骤:

# 1. 克隆仓库
git clone https://github.com/666ghj/BettaFish.git
cd BettaFish

# 2. 配置API Keys(核心门槛)
# 编辑 .env 文件,填入DeepSeek、Gemini、Kimi等API密钥

# 3. Docker一键启动
docker-compose up -d

# 4. 访问Web界面
# 浏览器打开 http://localhost:5000

踩坑提醒(来自社区反馈):

  • API Key是最大门槛:BettaFish需要至少3个不同的LLM API(DeepSeek、Gemini、Kimi/通义千问),免费额度可能不够一次完整分析
  • MindSpider爬虫需要额外的浏览器环境和反爬配置,初次部署时这部分最容易出问题
  • 内存消耗:三个Agent并行运行时,建议至少16GB RAM

4.2 MiroFish实测案例:黄金2026年走势预测

在正式的技术评估中,研究团队用MiroFish跑过一次完整的黄金2026年走势预测:

输入:涵盖八项材料的“种子文件”(包括美联储政策纪要、地缘冲突新闻、央行黄金储备数据等)

系统自动执行

  1. 构建知识图谱,包含政府部门、金融机构、交易员、行业专家等实体节点
  2. 生成60个具有独立人格和记忆的AI Agent
  3. 启动Twitter和Reddit双平台仿真
  4. 运行72轮跨平台互动推演
  5. 生成结构化预测报告

结果:系统成功完成了从图谱构建到报告生成的完整自动化流程,输出具有逻辑深度的多维度叙事。

但实测也暴露了几个关键局限:当输入信息存在偏差时,Agent会持续强化错误认知,只能通过后续补充对话进行有限修正;在预测精确性上,MiroFish的逻辑深度高于普通联网问答,但投资建议的实际可用性并未显著超越Kimi K2.5联网下的回答。

这个结论其实很诚实:MiroFish更适合作为逻辑推演与查漏补缺的“沙盒工具”,而非高精度预测终端

4.3 一场有趣的社区实验:200个Agent vs 预测市场

一项社区实验将MiroFish用于模拟霍尔木兹海峡危机:200个AI代理(包括政府、媒体、能源公司、交易员和普通民众角色)在模拟社交网络中互动7天,群体自发讨论形成的冲突概率为47.9%——研究团队将此结果与实际预测市场Polymarket的定价进行了对比。

这种“AI群体智慧 vs 人类市场定价”的对照实验,为MiroFish开辟了一个极具想象力的应用方向。

五、理性审视:技术的能与不能

拆完代码、看完实测,我们必须诚实地讨论这个项目的真实水平和根本局限。

5.1 真正的创新在哪?

论坛辩论机制(BettaFish) 是一个实实在在的架构贡献。它用日志系统实现的Agent间通信机制轻量而有效,不需要复杂的消息队列或Agent间协议。更关键的是,LLM主持人“识别盲区→广播反馈→Agent调整”的闭环设计,确实解决了多Agent系统中的输出同质化问题。

时序GraphRAG + OASIS的组合(MiroFish) 打通了一条“非结构化文档→结构化知识图谱→大规模Agent仿真”的技术链路。尤其是用Zep Cloud的时序记忆服务来维护实体关系的动态演化——这比传统的静态知识图谱更接近真实世界的运作方式。

端到端的自动化能力:从用户上传一份PDF,到系统自动运行五步流水线输出预测报告,MiroFish展示了AI Agent系统“全自动思考”的雏形。在需要反复推敲因果关系的宏观研究场景中,这种自动化的多视角模拟确实提供了独特的分析价值。

5.2 绕不开的局限

根本性约束一:LLM认知的边界即系统的边界。 MiroFish的整个推演体系,本质上是底层大模型预训练认知的投射。一个海外开发者坦言:“The ‘collective intelligence’ is LLMs role-playing as humans on a simulated social network. There are no real humans.”。这意味着模型的偏差会系统性地传导到仿真结果上,无法通过工程手段消除。

根本性约束二:封闭环境的“信息茧房”放大效应。 系统极度依赖“种子文件”的准确性与完整性。如果输入的种子材料本身有偏,Agent会在封闭的仿真环境中持续强化这种偏差——就像把一个错误的前提塞进一个逻辑严密的推理系统,得出来的结论会错得很“漂亮”。

根本性约束三:Token成本限制大规模深度交互。 72轮跨平台推演虽然听起来很多,但在真正的社交媒体场景下,这只是一个极小的片段。受限的Token预算意味着仿真深度和广度之间存在不可调和的trade-off。

5.3 一句话定位

“预测万物?也许永远做不到。但帮助人类更好地思考万物?MiroFish已经迈出了重要的一步。” —— 技术社区的共识评价

六、Vibe Coding的真实启示:创意>代码

回到文章开头的核心驱动:郭航江十天打造两个万星开源项目,真的只是运气好吗?

他的方法论值得每位开发者深思。Vibe Coding的核心不是“AI替你写代码”,而是一个根本性的角色转换:从“代码实现者”变成“产品导演”。以下是Vibe Coding在实践中的关键原则:

  • 用自然语言描述意图,而不是指令——说“我要三个Agent吵架”比说“写一个循环调用LLM接口”更有效
  • 迭代式细化——先用粗颗粒度的描述让AI生成框架,再逐步注入约束条件
  • 少即是多——越少的抽象层、越少的第三方库依赖,AI理解和生成的准确率越高(这也是BettaFish选择纯Python从零搭建的原因)
  • 过程即调试——Vibe Coding天然具有“边说边改”的属性,错误不再需要漫长的回溯,你只需告诉AI“这里不对,重新来”

更深层的启示在于:当AI把实现成本降到接近零时,“为什么做”比“怎么做”重要一万倍。 BettaFish和MiroFish的代码中没有什么神秘的算法(GraphRAG和OASIS都是已有技术),真正稀缺的是郭航江对复杂社会系统的直觉和对产品形态的敏锐判断。在Vibe Coding时代,对真实世界问题的捕捉能力,才是真正的护城河。

七、开源:反哺社区的技术浪漫

两个项目均以开源协议发布(BettaFish: GPL-2.0;MiroFish: AGPL-3.0),代码完全公开。郭航江在README里写的那句话,大概是技术圈最朴素的情怀:

“我是在无数个深夜,被那些温暖的开源文档和StackOverflow答案养大的。现在,轮到我来喂一口饭了。”

这两个项目还远远谈不上完美——架构里带着一个学生的莽撞,边界条件偶尔会崩,代码中能看到明显的实验痕迹。但那股由AI无限放大个人信念的力量,比任何精致的商业软件都更动人。

你可以现在就去GitHub找到它们:

  • BettaFish: github.com/666ghj/BettaFish
  • MiroFish: github.com/666ghj/MiroFish

跑起来,拆开看,随便改。去尝试你的第一个Vibe Coding项目。

因为这个时代,不会再给旁观者留下任何借口。

标签: none

添加新评论