【Code With SOLO】每天看一眼比赛进行到什么程度了 · SOLO挑战赛作品mapping👀

【Code With SOLO】用 SOLO 从零搭建一套 TRAE 论坛智能监控系统,自动抓取·趋势分析·可视化仪表盘一站搞定


1. 摘要

我用 TRAE SOLO 从零搭建了一套 TRAE 论坛智能监控系统,包含自动爬虫定期抓取论坛新帖、本地+LLM 混合分析引擎、以及两个 Web 可视化面板(Monitoring Cockpit 监控驾驶舱 + Trend Research Lab 趋势研究实验室)。系统每小时自动运行,已累计监控 528+ 主题,生成日报/周报,帮助快速掌握社区动态和趋势变化。整个过程从需求拆解到完整上线,SOLO 全程参与编码。


2. 背景

我是报名了活动的同学(平时的话我是做策略的),日常需要关注 TRAE 社区论坛(forum.trae.cn)的动态——谁发了新帖、哪些话题在升温、社区讨论趋势如何。原本这些信息全靠手动刷帖、截图、整理,耗时且容易遗漏。我希望用 SOLO 搭建一套自动化工具,7×24 小时监控论坛,自动分析趋势,用可视化仪表盘一目了然地展示结果


3. 实践过程

第一步:需求拆解与技术选型

我没有直接让 SOLO “做一个监控系统”,而是把任务拆成了清晰的子模块:

模块 职责
爬虫模块 对接 Discourse JSON API,抓取论坛分类页的主题和帖子
数据库模块 SQLite 持久化存储,支持增量更新和指标快照
分析引擎 本地统计(jieba 分词 + 热度评分)+ 可选 LLM 增强
可视化仪表盘 Flask + Chart.js,两个页面:监控驾驶舱 + 趋势研究
报告生成 自动输出 HTML + Markdown 格式的日报/周报
定时调度 APScheduler 定时执行抓取和分析

:light_bulb: 经验:把复杂任务拆成独立模块,每个模块单独给 SOLO 编码,效果远好于一次性丢一个大需求。

第二步:让 SOLO 逐步实现各模块

1)Discourse API 客户端(discourse.py)

告诉 SOLO 目标论坛是 Discourse 架构,它自动选择了 JSON API 方案(而非 HTML 解析),并实现了分页遍历、自动去重、指数退避重试等机制。

2)数据库层(db.py)

这是最复杂的模块(800+ 行)。我让 SOLO 设计了 5 张表:

  • topics — 主题元数据
  • posts — 帖子内容
  • topic_metrics_snapshots — 每次抓取的指标快照(关键设计!)
  • analyses — 分析结果
  • crawl_runs — 运行记录

:light_bulb: 亮点:快照表是 SOLO 的建议,它让"趋势分析"成为可能——没有快照就无法计算增长曲线。

3)增量抓取策略(pipeline.py)

核心编排器,SOLO 帮我实现了智能增量策略:

  • 通过 content_hash 判断内容是否变化
  • 只有 posts_countreply_count 增长时才拉取详情
  • 单个主题失败不影响整体运行(partial_success

4)混合分析引擎(analysis.py + llm.py)

SOLO 设计了"本地优先、LLM 增强"的架构:

  • 本地分析:jieba 中文分词提取关键词 + 自定义热度评分算法(views×0.4 + likes×4 + replies×5 + ...
  • LLM 增强(可选):调用 OpenAI 兼容 API 生成摘要、洞察,失败时静默降级

5)可视化仪表盘(dashboard.py + templates/)

两个精心设计的页面:

:magnifying_glass_tilted_left: Monitoring Cockpit(监控驾驶舱)

  • 6 个统计卡片(24h 新帖、7d 新帖、平均浏览/回复等)
  • 14 天发帖趋势折线图
  • 标签占比环形图 + 标签云
  • 发布时间热力图(7天 × 24小时矩阵)
  • 互动分布气泡图(浏览 vs 回复,气泡大小 = 点赞)
  • 关键词 Top12、作者活跃度 Top10
  • 最近分析摘要、热门主题榜

:test_tube: Trend Research Lab(趋势研究实验室)

  • 关键词升温曲线:对比近 3 天 vs 前 3 天的词频变化,发现加速出现的词
  • 标签迁移分析:追踪标签占比变化,发现讨论重心切换
  • 爆帖成长曲线:基于快照时间序列,展示热门帖的成长轨迹

