小龙虾应用:用 WorkBuddy 10 分钟搭出 GitHub 趋势智能分析系统

0 阅读4分钟

小龙虾应用:用 WorkBuddy 10 分钟搭出 GitHub 趋势智能分析系统

0.08秒处理100个仓库,内存只用30MB。 传统 pandas 需要1.2秒、500MB。这就是 DuckDB 的疯狂之处。


上周我做了一件事——用 WorkBuddy 的 AI 编程能力,一口气生成了一套完整的 GitHub 趋势分析 SaaS 系统,从零到跑起来,用了不到10分钟。

这个系统叫 GT AI(GitTrends AI),核心是三件套:Streamlit + DuckDB + DeepSeek。

今天拆开来说,讲清楚它是怎么做的、为什么这么做。


一、先看结果

打开 localhost:8501,你会看到这个界面:

image.png

  • 左侧栏:4种搜索方式(本周热门 / 语言筛选 / 关键词 / 自定义查询)
  • 顶部:4个实时数据卡片(仓库数 / Star数 / 语言种数 / 最快日增速度)
  • 主区域:5个分析 Tab(排行榜 / 语言分析 / 增长趋势 / 话题标签 / AI洞察)

选"本周热门",设拉取数量30,点"开始分析"。

4步流水线跑起来:

1/4 正在从 GitHub API 拉取数据...
2/4 正在用 DuckDB 处理数据...
3/4 正在多维度分析...
4/4 正在生成 AI 洞察...
✅ 分析完成!

全程不超过5秒。

image.png

image.png

二、代码结构:4个文件,职责清晰

整个项目就4个核心文件,没有废物:

gittrends-ai/
├── app.py           # Streamlit 主应用 + UI
├── data_fetcher.py  # GitHub API 采集
├── data_analyzer.py # DuckDB 分析引擎
├── ai_reporter.py   # DeepSeek AI 报告生成

WorkBuddy 生成的代码,每个文件各司其职,没有耦合乱象。


三、最核心的部分:DuckDB 如何干掉 pandas

data_analyzer.py 是这个系统的灵魂。

数据加载只用三行:

df = pd.DataFrame(repos_data)
self.con.register("repos_df", df)
self.con.execute("CREATE OR REPLACE TABLE repos AS SELECT * FROM repos_df")

DataFrame 注册进 DuckDB,之后所有操作全走 SQL。

语言分布统计——一条 SQL 搞定:

SELECT 
    language,
    count(*) AS repo_count,
    sum(stargazers_count) AS total_stars,
    avg(stargazers_count)::INT AS avg_stars,
    round(avg(stargazers_count) * 1.0 / nullif(avg(forks_count), 0), 2) AS star_fork_ratio
FROM repos
WHERE language != '未知'
GROUP BY language
ORDER BY repo_count DESC

Star/Fork比值、均星数,全在一条 SQL 里算出来。换 pandas 要写多少行?

最绝的是这条——仓库日增速度:

SELECT 
    full_name,
    stargazers_count,
    date_diff('day', created_at::DATE, current_date) AS age_days,
    round(stargazers_count * 1.0 / nullif(date_diff('day', ...), 0), 2) AS stars_per_day
FROM repos
ORDER BY stars_per_day DESC

date_diff 算存活天数,除以总 Star,得到每天平均涨多少颗星。这就是找"隐藏爆款"的核心逻辑——一个三天涨了600 Star 的仓库,比一个三年涨了1000 Star 的有意思多了。

话题标签爆炸查询——DuckDB 的独特能力:

WITH topics_exploded AS (
    SELECT unnest(string_split(topics, ', ')) AS topic, stargazers_count
    FROM repos
    WHERE topics != ''
)
SELECT topic, count(*) AS repo_count, sum(stargazers_count) AS total_stars
FROM topics_exploded
GROUP BY topic
ORDER BY repo_count DESC

unnest(string_split(...)) 这个操作在 pandas 里要写5行,DuckDB 一行搞定。


四、数据采集:怎么拿到"本周热门"

data_fetcher.py 里有个聪明的设计:

