[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-666ghj--BettaFish":3,"tool-666ghj--BettaFish":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":82,"owner_twitter":83,"owner_website":83,"owner_url":84,"languages":85,"stars":98,"forks":99,"last_commit_at":100,"license":101,"difficulty_score":102,"env_os":103,"env_gpu":104,"env_ram":104,"env_deps":105,"category_tags":115,"github_topics":116,"view_count":127,"oss_zip_url":83,"oss_zip_packed_at":83,"status":16,"created_at":128,"updated_at":129,"faqs":130,"releases":158},2541,"666ghj\u002FBettaFish","BettaFish","微舆：人人可用的多Agent舆情分析助手，打破信息茧房，还原舆情原貌，预测未来走向，辅助决策！从0实现，不依赖任何框架。","BettaFish（中文名“微舆”）是一款从零构建、不依赖任何重型框架的多智能体舆情分析助手。它旨在帮助用户打破“信息茧房”，通过自动化手段还原舆情的真实全貌，预测未来走向，从而为决策提供有力支持。\n\n在信息爆炸的今天，个人和企业往往难以从海量且碎片化的社交媒体数据中提炼出有效洞察，容易陷入片面信息的误导。BettaFish 解决了这一痛点，用户只需像日常聊天一样提出分析需求，系统即可自动对国内外30多个主流社交平台（如微博、小红书、抖音等）的数百万条内容进行深度挖掘与分析。\n\n这款工具非常适合需要敏锐洞察市场动态的企业决策者、品牌公关人员、市场研究人员，以及对社会热点感兴趣并希望获得客观深度报告的普通用户。同时，由于其轻量级和模块化的 Python 架构，开发者也能轻松将其集成到自有业务中，或定制为金融分析等其他领域的数据引擎。\n\nBettaFish 的技术亮点在于其独特的“多智能体论坛”协作机制。它并非单纯依赖大语言模型，而是融合了微调模型、统计模型以及具备不同思维模式的各类 Agent。通过引入辩论主持人角色，让不同 Agent 进行思维碰撞与辩论，有效避免了单一模型的局限性。此","BettaFish（中文名“微舆”）是一款从零构建、不依赖任何重型框架的多智能体舆情分析助手。它旨在帮助用户打破“信息茧房”，通过自动化手段还原舆情的真实全貌，预测未来走向，从而为决策提供有力支持。\n\n在信息爆炸的今天，个人和企业往往难以从海量且碎片化的社交媒体数据中提炼出有效洞察，容易陷入片面信息的误导。BettaFish 解决了这一痛点，用户只需像日常聊天一样提出分析需求，系统即可自动对国内外30多个主流社交平台（如微博、小红书、抖音等）的数百万条内容进行深度挖掘与分析。\n\n这款工具非常适合需要敏锐洞察市场动态的企业决策者、品牌公关人员、市场研究人员，以及对社会热点感兴趣并希望获得客观深度报告的普通用户。同时，由于其轻量级和模块化的 Python 架构，开发者也能轻松将其集成到自有业务中，或定制为金融分析等其他领域的数据引擎。\n\nBettaFish 的技术亮点在于其独特的“多智能体论坛”协作机制。它并非单纯依赖大语言模型，而是融合了微调模型、统计模型以及具备不同思维模式的各类 Agent。通过引入辩论主持人角色，让不同 Agent 进行思维碰撞与辩论，有效避免了单一模型的局限性。此外，它还具备强大的多模态处理能力，能深入解析短视频内容，并支持公私域数据无缝融合，确保分析结果兼具广度、深度与真实性。","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_95da6ee3a7fe.png\" alt=\"BettaFish Logo\" width=\"100%\">\n\n\u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F15286\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_4a68feb902da.png\" alt=\"666ghj%2FBettaFish | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Faihubmix.com\u002F?aff=8Ds9\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_c69e745f8221.png\" alt=\"666ghj%2FBettaFish | Trendshift\" height=\"40\"\u002F>\u003C\u002Fa>&ensp;\n\u003Ca href=\"https:\u002F\u002Fopen.anspire.cn\u002F?share_code=3E1FUOUH\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_9475f6410563.png\" alt=\"666ghj%2FBettaFish | Trendshift\" height=\"40\"\u002F>\u003C\u002Fa>\n\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fstargazers)\n[![GitHub Watchers](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fwatchers\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fwatchers)\n[![GitHub Forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fnetwork)\n[![GitHub Issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues)\n[![GitHub Pull Requests](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpulls)\n\n[![GitHub License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fblob\u002Fmain\u002FLICENSE)\n[![Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-v1.2.1-green.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Build-2496ED?style=flat-square&logo=docker&logoColor=white)](https:\u002F\u002Fhub.docker.com\u002F)\n\n\n\n[English](.\u002FREADME-EN.md) | [中文文档](.\u002FREADME.md)\n\n\u003C\u002Fdiv>\n\n> [!IMPORTANT]  \n> 查看我们最新发布的预测引擎：[MiroFish-简洁通用的群体智能引擎，预测万物](https:\u002F\u002Fgithub.com\u002F666ghj\u002FMiroFish)\n> \n> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_3a9d0e3fda3d.jpeg\" alt=\"banner\" width=\"300\">\n>\n> “数据分析三板斧”全线贯通：我们激动的宣布 MiroFish 正式发布！随着最后一块版图补齐，我们构建了从 BettaFish（数据收集与分析）到 MiroFish（全景预测）的完整链路。至此，从原始数据到智能决策的闭环已成，让预见未来成为可能！\n\n## ⚡ 项目概述\n\n“**微舆**” 是一个从0实现的创新型 多智能体 舆情分析系统，帮助大家破除信息茧房，还原舆情原貌，预测未来走向，辅助决策。用户只需像聊天一样提出分析需求，智能体开始全自动分析 国内外30+主流社媒 与 数百万条大众评论。\n\n> “微舆”谐音“微鱼”，BettaFish是一种体型很小但非常好斗、漂亮的鱼，它象征着“小而强大，不畏挑战”\n\n查看系统以“武汉大学舆情”为例，生成的研究报告：[武汉大学品牌声誉深度分析报告](.\u002Ffinal_reports\u002Ffinal_report__20250827_131630.html)\n\n查看系统以“武汉大学舆情”为例，一次完整运行的视频：[视频-武汉大学品牌声誉深度分析报告](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1TH1WBxEWN\u002F?vd_source=da3512187e242ce17dceee4c537ec7a6#reply279744466833)\n\n不仅仅体现在报告质量上，相比同类产品，我们拥有🚀六大优势：\n\n1. **AI驱动的全域监控**：AI爬虫集群7x24小时不间断作业，全面覆盖微博、小红书、抖音、快手等10+国内外关键社媒。不仅实时捕获热点内容，更能下钻至海量用户评论，让您听到最真实、最广泛的大众声音。\n\n2. **超越LLM的复合分析引擎**：我们不仅依赖设计的5类专业Agent，更融合了微调模型、统计模型等中间件。通过多模型协同工作，确保了分析结果的深度、准度与多维视角。\n\n3. **强大的多模态能力**：突破图文限制，能深度解析抖音、快手等短视频内容，并精准提取现代搜索引擎中的天气、日历、股票等结构化多模态信息卡片，让您全面掌握舆情动态。\n\n4. **Agent“论坛”协作机制**：为不同Agent赋予独特的工具集与思维模式，引入辩论主持人模型，通过“论坛”机制进行链式思维碰撞与辩论。这不仅避免了单一模型的思维局限与交流导致的同质化，更催生出更高质量的集体智能与决策支持。\n\n5. **公私域数据无缝融合**：平台不仅分析公开舆情，还提供高安全性的接口，支持您将内部业务数据库与舆情数据无缝集成。打通数据壁垒，为垂直业务提供“外部趋势+内部洞察”的强大分析能力。\n\n6. **轻量化与高扩展性框架**：基于纯Python模块化设计，实现轻量化、一键式部署。代码结构清晰，开发者可轻松集成自定义模型与业务逻辑，实现平台的快速扩展与深度定制。\n\n**始于舆情，而不止于舆情**。“微舆”的目标，是成为驱动一切业务场景的简洁通用的数据分析引擎。\n\n> 举个例子. 你只需简单修改Agent工具集的api参数与prompt，就可以把他变成一个金融领域的市场分析系统\n>\n> 附一个比较活跃的L站项目讨论帖：https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F1009280\n>\n> 查看L站佬友做的测评 [开源项目(微舆)与manus|minimax|ChatGPT|Perplexity对比](https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F1148040)\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_5143bd685a06.png\" alt=\"banner\" width=\"800\">\n\n告别传统的数据看板，在“微舆”，一切由一个简单的问题开始，您只需像对话一样，提出您的分析需求\n\u003C\u002Fdiv>\n\n## 🪄 赞助商\n\nLLM模型API赞助：\u003Ca href=\"https:\u002F\u002Faihubmix.com\u002F?aff=8Ds9\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_c69e745f8221.png\" alt=\"666ghj%2FBettaFish | Trendshift\" height=\"40\"\u002F>\u003C\u002Fa>\n\n\u003Cdetails>\n\u003Csummary>AI联网搜索、文件解析及网页内容抓取等智能体核心能力提供商：\u003C\u002Fa>\u003Cspan style=\"margin-left: 10px\">\u003Ca href=\"https:\u002F\u002Fopen.anspire.cn\u002F?share_code=3E1FUOUH\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_9475f6410563.png\" alt=\"666ghj%2FBettaFish | Trendshift\" height=\"50\"\u002F>\u003C\u002Fa>\u003C\u002Fsummary>\n安思派开放平台(Anspire Open)是面向智能体时代的领先的基础设施提供商。我们为开发者提供构建强大智能体所需的核心能力栈，现已上线AI联网搜索【多版本，极具竞争力的价格】、文件解析【限免】及网页内容抓取【限免】、云端浏览器自动化（Anspire Browser Agent）【内测】、多轮改写等服务，持续为智能体连接并操作复杂的数字世界提供坚实基础。可无缝集成至Dify、Coze、元器等主流智能体平台。通过透明点数计费体系与模块化设计，为企业提供高效、低成本的定制化支持，加速智能化升级进程。\n\u003C\u002Fdetails>\n\n## 🏗️ 系统架构\n\n### 整体架构图\n\n**Insight Agent** 私有数据库挖掘：私有舆情数据库深度分析AI代理\n\n**Media Agent** 多模态内容分析：具备强大多模态能力的AI代理\n\n**Query Agent** 精准信息搜索：具备国内外网页搜索能力的AI代理\n\n**Report Agent** 智能报告生成：内置模板的多轮报告生成AI代理\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_64b8fce774c6.png\" alt=\"banner\" width=\"800\">\n\u003C\u002Fdiv>\n\n### 一次完整分析流程\n\n| 步骤 | 阶段名称 | 主要操作 | 参与组件 | 循环特性 |\n|------|----------|----------|----------|----------|\n| 1 | 用户提问 | Flask主应用接收查询 | Flask主应用 | - |\n| 2 | 并行启动 | 三个Agent同时开始工作 | Query Agent、Media Agent、Insight Agent | - |\n| 3 | 初步分析 | 各Agent使用专属工具进行概览搜索 | 各Agent + 专属工具集 | - |\n| 4 | 策略制定 | 基于初步结果制定分块研究策略 | 各Agent内部决策模块 | - |\n| 5-N | **循环阶段** | **论坛协作 + 深度研究** | **ForumEngine + 所有Agent** | **多轮循环** |\n| 5.1 | 深度研究 | 各Agent基于论坛主持人引导进行专项搜索 | 各Agent + 反思机制 + 论坛引导 | 每轮循环 |\n| 5.2 | 论坛协作 | ForumEngine监控Agent发言并生成主持人引导 | ForumEngine + LLM主持人 | 每轮循环 |\n| 5.3 | 交流融合 | 各Agent根据讨论调整研究方向 | 各Agent + forum_reader工具 | 每轮循环 |\n| N+1 | 结果整合 | Report Agent收集所有分析结果和论坛内容 | Report Agent | - |\n| N+2 | IR中间表示 | 动态选择模板和样式，多轮生成元数据，装订为IR中间表示 | Report Agent + 模板引擎 | - |\n| N+3 | 报告生成 | 分块进行质量检测，基于IR渲染成交互式 HTML 报告 | Report Agent + 装订引擎 | - |\n\n### 项目代码结构树\n\n```\nBettaFish\u002F\n├── QueryEngine\u002F                            # 国内外新闻广度搜索Agent\n│   ├── agent.py                            # Agent主逻辑，协调搜索与分析流程\n│   ├── llms\u002F                               # LLM接口封装\n│   ├── nodes\u002F                              # 处理节点：搜索、格式化、总结等\n│   ├── tools\u002F                              # 国内外新闻搜索工具集\n│   ├── utils\u002F                              # 工具函数\n│   ├── state\u002F                              # 状态管理\n│   ├── prompts\u002F                            # 提示词模板\n│   └── ...\n├── MediaEngine\u002F                            # 强大的多模态理解Agent\n│   ├── agent.py                            # Agent主逻辑，处理视频\u002F图片等多模态内容\n│   ├── llms\u002F                               # LLM接口封装\n│   ├── nodes\u002F                              # 处理节点：搜索、格式化、总结等\n│   ├── tools\u002F                              # 多模态搜索工具集\n│   ├── utils\u002F                              # 工具函数\n│   ├── state\u002F                              # 状态管理\n│   ├── prompts\u002F                            # 提示词模板\n│   └── ...\n├── InsightEngine\u002F                          # 私有数据库挖掘Agent\n│   ├── agent.py                            # Agent主逻辑，协调数据库查询与分析\n│   ├── llms\u002F                               # LLM接口封装\n│   │   └── base.py                         # 统一的OpenAI兼容客户端\n│   ├── nodes\u002F                              # 处理节点：搜索、格式化、总结等\n│   │   ├── base_node.py                    # 基础节点类\n│   │   ├── search_node.py                  # 搜索节点\n│   │   ├── formatting_node.py              # 格式化节点\n│   │   ├── report_structure_node.py        # 报告结构节点\n│   │   └── summary_node.py                 # 总结节点\n│   ├── tools\u002F                              # 数据库查询和分析工具集\n│   │   ├── keyword_optimizer.py            # Qwen关键词优化中间件\n│   │   ├── search.py                       # 数据库操作工具集（话题搜索、评论获取等）\n│   │   └── sentiment_analyzer.py           # 情感分析集成工具\n│   ├── utils\u002F                              # 工具函数\n│   │   ├── config.py                       # 配置管理\n│   │   ├── db.py                           # SQLAlchemy异步引擎与只读查询封装\n│   │   └── text_processing.py              # 文本处理工具\n│   ├── state\u002F                              # 状态管理\n│   │   └── state.py                        # Agent状态定义\n│   ├── prompts\u002F                            # 提示词模板\n│   │   └── prompts.py                      # 各类提示词\n│   └── __init__.py\n├── ReportEngine\u002F                           # 多轮报告生成Agent\n│   ├── agent.py                            # 总调度器：模板选择→布局→篇幅→章节→渲染\n│   ├── flask_interface.py                  # Flask\u002FSSE入口，管理任务排队与流式事件\n│   ├── llms\u002F                               # OpenAI兼容LLM封装\n│   │   └── base.py                         # 统一的流式\u002F重试客户端\n│   ├── core\u002F                               # 核心功能：模板解析、章节存储、文档装订\n│   │   ├── template_parser.py              # Markdown模板切片与slug生成\n│   │   ├── chapter_storage.py              # 章节run目录、manifest与raw流写入\n│   │   └── stitcher.py                     # Document IR装订器，补齐锚点\u002F元数据\n│   ├── ir\u002F                                 # 报告中间表示（IR）契约与校验\n│   │   ├── schema.py                       # 块\u002F标记Schema常量定义\n│   │   └── validator.py                    # 章节JSON结构校验器\n│   ├── nodes\u002F                              # 全流程推理节点\n│   │   ├── base_node.py                    # 节点基类+日志\u002F状态钩子\n│   │   ├── template_selection_node.py      # 模板候选收集与LLM筛选\n│   │   ├── document_layout_node.py         # 标题\u002F目录\u002F主题设计\n│   │   ├── word_budget_node.py             # 篇幅规划与章节指令生成\n│   │   └── chapter_generation_node.py      # 章节级JSON生成+校验\n│   ├── prompts\u002F                            # 提示词库与Schema说明\n│   │   └── prompts.py                      # 模板选择\u002F布局\u002F篇幅\u002F章节提示词\n│   ├── renderers\u002F                          # IR渲染器\n│   │   ├── html_renderer.py                # Document IR→交互式HTML\n│   │   ├── pdf_renderer.py                 # HTML→PDF导出（WeasyPrint）\n│   │   ├── pdf_layout_optimizer.py         # PDF布局优化器\n│   │   └── chart_to_svg.py                 # 图表转SVG工具\n│   ├── state\u002F                              # 任务\u002F元数据状态模型\n│   │   └── state.py                        # ReportState与序列化工具\n│   ├── utils\u002F                              # 配置与辅助工具\n│   │   ├── config.py                       # Pydantic Settings与打印助手\n│   │   ├── dependency_check.py             # 依赖检查工具\n│   │   ├── json_parser.py                  # JSON解析工具\n│   │   ├── chart_validator.py              # 图表校验工具\n│   │   └── chart_repair_api.py             # 图表修复API\n│   ├── report_template\u002F                    # Markdown模板库\n│   │   ├── 企业品牌声誉分析报告.md\n│   │   └── ...\n│   └── __init__.py\n├── ForumEngine\u002F                            # 论坛引擎：Agent协作机制\n│   ├── monitor.py                          # 日志监控和论坛管理核心\n│   ├── llm_host.py                         # 论坛主持人LLM模块\n│   └── __init__.py\n├── MindSpider\u002F                             # 社交媒体爬虫系统\n│   ├── main.py                             # 爬虫主程序入口\n│   ├── config.py                           # 爬虫配置文件\n│   ├── BroadTopicExtraction\u002F               # 话题提取模块\n│   │   ├── main.py                         # 话题提取主程序\n│   │   ├── database_manager.py             # 数据库管理器\n│   │   ├── get_today_news.py               # 今日新闻获取\n│   │   └── topic_extractor.py              # 话题提取器\n│   ├── DeepSentimentCrawling\u002F              # 深度舆情爬取模块\n│   │   ├── main.py                         # 深度爬取主程序\n│   │   ├── keyword_manager.py              # 关键词管理器\n│   │   ├── platform_crawler.py             # 平台爬虫管理\n│   │   └── MediaCrawler\u002F                   # 社媒爬虫核心\n│   │       ├── main.py\n│   │       ├── config\u002F                     # 各平台配置\n│   │       ├── media_platform\u002F             # 各平台爬虫实现\n│   │       └── ...\n│   └── schema\u002F                             # 数据库结构定义\n│       ├── db_manager.py                   # 数据库管理器\n│       ├── init_database.py                # 数据库初始化脚本\n│       ├── mindspider_tables.sql           # 数据库表结构SQL\n│       ├── models_bigdata.py               # 大规模媒体舆情表的SQLAlchemy映射\n│       └── models_sa.py                    # DailyTopic\u002FTask等扩展表ORM模型\n├── SentimentAnalysisModel\u002F                 # 情感分析模型集合\n│   ├── WeiboSentiment_Finetuned\u002F           # 微调BERT\u002FGPT-2模型\n│   │   ├── BertChinese-Lora\u002F               # BERT中文LoRA微调\n│   │   │   ├── train.py\n│   │   │   ├── predict.py\n│   │   │   └── ...\n│   │   └── GPT2-Lora\u002F                      # GPT-2 LoRA微调\n│   │       ├── train.py\n│   │       ├── predict.py\n│   │       └── ...\n│   ├── WeiboMultilingualSentiment\u002F         # 多语言情感分析\n│   │   ├── train.py\n│   │   ├── predict.py\n│   │   └── ...\n│   ├── WeiboSentiment_SmallQwen\u002F           # 小参数Qwen3微调\n│   │   ├── train.py\n│   │   ├── predict_universal.py\n│   │   └── ...\n│   └── WeiboSentiment_MachineLearning\u002F     # 传统机器学习方法\n│       ├── train.py\n│       ├── predict.py\n│       └── ...\n├── SingleEngineApp\u002F                        # 单独Agent的Streamlit应用\n│   ├── query_engine_streamlit_app.py       # QueryEngine独立应用\n│   ├── media_engine_streamlit_app.py       # MediaEngine独立应用\n│   └── insight_engine_streamlit_app.py     # InsightEngine独立应用\n├── query_engine_streamlit_reports\u002F         # QueryEngine单应用运行输出\n├── media_engine_streamlit_reports\u002F         # MediaEngine单应用运行输出\n├── insight_engine_streamlit_reports\u002F       # InsightEngine单应用运行输出\n├── templates\u002F                              # Flask前端模板\n│   └── index.html                          # 主界面HTML\n├── static\u002F                                 # 静态资源\n│   ├── image\u002F                              # 图片资源\n│   │   └── ...\n│   ├── Partial README for PDF Exporting\u002F   # PDF导出依赖配置说明\n│   └── v2_report_example\u002F                  # 报告渲染示例\n│       └── report_all_blocks_demo\u002F         # 全块类型演示（HTML\u002FPDF\u002FMD）\n├── logs\u002F                                   # 运行日志目录\n├── final_reports\u002F                          # 最终生成的报告文件\n│   ├── ir\u002F                                 # 报告IR JSON文件\n│   └── *.html                              # 最终HTML报告\n├── utils\u002F                                  # 通用工具函数\n│   ├── forum_reader.py                     # Agent间论坛通信工具\n│   ├── github_issues.py                    # 统一生成GitHub Issue链接与错误提示\n│   └── retry_helper.py                     # 网络请求重试机制工具\n├── tests\u002F                                  # 单元测试与集成测试\n│   ├── run_tests.py                        # pytest入口脚本\n│   ├── test_monitor.py                     # ForumEngine监控单元测试\n│   ├── test_report_engine_sanitization.py  # ReportEngine安全性测试\n│   └── ...\n├── app.py                                  # Flask主应用入口\n├── config.py                               # 全局配置文件\n├── .env.example                            # 环境变量示例文件\n├── docker-compose.yml                      # Docker多服务编排配置\n├── Dockerfile                              # Docker镜像构建文件\n├── requirements.txt                        # Python依赖包清单\n├── regenerate_latest_html.py               # 使用最新章节重装订并渲染HTML\n├── regenerate_latest_md.py                 # 使用最新章节重装订并渲染Markdown\n├── regenerate_latest_pdf.py                # PDF重新生成工具脚本\n├── report_engine_only.py                   # Report Engine命令行版本\n├── README.md                               # 中文说明文档\n├── README-EN.md                            # 英文说明文档\n├── CONTRIBUTING.md                         # 中文贡献指南\n├── CONTRIBUTING-EN.md                      # 英文贡献指南\n└── LICENSE                                 # GPL-2.0开源许可证\n```\n\n## 🚀 快速开始（Docker）\n\n### 1. 启动项目\n\n复制一份 `.env.example` 文件，命名为 `.env` ，并按需配置 `.env` 文件中的环境变量\n\n执行以下命令在后台启动所有服务：\n\n```bash\ndocker compose up -d\n```\n\n> **注：镜像拉取速度慢**，在原 `docker-compose.yml` 文件中，我们已经通过**注释**的方式提供了备用镜像地址供您替换\n\n### 2. 配置说明\n\n#### 数据库配置（PostgreSQL）\n\n请按照以下参数配置数据库连接信息，也支持Mysql可自行修改：\n\n| 配置项 | 填写值 | 说明 |\n| :--- | :--- | :--- |\n| `DB_HOST` | `db` | 数据库服务名称 (对应 `docker-compose.yml` 中的服务名) |\n| `DB_PORT` | `5432` | 默认 PostgreSQL 端口 |\n| `DB_USER` | `bettafish` | 数据库用户名 |\n| `DB_PASSWORD` | `bettafish` | 数据库密码 |\n| `DB_NAME` | `bettafish` | 数据库名称 |\n| **其他** | **保持默认** | 数据库连接池等其他参数请保持默认设置。 |\n\n#### 大模型配置\n\n> 我们所有 LLM 调用使用 OpenAI 的 API 接口标准\n\n在完成数据库配置后，请正常配置**所有大模型相关的参数**，确保系统能够连接到您选择的大模型服务。\n\n完成上述所有配置并保存后，系统即可正常运行。\n\n## 🔧 源码启动指南\n\n> 如果你是初次学习一个Agent系统的搭建，可以从一个非常简单的demo开始：[Deep Search Agent Demo](https:\u002F\u002Fgithub.com\u002F666ghj\u002FDeepSearchAgent-Demo)\n\n### 环境要求\n\n- **操作系统**: Windows、Linux、MacOS\n- **Python版本**: 3.9+\n- **Conda**: Anaconda或Miniconda\n- **数据库**: PostgreSQL（推荐）或MySQL\n- **内存**: 建议2GB以上\n\n### 1. 创建环境\n\n#### 如果使用Conda\n\n```bash\n# 创建conda环境\nconda create -n your_conda_name python=3.11\nconda activate your_conda_name\n```\n\n#### 如果使用uv\n\n```bash\n# 创建uv环境\nuv venv --python 3.11 # 创建3.11环境\n```\n\n### 2. 安装 PDF 导出所需系统依赖（可选）\n\n这部分有详细的配置说明：[配置所需依赖](.\u002Fstatic\u002FPartial%20README%20for%20PDF%20Exporting\u002FREADME.md)\n\n### 3. 安装依赖包\n\n> 如果跳过了步骤2，weasyprint库可能无法安装，PDF功能可能无法正常使用。\n\n```bash\n# 基础依赖安装\npip install -r requirements.txt\n\n# uv版本命令（更快速安装）\nuv pip install -r requirements.txt\n# 如果不想使用本地情感分析模型（算力需求很小，默认安装cpu版本），可以将该文件中的\"机器学习\"部分注释掉再执行指令\n```\n\n### 4. 安装Playwright浏览器驱动\n\n```bash\n# 安装浏览器驱动（用于爬虫功能）\nplaywright install chromium\n```\n\n### 5. 配置LLM与数据库\n\n复制一份项目根目录 `.env.example` 文件，命名为 `.env`\n\n编辑 `.env` 文件，填入您的API密钥（您也可以选择自己的模型、搜索代理，详情见根目录.env.example文件内或根目录config.py中的说明）：\n\n```yml\n# ====================== 数据库配置 ======================\n# 数据库主机，例如localhost 或 127.0.0.1\nDB_HOST=your_db_host\n# 数据库端口号，默认为3306\nDB_PORT=3306\n# 数据库用户名\nDB_USER=your_db_user\n# 数据库密码\nDB_PASSWORD=your_db_password\n# 数据库名称\nDB_NAME=your_db_name\n# 数据库字符集，推荐utf8mb4，兼容emoji\nDB_CHARSET=utf8mb4\n# 数据库类型postgresql或mysql\nDB_DIALECT=postgresql\n# 数据库不需要初始化，执行app.py时会自动检测\n\n# ====================== LLM配置 ======================\n# 您可以更改每个部分LLM使用的API，只要兼容OpenAI请求格式都可以\n# 配置文件内部给了每一个Agent的推荐LLM，初次部署请先参考推荐设置\n\n# Insight Agent\nINSIGHT_ENGINE_API_KEY=\nINSIGHT_ENGINE_BASE_URL=\nINSIGHT_ENGINE_MODEL_NAME=\n\n# Media Agent\n...\n```\n\n### 6. 启动系统\n\n#### 6.1 完整系统启动（推荐）\n\n```bash\n# 在项目根目录下，激活conda环境\nconda activate your_conda_name\n\n# 启动主应用即可\npython app.py\n```\n\nuv 版本启动命令 \n```bash\n# 在项目根目录下，激活uv环境\n.venv\\Scripts\\activate\n\n# 启动主应用即可\npython app.py\n```\n\n> 注1：一次运行终止后，streamlit app可能结束异常仍然占用端口，此时搜索占用端口的进程kill掉即可\n\n> 注2：数据爬取需要单独操作，见6.3指引\n\n访问 http:\u002F\u002Flocalhost:5000 即可使用完整系统\n\n#### 6.2 单独启动某个Agent\n\n```bash\n# 启动QueryEngine\nstreamlit run SingleEngineApp\u002Fquery_engine_streamlit_app.py --server.port 8503\n\n# 启动MediaEngine  \nstreamlit run SingleEngineApp\u002Fmedia_engine_streamlit_app.py --server.port 8502\n\n# 启动InsightEngine\nstreamlit run SingleEngineApp\u002Finsight_engine_streamlit_app.py --server.port 8501\n```\n\n#### 6.3 爬虫系统单独使用\n\n这部分有详细的配置文档：[MindSpider使用说明](.\u002FMindSpider\u002FREADME.md)\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"MindSpider\\img\\example.png\" alt=\"banner\" width=\"600\">\n\nMindSpider 运行示例\n\u003C\u002Fdiv>\n\n```bash\n# 进入爬虫目录\ncd MindSpider\n\n# 项目初始化\npython main.py --setup\n\n# 运行话题提取（获取热点新闻和关键词）\npython main.py --broad-topic\n\n# 运行完整爬虫流程\npython main.py --complete --date 2024-01-20\n\n# 仅运行话题提取\npython main.py --broad-topic --date 2024-01-20\n\n# 仅运行深度爬取\npython main.py --deep-sentiment --platforms xhs dy wb\n```\n\n#### 6.4 命令行报告生成工具\n\n该工具会跳过三个分析引擎的运行阶段，直接读取它们的最新日志文件，并在无需 Web 界面的情况下生成综合报告（同时省略文件增量校验步骤），默认会在 PDF 之后自动生成 Markdown（可用参数关闭）。通常用于对报告生成结果不满意、需要快速重试的场景，或在调试 Report Engine 时启用。\n\n```bash\n# 基本使用（自动从文件名提取主题）\npython report_engine_only.py\n\n# 指定报告主题\npython report_engine_only.py --query \"土木工程行业分析\"\n\n# 跳过PDF生成（即使系统支持）\npython report_engine_only.py --skip-pdf\n\n# 跳过Markdown生成\npython report_engine_only.py --skip-markdown\n\n# 显示详细日志\npython report_engine_only.py --verbose\n\n# 查看帮助信息\npython report_engine_only.py --help\n```\n\n**功能说明：**\n\n1. **自动检查依赖**：程序会自动检查PDF生成所需的系统依赖，如果缺失会给出安装提示\n2. **获取最新文件**：自动从三个引擎目录（`insight_engine_streamlit_reports`、`media_engine_streamlit_reports`、`query_engine_streamlit_reports`）获取最新的分析报告\n3. **文件确认**：显示所有选择的文件名、路径和修改时间，等待用户确认（默认输入 `y` 继续，输入 `n` 退出）\n4. **直接生成报告**：跳过文件增加审核程序，直接调用Report Engine生成综合报告\n5. **自动保存文件**：\n   - HTML报告保存到 `final_reports\u002F` 目录\n   - PDF报告（如果有依赖）保存到 `final_reports\u002Fpdf\u002F` 目录\n   - Markdown报告（可用 `--skip-markdown` 关闭）保存到 `final_reports\u002Fmd\u002F` 目录\n   - 文件命名格式：`final_report_{主题}_{时间戳}.html\u002Fpdf\u002Fmd`\n\n**注意事项：**\n\n- 确保三个引擎目录中至少有一个包含`.md`报告文件\n- 命令行工具与Web界面相互独立，不会相互影响\n- PDF生成需要安装系统依赖，详见上文\"安装 PDF 导出所需系统依赖\"部分\n\n**快速重渲染最新结果：**\n\n- `regenerate_latest_html.py` \u002F `regenerate_latest_md.py`：从 `CHAPTER_OUTPUT_DIR` 中最新一次运行的章节 JSON 重装订 Document IR，并直接渲染 HTML 或 Markdown。\n- `regenerate_latest_pdf.py`：读取 `final_reports\u002Fir` 里最新的 IR，使用 SVG 矢量图表重新导出 PDF。\n\n## ⚙️ 高级配置（已过时，已经统一为项目根目录.env文件管理，其他子agent自动继承根目录配置）\n\n### 修改关键参数\n\n#### Agent配置参数\n\n每个Agent都有专门的配置文件，可根据需求调整，下面是部分示例：\n\n```python\n# QueryEngine\u002Futils\u002Fconfig.py\nclass Config:\n    max_reflections = 2           # 反思轮次\n    max_search_results = 15       # 最大搜索结果数\n    max_content_length = 8000     # 最大内容长度\n    \n# MediaEngine\u002Futils\u002Fconfig.py  \nclass Config:\n    comprehensive_search_limit = 10  # 综合搜索限制\n    web_search_limit = 15           # 网页搜索限制\n    \n# InsightEngine\u002Futils\u002Fconfig.py\nclass Config:\n    default_search_topic_globally_limit = 200    # 全局搜索限制\n    default_get_comments_limit = 500             # 评论获取限制\n    max_search_results_for_llm = 50              # 传给LLM的最大结果数\n```\n\n#### 情感分析模型配置\n\n```python\n# InsightEngine\u002Ftools\u002Fsentiment_analyzer.py\nSENTIMENT_CONFIG = {\n    'model_type': 'multilingual',     # 可选: 'bert', 'multilingual', 'qwen'等\n    'confidence_threshold': 0.8,      # 置信度阈值\n    'batch_size': 32,                 # 批处理大小\n    'max_sequence_length': 512,       # 最大序列长度\n}\n```\n\n### 接入不同的LLM模型\n\n支持任意openAI调用格式的LLM提供商，只需要在\u002Fconfig.py中填写对应的KEY、BASE_URL、MODEL_NAME即可。\n\n> 什么是openAI调用格式？下面提供一个简单的例子：\n>```python\n>from openai import OpenAI\n>\n>client = OpenAI(api_key=\"your_api_key\", \n>                base_url=\"https:\u002F\u002Faihubmix.com\u002Fv1\")\n>\n>response = client.chat.completions.create(\n>    model=\"gpt-4o-mini\",\n>    messages=[\n>        {'role': 'user', \n>         'content': \"推理模型会给市场带来哪些新的机会\"}\n>    ],\n>)\n>\n>complete_response = response.choices[0].message.content\n>print(complete_response)\n>```\n\n### 更改情感分析模型\n\n系统集成了多种情感分析方法，可根据需求选择：\n\n#### 1. 多语言情感分析\n\n```bash\ncd SentimentAnalysisModel\u002FWeiboMultilingualSentiment\npython predict.py --text \"This product is amazing!\" --lang \"en\"\n```\n\n#### 2. 小参数Qwen3微调\n\n```bash\ncd SentimentAnalysisModel\u002FWeiboSentiment_SmallQwen\npython predict_universal.py --text \"这次活动办得很成功\"\n```\n\n#### 3. 基于BERT的微调模型\n\n```bash\n# 使用BERT中文模型\ncd SentimentAnalysisModel\u002FWeiboSentiment_Finetuned\u002FBertChinese-Lora\npython predict.py --text \"这个产品真的很不错\"\n```\n\n#### 4. GPT-2 LoRA微调模型\n\n```bash\ncd SentimentAnalysisModel\u002FWeiboSentiment_Finetuned\u002FGPT2-Lora\npython predict.py --text \"今天心情不太好\"\n```\n\n#### 5. 传统机器学习方法\n\n```bash\ncd SentimentAnalysisModel\u002FWeiboSentiment_MachineLearning\npython predict.py --model_type \"svm\" --text \"服务态度需要改进\"\n```\n\n### 接入自定义业务数据库\n\n#### 1. 修改数据库连接配置\n\n```python\n# config.py 中添加您的业务数据库配置\nBUSINESS_DB_HOST = \"your_business_db_host\"\nBUSINESS_DB_PORT = 3306\nBUSINESS_DB_USER = \"your_business_user\"\nBUSINESS_DB_PASSWORD = \"your_business_password\"\nBUSINESS_DB_NAME = \"your_business_database\"\n```\n\n#### 2. 创建自定义数据访问工具\n\n```python\n# InsightEngine\u002Ftools\u002Fcustom_db_tool.py\nclass CustomBusinessDBTool:\n    \"\"\"自定义业务数据库查询工具\"\"\"\n    \n    def __init__(self):\n        self.connection_config = {\n            'host': config.BUSINESS_DB_HOST,\n            'port': config.BUSINESS_DB_PORT,\n            'user': config.BUSINESS_DB_USER,\n            'password': config.BUSINESS_DB_PASSWORD,\n            'database': config.BUSINESS_DB_NAME,\n        }\n    \n    def search_business_data(self, query: str, table: str):\n        \"\"\"查询业务数据\"\"\"\n        # 实现您的业务逻辑\n        pass\n    \n    def get_customer_feedback(self, product_id: str):\n        \"\"\"获取客户反馈数据\"\"\"\n        # 实现客户反馈查询逻辑\n        pass\n```\n\n#### 3. 集成到InsightEngine\n\n```python\n# InsightEngine\u002Fagent.py 中集成自定义工具\nfrom .tools.custom_db_tool import CustomBusinessDBTool\n\nclass DeepSearchAgent:\n    def __init__(self, config=None):\n        # ... 其他初始化代码\n        self.custom_db_tool = CustomBusinessDBTool()\n    \n    def execute_custom_search(self, query: str):\n        \"\"\"执行自定义业务数据搜索\"\"\"\n        return self.custom_db_tool.search_business_data(query, \"your_table\")\n```\n\n### 自定义报告模板\n\n#### 1. 在Web界面中上传\n\n系统支持上传自定义模板文件（.md或.txt格式），可在生成报告时选择使用。\n\n#### 2. 创建模板文件\n\n在 `ReportEngine\u002Freport_template\u002F` 目录下创建新的模板，我们的Agent会自行选用最合适的模板。\n\n## 🤝 贡献指南\n\n我们欢迎所有形式的贡献！\n\n**请阅读以下贡献指南：**  \n- [CONTRIBUTING.md](.\u002FCONTRIBUTING.md)\n\n## 🦖 下一步开发计划\n\n现在系统完成了最后一步预测！访问查看【MiroFish-预测万物】：https:\u002F\u002Fgithub.com\u002F666ghj\u002FMiroFish\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_3a9d0e3fda3d.jpeg\" alt=\"banner\" width=\"800\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_97983f5a7679.png\" alt=\"banner\" width=\"800\">\n\u003C\u002Fdiv>\n\n## ⚠️ 免责声明\n\n**重要提醒：本项目仅供学习、学术研究和教育目的使用**\n\n1. **合规性声明**：\n   - 本项目中的所有代码、工具和功能均仅供学习、学术研究和教育目的使用\n   - 严禁将本项目用于任何商业用途或盈利性活动\n   - 严禁将本项目用于任何违法、违规或侵犯他人权益的行为\n\n2. **爬虫功能免责**：\n   - 项目中的爬虫功能仅用于技术学习和研究目的\n   - 使用者必须遵守目标网站的robots.txt协议和使用条款\n   - 使用者必须遵守相关法律法规，不得进行恶意爬取或数据滥用\n   - 因使用爬虫功能产生的任何法律后果由使用者自行承担\n\n3. **数据使用免责**：\n   - 项目涉及的数据分析功能仅供学术研究使用\n   - 严禁将分析结果用于商业决策或盈利目的\n   - 使用者应确保所分析数据的合法性和合规性\n\n4. **技术免责**：\n   - 本项目按\"现状\"提供，不提供任何明示或暗示的保证\n   - 作者不对使用本项目造成的任何直接或间接损失承担责任\n   - 使用者应自行评估项目的适用性和风险\n\n5. **责任限制**：\n   - 使用者在使用本项目前应充分了解相关法律法规\n   - 使用者应确保其使用行为符合当地法律法规要求\n   - 因违反法律法规使用本项目而产生的任何后果由使用者自行承担\n\n**请在使用本项目前仔细阅读并理解上述免责声明。使用本项目即表示您已同意并接受上述所有条款。**\n\n## 📄 许可证\n\n本项目采用 [GPL-2.0许可证](LICENSE)。详细信息请参阅LICENSE文件。\n\n## 🎉 支持与联系\n\n### 获取帮助\n\n常见问题解答：https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues\u002F185\n\n- **项目主页**：[GitHub仓库](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish)\n- **问题反馈**：[Issues页面](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues)\n- **功能建议**：[Discussions页面](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fdiscussions)\n\n### 联系方式\n\n- 📧 **邮箱**：hangjiang@bupt.edu.cn\n\n### 商务合作\n\n- **企业定制开发**\n- **大数据服务**\n- **学术合作**\n- **技术培训**\n\n## 👥 贡献者\n\n感谢以下优秀的贡献者们：\n\n[![Contributors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_4f913f5cc1da.png)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fgraphs\u002Fcontributors)\n\n## 🌟 加入官方交流群\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_bf2f15acf319.png\" alt=\"欢迎加入我们的技术交流QQ群！\" style=\"width:60%; max-width:900px; display:block; margin:0 auto;\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_f6416b45aab0.png\" alt=\"BettaFish 技术交流群二维码\" style=\"width:60%; max-width:360px; display:block; margin:20px auto 0;\">\n\u003C\u002Fdiv>\n\n## 📈 项目统计\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F#666ghj\u002FBettaFish&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=666ghj\u002FBettaFish&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_e27a07884616.png\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_e27a07884616.png\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n![Alt](https:\u002F\u002Frepobeats.axiom.co\u002Fapi\u002Fembed\u002Fe04e3eea4674edc39c148a7845c8d09c1b7b1922.svg \"Repobeats analytics image\")\n","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_95da6ee3a7fe.png\" alt=\"BettaFish Logo\" width=\"100%\">\n\n\u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F15286\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_4a68feb902da.png\" alt=\"666ghj%2FBettaFish | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Faihubmix.com\u002F?aff=8Ds9\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_c69e745f8221.png\" alt=\"666ghj%2FBettaFish | Trendshift\" height=\"40\"\u002F>\u003C\u002Fa>&ensp;\n\u003Ca href=\"https:\u002F\u002Fopen.anspire.cn\u002F?share_code=3E1FUOUH\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_9475f6410563.png\" alt=\"666ghj%2FBettaFish | Trendshift\" height=\"40\"\u002F>\u003C\u002Fa>\n\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fstargazers)\n[![GitHub Watchers](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fwatchers\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fwatchers)\n[![GitHub Forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fnetwork)\n[![GitHub Issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues)\n[![GitHub Pull Requests](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpulls)\n\n[![GitHub License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002F666ghj\u002FBettaFish?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fblob\u002Fmain\u002FLICENSE)\n[![Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-v1.2.1-green.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Build-2496ED?style=flat-square&logo=docker&logoColor=white)](https:\u002F\u002Fhub.docker.com\u002F)\n\n\n\n[English](.\u002FREADME-EN.md) | [中文文档](.\u002FREADME.md)\n\n\u003C\u002Fdiv>\n\n> [!IMPORTANT]  \n> 查看我们最新发布的预测引擎：[MiroFish-简洁通用的群体智能引擎，预测万物](https:\u002F\u002Fgithub.com\u002F666ghj\u002FMiroFish)\n> \n> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_3a9d0e3fda3d.jpeg\" alt=\"banner\" width=\"300\">\n>\n> “数据分析三板斧”全线贯通：我们激动的宣布 MiroFish 正式发布！随着最后一块版图补齐，我们构建了从 BettaFish（数据收集与分析）到 MiroFish（全景预测）的完整链路。至此，从原始数据到智能决策的闭环已成，让预见未来成为可能！\n\n## ⚡ 项目概述\n\n“**微舆**” 是一个从0实现的创新型 多智能体 舆情分析系统，帮助大家破除信息茧房，还原舆情原貌，预测未来走向，辅助决策。用户只需像聊天一样提出分析需求，智能体开始全自动分析 国内外30+主流社媒 与 数百万条大众评论。\n\n> “微舆”谐音“微鱼”，BettaFish是一种体型很小但非常好斗、漂亮的鱼，它象征着“小而强大，不畏挑战”\n\n查看系统以“武汉大学舆情”为例，生成的研究报告：[武汉大学品牌声誉深度分析报告](.\u002Ffinal_reports\u002Ffinal_report__20250827_131630.html)\n\n查看系统以“武汉大学舆情”为例，一次完整运行的视频：[视频-武汉大学品牌声誉深度分析报告](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1TH1WBxEWN\u002F?vd_source=da3512187e242ce17dceee4c537ec7a6#reply279744466833)\n\n不仅仅体现在报告质量上，相比同类产品，我们拥有🚀六大优势：\n\n1. **AI驱动的全域监控**：AI爬虫集群7x24小时不间断作业，全面覆盖微博、小红书、抖音、快手等10+国内外关键社媒。不仅实时捕获热点内容，更能下钻至海量用户评论，让您听到最真实、最广泛的大众声音。\n\n2. **超越LLM的复合分析引擎**：我们不仅依赖设计的5类专业Agent，更融合了微调模型、统计模型等中间件。通过多模型协同工作，确保了分析结果的深度、准度与多维视角。\n\n3. **强大的多模态能力**：突破图文限制，能深度解析抖音、快手等短视频内容，并精准提取现代搜索引擎中的天气、日历、股票等结构化多模态信息卡片，让您全面掌握舆情动态。\n\n4. **Agent“论坛”协作机制**：为不同Agent赋予独特的工具集与思维模式，引入辩论主持人模型，通过“论坛”机制进行链式思维碰撞与辩论。这不仅避免了单一模型的思维局限与交流导致的同质化，更催生出更高质量的集体智能与决策支持。\n\n5. **公私域数据无缝融合**：平台不仅分析公开舆情，还提供高安全性的接口，支持您将内部业务数据库与舆情数据无缝集成。打通数据壁垒，为垂直业务提供“外部趋势+内部洞察”的强大分析能力。\n\n6. **轻量化与高扩展性框架**：基于纯Python模块化设计，实现轻量化、一键式部署。代码结构清晰，开发者可轻松集成自定义模型与业务逻辑，实现平台的快速扩展与深度定制。\n\n**始于舆情，而不止于舆情**。“微舆”的目标，是成为驱动一切业务场景的简洁通用的数据分析引擎。\n\n> 举个例子. 你只需简单修改Agent工具集的api参数与prompt，就可以把他变成一个金融领域的市场分析系统\n>\n> 附一个比较活跃的L站项目讨论帖：https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F1009280\n>\n> 查看L站佬友做的测评 [开源项目(微舆)与manus|minimax|ChatGPT|Perplexity对比](https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F1148040)\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_5143bd685a06.png\" alt=\"banner\" width=\"800\">\n\n告别传统的数据看板，在“微舆”，一切由一个简单的问题开始，您只需像对话一样，提出您的分析需求\n\u003C\u002Fdiv>\n\n## 🪄 赞助商\n\nLLM模型API赞助：\u003Ca href=\"https:\u002F\u002Faihubmix.com\u002F?aff=8Ds9\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_c69e745f8221.png\" alt=\"666ghj%2FBettaFish | Trendshift\" height=\"40\"\u002F>\u003C\u002Fa>\n\n\u003Cdetails>\n\u003Csummary>AI联网搜索、文件解析及网页内容抓取等智能体核心能力提供商：\u003C\u002Fa>\u003Cspan style=\"margin-left: 10px\">\u003Ca href=\"https:\u002F\u002Fopen.anspire.cn\u002F?share_code=3E1FUOUH\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_9475f6410563.png\" alt=\"666ghj%2FBettaFish | Trendshift\" height=\"50\"\u002F>\u003C\u002Fa>\u003C\u002Fsummary>\n安思派开放平台(Anspire Open)是面向智能体时代的领先的基础设施提供商。我们为开发者提供构建强大智能体所需的核心能力栈，现已上线AI联网搜索【多版本，极具竞争力的价格】、文件解析【限免】及网页内容抓取【限免】、云端浏览器自动化（Anspire Browser Agent）【内测】、多轮改写等服务，持续为智能体连接并操作复杂的数字世界提供坚实基础。可无缝集成至Dify、Coze、元器等主流智能体平台。通过透明点数计费体系与模块化设计，为企业提供高效、低成本的定制化支持，加速智能化升级进程。\n\u003C\u002Fdetails>\n\n## 🏗️ 系统架构\n\n### 整体架构图\n\n**Insight Agent** 私有数据库挖掘：私有舆情数据库深度分析AI代理\n\n**Media Agent** 多模态内容分析：具备强大多模态能力的AI代理\n\n**Query Agent** 精准信息搜索：具备国内外网页搜索能力的AI代理\n\n**Report Agent** 智能报告生成：内置模板的多轮报告生成AI代理\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_64b8fce774c6.png\" alt=\"banner\" width=\"800\">\n\u003C\u002Fdiv>\n\n### 一次完整分析流程\n\n| 步骤 | 阶段名称 | 主要操作 | 参与组件 | 循环特性 |\n|------|----------|----------|----------|----------|\n| 1 | 用户提问 | Flask主应用接收查询 | Flask主应用 | - |\n| 2 | 并行启动 | 三个Agent同时开始工作 | Query Agent、Media Agent、Insight Agent | - |\n| 3 | 初步分析 | 各Agent使用专属工具进行概览搜索 | 各Agent + 专属工具集 | - |\n| 4 | 策略制定 | 基于初步结果制定分块研究策略 | 各Agent内部决策模块 | - |\n| 5-N | **循环阶段** | **论坛协作 + 深度研究** | **ForumEngine + 所有Agent** | **多轮循环** |\n| 5.1 | 深度研究 | 各Agent基于论坛主持人引导进行专项搜索 | 各Agent + 反思机制 + 论坛引导 | 每轮循环 |\n| 5.2 | 论坛协作 | ForumEngine监控Agent发言并生成主持人引导 | ForumEngine + LLM主持人 | 每轮循环 |\n| 5.3 | 交流融合 | 各Agent根据讨论调整研究方向 | 各Agent + forum_reader工具 | 每轮循环 |\n| N+1 | 结果整合 | Report Agent收集所有分析结果和论坛内容 | Report Agent | - |\n| N+2 | IR中间表示 | 动态选择模板和样式，多轮生成元数据，装订为IR中间表示 | Report Agent + 模板引擎 | - |\n| N+3 | 报告生成 | 分块进行质量检测，基于IR渲染成交互式 HTML 报告 | Report Agent + 装订引擎 | - |\n\n### 项目代码结构树\n\n```\nBettaFish\u002F\n├── QueryEngine\u002F                            # 国内外新闻广度搜索Agent\n│   ├── agent.py                            # Agent主逻辑，协调搜索与分析流程\n│   ├── llms\u002F                               # LLM接口封装\n│   ├── nodes\u002F                              # 处理节点：搜索、格式化、总结等\n│   ├── tools\u002F                              # 国内外新闻搜索工具集\n│   ├── utils\u002F                              # 工具函数\n│   ├── state\u002F                              # 状态管理\n│   ├── prompts\u002F                            # 提示词模板\n│   └── ...\n├── MediaEngine\u002F                            # 强大的多模态理解Agent\n│   ├── agent.py                            # Agent主逻辑，处理视频\u002F图片等多模态内容\n│   ├── llms\u002F                               # LLM接口封装\n│   ├── nodes\u002F                              # 处理节点：搜索、格式化、总结等\n│   ├── tools\u002F                              # 多模态搜索工具集\n│   ├── utils\u002F                              # 工具函数\n│   ├── state\u002F                              # 状态管理\n│   ├── prompts\u002F                            # 提示词模板\n│   └── ...\n├── InsightEngine\u002F                          # 私有数据库挖掘Agent\n│   ├── agent.py                            # Agent主逻辑，协调数据库查询与分析\n│   ├── llms\u002F                               # LLM接口封装\n│   │   └── base.py                         # 统一的OpenAI兼容客户端\n│   ├── nodes\u002F                              # 处理节点：搜索、格式化、总结等\n│   │   ├── base_node.py                    # 基础节点类\n│   │   ├── search_node.py                  # 搜索节点\n│   │   ├── formatting_node.py              # 格式化节点\n│   │   ├── report_structure_node.py        # 报告结构节点\n│   │   └── summary_node.py                 # 总结节点\n│   ├── tools\u002F                              # 数据库查询和分析工具集\n│   │   ├── keyword_optimizer.py            # Qwen关键词优化中间件\n│   │   ├── search.py                       # 数据库操作工具集（话题搜索、评论获取等）\n│   │   └── sentiment_analyzer.py           # 情感分析集成工具\n│   ├── utils\u002F                              # 工具函数\n│   │   ├── config.py                       # 配置管理\n│   │   ├── db.py                           # SQLAlchemy异步引擎与只读查询封装\n│   │   └── text_processing.py              # 文本处理工具\n│   ├── state\u002F                              # 状态管理\n│   │   └── state.py                        # Agent状态定义\n│   ├── prompts\u002F                            # 提示词模板\n│   │   └── prompts.py                      # 各类提示词\n│   └── __init__.py\n├── ReportEngine\u002F                           # 多轮报告生成Agent\n│   ├── agent.py                            # 总调度器：模板选择→布局→篇幅→章节→渲染\n│   ├── flask_interface.py                  # Flask\u002FSSE入口，管理任务排队与流式事件\n│   ├── llms\u002F                               # OpenAI兼容LLM封装\n│   │   └── base.py                         # 统一的流式\u002F重试客户端\n│   ├── core\u002F                               # 核心功能：模板解析、章节存储、文档装订\n│   │   ├── template_parser.py              # Markdown模板切片与slug生成\n│   │   ├── chapter_storage.py              # 章节run目录、manifest与raw流写入\n│   │   └── stitcher.py                     # Document IR装订器，补齐锚点\u002F元数据\n│   ├── ir\u002F                                 # 报告中间表示（IR）契约与校验\n│   │   ├── schema.py                       # 块\u002F标记Schema常量定义\n│   │   └── validator.py                    # 章节JSON结构校验器\n│   ├── nodes\u002F                              # 全流程推理节点\n│   │   ├── base_node.py                    # 节点基类+日志\u002F状态钩子\n│   │   ├── template_selection_node.py      # 模板候选收集与LLM筛选\n│   │   ├── document_layout_node.py         # 标题\u002F目录\u002F主题设计\n│   │   ├── word_budget_node.py             # 篇幅规划与章节指令生成\n│   │   ──└── chapter_generation_node.py    # 章节级JSON生成+校验\n│   ├── prompts\u002F                            # 提示词库与Schema说明\n│   │   ──└── prompts.py                      # 模板选择\u002F布局\u002F篇幅\u002F章节提示词\n│   ├── renderers\u002F                          # IR渲染器\n│   │   ├── html_renderer.py                # Document IR→交互式HTML\n│   │   ├── pdf_renderer.py                 # HTML→PDF导出（WeasyPrint）\n│   │   ├── pdf_layout_optimizer.py         # PDF布局优化器\n│   │   ──└── chart_to_svg.py                 # 图表转SVG工具\n│   ├── state\u002F                              # 任务\u002F元数据状态模型\n│   │   ──└── state.py                        # ReportState与序列化工具\n│   ├── utils\u002F                              # 配置与辅助工具\n│   │   ├── config.py                       # Pydantic Settings与打印助手\n│   │   ├── dependency_check.py             # 依赖检查工具\n│   │   ├── json_parser.py                  # JSON解析工具\n│   │   ├── chart_validator.py              # 图表校验工具\n│   │   ──└── chart_repair_api.py             # 图表修复API\n│   ├── report_template\u002F                    # Markdown模板库\n│   │   ├── 企业品牌声誉分析报告.md\n│   │   ──└── ...\n│   ──└── __init__.py\n├── ForumEngine\u002F                            # 论坛引擎：Agent协作机制\n│   ├── monitor.py                          # 日志监控和论坛管理核心\n│   ├── llm_host.py                         # 论坛主持人LLM模块\n│   ──└── __init__.py\n├── MindSpider\u002F                             # 社交媒体爬虫系统\n│   ├── main.py                             # 爬虫主程序入口\n│   ├── config.py                           # 爬虫配置文件\n│   ├── BroadTopicExtraction\u002F               # 话题提取模块\n│   │   ├── main.py                         # 话题提取主程序\n│   │   ├── database_manager.py             # 数据库管理器\n│   │   ├── get_today_news.py               # 今日新闻获取\n│   │   ──└── topic_extractor.py              # 话题提取器\n│   ├── DeepSentimentCrawling\u002F              # 深度舆情爬取模块\n│   │   ├── main.py                         # 深度爬取主程序\n│   │   ├── keyword_manager.py              # 关键词管理器\n│   │   ├── platform_crawler.py             # 平台爬虫管理\n│   │   ──└── MediaCrawler\u002F                   # 社媒爬虫核心\n│   │       ├── main.py\n│   │       ├── config\u002F                     # 各平台配置\n│   │       ├── media_platform\u002F             # 各平台爬虫实现\n│   │       ──└── ...\n│   ──└── schema\u002F                             # 数据库结构定义\n│       ├── db_manager.py                   # 数据库管理器\n│       ├── init_database.py                # 数据库初始化脚本\n│       ├── mindspider_tables.sql           # 数据库表结构SQL\n│       ├── models_bigdata.py               # 大规模媒体舆情表的SQLAlchemy映射\n│       ──└── models_sa.py                    # DailyTopic\u002FTask等扩展表ORM模型\n├── SentimentAnalysisModel\u002F                 # 情感分析模型集合\n│   ├── WeiboSentiment_Finetuned\u002F           # 微调BERT\u002FGPT-2模型\n│   │   ├── BertChinese-Lora\u002F               # BERT中文LoRA微调\n│   │   │   ├── train.py\n│   │   │   ├── predict.py\n│   │   │   ──└── ...\n│   │   ──└── GPT2-Lora\u002F                      # GPT-2 LoRA微调\n│   │       ├── train.py\n│   │       ├── predict.py\n│   │       ──└── ...\n│   ├── WeiboMultilingualSentiment\u002F         # 多语言情感分析\n│   │   ├── train.py\n│   │   ├── predict.py\n│   │   ──└── ...\n│   ├── WeiboSentiment_SmallQwen\u002F           # 小参数Qwen3微调\n│   │   ├── train.py\n│   │   ├── predict_universal.py\n│   │   ──└── ...\n│   ──└── WeiboSentiment_MachineLearning\u002F     # 传统机器学习方法\n│       ├── train.py\n│       ├── predict.py\n│       ──└── ...\n├── SingleEngineApp\u002F                        # 单独Agent的Streamlit应用\n│   ├── query_engine_streamlit_app.py       # QueryEngine独立应用\n│   ├── media_engine_streamlit_app.py       # MediaEngine独立应用\n│   ──└── insight_engine_streamlit_app.py     # InsightEngine独立应用\n├── query_engine_streamlit_reports\u002F         # QueryEngine单应用运行输出\n├── media_engine_streamlit_reports\u002F         # MediaEngine单应用运行输出\n├── insight_engine_streamlit_reports\u002F       # InsightEngine单应用运行输出\n├── templates\u002F                              # Flask前端模板\n│   ──└── index.html                          # 主界面HTML\n├── static\u002F                                 # 静态资源\n│   ├── image\u002F                              # 图片资源\n│   │   ──└── ...\n│   ├── Partial README for PDF Exporting\u002F   # PDF导出依赖配置说明\n│   ──└── v2_report_example\u002F                  # 报告渲染示例\n│       ──└── report_all_blocks_demo\u002F         # 全块类型演示（HTML\u002FPDF\u002FMD）\n├── logs\u002F                                   # 运行日志目录\n├── final_reports\u002F                          # 最终生成的报告文件\n│   ├── ir\u002F                                 # 报告IR JSON文件\n│   ──└── *.html                              # 最终HTML报告\n├── utils\u002F                                  # 通用工具函数\n│   ├── forum_reader.py                     # Agent间论坛通信工具\n│   ├── github_issues.py                    # 统一生成GitHub Issue链接与错误提示\n│   ──└── retry_helper.py                     # 网络请求重试机制工具\n├── tests\u002F                                  # 单元测试与集成测试\n│   ├── run_tests.py                        # pytest入口脚本\n│   ├── test_monitor.py                     # ForumEngine监控单元测试\n│   ├── test_report_engine_sanitization.py  # ReportEngine安全性测试\n│   ──└── ...\n├── app.py                                  # Flask主应用入口\n├── config.py                               # 全局配置文件\n├── .env.example                            # 环境变量示例文件\n├── docker-compose.yml                      # Docker多服务编排配置\n├── Dockerfile                              # Docker镜像构建文件\n├── requirements.txt                        # Python依赖包清单\n├── regenerate_latest_html.py               # 使用最新章节重装订并渲染HTML\n├── regenerate_latest_md.py                 # 使用最新章节重装订并渲染Markdown\n├── regenerate_latest_pdf.py                # PDF重新生成工具脚本\n├── report_engine_only.py                   # Report Engine命令行版本\n├── README.md                               # 中文说明文档\n├── README-EN.md                            # 英文说明文档\n├── CONTRIBUTING.md                         # 中文贡献指南\n├── CONTRIBUTING-EN.md                      # 英文贡献指南\n└── LICENSE                                 # GPL-2.0开源许可证\n```\n\n## 🚀 快速开始（Docker）\n\n### 1. 启动项目\n\n复制一份 `.env.example` 文件，命名为 `.env` ，并按需配置 `.env` 文件中的环境变量\n\n执行以下命令在后台启动所有服务：\n\n```bash\ndocker compose up -d\n```\n\n> **注：镜像拉取速度慢**，在原 `docker-compose.yml` 文件中，我们已经通过**注释**的方式提供了备用镜像地址供您替换\n\n### 2. 配置说明\n\n#### 数据库配置（PostgreSQL）\n\n请按照以下参数配置数据库连接信息，也支持Mysql可自行修改：\n\n| 配置项 | 填写值 | 说明 |\n| :--- | :--- | :--- |\n| `DB_HOST` | `db` | 数据库服务名称 (对应 `docker-compose.yml` 中的服务名) |\n| `DB_PORT` | `5432` | 默认 PostgreSQL 端口 |\n| `DB_USER` | `bettafish` | 数据库用户名 |\n| `DB_PASSWORD` | `bettafish` | 数据库密码 |\n| `DB_NAME` | `bettafish` | 数据库名称 |\n| **其他** | **保持默认** | 数据库连接池等其他参数请保持默认设置。 |\n\n#### 大模型配置\n\n> 我们所有 LLM 调用使用 OpenAI 的 API 接口标准\n\n在完成数据库配置后，请正常配置**所有大模型相关的参数**，确保系统能够连接到您选择的大模型服务。\n\n完成上述所有配置并保存后，系统即可正常运行。\n\n## 🔧 源码启动指南\n\n> 如果你是初次学习一个Agent系统的搭建，可以从一个非常简单的demo开始：[Deep Search Agent Demo](https:\u002F\u002Fgithub.com\u002F666ghj\u002FDeepSearchAgent-Demo)\n\n### 环境要求\n\n- **操作系统**: Windows、Linux、MacOS\n- **Python版本**: 3.9+\n- **Conda**: Anaconda或Miniconda\n- **数据库**: PostgreSQL（推荐）或MySQL\n- **内存**: 建议2GB以上\n\n### 1. 创建环境\n\n#### 如果使用Conda\n\n```bash\n# 创建conda环境\nconda create -n your_conda_name python=3.11\nconda activate your_conda_name\n```\n\n#### 如果使用uv\n\n```bash\n# 创建uv环境\nuv venv --python 3.11 # 创建3.11环境\n```\n\n### 2. 安装 PDF 导出所需系统依赖（可选）\n\n这部分有详细的配置说明：[配置所需依赖](.\u002Fstatic\u002FPartial%20README%20for%20PDF%20Exporting\u002FREADME.md)\n\n### 3. 安装依赖包\n\n> 如果跳过了步骤2，weasyprint库可能无法安装，PDF功能可能无法正常使用。\n\n```bash\n# 基础依赖安装\npip install -r requirements.txt\n\n# uv版本命令（更快速安装）\nuv pip install -r requirements.txt\n# 如果不想使用本地情感分析模型（算力需求很小，默认安装cpu版本），可以将该文件中的\"机器学习\"部分注释掉再执行指令\n```\n\n### 4. 安装Playwright浏览器驱动\n\n```bash\n# 安装浏览器驱动（用于爬虫功能）\nplaywright install chromium\n```\n\n### 5. 配置LLM与数据库\n\n复制一份项目根目录 `.env.example` 文件，命名为 `.env`\n\n编辑 `.env` 文件，填入您的API密钥（您也可以选择自己的模型、搜索代理，详情见根目录.env.example文件内或根目录config.py中的说明）：\n\n```yml\n# ====================== 数据库配置 ======================\n# 数据库主机，例如localhost 或 127.0.0.1\nDB_HOST=your_db_host\n# 数据库端口号，默认为3306\nDB_PORT=3306\n# 数据库用户名\nDB_USER=your_db_user\n# 数据库密码\nDB_PASSWORD=your_db_password\n# 数据库名称\nDB_NAME=your_db_name\n# 数据库字符集，推荐utf8mb4，兼容emoji\nDB_CHARSET=utf8mb4\n# 数据库类型postgresql或mysql\nDB_DIALECT=postgresql\n# 数据库不需要初始化，执行app.py时会自动检测\n\n# ====================== LLM配置 ======================\n# 您可以更改每个部分LLM使用的API，只要兼容OpenAI请求格式都可以\n# 配置文件内部给了每一个Agent的推荐LLM，初次部署请先参考推荐设置\n\n# Insight Agent\nINSIGHT_ENGINE_API_KEY=\nINSIGHT_ENGINE_BASE_URL=\nINSIGHT_ENGINE_MODEL_NAME=\n\n# Media Agent\n...\n```\n\n### 6. 启动系统\n\n#### 6.1 完整系统启动（推荐）\n\n```bash\n# 在项目根目录下，激活conda环境\nconda activate your_conda_name\n\n# 启动主应用即可\npython app.py\n```\n\nuv 版本启动命令 \n```bash\n# 在项目根目录下，激活uv环境\n.venv\\Scripts\\activate\n\n# 启动主应用即可\npython app.py\n```\n\n> 注1：一次运行终止后，streamlit app可能结束异常仍然占用端口，此时搜索占用端口的进程kill掉即可\n\n> 注2：数据爬取需要单独操作，见6.3指引\n\n访问 http:\u002F\u002Flocalhost:5000 即可使用完整系统\n\n#### 6.2 单独启动某个Agent\n\n```bash\n# 启动QueryEngine\nstreamlit run SingleEngineApp\u002Fquery_engine_streamlit_app.py --server.port 8503\n\n# 启动MediaEngine  \nstreamlit run SingleEngineApp\u002Fmedia_engine_streamlit_app.py --server.port 8502\n\n# 启动InsightEngine\nstreamlit run SingleEngineApp\u002Finsight_engine_streamlit_app.py --server.port 8501\n```\n\n#### 6.3 爬虫系统单独使用\n\n这部分有详细的配置文档：[MindSpider使用说明](.\u002FMindSpider\u002FREADME.md)\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"MindSpider\\img\\example.png\" alt=\"banner\" width=\"600\">\n\nMindSpider 运行示例\n\u003C\u002Fdiv>\n\n```bash\n# 进入爬虫目录\ncd MindSpider\n\n# 项目初始化\npython main.py --setup\n\n# 运行话题提取（获取热点新闻和关键词）\npython main.py --broad-topic\n\n# 运行完整爬虫流程\npython main.py --complete --date 2024-01-20\n\n# 仅运行话题提取\npython main.py --broad-topic --date 2024-01-20\n\n# 仅运行深度爬取\npython main.py --deep-sentiment --platforms xhs dy wb\n```\n\n#### 6.4 命令行报告生成工具\n\n该工具会跳过三个分析引擎的运行阶段，直接读取它们的最新日志文件，并在无需 Web 界面的情况下生成综合报告（同时省略文件增量校验步骤），默认会在 PDF 之后自动生成 Markdown（可用参数关闭）。通常用于对报告生成结果不满意、需要快速重试的场景，或在调试 Report Engine 时启用。\n\n```bash\n# 基本使用（自动从文件名提取主题）\npython report_engine_only.py\n\n# 指定报告主题\npython report_engine_only.py --query \"土木工程行业分析\"\n\n# 跳过PDF生成（即使系统支持）\npython report_engine_only.py --skip-pdf\n\n# 跳过Markdown生成\npython report_engine_only.py --skip-markdown\n\n# 显示详细日志\npython report_engine_only.py --verbose\n\n# 查看帮助信息\npython report_engine_only.py --help\n```\n\n**功能说明：**\n\n1. **自动检查依赖**：程序会自动检查PDF生成所需的系统依赖，如果缺失会给出安装提示\n2. **获取最新文件**：自动从三个引擎目录（`insight_engine_streamlit_reports`、`media_engine_streamlit_reports`、`query_engine_streamlit_reports`）获取最新的分析报告\n3. **文件确认**：显示所有选择的文件名、路径和修改时间，等待用户确认（默认输入 `y` 继续，输入 `n` 退出）\n4. **直接生成报告**：跳过文件增加审核程序，直接调用Report Engine生成综合报告\n5. **自动保存文件**：\n   - HTML报告保存到 `final_reports\u002F` 目录\n   - PDF报告（如果有依赖）保存到 `final_reports\u002Fpdf\u002F` 目录\n   - Markdown报告（可用 `--skip-markdown` 关闭）保存到 `final_reports\u002Fmd\u002F` 目录\n   - 文件命名格式：`final_report_{主题}_{时间戳}.html\u002Fpdf\u002Fmd`\n\n**注意事项：**\n\n- 确保三个引擎目录中至少有一个包含`.md`报告文件\n- 命令行工具与Web界面相互独立，不会相互影响\n- PDF生成需要安装系统依赖，详见上文\"安装 PDF 导出所需系统依赖\"部分\n\n**快速重渲染最新结果：**\n\n- `regenerate_latest_html.py` \u002F `regenerate_latest_md.py`：从 `CHAPTER_OUTPUT_DIR` 中最新一次运行的章节 JSON 重装订 Document IR，并直接渲染 HTML 或 Markdown。\n- `regenerate_latest_pdf.py`：读取 `final_reports\u002Fir` 里最新的 IR，使用 SVG 矢量图表重新导出 PDF。\n\n## ⚙️ 高级配置（已过时，已经统一为项目根目录.env文件管理，其他子agent自动继承根目录配置）\n\n### 修改关键参数\n\n#### Agent配置参数\n\n每个Agent都有专门的配置文件，可根据需求调整，下面是部分示例：\n\n```python\n# QueryEngine\u002Futils\u002Fconfig.py\nclass Config:\n    max_reflections = 2           # 反思轮次\n    max_search_results = 15       # 最大搜索结果数\n    max_content_length = 8000     # 最大内容长度\n    \n# MediaEngine\u002Futils\u002Fconfig.py  \nclass Config:\n    comprehensive_search_limit = 10  # 综合搜索限制\n    web_search_limit = 15           # 网页搜索限制\n    \n# InsightEngine\u002Futils\u002Fconfig.py\nclass Config:\n    default_search_topic_globally_limit = 200    # 全局搜索限制\n    default_get_comments_limit = 500             # 评论获取限制\n    max_search_results_for_llm = 50              # 传给LLM的最大结果数\n```\n\n#### 情感分析模型配置\n\n```bash\n# InsightEngine\u002Ftools\u002Fsentiment_analyzer.py\nSENTIMENT_CONFIG = {\n    'model_type': 'multilingual',     # 可选: 'bert', 'multilingual', 'qwen'等\n    'confidence_threshold': 0.8,      # 置信度阈值\n    'batch_size': 32,                 # 批处理大小\n    'max_sequence_length': 512,       # 最大序列长度\n}\n```\n\n### 接入不同的LLM模型\n\n支持任意openAI调用格式的LLM提供商，只需要在\u002Fconfig.py中填写对应的KEY、BASE_URL、MODEL_NAME即可。\n\n> 什么是openAI调用格式？下面提供一个简单的例子：\n>```python\n>from openai import OpenAI\n>\n>client = OpenAI(api_key=\"your_api_key\", \n>                base_url=\"https:\u002F\u002Faihubmix.com\u002Fv1\")\n>\n>response = client.chat.completions.create(\n>    model=\"gpt-4o-mini\",\n>    messages=[\n>        {'role': 'user', \n>         'content': \"推理模型会给市场带来哪些新的机会\"}\n>    ],\n>)\n>\n>complete_response = response.choices[0].message.content\n>print(complete_response)\n>```\n\n### 更改情感分析模型\n\n系统集成了多种情感分析方法，可根据需求选择：\n\n#### 1. 多语言情感分析\n\n```bash\ncd SentimentAnalysisModel\u002FWeiboMultilingualSentiment\npython predict.py --text \"This product is amazing!\" --lang \"en\"\n```\n\n#### 2. 小参数Qwen3微调\n\n```bash\ncd SentimentAnalysisModel\u002FWeiboSentiment_SmallQwen\npython predict_universal.py --text \"这次活动办得很成功\"\n```\n\n#### 3. 基于BERT的微调模型\n\n```bash\n\n# 使用BERT中文模型\ncd SentimentAnalysisModel\u002FWeiboSentiment_Finetuned\u002FBertChinese-Lora\npython predict.py --text \"这个产品真的很不错\"\n```\n\n#### 4. GPT-2 LoRA微调模型\n\n```bash\ncd SentimentAnalysisModel\u002FWeiboSentiment_Finetuned\u002FGPT2-Lora\npython predict.py --text \"今天心情不太好\"\n```\n\n#### 5. 传统机器学习方法\n\n```bash\ncd SentimentAnalysisModel\u002FWeiboSentiment_MachineLearning\npython predict.py --model_type \"svm\" --text \"服务态度需要改进\"\n```\n\n### 接入自定义业务数据库\n\n#### 1. 修改数据库连接配置\n\n```python\n# config.py 中添加您的业务数据库配置\nBUSINESS_DB_HOST = \"your_business_db_host\"\nBUSINESS_DB_PORT = 3306\nBUSINESS_DB_USER = \"your_business_user\"\nBUSINESS_DB_PASSWORD = \"your_business_password\"\nBUSINESS_DB_NAME = \"your_business_database\"\n```\n\n#### 2. 创建自定义数据访问工具\n\n```python\n# InsightEngine\u002Ftools\u002Fcustom_db_tool.py\nclass CustomBusinessDBTool:\n    \"\"\"自定义业务数据库查询工具\"\"\"\n    \n    def __init__(self):\n        self.connection_config = {\n            'host': config.BUSINESS_DB_HOST,\n            'port': config.BUSINESS_DB_PORT,\n            'user': config.BUSINESS_DB_USER,\n            'password': config.BUSINESS_DB_PASSWORD,\n            'database': config.BUSINESS_DB_NAME,\n        }\n    \n    def search_business_data(self, query: str, table: str):\n        \"\"\"查询业务数据\"\"\"\n        # 实现您的业务逻辑\n        pass\n    \n    def get_customer_feedback(self, product_id: str):\n        \"\"\"获取客户反馈数据\"\"\"\n        # 实现客户反馈查询逻辑\n        pass\n```\n\n#### 3. 集成到InsightEngine\n\n```python\n# InsightEngine\u002Fagent.py 中集成自定义工具\nfrom .tools.custom_db_tool import CustomBusinessDBTool\n\nclass DeepSearchAgent:\n    def __init__(self, config=None):\n        # ... 其他初始化代码\n        self.custom_db_tool = CustomBusinessDBTool()\n    \n    def execute_custom_search(self, query: str):\n        \"\"\"执行自定义业务数据搜索\"\"\"\n        return self.custom_db_tool.search_business_data(query, \"your_table\")\n```\n\n### 自定义报告模板\n\n#### 1. 在Web界面中上传\n\n系统支持上传自定义模板文件（.md或.txt格式），可在生成报告时选择使用。\n\n#### 2. 创建模板文件\n\n在 `ReportEngine\u002Freport_template\u002F` 目录下创建新的模板，我们的Agent会自行选用最合适的模板。\n\n## 🤝 贡献指南\n\n我们欢迎所有形式的贡献！\n\n**请阅读以下贡献指南：**  \n- [CONTRIBUTING.md](.\u002FCONTRIBUTING.md)\n\n## 🦖 下一步开发计划\n\n现在系统完成了最后一步预测！访问查看【MiroFish-预测万物】：https:\u002F\u002Fgithub.com\u002F666ghj\u002FMiroFish\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_3a9d0e3fda3d.jpeg\" alt=\"banner\" width=\"800\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_97983f5a7679.png\" alt=\"banner\" width=\"800\">\n\u003C\u002Fdiv>\n\n## ⚠️ 免责声明\n\n**重要提醒：本项目仅供学习、学术研究和教育目的使用**\n\n1. **合规性声明**：\n   - 本项目中的所有代码、工具和功能均仅供学习、学术研究和教育目的使用\n   - 严禁将本项目用于任何商业用途或盈利性活动\n   - 严禁将本项目用于任何违法、违规或侵犯他人权益的行为\n\n2. **爬虫功能免责**：\n   - 项目中的爬虫功能仅用于技术学习和研究目的\n   - 使用者必须遵守目标网站的robots.txt协议和使用条款\n   - 使用者必须遵守相关法律法规，不得进行恶意爬取或数据滥用\n   - 因使用爬虫功能产生的任何法律后果由使用者自行承担\n\n3. **数据使用免责**：\n   - 项目涉及的数据分析功能仅供学术研究使用\n   - 严禁将分析结果用于商业决策或盈利目的\n   - 使用者应确保所分析数据的合法性和合规性\n\n4. **技术免责**：\n   - 本项目按\"现状\"提供，不提供任何明示或暗示的保证\n   - 作者不对使用本项目造成的任何直接或间接损失承担责任\n   - 使用者应自行评估项目的适用性和风险\n\n5. **责任限制**：\n   - 使用者在使用本项目前应充分了解相关法律法规\n   - 使用者应确保其使用行为符合当地法律法规要求\n   - 因违反法律法规使用本项目而产生的任何后果由使用者自行承担\n\n**请在使用本项目前仔细阅读并理解上述免责声明。使用本项目即表示您已同意并接受上述所有条款。**\n\n## 📄 许可证\n\n本项目采用 [GPL-2.0许可证](LICENSE)。详细信息请参阅LICENSE文件。\n\n## 🎉 支持与联系\n\n### 获取帮助\n\n常见问题解答：https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues\u002F185\n\n- **项目主页**：[GitHub仓库](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish)\n- **问题反馈**：[Issues页面](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues)\n- **功能建议**：[Discussions页面](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fdiscussions)\n\n### 联系方式\n\n- 📧 **邮箱**：hangjiang@bupt.edu.cn\n\n### 商务合作\n\n- **企业定制开发**\n- **大数据服务**\n- **学术合作**\n- **技术培训**\n\n## 👥 贡献者\n\n感谢以下优秀的贡献者们：\n\n[![Contributors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_4f913f5cc1da.png)](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fgraphs\u002Fcontributors)\n\n## 🌟 加入官方交流群\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_bf2f15acf319.png\" alt=\"欢迎加入我们的技术交流QQ群！\" style=\"width:60%; max-width:900px; display:block; margin:0 auto;\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_f6416b45aab0.png\" alt=\"BettaFish 技术交流群二维码\" style=\"width:60%; max-width:360px; display:block; margin:20px auto 0;\">\n\u003C\u002Fdiv>\n\n## 📈 项目统计\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F#666ghj\u002FBettaFish&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=666ghj\u002FBettaFish&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_e27a07884616.png\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_readme_e27a07884616.png\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n![Alt](https:\u002F\u002Frepobeats.axiom.co\u002Fapi\u002Fembed\u002Fe04e3eea4674edc39c148a7845c8d09c1b7b1922.svg \"Repobeats analytics image\")","# BettaFish (微舆) 快速上手指南\n\nBettaFish（微舆）是一个创新的多智能体舆情分析系统，能够自动分析国内外30+主流社媒及海量评论，生成深度分析报告。本指南将帮助你快速部署并运行该系统。\n\n## 1. 环境准备\n\n在开始之前，请确保你的开发环境满足以下要求：\n\n*   **操作系统**：Windows \u002F macOS \u002F Linux\n*   **Python 版本**：推荐 Python 3.10 或更高版本\n*   **依赖管理**：pip\n*   **数据库**：系统内置 SQLite（默认），也可配置 MySQL\u002FPostgreSQL\n*   **API Key**：\n    *   **LLM API**：需要兼容 OpenAI 接口的大模型 API Key（如 DeepSeek, Qwen, GPT-4 等）。\n    *   **搜索\u002F爬虫 API**（可选但推荐）：为了获得最佳的多模态和全网搜索效果，建议注册 [Anspire Open](https:\u002F\u002Fopen.anspire.cn\u002F?share_code=3E1FUOUH) 获取联网搜索、网页抓取等能力的 API Key。\n\n## 2. 安装步骤\n\n### 第一步：克隆项目\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish.git\ncd BettaFish\n```\n\n### 第二步：安装依赖\n\n建议使用虚拟环境以避免依赖冲突：\n\n```bash\n# 创建虚拟环境\npython -m venv venv\n\n# 激活虚拟环境\n# Windows:\nvenv\\Scripts\\activate\n# macOS\u002FLinux:\nsource venv\u002Fbin\u002Factivate\n\n# 安装依赖包\npip install -r requirements.txt\n```\n\n> **提示**：如果下载依赖速度较慢，可使用国内镜像源加速：\n> `pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n### 第三步：配置环境变量\n\n在项目根目录下，复制示例配置文件并根据实际情况修改：\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env` 文件，填入必要的 API Key 和配置：\n\n```ini\n# LLM 配置 (以 DeepSeek 为例，也可替换为其他兼容 OpenAI 格式的模型)\nLLM_BASE_URL=https:\u002F\u002Fapi.deepseek.com\u002Fv1\nLLM_API_KEY=your_deepseek_api_key\nLLM_MODEL=deepseek-chat\n\n# 搜索与爬虫增强配置 (推荐配置 Anspire API 以获得更好效果)\nANSPIRE_API_KEY=your_anspire_api_key\n\n# 数据库配置 (默认使用 SQLite，无需修改即可运行)\nDATABASE_URL=sqlite:\u002F\u002F\u002F.\u002Fmindspider.db\n```\n\n## 3. 基本使用\n\nBettaFish 提供了 Web 界面和 Streamlit 演示应用两种交互方式。\n\n### 方式一：启动主 Web 服务 (推荐)\n\n主服务基于 Flask，支持完整的多智能体协作、论坛辩论机制及报告生成。\n\n```bash\npython app.py\n```\n\n启动成功后，终端会显示访问地址（通常为 `http:\u002F\u002F127.0.0.1:5000`）。在浏览器中打开该地址，你将看到聊天界面。\n\n**使用示例：**\n1. 在输入框中输入分析需求，例如：“分析一下最近武汉大学的品牌声誉舆情”。\n2. 点击发送，系统将自动启动 Query Agent、Media Agent 和 Insight Agent 进行并行工作。\n3. 等待系统完成“论坛协作”与深度研究，最终生成一份交互式 HTML 分析报告。\n\n### 方式二：启动独立 Agent 演示 (Streamlit)\n\n如果你只想测试单个引擎的功能（如仅测试搜索或媒体分析），可以使用 Streamlit 应用。\n\n```bash\n# 测试查询引擎\nstreamlit run SingleEngineApp\u002Fquery_engine_streamlit_app.py\n\n# 测试媒体引擎\nstreamlit run SingleEngineApp\u002Fmedia_engine_streamlit_app.py\n```\n\n### 查看生成的报告\n\n系统生成的报告通常保存在 `final_reports` 目录下，格式为 HTML。你可以直接在浏览器中打开这些文件，查看包含图表、情感分析和多维视角的深度报告。\n\n---\n\n**下一步建议：**\n*   如需进行大规模社交媒体数据爬取，请查阅 `MindSpider` 模块的文档配置爬虫策略。\n*   如需接入内部私有数据库进行分析，请在 `.env` 中配置 `DATABASE_URL` 并调整 `InsightEngine` 的相关设置。","某新消费品牌市场总监正面临新品上市后的口碑危机，急需在24小时内厘清社交媒体上的负面评价根源，并制定应对策略，以避免品牌形象受损。\n\n### 没有 BettaFish 时\n\n- **数据盲区严重**：人工只能覆盖微博、小红书等头部平台，难以兼顾抖音、快手等短视频评论区及垂直论坛，导致大量真实用户反馈被遗漏，形成严重的“信息茧房”。\n- **分析效率低下**：面对数百万条杂乱评论，团队需花费数天时间进行手动清洗和分类，无法实时响应突发舆情，决策往往滞后于事态发展。\n- **观点主观片面**：依赖个别分析师的经验判断，容易带入个人偏见，缺乏多维度的交叉验证，难以区分是产品质量问题还是恶意竞争抹黑。\n- **非结构化数据难处理**：对于短视频中的语音、画面情绪以及天气、股票等外部关联因素，传统工具无法有效提取和关联分析，导致归因逻辑断裂。\n\n### 使用 BettaFish 后\n\n- **全域实时监控**：BettaFish 的 AI 爬虫集群自动覆盖国内外 30+ 主流社媒，不仅捕获图文，更深度解析短视频内容，确保无死角还原舆情原貌。\n- **智能即时洞察**：通过多 Agent 协作机制，系统在几分钟内完成海量数据的清洗、情感分析与热点聚类，自动生成深度报告，将响应时间从“天”级缩短至“分钟”级。\n- **客观多维辩论**：引入“论坛”辩论机制，不同角色的 Agent 对数据进行交叉验证与思维碰撞，有效破除单一模型局限，精准识别负面舆情的真实成因（如物流延误而非产品缺陷）。\n- **内外数据融合**：支持将内部客服数据与外部舆情无缝集成，结合结构化信息卡片，提供“外部趋势+内部洞察”的综合决策依据，辅助制定精准的公关策略。\n\nBettaFish 通过自动化、多维度的群体智能分析，帮助企业在复杂舆论场中快速去伪存真，将被动应对转化为主动决策，显著提升品牌风险管理能力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002F666ghj_BettaFish_95da6ee3.png","666ghj","BaiFu","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002F666ghj_c351297d.jpg","Do what you love, and love what you do.","BUPT, Shanda","Shanghai, China","hangjiang@bupt.edu.cn",null,"https:\u002F\u002Fgithub.com\u002F666ghj",[86,90,94],{"name":87,"color":88,"percentage":89},"Python","#3572A5",98.4,{"name":91,"color":92,"percentage":93},"Jupyter Notebook","#DA5B0B",1.5,{"name":95,"color":96,"percentage":97},"Dockerfile","#384d54",0.1,40132,7450,"2026-04-03T03:48:12","GPL-2.0",4,"Linux, macOS, Windows","未说明",{"notes":106,"python":104,"dependencies":107},"项目基于纯Python模块化设计，支持Docker部署。核心功能依赖外部LLM API（如OpenAI兼容接口）及安思派开放平台（Anspire Open）提供的联网搜索和网页抓取服务。包含微调的情感分析模型（BERT\u002FGPT-2\u002FQwen），可能需要本地推理环境或配置相应的模型路径。数据库使用SQLAlchemy异步引擎。",[108,109,110,111,112,113,114],"Flask","SQLAlchemy","Pydantic","WeasyPrint","Streamlit","transformers","torch",[13,54,15,26,51],[117,118,119,120,121,122,123,124,125,126],"agent-framework","data-analysis","multi-agent-system","nlp","public-opinion-analysis","python3","sentiment-analysis","llms","deep-research","deep-search",8,"2026-03-27T02:49:30.150509","2026-04-06T05:17:25.005156",[131,136,141,146,150,154],{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},11738,"数据库初始化失败或连接报错如何解决？","常见原因包括 PostgreSQL 凭据不匹配或缺少必要的 API Key 配置。\n1. **检查凭据**：确保数据库用户名、密码等配置与默认值（如 \"bettafish\"）或实际设置一致。\n2. **配置 API Key**：初始化后若报错，需检查是否配置了有效的 REPORT_ENGINE_API_KEY，支持 deepseek、qwen-plus 等提供商，并正确填写 base URL 和 model name。","https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues\u002F561",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},11736,"启动 MindSpider 时提示 \"unrecognized arguments: --date\" 错误怎么办？","该问题通常是由于代码版本不一致或参数解析配置未同步导致的。维护者指出相关修复 PR 已合并，请检查并更新到最新版本。如果问题依旧，可能是子模块未正确同步，请确保拉取了最新的 MediaCrawler 子模块代码，因为 `--date` 参数是在主程序的 parser 中定义的，需保证调用链中的脚本均支持该参数。","https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues\u002F44",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},11737,"如何让 BettaFish 基于自定义数据库表生成分析报告？","BettaFish 默认依赖 MindSpider 爬虫写入的标准表结构（如 bilibili_video, xhs_note 等）。若使用自定义数据，有两种方法：\n1. **复用现有表结构**：将自建数据整理成与 MindSpider\u002Fschema\u002F 中定义的表字段一致（如点赞列命名为 liked_count），InsightEngine 即可无感知查询。\n2. **扩展自定义工具**：若表结构完全不同，需新建数据访问工具（参考 InsightEngine\u002Ftools\u002Fcustom_db_tool.py），并在 Agent 中显式调用，自行编写 SQL 查询逻辑并将结果标准化为 QueryResult 供 LLM 使用。","https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues\u002F132",{"id":147,"question_zh":148,"answer_zh":149,"source_url":135},11739,"爬虫启动时报错 \"Could not find an available JavaScript runtime\" 或浏览器启动失败？","根本原因是环境中缺少 JavaScript 运行时（Node.js）。MediaCrawler 代码在加载时会强制依赖 execjs 编译 JS 文件。\n**解决方法**：\n1. 进入容器环境（如 `docker exec -it \u003C容器名> \u002Fbin\u002Fbash`）。\n2. 安装 Node.js（推荐 16+）：\n   - Debian\u002FUbuntu: `apt update && apt install -y nodejs`\n   - Alpine: `apk add --no-cache nodejs`\n3. 安装完成后重启服务或重新运行爬虫命令。",{"id":151,"question_zh":152,"answer_zh":153,"source_url":135},11740,"小红书 (xhs) 和 Bilibili (bili) 平台爬虫全部失败的原因是什么？","这通常也是由于缺少 Node.js 环境导致的。即使目标平台不是抖音，MediaCrawler 的初始化过程也会加载 DouyinCrawler，从而触发对 execjs 和 Node.js 的依赖。请参照上述方法安装 Node.js 即可解决所有平台的爬虫启动问题。",{"id":155,"question_zh":156,"answer_zh":157,"source_url":135},11741,"CDP 模式启动浏览器失败，提示 \"未找到可用的浏览器\" 怎么办？","错误信息表明系统未检测到 Chrome 或 Edge 浏览器。\n**解决方法**：\n1. 确保容器中已安装 Chrome 或 Edge 浏览器。\n2. 或者在配置文件中设置 `CUSTOM_BROWSER_PATH` 指定浏览器的具体安装路径。\n3. 若无法安装图形界面浏览器，可尝试回退到标准模式（如果支持），但需注意 CDP 模式通常用于更稳定的爬取。",[159,164,169,174,179,184],{"id":160,"version":161,"summary_zh":162,"released_at":163},62217,"v3.0.0","# 预测引擎 MiroFish-v0.1.0 发布🎉\n\n查看我们最新发布的预测引擎：[MiroFish—简洁通用的群体智能引擎，预测万物](https:\u002F\u002Fgithub.com\u002F666ghj\u002FMiroFish)\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Ffba934e7-3d8e-4cf3-b81b-c4538acd3e56\" alt=\"banner\" width=\"500\">\n\u003C\u002Fdiv>\n\n“数据分析三板斧”全线贯通：我们激动地宣布 MiroFish 正式发布！随着最后一块版图补齐，我们构建了**从 BettaFish（数据收集与分析）到 MiroFish（全景预测）的完整链路**。至此，从原始数据到智能决策的闭环已成，让预见未来成为可能！\n\n\u003Cimg width=\"1502\" height=\"990\" alt=\"04fb364a3122e3ec7dfab8929897745a\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fc5a987b2-3ce5-460f-b671-f2f700db1377\" \u002F>","2025-12-23T03:31:38",{"id":165,"version":166,"summary_zh":167,"released_at":168},62218,"v2.1.0","## 变更内容\n* 功能（insight_agent）：Insight Agent 新增了 DeepSearchAgent._cluster_and_sample_results() 方法，该方法对搜索结果进行文本编码，使用 KMeans 聚类并按热度排序采样，然后从每个聚类中选取代表性语义返回，由 @ghmark675 在 https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F350 中实现。\n* 功能（xhs）：集成 xhshow 库，优化签名生成与请求参数，由 @ptghb 在 https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F330 中实现。\n* 功能：以更经济的方式实现相同效果的搜索选择，新增安思派 AI 搜索支持 (#457)，由 @666ghj 在 https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F461 中实现。\n* Shutdown only clean：增加安全关闭系统的功能，由 @HKLHaoBin 在 https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F441 中实现。\n* 通过主分支更新，由 @MaYiding 在 https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F463 中实现。\n\n## 新贡献者\n* @ptghb 在 https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F330 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fcompare\u002Fv2.0.0...v2.1.0","2025-12-09T06:11:06",{"id":170,"version":171,"summary_zh":172,"released_at":173},62219,"v2.0.0","## 版本概述\n\n微舆BettaFish 是一个基于多智能体的舆情分析系统，致力于打破信息茧房并提供权威、深度的舆情洞察。v2.0.0 是 BettaFish 一次里程碑式的大版本，**我们全面重构了报告引擎，增强了弱模型适配与长文稳定性，实现了原子级可控与标准化交付**。修复大量BUG的同时针对性能瓶颈进行了专项优化，**系统运行内存占用已降至 1GB 以内**。\n\n微舆 v2.0.0 在稳定性、可配置性及部署便利性上迈出了重要一步。我们希望此版本能为你带来更高效、更可靠的体验。\n\n## ✨ Report Engine V2\n\n### 标准化生成流水线\n\n现在的 Report Agent 遵循以下七阶段严谨流程，确保不同llm生成的报告的样式、内容统一与可控，提高了导出pdf的美观：\n1. **多源情报聚合**：自动汇总多 Agent 的中间产物与论坛记录，构建全景信息底座。\n2. **智能模板匹配**：内置多套专业舆情分析模板，系统根据内容特征自动择优匹配。\n3. **架构与切片设计**：由 LLM 顶层设计报告标题、目录结构、Hero 模块及整体视觉风格，并选定适配的 HTML 模板。\n4. **章节任务规划**：自动拆解篇章结构，生成细粒度的章节编写任务清单。\n5. **结构化生成与质检**：逐块生成结构化 JSON 内容，并通过配套的 LLM 质检环节，消除格式错误与幻觉风险。\n6. **Document IR 装订**：引入 **中间表示（IR）** 层，将章节 JSON 与元数据（标题、时间、资产等）装订为统一的 Document IR，自动补齐锚点与目录信息。\n7. **高保真渲染**：基于 IR 渲染引擎，输出交互式 HTML 报告及矢量 PDF。\n\n> **Report Engine V2报告样例**：[[养老服务发展趋势.html](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fblob\u002Fmain\u002Fstatic\u002Fv2_report_example\u002Ffinal_report_%E5%85%BB%E8%80%81%E6%9C%8D%E5%8A%A1%E5%8F%91%E5%B1%95%E8%B6%8B%E5%8A%BF.html)] [[养老服务发展趋势.pdf](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fblob\u002Fmain\u002Fstatic\u002Fv2_report_example\u002Ffinal_report_%E5%85%BB%E8%80%81%E6%9C%8D%E5%8A%A1%E5%8F%91%E5%B1%95%E8%B6%8B%E5%8A%BF.pdf)]\n> **Report Engine V2组件全览**：[Full Block Demo](https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fblob\u002Fmain\u002Fstatic\u002Fv2_report_example\u002Freport_all_blocks_demo\u002Freport_html_all_blocks_demo.html)\n\n### 渲染引擎与技术改进\n\n* **IR → HTML\u002FPDF 全链路渲染**：新增 `html_renderer` 与 `pdf_renderer`，通过解耦内容与表现层，支持纯命令行模式（`report_engine_only.py`）生成报告。\n* **离线依赖集成**：内置思源宋体子集、MathJax、Chart.js 及 html2canvas，无需依赖外部 CDN，确保内网环境下的完美渲染。\n* **PDF 导出增强**：新增 `\u002Fapi\u002Freport\u002Fexport\u002Fpdf` 接口。导出前自动进行 Pango 依赖环境自检，支持一键生成高质量矢量 PDF。\n* **安全与稳定性**：\n    * **Chart.js 安全校验**：引入 `chart_validator` 结合 LLM 自动修复链路，有效防止非法配置导致的前端崩溃或 XSS 注入风险。\n    * **数据清洗回归测试**：增加 `test_report_engine_sanitization` 测试套件，覆盖章节表格的容错修复，保障渲染端健壮性。\n* **可视化日志控制台**：前端采用双缓冲虚拟列表 + SSE 历史补偿机制，后端提供日志管理接口，大幅提升长任务监控体验。\n\n## ⚡ 性能优化与系统改进\n\n### 性能与架构\n* **内存占用大幅优化**：通过对数据流转与对象生命周期的优化，成功将系统运行时的内存峰值控制在 **1GB 以内**，显著降低硬件要求。\n* **服务健康检查**：重构健康检查逻辑，解决 TCP 连接偶发拒绝问题，提升服务启动与自愈的可靠性。\n\n### DevOps 与工程化\n* **CI 工作流升级**：新增磁盘空间清理步骤，确保构建环境的稳定性。\n* **Docker 适配**：更新 Dockerfile 以适配新的依赖栈与构建流程。\n* **配置最佳实践**：更新 `.env.example`，提供更合理的默认配置与前端参数推荐，降低上手难度。\n\n### 开发者体验 (DX)\n* **日志系统重构**：优化日志等级策略与输出逻辑，支持 DEBUG 级别以上的精细化过滤；改进前端日志查询模式，便于快速定位问题。\n* **进度反馈优化**：改善报告引擎的进度条交互，为长时间运行的任务提供更友好的状态反馈。\n\n## ❤️ New Contributors\n* @Liu-2806 made their first contribution in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F312\n* @JasonDylan made their first contribution in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F322\n* @zzzpppy made their first contribution in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F355\n\n感谢每一位提交 Issue 与提出改进建议的用户，你们的反馈帮助 BettaFish 更加完善。\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fcompare\u002Fv1.2.1...v2.0.0","2025-11-28T02:58:51",{"id":175,"version":176,"summary_zh":177,"released_at":178},62220,"v1.2.0","### 版本概述\n\nBettaFish 是一个基于多智能体的舆情分析系统，致力于打破信息茧房并提供权威、深度的舆情洞察。自 v1.0.0 发布以来，项目不断迭代完善，v1.1.0 解决了大量影响稳定性的 Bug，并增加了若干改进。在新版本 v1.2.0 中，我们回顾了从 v1.0.0 以来的全部更新，对现有功能进行重构优化，新增了重要的配置功能，进一步改进了部署体验，并修复了多个关键问题。下面为 v1.2.0 的主要更新内容。\n\n微舆 v1.2.0 在稳定性、可配置性及部署便利性上迈出了重要一步。我们希望此版本能为你带来更高效、更可靠的体验。\n\n查看常见问题解答：https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fissues\u002F185\n\n### 主要特性与改进\n\n- 稳定性提升：修复了若干Agent问题，修复了LLM易超时、报错问题。\n- 动态主机\u002F端口与外部服务配置：v1.1.0 引入 .env 动态主机地址配置，允许用户自定义主机域名和端口用于网络或镜像访问。在 v1.2.0 中，该机制进一步完善，默认提供基于 pydantic 的配置验证系统，提升部署稳定性。\n- LLM 接口管理：新增 LLM 接口独立配置功能，支持多模型、多接口动态切换，解决接口中英文调用冲突问题。通过统一配置可管理 Base URL、Token、模型参数，方便不同模型与服务的无缝接入。\n- 界面优化调整：新增前端动态渲染逻辑，支持在 Web UI 中修改系统参数与分析选项。\n\n### 部署与运行改进\n\n- Docker 支持增强：新版镜像已全面支持自动化部署。自动创建数据库并支持 .env 参数传入。优化 Dockerfile 构建参数，支持 ARM 架构（Apple M 系列）平台运行。修复 docker-compose.yml 文件路径问题，避免配置遗漏。\n\n### Bug 修复\n\n- 更新 MediaCrawler 与 ForumEngine 模块，解决通信中断和编码异常。\n- 简化分析数据结构，修复 fetch_news 无法正常抓取新闻的问题，增加接口调度配置项。\n- 重构 “论坛引擎” Agent 内部结构，提升消息抓取与语义提取能力。\n- 完善 requirements.txt，修复未安装依赖模块（如 torch、transformers）的问题。\n- 修复 SQL 执行异常、MySQL 查询缺少 source_keyword 导致无法写入的问题。\n- 修复日志中时间戳缺失与路径错误，解决 .gitignore 遗漏问题。\n- 修复论坛爬虫线程异常终止问题，修复 Agent 提示式退出导致的 Bug。\n- 修复中英文排版、符号错误、异常捕获逻辑错误等。\n\n### ❤️ 特别感谢\n\n感谢所有开发者与社区成员的贡献，尤其感谢：\n@DoiiarX, @ghmark675, @NTFago 等贡献者的修复与功能改进。\n感谢每一位提交 Issue 与提出改进建议的用户，你们的反馈帮助 BettaFish 更加完善。","2025-11-08T04:44:32",{"id":180,"version":181,"summary_zh":182,"released_at":183},62221,"v1.1.0","新版本修复了许多已知的Bug，确保分析系统能够稳定运行，并且部署更加便捷。下一个小版本将主要聚焦于AI爬虫MindSpider的Bug修复。\n\n## 变更内容\n* 修复：通过使用动态主机地址支持局域网内后端服务访问 by @Mingxiangyu in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F45\n* 改为使用uv安装，速度更快，并修复了torch和transformers未安装的问题 by @DoiiarX in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F48\n* 修复#61：修复fetch_news无法正常获取的问题 by @DoiiarX in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F62\n* 杂项：停止跟踪config.py by @ghmark675 in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F58\n* 紧急修复（数据库）：修复`source_keyword`不在bilibili_video表中的问题 by @ghmark675 in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F63\n* 紧急修复（超时）：将LLM调用超时时间增加至1800秒 by @ghmark675 in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F72\n* 通过在LLM提示中加入当前真实世界时间，修复代理的时间感知错误。by @lintsinghua in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F75\n* 修复：修正拼写错误并移除重复依赖 by @ghmark675 in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F80\n* 杂项\u002F忽略演示文件 by @ghmark675 in https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F85\n\n## 新贡献者\n* @Mingxiangyu 在https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F45 中做出了首次贡献\n* @DoiiarX 在https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fpull\u002F48 中做出了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002F666ghj\u002FBettaFish\u002Fcompare\u002Fv1.0.0...v1.1.0","2025-11-04T05:37:14",{"id":185,"version":186,"summary_zh":187,"released_at":188},62222,"v1.0.0","## 🌟 项目简介\n\n**微舆** 是一个从0实现的创新型多智能体舆情分析系统，不止微博，全平台简洁通用。本系统采用先进的AI技术，提供全域舆情监控、多模态内容分析和智能报告生成功能。\n\n## ✨ 核心特性\n\n### 🤖 多智能体协作架构\n- **Insight Agent**: 私有数据库挖掘，深度分析AI代理\n- **Media Agent**: 多模态内容分析，具备强大多模态能力的AI代理  \n- **Query Agent**: 精准信息搜索，具备国内外网页搜索能力的AI代理\n- **Report Agent**: 智能报告生成，内置模板的多轮报告生成AI代理\n- **Forum Engine**: Agent\"论坛\"协作机制，实现链式思维碰撞与辩论\n\n### 🚀 六大核心优势\n\n1. **AI驱动的全域监控**\n   - AI爬虫集群7x24小时不间断作业\n   - 全面覆盖微博、小红书、抖音、快手等10+国内外关键社媒\n   - 实时捕获热点内容，深度挖掘用户评论\n\n2. **超越LLM的复合分析引擎**\n   - 5类专业Agent协同工作\n   - 融合微调模型、统计模型等中间件\n   - 多模型协同确保分析结果的深度、准度与多维视角\n\n3. **强大的多模态能力**\n   - 突破图文限制，深度解析短视频内容\n   - 精准提取现代搜索引擎中的结构化多模态信息卡片\n   - 全面掌握舆情动态\n\n4. **Agent\"论坛\"协作机制**\n   - 为不同Agent赋予独特的工具集与思维模式\n   - 通过\"论坛\"机制进行链式思维碰撞与辩论\n   - 避免单一模型思维局限，催生集体智能\n\n5. **公私域数据无缝融合**\n   - 分析公开舆情数据\n   - 提供高安全性接口支持内部业务数据库集成\n   - 打通数据壁垒，提供\"外部趋势+内部洞察\"分析能力\n\n6. **轻量化与高扩展性框架**\n   - 基于纯Python模块化设计\n   - 轻量化、一键式部署\n   - 代码结构清晰，支持自定义模型与业务逻辑集成\n\n## 🛠️ 技术栈\n\n### 核心框架\n- **Web框架**: Flask 2.3.3 + Socket.IO\n- **UI框架**: Streamlit 1.28.1\n- **异步处理**: httpx, aiohttp, aiofiles\n- **数据库**: MySQL + Redis支持\n\n### AI\u002FML能力\n- **LLM集成**: 支持DeepSeek、OpenAI、Kimi、Gemini等多种模型\n- **搜索引擎**: Tavily、博查等搜索API集成\n- **情感分析**: 多种模型支持（BERT微调、多语言、Qwen等）。\n\n### 爬虫系统\n- **浏览器自动化**: Playwright 1.45.0\n- **数据处理**: pandas, numpy, jieba\n- **图像处理**: Pillow, OpenCV\n\n## 📦 主要模块\n\n### MindSpider 爬虫系统\n- **话题提取模块**: 自动识别热点话题\n- **深度舆情爬取**: 多平台数据采集\n- **数据库管理**: 完整的数据存储方案\n\n### 情感分析模型集合\n- **WeiboSentiment_Finetuned**: 微调BERT\u002FGPT-2模型\n- **WeiboMultilingualSentiment**: 多语言情感分析（推荐）\n- **WeiboSentiment_SmallQwen**: 小参数Qwen3微调\n- **WeiboSentiment_MachineLearning**: 传统机器学习方法\n\n### 单独Agent应用\n- 支持独立运行各个Agent\n- 提供Streamlit界面进行单独测试和使用\n\n## 🎯 使用场景\n\n- **社会公共热点事件分析**: 快速响应突发事件舆情\n- **商业品牌舆情监测**: 实时监控品牌声誉变化\n- **学术研究**: 提供数据驱动的舆情分析工具\n- **企业决策支持**: 基于舆情数据的商业洞察\n\n## 🚀 快速开始\n\n### 环境要求\n- Python 3.9+\n- Conda环境\n- MySQL数据库（可选云数据库服务）\n- 2GB以上内存\n\n### 一键启动\n```bash\n# 创建conda环境\nconda create -n pytorch_python11 python=3.11\nconda activate pytorch_python11\n\n# 安装依赖\npip install -r requirements.txt\n\n# 安装浏览器驱动\nplaywright install chromium\n\n# 启动系统\npython app.py\n```\n\n访问 http:\u002F\u002Flocalhost:5000 即可使用完整系统\n\n## 🔧 配置说明\n\n### API密钥配置\n支持多种AI服务提供商：\n- DeepSeek API\n- Tavily搜索API  \n- Kimi API\n- Gemini API\n- 博查搜索API\n- 硅基流动API\n\n### 数据库选项\n- **本地MySQL**: 完全自主控制\n- **云数据库服务**: 包含日均10万+真实舆情数据（推广期免费）\n\n## 📊 示例报告\n\n系统以\"武汉大学舆情\"为例生成的研究报告展示了强大的分析能力，包含：\n- 多维度舆情监测\n- 深度内容分析\n- 可视化数据展示\n- 专业分析结论\n\n## 🔮 未来规划\n\n当前系统完成了\"输入要求→详细分析\"的核心功能，下一步将开发：\n- **舆情预测功能**: 基于时序模型、图神经网络的预测能力\n- **更多平台支持**: 扩展更多社交媒体平台\n- **高级分析模型**: 多模态融合等预测模型技术\n\n## 🤝 社区支持\n\n### 获取帮助\n- **项目主页**: [GitHub仓库](https:\u002F\u002Fgithub.com\u002F666ghj\u002FWeibo_PublicOpinion_AnalysisSystem)\n- **问题反馈**: [Issues页面](https:\u002F\u002Fgithub.com\u002F666ghj\u002FWeibo_PublicOpinion_AnalysisSystem\u002Fissues)\n- **功能建议**: [Discussions页面](https:\u002F\u002Fgithub.com\u002F666ghj\u002FWeibo_PublicOpinion_AnalysisSystem\u002Fdiscussions)\n\n### 商务合作\n- 企业定制开发\n- 大数据服务\n- 学术合作\n- 技术培训\n\n### 云服务申请\n**免费云数据库服务申请**: 发送邮件至 670939375@qq.com","2025-09-01T16:49:55"]