1. 背景
近两周github一直霸榜的国产项目-微舆,引起了广泛的关注,11月3日start数3.4K,截止今天11月14日,start数26.6K,火箭原地起飞。
前几个月我也从事了舆情分析的相关项目,遂抱着学习的态度,花费了3天时间研究并调试了其中的运行机制。
2. 特色功能
(1) AI驱动的全网舆情监控系统
基于全天候运行的AI爬虫集群,覆盖微博、小红书、抖音、快手等10余个国内外主流社交平台。该系统不仅能实时追踪热点话题,还可深入挖掘海量用户评论,捕捉真实、多元的公众声音。
(2) 超越单一模型的复合分析系统
融合了5类自研专业Agent、微调模型与统计中间件,形成多模型协同的分析架构。通过多模型互补增强,分析结果在深度、准确性与多维度视角上得到有效保证。
(3) 多模态信息解析能力
突破图文限制,支持对抖音、快手等平台短视频内容的深度理解,并能精准提取天气、股票、日历等搜索引擎中的结构化多模态信息卡片,为全面把握舆情动态提供支持。
(4) 基于Agent“圆桌讨论”的协作机制
为不同Agent赋予专属工具与思维模式,并引入“主持人”模型,通过链式辩论与思维碰撞,打破模型同质化局限,有助于激发更高质量的集体智慧与决策建议。
(5) 公私域数据无缝整合
除洞察公开舆情外,还提供高安全性接口,实现内部业务数据与舆情信息的高效融合。此举有助于打破数据孤岛,构建“外部趋势+内部实情”一体化的垂直业务洞察体系。
(6) 轻量灵活的扩展架构
采用纯Python模块化设计,系统具备轻量化部署与灵活扩展的特性。清晰的代码结构使开发者能够快速接入自定义算法与业务逻辑,轻松实现平台定制与功能延展。
3. 整体架构
整体流程如下:
(1) Flask接收用户的原始问题,并行调用三个Agent,其中
Insight Agent: 私有舆情数据库深度分析AI代理,用于私有数据库挖掘。
Media Agent: 具备强大多模态能力的AI代理,用于多模态内容分析。
Query Agent: 具备国内外网页搜索能力的AI代理,用于精准信息搜索。
(2) 每个Agent会分别执行以下步骤:
1) 基于用户Query生成报告段落(默认为5段)
2) 针对每个段落分别执行初始检索并生成段落报告总结,其中Insight Agent主要检索本地数据库,Media Agent主要通过博查API进行检索,Query Agent主要通过Tavily API进行检索。
3) 检索之后进行多次迭代反思(默认为3),反思的过程是基于上一步的问题及总结等内容,判定是否存在遗漏偏差等情况,每次迭代均优化上一次迭代的段落总结
(3) 论坛Agent通过监控三个Agent的日志,实时收集三者的段落总结内容,且根据最近的5次的段落总结,检测三者是否围绕主题展开,方向是否存偏等问题。且总结后的结果,会同步到初始检索和反思环节,以引导三个Agent围绕主题进行深度研究。
(4) 等4个Agent执行结束后,再运行报告生成Agent,生成最终的报告。
4. 核心组件
4.1 Insight Agent的执行机制

(1) 首先生成报告段落结构Plan,默认为5个段落,包含title和content。
(2) 生成的每个段落迭代执行如下流程:
1) 初始检索并总结
a. 基于title和content,针对问题进行改写,以适配不同网站(如B站、小红书、抖音、微博、知乎等)的问题风格,并提供诸多查询函数(包括按日期查找热点主题、全局热点主题等方法),输出最适配的查询函数及参数。
b. 基于改写后的问题,生成核心关键词(默认20个)。
c. 基于关键词以及匹配的查询函数,进行数据库查询,并对数据做去重处理。
d. 针对查询后的结果采用多语言情感分析模型进行分类。
e. 基于title、content、以及检索结果,生成段落报告总结。
2) 多次反思迭代及总结
整体执行流程与初始检索并总结的流程大体相同,不同之处在于反思检索的输入除了title和content外,还有最新的段落总结(第一次是首次检索后的总结,后续是前次反思迭代后的总结)作为输入。
(3) 多次反思迭代完成后,基于多个段落的内容(title, content, summary等),生成最终的舆情报告。
4.2 Media Agent的执行机制

相比Insight Agent,流程相对简单一些,主要的不同之处在于前者查询数据库,后者通过博查API进行搜索调用。
4.3 Query Agent的执行机制
与Media Agent流程几乎一致,不同之处只是在于将博查API,切换到了 Tavily API。
5. 源码说明
(1) 借鉴MediaCrawler项目,可以实时收集B站、小红书、抖音、微博、知乎、贴吧等主流网站,采集代码位于项目中的MediaSpider目录下。
(2) 代码比较简单,且不集成任何框架(包括LangGrahp, LangChain, LammaIndex等),从头实现了多Agent之间的流程编排及交互。
(3) 代码相对冗余,可能确实是人家20岁小哥的手工作业做出来的。
(4) 后端以Flask提供服务,通过html中的Script部分完成前后端的完整交互,且内部基于streamlit嵌入三个Agent的页面。
6. 系统运行效果

7. 总结
一句话足矣~
本文主要讲解了微舆的整体架构,并通过研读并调试源码,整理了多个Agent各自的执行流程、以及前后端交互。
如项目原理、项目部署、源码等存在疑问,欢迎随时私信或留言交流!
8. 参考
(1) BettaFish: https://github.com/666ghj/BettaFish
(2) MediaCrawler: https://github.com/NanmiCoder/MediaCrawler
(3) DeepWiki: https://deepwiki.com/666ghj/BettaFish/1-overview

本文主要讲解了微舆的整体架构,并通过研读并调试源码,整理了多个Agent各自的执行流程。