一个大学生十天做出的AI预测引擎,为什么能两次冲上GitHub全球第一?
从舆情分析到万物预测:一个大学生用 Vibe Coding 两次登顶 GitHub 热榜的技术拆解
快速摘要: 一位 00 后大学生开发者,先后在十天内用 Vibe Coding 方式完成了两个开源项目——多智能体舆情分析系统 BettaFish 和群体智能预测引擎 MiroFish,两个项目均登上 GitHub 全球趋势榜第一。 BettaFish 实现了"数据采集→多模态分析→智能报告"的闭环,MiroFish 则在此基础上构建出可交互的平行数字世界,用成千上万个 AI 智能体模拟群体行为来推演未来走向。 本文将从技术原理、系统架构、部署操作到 Vibe Coding 方法论进行详细拆解,往下看有更完整的分析。
一、背景:什么是 Vibe Coding?为什么它正在改变开发方式
2025 年 2 月,AI 研究者 Andrej Karpathy 在社交媒体上提出了"Vibe Coding"这个概念。他的核心意思是:开发者不再逐行编写代码,而是用自然语言描述需求,让大语言模型(LLM)来生成代码,开发者的角色从"写代码的人"变成了"指挥 AI 写代码的人"。
Karpathy 本人对此的描述很直白:他甚至不怎么碰键盘,用语音对 AI 说"把侧边栏的间距缩小一半"这种话,然后直接接受 AI 生成的所有修改。这在传统软件工程视角下几乎不可想象,但在 LLM 能力快速提升的当下,它确实在发生。
不过,Vibe Coding 并不是"不需要能力"——它需要的是一种不同的能力。传统编程能力的核心是执行力(你知道怎么写代码),而 Vibe Coding 需要的核心是判断力(你知道该让 AI 写什么代码,以及它写得对不对)。这个区别,恰好在 BettaFish 和 MiroFish 两个项目的开发过程中体现得淋漓尽致。
我之前在黑龙江节点云计算科技公司备考人工智能训练师认证的时候,对 AI Agent(智能体)的工作流和 Prompt Engineering 有过系统性的学习。当时的课程内容里就反复强调:未来 AI 的价值不在于代替你思考,而在于放大你的思考。后来看到 BettaFish 和 MiroFish 的技术方案,发现它们正是这个理念的实战样本。
二、BettaFish(微舆):多智能体舆情分析系统的技术全景
2.1 BettaFish 是什么
BettaFish,中文名"微舆",是一个完全从零开始实现的、基于纯 Python 模块化设计的多智能体舆情分析系统。它不依赖 LangChain、LangGraph、OpenAI Swarm 等任何第三方 Agent 框架,所有智能体的协作逻辑都是自主实现的。
它的核心使命可以概括为四个关键词:打破信息茧房、还原舆情原貌、预测舆情走向、辅助决策。用户只需像聊天一样输入一个分析需求(比如"分析最近一周新能源车品牌在微博和小红书上的舆情走势"),多个智能体就会自动启动,分头采集数据、分析内容、讨论结论,最终输出一份完整的可视化报告。
项目 GitHub 地址:https://github.com/666ghj/BettaFish
2.2 核心架构:五大引擎协同工作
BettaFish 的架构由五个核心引擎组成,它们各自独立又彼此协作,形成一个完整的分析闭环。下面逐一拆解:
QueryEngine(新闻广度搜索引擎) 负责在国内外新闻源中进行广度搜索。它通过 Tavily API 进行外文检索,同时覆盖中文社交媒体。工作流程是:接收用户查询 → 执行多轮搜索 → 对结果进行格式化和摘要 → 使用情感分析模型分类 → 生成段落报告。它还支持"反思迭代"机制——第一轮搜索和总结之后,会把当前总结作为输入再进行一轮更深入的检索,不断迭代直到信息充分。
MediaEngine(多模态理解引擎) 与 QueryEngine 流程类似,但搜索渠道不同——它主要通过博查 API 检索多模态内容,能够理解短视频、图片等非文本信息。比如抖音上的一条视频评论区在说什么、一张小红书图片的情感倾向是什么,MediaEngine 都能处理。
InsightEngine(私有数据库挖掘引擎) 这是 BettaFish 的差异化亮点之一。它支持接入企业内部数据库,把公开舆情数据和私域业务数据打通。比如一个电商品牌可以把自己的客服反馈数据库接进来,InsightEngine 就能把外部社交媒体上的声音和内部客户投诉做交叉分析,输出更有业务洞察力的报告。
ForumEngine(论坛协作引擎) 这是整个系统最有意思的部分。不同 Agent 各自拥有独特的工具集和思维模式,ForumEngine 引入了一个"主持人"角色,让多个 Agent 像在论坛里一样进行链式辩论和思维碰撞。这种机制有效避免了单一模型的偏见问题,通过多视角的讨论来逼近更客观的结论。
ReportEngine(报告生成引擎) 当所有分析完成后,ReportEngine 将各引擎的输出汇总,按照预设的模板(也支持用户自定义模板)生成最终的分析报告。报告支持 Markdown 格式,包含数据可视化图表。
用一段伪代码来描述整体工作流:
from bettafish import QueryAgent, MediaAgent, InsightAgent, ReportAgent, ForumEngine
# 用户输入分析需求
question = "分析近7天新能源车品牌在微博与小红书上的舆情走势"
# 各引擎并行启动
query_results = QueryAgent().run(question)
media_results = MediaAgent().run(question)
insight_results = InsightAgent().run(question, extra_db=my_business_db)
# 论坛机制协作汇总——多Agent辩论得出结论
final_summary = ForumEngine.collaborate([query_results, media_results, insight_results])
# 生成最终报告
report = ReportAgent().generate(final_summary, template="品牌监测报告.md")
2.3 项目目录结构一览
BettaFish 的代码组织非常清晰,每个引擎都是一个独立的 Python 模块:
BettaFish/
├── QueryEngine/ # 国内外新闻广度搜索Agent
│ ├── agent.py # Agent主逻辑
│ ├── llms/ # LLM接口封装
│ ├── nodes/ # 处理节点:搜索、格式化、总结
│ ├── tools/ # 搜索工具集
│ ├── prompts/ # 提示词模板
│ └── state/ # 状态管理
├── MediaEngine/ # 多模态理解Agent
├── InsightEngine/ # 私有数据库挖掘Agent
├── ReportEngine/ # 智能报告生成
├── ForumEngine/ # Agent论坛协作引擎
├── MindSpider/ # 数据爬取模块
└── SentimentAnalysisModel/ # 情感分析模型
这种模块化设计意味着:你可以单独替换任何一个引擎的实现,也可以通过修改 config.py 中的配置来切换不同的 LLM 提供商(只要支持 OpenAI 的调用格式即可)。情感分析模型也有多种选择,包括多语言情感分析、基于 BERT 的微调模型、Qwen 微调模型,以及传统机器学习方法。
2.4 适用场景
BettaFish 的设计面向多种用户群体。企业品牌危机管理是最直接的场景——当产品问题在社交媒体上发酵时,系统可以快速定位关键声量点,辅助公关团队决策。媒体运营者可以用它追踪话题热度和情感趋向。学术研究者可以用它从海量评论中提取洞察,为论文或政策建议提供数据支撑。
不过需要注意的是,BettaFish 内置的爬虫功能仅供学习和研究使用,部署时需要遵守各平台的 robots.txt 规则和相关法律法规。
三、MiroFish:从"分析过去"到"预测未来"的认知跃迁
3.1 为什么需要 MiroFish
BettaFish 解决的是"发生了什么"的问题,它能生成一份漂亮的舆情报告,但报告看完之后,用户常常面临一个新的困惑:接下来会怎么发展?
这就是 MiroFish 诞生的原点。它的开发者在做完 BettaFish 之后,没有去想"怎么把报告做得更漂亮",而是想到了一个更根本的问题:舆情分析报告做得再详尽,终究是后视镜——它只能告诉你过去发生了什么。用户真正需要的是一台望远镜,需要知道未来可能走向何方。
于是,BettaFish 的分析终点就变成了 MiroFish 的预测起点。从"数据收集与分析"到"全景预测",两个项目形成了一条完整的链路。
项目 GitHub 地址:https://github.com/666ghj/MiroFish
3.2 MiroFish 的核心原理
MiroFish 是一款基于多智能体技术的 AI 预测引擎。它的核心思路不是用传统统计模型来做预测,而是构建一个"平行数字世界"——在这个世界里,成千上万个拥有独立人格、记忆和行为逻辑的 AI 智能体,会围绕现实世界的种子信息进行自由讨论、争论和相互影响。然后你站在"上帝视角"观察这些智能体的群体行为,看它们涌现出什么样的集体走向。
这听起来很抽象,换一个更直观的比喻:想象你有一千个具备不同性格、背景和立场的"数字人",你给他们一条突发新闻,然后让他们在一个模拟的社交媒体平台上自由互动。有人转发、有人评论、有人反驳、有人被说服。几轮互动之后,你观察整个群体的意见分布、情绪走向和行为模式——这就是 MiroFish 所做的事情。
底层的仿真引擎由 CAMEL-AI 团队开源的 OASIS 框架驱动。OASIS 是一个可以模拟多达百万级用户的社交媒体仿真器,它包含动态社交网络、推荐系统和 21 种用户行为(如关注、评论、转发等),已经被研究者验证可以复现信息传播、群体极化和羊群效应等真实社会现象。
3.3 五阶段工作流详解
MiroFish 的预测流程被拆分为五个严格顺序执行的阶段,每个阶段的输出是下一个阶段的输入。下面详细拆解每一步:
第一阶段:图谱构建(Graph Building)
这是整个预测的基础。用户上传"种子材料"——可以是一份舆情分析报告、一篇新闻、一份政策草案,甚至是一部小说的文本。系统会对这些材料进行深度分析,提取出关键实体(人物、组织、事件等)和它们之间的关系,然后利用 GraphRAG(基于图的检索增强生成)技术在 Zep Cloud 上构建一个动态知识图谱。这个知识图谱不仅包含实体关系,还会注入个体层面和群体层面的记忆信息,为后续的智能体提供认知基础。
GraphRAG 相比普通的 RAG(检索增强生成)有一个关键优势:它不是简单地把文本切块然后做向量检索,而是先构建出实体之间的关系图谱,再在图谱上进行语义搜索和时序过滤。这使得智能体在后续模拟中能够更准确地理解上下文和因果关系。
第二阶段:环境搭建(Environment Setup)
基于知识图谱的信息,系统自动完成三件事:抽取实体之间的关系结构、为每个智能体生成独特的"人设"(Persona,包括性格特征、立场倾向、知识背景等)、由一个专门的环境配置 Agent 注入仿真参数(如互动频率、话题敏感度、平台规则等),最终完成虚拟世界的初始化。
举个例子:如果种子材料是一份关于某高校舆情的报告,系统可能会生成"愤怒的在校生""理性的校友""偏向官方立场的行政人员""追热点的自媒体博主"等不同角色的智能体,每个角色都有自己的行为逻辑。
第三阶段:启动仿真(Simulation)
这一步是 MiroFish 最核心的环节。系统会启动双平台并行模拟——在两个独立的模拟环境中(类似 Twitter 和 Reddit 两个平台),让生成的智能体围绕相关话题自由讨论、竞争和行动。仿真过程中,系统会自动解析预测需求,并动态更新每个智能体的时序记忆(即每个智能体会记住之前发生的事情,并据此调整自己的行为)。
从技术实现层面看,仿真子进程使用文件 IPC(进程间通信)与后端主进程通信,前端通过 HTTP 轮询获取仿真状态更新。系统支持配置两个 LLM 客户端(general 和 boost)来做负载分配,因为多智能体仿真会消耗大量 token。官方建议初次测试时将仿真轮数控制在 40 轮以内。
第四阶段:报告生成(Report Generation)
仿真结束后,ReportAgent 登场。它拥有丰富的工具集,可以与仿真后的环境进行深度交互——查看每个智能体的发言记录、分析群体意见分布、提取关键转折点等。最终输出一份结构化的预测报告,包含对未来走向的推演分析。
第五阶段:深度交互(Deep Interaction)
这一步是 MiroFish 的用户体验亮点。预测报告生成之后,用户可以继续与模拟世界中的任意一个智能体对话(比如点开某个"愤怒市民"角色,问它为什么持这样的态度),也可以继续向 ReportAgent 追问细节。整个数字世界是持久的、可交互的,而不是一次性的输出。
用一个流程图来概括整体架构:
种子材料上传
↓
图谱构建(GraphRAG + Zep Cloud)
↓
环境搭建(实体关系抽取 + 人设生成 + 参数注入)
↓
双平台并行仿真(OASIS引擎驱动,动态时序记忆)
↓
ReportAgent 生成预测报告
↓
用户深度交互(与任意智能体或ReportAgent对话)
3.4 技术栈概览
MiroFish 采用的是前后端分离的 Monorepo 架构:
- 前端:Vue.js,端口 3000
- 后端:Flask (Python),端口 5001
- 仿真引擎:基于 OASIS(CAMEL-AI 开源)
- 知识图谱:GraphRAG,存储在 Zep Cloud
- LLM 接口:兼容 OpenAI SDK 格式的任意 API(默认推荐阿里百炼平台的 qwen-plus)
- 包管理:前端用 npm,后端用 uv(Python)
- 开源许可:AGPL-3.0
// package.json 关键配置
{
"name": "mirofish",
"version": "0.1.0",
"scripts": {
"setup:all": "npm run setup && npm run setup:backend",
"dev": "concurrently \"npm run backend\" \"npm run frontend\"",
"backend": "cd backend && uv run python run.py",
"frontend": "cd frontend && npm run dev"
},
"engines": {
"node": ">=18.0.0"
}
}
3.5 本地部署实操指南
如果你想在本地跑起来 MiroFish,以下是完整的操作步骤。
环境要求:Node.js 18 及以上版本,Python 3.11 至 3.12,uv(Python 包管理工具)。
第一步,克隆仓库:
git clone https://github.com/666ghj/MiroFish.git
cd MiroFish
第二步,配置环境变量:
cp .env.example .env
打开 .env 文件,填入以下关键配置:
# LLM 配置(支持任意兼容 OpenAI SDK 格式的 API)
LLM_API_KEY=your_api_key_here
LLM_BASE_URL=your_api_base_url
LLM_MODEL_NAME=qwen-plus # 或其他你选择的模型
# Zep Cloud 配置(用于 GraphRAG 知识图谱)
ZEP_API_KEY=your_zep_api_key
第三步,安装依赖并启动:
# 一键安装前后端所有依赖
npm run setup:all
# 启动开发服务器(前后端同时启动)
npm run dev
启动成功后,访问 http://localhost:3000 即可进入 MiroFish 的 Web 界面。
第四步,开始你的第一次预测:
在 Web 界面中上传一份种子材料(比如一份新闻报道或数据分析报告的文本文件),然后用自然语言描述你的预测需求。系统会自动执行图谱构建、环境搭建、仿真模拟、报告生成的全流程。整个过程可能需要一些时间,取决于你配置的仿真轮数和 LLM 的响应速度。
此外,官方也提供了 Docker 部署方式,适合不想折腾本地环境的用户。如果只是想先体验一下效果,可以直接访问在线 Demo。
3.6 应用场景举例
MiroFish 目前已经展示了几个很有代表性的应用案例:
结合 BettaFish 生成的《武大舆情报告》进行预测推演,这是一个典型的"分析+预测"联动场景。先用 BettaFish 做舆情分析,再把分析报告作为种子材料喂给 MiroFish,让它预测这个舆情事件接下来可能的发展方向——是会逐渐平息,还是会进一步发酵?哪些群体可能会介入?舆论的拐点可能出现在哪里?
另一个有趣的案例是用《红楼梦》前八十回的数十万字文本作为种子材料,让 MiroFish 推演后四十回可能的情节走向。这个应用场景看起来像是娱乐,但背后的技术挑战是一样的:系统需要理解复杂的人物关系网络,为每个角色生成符合其性格的行为模式,然后让他们在模拟环境中自由互动,观察故事可能的演化方向。
四、从 BettaFish 到 MiroFish:一套值得学习的项目方法论
4.1 先想清楚"为什么做",再动手
在整个开发过程中,花时间最多的不是写代码,而是市场调研和技术选型。先搞明白为什么做、做给谁、怎么做。这一点在 AI 辅助开发时代格外重要——当代码的生产成本被 AI 大幅压缩之后,"做什么"的决策质量就成了最大的杠杆。
4.2 从垂直领域切入
BettaFish 没有试图做一个通用的 AI 平台,它切入的就是舆情分析这一个点。但它的设计理念是"始于舆情,而不止于舆情"——系统的架构足够模块化,修改 Agent 的工具集和 Prompt 就能适配其他领域。这种"小切口、大纵深"的策略在 AI 创业领域被反复验证过。
4.3 代码之外的东西同样重要
一个好的开源项目不仅仅是代码写得好。清晰的 README、完整的部署文档、有说服力的 Demo 案例、以及围绕项目讲述的故事,都是让项目被看见和被认可的关键因素。BettaFish 的 README 写得非常用心——它不仅仅列功能、贴截图,还用具体的业务场景来帮助读者理解"这个工具到底能解决我的什么问题"。
4.4 在 AI 时代,速度就是壁垒
当 AI 把代码的生产门槛降低之后,同一个想法可能有很多人同时在做。谁先做出来、先获得用户反馈、先迭代到可用状态,谁就占据了先发优势。两个项目都是十天内完成开发并开源的,这个速度本身就是一种竞争力。
五、Vibe Coding 的两面:加速器与平权器
最后聊聊 Vibe Coding 的更深层意义。
对于有深厚技术积累的资深工程师来说,Vibe Coding 是效率的加速器——它把十天的工作压缩到一天,把一个人的产出拉到一个团队的水平。
对于技术积累相对有限但有敏锐洞察力的人来说,Vibe Coding 是能力的平权器——它让"脑子里有想法、眼睛里有问题"的人也能把想法变成可运行的产品。BettaFish 和 MiroFish 的故事就属于后一种。开发者不是靠代码功底取胜,而是靠三件事:看见了一个真实的问题、用 AI 把解决方案做了出来、把做的过程和结果清晰地呈现给了世界。
但也要看到 Vibe Coding 的局限性。Karpathy 本人在后续的文章中也承认,对于真正需要高可靠性和安全性的生产级项目,纯 Vibe Coding 是有风险的——代码质量、安全性、可维护性都需要人类工程师的深度介入。他在 2026 年初甚至提出了"Agentic Engineering"这个新概念来强调:AI 辅助开发不是放弃工程严谨性,而是换一种方式来实践它。
所以 Vibe Coding 时代真正的门槛,不是技术门槛,是认知门槛。工具再强大,如果你不知道自己要解决什么问题,它也只能是一个安慰剂。反过来,如果你清楚自己在做什么、为什么做、做给谁——AI 工具可以帮你把从想法到产品的距离,从几个月压缩到几天。
这大概就是这个时代最有意思的地方:不会过时的,始终是你对这个世界的观察和思考。
相关链接
- BettaFish(微舆)GitHub 仓库:https://github.com/666ghj/BettaFish
- MiroFish GitHub 仓库:https://github.com/666ghj/MiroFish
- OASIS 仿真引擎(CAMEL-AI):https://github.com/camel-ai/oasis
- Zep Cloud(GraphRAG 服务):https://www.getzep.com/
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)