6)报告生成 + 定时调度

自动生成日报/周报(HTML + Markdown 双格式),通过 APScheduler 每 60 分钟自动执行一次完整流程。

第三步:踩坑与解决

解决方案
Discourse API 的作者信息分散在 postersusers 两个数组中 SOLO 自动分析了 API 结构,实现了正确的关联逻辑
大量主题重复分析浪费资源 引入 source_hash 机制,内容不变则跳过分析
LLM API 偶尔超时导致整个流程中断 设计了优雅降级:LLM 失败自动回退到本地分析结果
SQLite 并发写入冲突 启用 WAL 模式,提升并发性能

关键 Prompt 示例

“帮我实现一个 Discourse 论坛的 API 客户端,目标站点是 forum.trae.cn,需要支持分页抓取分类页主题列表、获取单个主题详情(含帖子流),并实现指数退避重试机制。”

“设计一个热度评分算法,输入为 views、likes、replies、posts_count,要求回复权重最高,浏览量权重最低但有对数平滑,避免纯浏览量主导排名。”

“基于已有的快照数据,实现三条趋势分析线索:关键词升温检测(时间窗口对比)、标签迁移分析(占比变化)、爆帖成长曲线(基于快照序列)。前端用 Chart.js 渲染。”


4. 成果展示

系统架构

[Discourse API] → [爬虫模块] → [SQLite 数据库]
                                    ↓
                                [分析引擎]
                             (本地统计 + LLM)
                                    ↓
                    ┌───────────────┼───────────────┐
                    ↓               ↓               ↓
               [监控驾驶舱]     [趋势研究实验室]    [日报/周报]

运行数据(截至当前)

  • 累计监控:528+ 主题,158+ 帖子详情
  • 抓取次数:4 次完整运行
  • 最高热度帖:2657 分(挑战赛公告帖,3981 浏览)
  • 最活跃作者:10 帖
  • Top 关键词:生成(43)、AI(37)、开发(32)、代码(31)
  • 标签分布:Code-with-SOLO(123)、More-than-Coding(61)

技术栈

Python 3.11+ / SQLite (WAL) / Flask / Chart.js / jieba / APScheduler / BeautifulSoup4 / OpenAI API (可选)

CLI 工具链

solo-monitor init-db           # 初始化数据库
solo-monitor crawl-once        # 执行一次抓取+分析+报告
solo-monitor serve-dashboard   # 启动 Web 仪表盘
solo-monitor run-scheduler     # 启动定时调度(默认60分钟)

5. 效果与总结

提效对比

维度 之前 现在
论坛动态追踪 手动刷帖,每天 30-60 分钟 自动监控,打开仪表盘 2 分钟看完
趋势分析 凭感觉,无法量化 关键词升温、标签迁移、爆帖曲线,数据驱动
报告整理 每周 2-3 小时 自动生成日报/周报,0 分钟人工成本

SOLO 在流程中的角色

SOLO 承担了从架构设计到编码实现的全部工作

  1. 需求拆解:帮我把模糊的"做一个监控系统"拆成 6 个清晰模块
  2. 技术选型:推荐 SQLite + Flask + Chart.js 的轻量方案
  3. 编码实现:每个模块独立编码,总计 2000+ 行 Python 代码
  4. 设计决策:快照表、混合分析架构、增量策略等关键设计都来自 SOLO 的建议
  5. 问题排查:Discourse API 结构、并发冲突等坑都由 SOLO 帮忙解决

可复用的方法

  1. 模块化拆解:复杂项目先拆模块,逐个让 SOLO 实现,效果远好于一次性大需求
  2. 本地优先 + 可选增强:核心功能不依赖外部服务(LLM),保证系统稳定性
  3. 快照驱动分析:记录每次抓取的指标快照,让时间序列分析成为可能
  4. 优雅降级设计:任何环节失败都不影响整体运行

一句话总结

原本需要每天花近 1 小时手动追踪的论坛动态,现在完全自动化——打开仪表盘,社区趋势一目了然。SOLO 不只是写代码,更是帮我完成了从"想法"到"可用产品"的全流程。

好卷啊,已经看到三个这样的论坛数据分析了,你目前做的最好,给票了 :saluting_face:

2 个赞