news 2026/6/13 3:17:57

【GitHub】last30days-skill 深度技术解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【GitHub】last30days-skill 深度技术解析

核心金句:“Google aggregates editors./last30dayssearches people.” —— 这句话道出了整个项目的设计哲学。


引言

想象一个场景:你想了解「Cursor IDE」最近一个月的社区口碑,你会怎么做?

打开 Reddit 搜、去 X 上翻热门 thread、去 YouTube 看测评、去 Hacker News 翻讨论、去 GitHub 看 issue……每个平台各查一遍,最后还得自己消化整合。这一套流程下来,半天就过去了。

last30days-skill要做的事情就是:你只需输入/last30days Cursor IDE,剩下的一切由 Agent 自动完成

这个项目在 GitHub 上收获了超过39,000 Stars(截至 2026 年 6 月),长期占据 GitHub Trending 榜首。本篇文章将从架构设计、数据引擎、评分算法、v3 核心升级等维度,对它进行一次全景式的技术拆解。


一、先搞清楚它是什么:不是一个独立工具,而是一个 Agent Skill

这是理解 last30days-skill 最重要的一点。

它不是一个 CLI 工具,不是一个 SaaS 产品,不是一个传统的搜索引擎。它是一个Agent Skill——遵循agentskills.io规范的行为扩展包。

具体来说:

用户输入: /last30days Cursor IDE

宿主 Agent
(Claude Code / Codex / Cursor / Gemini CLI...)

加载 skills/last30days/SKILL.md
获取行为规范

按规范调度底层脚本
(Python / Node.js)

并行查询 13 个平台

评分归一化

双 Judge 评审

输出结构化简报

它本身不执行搜索——它注入一份行为规范给宿主 Agent,Agent 按规范调度 Python/Node.js 脚本来完成所有操作。这本质上是一种声明式编程:Skill 文件描述"应该做什么",Agent 负责"怎么执行"。

跨平台的 Skill 规范生态

宿主平台安装方式
Claude Code/plugin marketplace add mvanhorn/last30days-skill
Codex / Cursor / Gemini CLI / Copilot 等 50+npx skills add mvanhorn/last30days-skill -g
claude.ai Web下载.skill文件 → Settings → Capabilities 上传
OpenClawclawhub install last30days-official
开发者手动安装git clone+ 软链到~/.claude/skills/last30days

这种设计带来一个巨大的工程优势:一次编写,50+ harness 复用。Skill 作者不需要关心不同 Agent 框架的 API 差异——宿主 Agent 负责适配。


二、四层架构:整个系统的工程设计

深入源码后,我将 last30days-skill 的架构归纳为四个层次:

第一层:规范层(Specification Layer)

文件入口skills/last30days/SKILL.md(README 明确声明此文件是 “source of truth”)

这是一份声明式的行为规范文档,定义了:

  • /last30days <topic>命令的完整行为
  • 数据源的调用顺序和并行策略
  • 评分逻辑和输出格式
  • 每个阶段的目标和约束

构建脚本skills/last30days/scripts/build-skill.sh将其打包为标准的.skill文件。

第二层:消歧层(Pre-research Engine)

这是v3 版本最关键的架构升级,由贡献者@j-sperling实现。

v2 的痛点:搜索 “OpenClaw” 可能命中名字相似的无关联项目;搜索 “Paperclip” 可能返回 1990 年代电影而非目标仓库。

v3 的解决方案:在触发任何平台搜索之前,先运行一个 Python pre-research brain 做实体消歧:

输入: "OpenClaw" ↓ Pre-research Engine (Python) ↓ 解析输出: - X handle: @steipete (Peter Steinberger) - GitHub: openclaw/openclaw 仓库 - Subreddit: r/openclaw, r/ClaudeCode - YouTube channel 正确链接 - TikTok hashtag 正确拼写 ↓ 带着解析后的实体 ← 才发 API 请求

这解决了跨平台的同指异名问题(Entity Resolution),是保证搜索质量的第一道关口。

第三层:归一化层(Engagement Scoring)

这是整个系统最精巧的设计。

核心挑战:如何将 “Reddit 1,500 upvote” 与 “TikTok 360 万播放量” 放在同一维度下比较?

项目采用的设计哲学是“按人投票的信号强度归一化”——每一种信号都代表一个或多个人用行为投票:

