AI 研究工具正从单一搜索引擎向多平台聚合演进,但真正的挑战不在于接入更多 API,而在于如何编排这些异构数据源,使其输出具有可验证的归因和一致的格式。last30days-skill 作为 GitHub Trending 榜首的 Claude Code 技能,展示了一种系统化的研究编排架构 —— 它通过严格的工具调用契约、多阶段预解析和参与度加权的评分系统,将 Reddit、X、YouTube、Hacker News、Polymarket 等平台的信号整合为带引用的合成报告。
技能架构的核心设计
该技能采用五阶段执行流程:预解析(Step 0.5/0.55)、查询计划(Step 0.75)、研究执行、结果合成、输出生成。这一架构的关键在于区分 "推理模型"(Claude Code 宿主)与 "执行引擎"(Python 脚本)的职责边界。推理模型负责需要语义理解的任务 —— 解析用户意图、识别实体、生成查询计划;执行引擎负责可并行化的 I/O 操作 —— 调用各平台 API、提取转录文本、计算参与度分数。
预解析阶段引入实体解析机制:当用户查询涉及人物、产品或公司时,技能通过 WebSearch 解析其对应的 X 账号、GitHub 仓库、相关子版块等。例如查询 "Peter Steinberger" 时,系统会自动解析到 @steipete、r/ClaudeCode、GitHub 用户 steipete 等目标,而非简单地进行关键词匹配。这种 "先理解再搜索" 的策略显著提升了召回精度。
工具调用模式与并行控制
技能在工具调用层面遵循严格的权限契约:allowed-tools 明确限定为 Bash、Read、Write、AskUserQuestion、WebSearch。这种受限的工具集设计确保了技能的可预测性 —— 所有外部数据获取要么通过 Bash 调用 Python 引擎,要么通过 WebSearch 进行轻量级预解析。
并行搜索采用分源超时预算策略。引擎为每个数据源(Reddit、X、YouTube 等)分配独立的超时配额,单个源的延迟不会阻塞整体流程。当某源不可用时,引擎记录降级状态并继续,而非失败重试。这种 "部分成功优于完全失败" 的容错设计,使得在缺失 X API 密钥的情况下,用户仍可获得 Reddit 和 Hacker News 的有效结果。
多源查询采用子查询加权机制。主查询覆盖所有源(权重 1.0),辅助查询针对特定平台优化(权重 0.6-0.8)。例如研究 Kanye West 时,主查询搜索通用关键词,辅助查询分别针对专辑评价、现场反应等细分主题,确保既覆盖广度又保证深度。
来源归因与评分机制
该技能的核心创新在于基于参与度的信号加权。不同于传统搜索引擎的 PageRank,last30days 采用平台原生指标:Reddit 的点赞数、X 的喜欢数、YouTube 的观看量与点赞比、Hacker News 的分数、Polymarket 的赔率变化。这些指标直接反映 "真实人群的参与强度",而非编辑团队的 SEO 优化。
跨源聚类采用实体重叠检测。当同一事件出现在 Reddit 帖子、X 线程和 YouTube 视频中时,引擎通过实体匹配将其合并为单一聚类,避免重复计数。每个聚类标注不确定性标签:single-source(单源,需谨慎对待)、thin-evidence(低分证据,需额外验证)。
来源引用遵循严格的内联格式(LAW 8):每个引用必须是 [name](url) 的 Markdown 链接形式,禁止裸露 URL 或纯文本引用。引擎输出的页脚包含按源统计的参与数据("🟠 Reddit: 14 线程,47K 点赞"),作为可追溯的归因证明。
输出契约与格式控制
技能通过八条不可违反的格式法则(LAW 1-8)约束输出质量。关键约束包括:禁止在响应末尾添加 Sources 块(LAW 1)、必须使用特定标题格式(LAW 2)、禁用 em-dash(LAW 3)、禁止二级标题(LAW 4)、必须透传引擎页脚(LAW 5)、禁止输出原始证据聚类(LAW 6)、命名实体查询必须带计划(LAW 7)、内联链接格式强制(LAW 8)。
这种严格的格式契约解决了大模型合成阶段的 "退化" 问题 —— 当模型偏离规范时,输出会从结构化的 "What I learned + KEY PATTERNS" 退化为无结构的博客文章格式。契约通过将格式规则置于 SKILL.md 的前部(而非深埋文件末尾),确保模型在合成前已加载所有约束。
可落地的实施参数
实施类似架构时,以下参数和清单具有参考价值:
环境配置清单:
- Python 3.12+ 运行时(必需)
LAST30DAYS_MEMORY_DIR存储路径(默认~/Documents/Last30Days)- Reddit/HN/Polymarket:零配置,开箱即用
- X:需浏览器 Cookie 或 xAI API 密钥
- YouTube:需本地安装
yt-dlp - TikTok/Instagram:需 ScrapeCreators API 密钥(100 次免费调用后按量付费)
查询计划 JSON 结构:
{
"intent": "breaking_news|product|comparison|how_to|opinion",
"freshness_mode": "strict_recent|balanced_recent|evergreen_ok",
"cluster_mode": "story|debate|market|workflow|none",
"subqueries": [
{
"label": "primary",
"search_query": "...",
"ranking_query": "...",
"sources": ["reddit", "x", "youtube", "tiktok", "hackernews", "polymarket"],
"weight": 1.0
}
]
}
预解析触发条件:
- 人物主题:必须解析
--x-handle、--github-user、--subreddits - 产品主题:必须解析
--github-repo、类别相关子版块(如 AI 图像生成需包含 r/StableDiffusion、r/midjourney) - 对比查询:必须为每个实体独立执行 Step 0.55 解析
局限性与权衡
该架构的主要依赖在于 WebSearch 的可用性。在 OpenClaw 等不支持 WebSearch 的平台上,预解析阶段被迫降级为 --auto-resolve 模式,由引擎内部的 Brave/Exa 搜索后端完成实体解析,效果弱于推理模型的语义解析。
速率限制方面,技能通过搜索预算控制(预解析 2-4 次、补充搜索 2-3 次)避免过度调用,但仍受限于各平台 API 的独立配额。X 的搜索尤其脆弱 —— 依赖未文档化的 GraphQL 端点或浏览器 Cookie,存在失效风险。
数据新鲜度上,虽然引擎优先抓取实时 API 数据,但 YouTube 转录和 TikTok 字幕的提取仍引入延迟(通常 1-3 分钟)。对于真正的实时事件(如正在进行的发布会),这一延迟可能显著。
资料来源
- last30days-skill GitHub 仓库: https://github.com/mvanhorn/last30days-skill
- SKILL.md 执行契约: https://github.com/mvanhorn/last30days-skill/blob/main/skills/last30days/SKILL.md
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。