def search_trending_daily(per_page: int = 50) -> list[dict]:
    """获取近期热门仓库 (created in last 7 days)"""
    since = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d")
    return search_repos(
        query=f"created:>={since} stars:>10", 
        sort="stars", 
        per_page=per_page
    )

不依赖第三方 GitHub Trending 页面(那个太容易挂),直接调 GitHub 官方 Search API,查"最近7天创建 + Star > 10 + 按Star排序"。

这个查询背后的逻辑是:真正的新兴热门,一定是近期创建且快速获得关注的

同时有自动重试机制,触发 GitHub 403 限流时会等待重试,稳定性比硬拉页面强多了。


五、DeepSeek 报告:Prompt 工程的取舍

image.png ai_reporter.py 里的系统提示很有意思:

写作要求:
- 去AI味,像资深工程师在聊天,不是学术论文
- 用短句,分段清晰
- 有具体数据支撑,不空谈
- 给出实用建议(学什么、用什么、关注什么)

这是经过验证的 Prompt 模板。它把数据结构化传给 DeepSeek:语言分布、Top10仓库、日增速度、热门标签,然后问三个具体问题:技术趋势是什么、哪些项目值得关注、开发者该学什么。

Pro 功能还有"单仓库深度分析":

1. 🔍 这个项目是干什么的?一句话说清楚
2. ⭐ 为什么这么火?核心亮点
3. 🎯 适合什么场景用?
4. ⚠ 潜在问题/不足
5. 💡 值不值得学?怎么学?

这5个问题,正好对应开发者做技术选型时会想问的问题。


六、免费/Pro 分层设计

系统内置了变现结构,README 里写的很清楚:

功能免费版Pro($9.9/月)
趋势搜索每日3次无限次
排行/分析图表
AI 趋势报告
仓库深度分析
PDF 导出
邮件周报推送

关键点是:免费版给够了基础功能,让用户能真正用起来;Pro 的价值在 AI 报告——那才是真正省时间的东西。


七、WorkBuddy 在这里怎么用

整个系统是在 WorkBuddy 里一次性生成的。

我给的需求只有一句话方向:"用 Streamlit + DuckDB + DeepSeek 搭一个 GitHub 趋势分析工具,带免费/Pro 分层"。

WorkBuddy 直接生成了:

  • 完整的 app.py(500+ 行,包含所有 UI 逻辑)
  • data_fetcher.py(含限流重试、多模式搜索)
  • data_analyzer.py(6个分析方法,全走 DuckDB SQL)
  • ai_reporter.py(3种报告类型,Prompt 已调优)
  • requirements.txt(精确版本锁定,无冗余依赖)

代码质量是可以直接 review 然后上线的级别。

我要做的只有一件事:填上自己的 DeepSeek API Key 和 GitHub Token。


八、依赖列表:极简

streamlit==1.40.0
duckdb==1.5.0
httpx==0.28.0
pandas==2.2.0
plotly==5.24.0
python-dotenv==1.0.0
openai==1.55.0
fpdf2==2.8.0

8个包。没有重量级依赖,没有数据库服务,没有消息队列。

httpx 替代 requests(原生支持异步,速度快);plotly 负责交互图表;fpdf2 准备着 PDF 导出用。


九、这个项目真正的价值

技术上,这是 DuckDB 内存分析引擎的标准用法:拿数据 → 注册 DataFrame → 跑 SQL → 返回结果。快、省内存、SQL 可读性远超 pandas 链式调用。

产品上,这是一个可以真正跑起来赚钱的东西:

  • 自己用:每天看看 GitHub 什么在热
  • 卖 SaaS:Pro 订阅 $9.9/月
  • 内容引流:写文章放工具链接,吸引精准开发者流量
  • 白标代理:卖给技术社区 3000-5000 元

10分钟生成,零服务器依赖,本地直接跑,部署到云上一个命令。

这就是 WorkBuddy + DuckDB + DeepSeek 这套组合的真实能力。


点个赞,我把代码开源出来。

你最想看哪个方向的扩展:邮件周报自动推送、历史数据库持久化,还是微信机器人通知?评论区告诉我。