数据源归一化信号成本
Redditupvote 排序 + top comments,公开 JSON API$0
Hacker Newspoints / comments$0
Polymarket% 赔率(非美元成交额)$0
GitHubstars / PR velocity / release notes$0
X / Twitterlike 排序的 thread用户自有浏览器 cookie,免费
YouTube全字幕提取,筛出 5 句 quote 级别关键句yt-dlp 免费
TikTok / Instagram / Threadsengagement 排序 + 字幕ScrapeCreators API,100 次免费
BlueskyAT Protocol postsApp password 免费
Perplexity Sonar带 citation 的 grounding web searchOpenRouter PAYG
Web 搜索编辑型内容(“one signal of many”)Brave Search 2000 次/月免费
小红书(RED)社区贡献接入视上游 key
Truth Social社区贡献接入视上游 key
DiggX 上 1,000 个高信噪比 AI 账号 leaderboard视上游

关键设计约束

  1. Per-author cap = 3:防止任何单一大 V 的声音主导结果
  2. Polymarket 显示 % 赔率而非成交量——设计理由是"$66K 成交量"对非交易者无意义,"74% 停火可能"才有信号
  3. EXCLUDE_SOURCES=tiktok,instagram,threads:付费源可按查询粒度关闭,避免意外账单

第四层:融合层(Cross-source Cluster Merging + Judge Agent)

v2 的痛点:同一故事在 Reddit + X + YouTube 上报成 3 条独立结果。

v3 的解决方案:基于实体的重叠检测(Entity-based Overlap Detection),将同一事件的跨平台报道合并为 1 个 cluster。

一个真实的输出示例:

/last30days "Iran vs USA"输出:

“Day 38 of the war. Trump’s Tuesday deadline for Iran to reopen the Strait of Hormuz. Two US warplanes downed. Oil at $126/barrel… Polymarket: ceasefire by Dec 31 at74%.27 X posts, 10 YouTube videos, 20 prediction markets—— folded into one narrative.”

这正是它与"搜 13 个平台然后粘贴 13 个结果"的本质区别。

最后,由双 Judge Agent 进行评审:

  • Judge 1:相关性 / 事实性打分
  • Judge 2:幽默分(Best Takes)—— 高赞金句会被嵌入最终简报

三、v3 杀手级功能一览

功能命令示例技术实现要点
GitHub 人物模式/last30days Peter Steinberger --github-user=steipete切到 author-scoped 查询,展示"他/她最近在 ship 什么"
自动竞品对比/last30days OpenAI --competitors推理模型先 WebSearch 找 2 个竞品(Anthropic、xAI),然后并行跑 3 路 pipeline
Best Takes默认启用第二个 judge 给每条结果打"幽默分",高赞金句嵌入简报
ELI5 模式/last30days Nano Banana Pro prompting eli5 on同一份数据用大白话重写
可分享 HTML 简报/last30days OpenClaw --emit=html输出自包含 dark-mode HTML 文件,零 JS 离线可看,可拖入 Slack/Notion

四、完整数据流:一次查询的全生命周期

用户输入: /last30days <topic> │ ▼ ┌──────────────────────────────────┐ │ Phase 1: Pre-research Engine │ ← Python brain (v3 新增) │ 实体消歧 + 关系解析 │ │ "OpenClaw" → │ │ @steipete + openclaw 仓库 │ │ + r/openclaw + YouTube channel │ └──────────────┬───────────────────┘ ▼ ┌──────────────────────────────────┐ │ Phase 2: 并行 13 平台查询 │ │ 带着 resolved entity 发请求 │ │ Reddit | HN | X | YouTube | │ │ Polymarket | GitHub | TikTok | │ │ Bluesky | Perplexity | Web | │ │ 小红书 | Truth Social | Digg │ └──────────────┬───────────────────┘ ▼ ┌──────────────────────────────────┐ │ Phase 3: Engagement Scoring │ │ 异构信号归一化 │ │ + Cross-source Cluster Merging │ └──────────────┬───────────────────┘ ▼ ┌──────────────────────────────────┐ │ Phase 4: Judge Agent 双评审 │ │ Judge 1: 相关性/事实性 │ │ Judge 2: 幽默分 (Best Takes) │ └──────────────┬───────────────────┘ ▼ ┌──────────────────────────────────┐ │ Phase 5: 输出简报 │ │ 带引用的结构化摘要 │ │ 格式: Markdown / HTML / ELI5 │ └──────────────────────────────────┘

五、生态系统契合:它为什么能在 2026 年爆发

last30days-skill的爆发不是偶然,而是踩中了 AI Agent 生态的几个关键转折点:

生态转折点last30days 的对应设计
Agent Skill Marketplace 标准化遵循agentskills.io规范,一次编写 50+ harness 复用
数据花园围墙被 cookie/key 攻破vendored Node.js Bird 客户端,用用户自有浏览器 cookie 访问 X 数据
真实信号优先于 SEOGoogle 不索引 Reddit 评论、ChatGPT 看不到 X——跨平台并行是唯一开源方案
Judge Agent 模式可审计Cross-source clustering + 多 judge 评分公开,工程细节可审计(对比 Perplexity 等黑盒)

六、安装与使用快速上手

基础安装(适用 50+ Agent 平台)

# 全局安装npx skillsaddmvanhorn/last30days-skill-g# 指定宿主(如仅 Cursor)npx skillsaddmvanhorn/last30days-skill-g-acursor

管理命令

npx skills list-g# 查看已安装的 skillsnpx skills update last30days-g# 更新npx skills remove last30days-g# 移除

Claude Code 专用安装

/plugin marketplace add mvanhorn/last30days-skill /plugin install last30days

使用示例

/last30days Cursor IDE /last30days React Server Components /last30days AI coding tools --emit=html /last30days OpenAI --competitors /last30days nvidia earnings reaction --save-dir ./research

输出位置

系统默认路径
macOS / Linux~/Documents/Last30Days/
WindowsC:\Users\<用户名>\Documents\Last30Days\

七、使用建议与局限性

✅ 最佳使用场景

  • 开源项目近期热度调研
  • 产品 / 公司 / 技术方向的社区反馈分析
  • Reddit / HN / X 上用户真实讨论汇总
  • 竞品分析、内容选题、市场观察

❌ 不适合的场景

  • 需要 30 天以上历史数据的深度归档
  • 需要实时数据流的监控系统
  • 商业级合规报告
  • 仅关注单一平台内容
  • 需要 100% 全覆盖的精确搜索

最佳实践

把它当作社区舆情和近况整理工具,而不是"搜索引擎替代品"。

查某个具体产品时加上限制条件能获得更精准的结果:

/last30days Supabase auth developer experience /last30days Claude Code vs Cursor reddit /last30days Apple Vision Pro developer sentiment

八、总结:一个时代的缩影

last30days-skill的成功折射出 AI Agent 生态在 2026 年的三个重要趋势:

  1. 从 SaaS 到 Skill:能力不再需要封装为独立产品,一个.skill文件 + 标准规范就能接入 50+ 平台。分发成本趋近于零,网络效应极大化。

  2. 从搜索到"计算事实":传统搜索引擎聚合编辑内容,但 Reddit 评论区的真实反馈、Polymarket 的赔率、X 上社区投票形成的共识——这些"人的信号"才是更有价值的信息来源。last30days 做的不是搜索,是计算"人用 upvote / like / 真金白银投出来的事实"。

  3. 从黑盒到可审计:Perplexity 等闭源 AI 搜索的评分逻辑是黑盒,你永远不知道为什么某条结果排在前面。last30days 的公开评分算法、双 judge 评审、cross-source clustering 让整个过程可审计、可质疑、可改进。

它的核心设计哲学可以浓缩为一句话:“Google aggregates editors./last30dayssearches people.”


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 3:17:00

别再瞎调XGBoost了!用Optuna搞定这10个核心参数,Kaggle老手都这么干

别再手动调参了&#xff01;用Optuna自动化优化XGBoost的10个核心参数实战指南在Kaggle竞赛或企业级数据预测项目中&#xff0c;XGBoost凭借其卓越的性能表现成为众多数据科学家的首选工具。然而&#xff0c;许多从业者在模型调优阶段陷入手动调整参数的泥潭——反复修改数值、…

作者头像 李华
网站建设 2026/6/13 3:14:53

3步掌握rpatool:Ren‘Py游戏资源管理的完整指南

3步掌握rpatool&#xff1a;RenPy游戏资源管理的完整指南 【免费下载链接】rpatool (migrated to https://codeberg.org/shiz/rpatool) A tool to work with RenPy archives. 项目地址: https://gitcode.com/gh_mirrors/rp/rpatool 如果你正在使用RenPy引擎开发视觉小说…

作者头像 李华
网站建设 2026/6/13 3:10:04

组织架构调整为何频频收效不佳?避开重组常见误区

组织架构调整&#xff0c;是指企业对内部部门设置、汇报关系、职责边界、层级结构进行系统性重新设计的管理行为&#xff0c;目标是让组织结构更匹配当前的战略目标与业务规模。听起来合理&#xff0c;但在实际落地中&#xff0c;超过60%的大规模组织架构调整在完成后12个月内&…

作者头像 李华
网站建设 2026/6/13 2:53:54

worldmap绘图

usamap("conus");states=shaperead("usastatelo.shp",UseGeoCoords,true); % 俩州离太远画不开,不要 for i=length(states):-1:1

作者头像 李华