它 6 万 star,但被另一家 AI 平台判为「危险」—— last30days 的现场拆解

最近一周我把 mvanhorn/last30days-skill 这个 60k star 的项目扒了个底朝天。 为什么?因为它身上贴着两个让我眼前一亮的标签: 「AI 智能体驱动的搜索引擎」,「按赞同票、点赞和真金白银评分」。 听着像是 AI 圈少见的硬骨头 —— 一个真有数据的研究工具。

最近一周我把 mvanhorn/last30days-skill 这个 60k star 的项目扒了个底朝天。 为什么?因为它身上贴着两个让我眼前一亮的标签: 「AI 智能体驱动的搜索引擎」,「按赞同票、点赞和真金白银评分」。 听着像是 AI 圈少见的硬骨头 —— 一个真有数据的研究工具。

扒完才发现,两个标签都半真半假。


一、先报家门:last30days 到底是个啥

一句话:它是个 Claude Code / Codex / Cursor / Grok 都能跑的 skill(技能插件), 给定一个主题(比如「AI 视频工具最近 30 天」),它会同时跑 Reddit、X、YouTube、TikTok、Hacker News、Polymarket、GitHub 等十几个源, 把带 upvote 数、播放量、点赞数的社区真实讨论汇总成一份简报。

听起来挺美对吧?我装上,跑了一次。

二、真机跑下来,发现三件事

第一件,号称「免费 20 源」,实机开箱只有 5 源能跑: reddit、hackernews、polymarket、github、grounding。 其余 15 个,11 个要 API 密钥(其中一个核心源叫 ScrapeCreators,专门管 TikTok / Instagram / Threads / Pinterest / LinkedIn / YouTube 评论,这家公司收费), 4 个要你装特定的命令行工具。

更要紧的是 —— 它的 SKILL.md(给宿主 AI 读的说明书)frontmatter 里清清楚楚写着:

primaryEnv: SCRAPECREATORS_API_KEY

—— 官方定义的「首选密钥」是收费服务。

免费的那 5 个源里,有个更尴尬的数据: 我跑了一次「研究 last30days skill 本身」,110 条 Reddit 候选项,只有 3 条拿到了真实 upvote 数,剩下 107 条是 score-only(没分数)。

110 : 3,2.7% 的命中率。

而它的全部营销话术就建立在「真实参与度」四个字上。

第二件,它宣称「按真金白银评分」,我翻了下它的源码 —— 评级公式是这样的(直接抄的):

item.local_rank_score = (
    0.65 * item.local_relevance      # 相关性 65%
    + 0.25 * (item.freshness / 100.0) # 新鲜度 25%
    + 0.10 * ((eng_score or 0) / 100.0) # 互动度 10% —— 这是源内的
)

然后跨源融合的 RRF 算法只读名次、不读数值。 最后总评分的加权里:

分量权重
LLM 评委打分60%
跨源名次融合20%
新鲜度10%
源质量5%
互动度(含真实 upvote)5%
作者自己在代码注释里算了一笔账 —— 2.5M 播放的 TikTok 与 1500 播放的 TikTok,归一化后分别约 15 和 7,乘 6、乘 0.05,最终分差 2.4 分。 一个播放量相差 1600 倍的视频,在最终排序里只差 2.4 分(满分 100)。 那个叫 rerank_score 的 LLM 评委打分,权重是 60%。

「按真金白银评分」是落地 5% 权重的调味品。

第三件,我跑出来的那次,还有个细节:引擎给我规划主题的 LLM、打分排序的 LLM、评分最佳评论的 LLM —— 三处全部 502 失败并降级,研究照样完成。

为啥?因为这套引擎本来就没智能。 它的 SKILL.md 有两个 LAW(强行规定):

  • LAW 7 —— YOU ARE THE PLANNER(你,宿主 AI,才负责规划)
  • LAW 11 —— YOU ARE THE JUDGE(你,宿主 AI,才负责判断)
引擎的「智能」全在 prompt 里,不在代码里。 它不是 AI 的大脑,它是 AI 的假肢。 AI 挂了,它退化成确定性爬虫聚合器,照样能交作业 —— 只是那份「由 AI 裁判综合」的简报,实际上没有裁判。


三、更刺激的是那张 229 KB 的「操作码」

这个项目的 SKILL.md 有 229 KB。

229 KB 是什么概念呢?作者在文件开头留了一句自白:

「三次 Opus 4.7 self-debug 都确认了 —— 这个文件太大,模型读不到末尾就开始综合了。v3.0.8 把关键规则从 1094 行前移到这里。」

也就是说 —— AI 在读完之前就忘了开头说过什么。

更狠的是这个文件里的章节编号序列:

STEP 0 → Step 0.45 → 0.5 → 0.55 → 0.75 → STEP 2 → Step 2.5

小数插入。后加的步骤无处安放,只能楔入缝隙。 从这些缝里,你能看到这个项目一整部演化史。

而 SKILL.md 里 "disaster" 这个词出现 10 次。每一条「法律」后面,都挂着一次真实的翻车记录:

"Peter Steinberger disaster #2(2026-04-18):模型把个人记忆里的偏好当成 skill 规则,把粗体全剥了"
"Hermes Agent Use Cases disaster(2026-04-19):连续两次把内部证据块直接吐给用户"
"Garry Tan(2026-04-18):那条规则加了四层防御,还是泄漏了 Sources 块"

最戏剧性的是同一份 SKILL.md 自陈:

"2026-04-18 同一天、同一个 Opus 4.7、几乎相同的 SKILL.md —— beta 验证 10/10 全过,公开版 0/8 全败。差异只是三个锚点。"

(这条数字目前只在 SKILL.md 自己说,我没找到 release note 的独立交叉证据 —— 按「自述」处理。但 v3.0.9 release note 印证了「五模型 self-debug」那天的存在。)

但让我最服气的是 v3.0.9 那个 release 的标题 ——

「v3.0.9 - The Self-Debug Release」

他真的让 5 个 Opus 4.7 实例去调试自己的失败输出,然后把他们得出的诊断直接拷进了代码:

"I handed 5 separate Opus 4.7 instances their own failed outputs and asked them to debug themselves.
Three converged on 'SKILL.md is too big and the LAWs are too deep.'
I copy-pasted their diagnoses into code."

—— 让 LLM 调试 LLM,比反复改 prompt 有效得多。


四、然后是分发链上的事 —— 真有点不舒服

它同时被 8 种渠道收录:Claude Code、Grok、OpenClaw、Codex、Cursor、Copilot、Claude.ai、Claude Desktop。 这是它 6 万 star 的重要来源。

但分发的广度也是分发的脆弱性。举几件事:

① v3.0.1 那次:作者改 .gitattributes 想把发布包瘦身,把 skills/ 和 .claude-plugin/ 也一并排除掉了 —— Claude Code 的 /plugin install 拿到残缺 tarball,安装静默失败。22 小时内连发四版救火。

② README 滞后 11 版:项目现在版本是 v3.22.0(2026-08-31 发布),但中英文 README 都还停在 v3.11.1。这项目同时支持六种语言(英/中/法/德/西/葡/日),README 不是中文翻译的事 —— 英文版也停在 11 版之前。是整体失修,不是本地化债。

③ 维护者自己在 issue #1081(2026-08-30)开了一张单:标题「Version-labelled builds diverge」—— 项目方自己承认病又复发了。 同一种「版本错位」的病,他治过一次(v3.0.9 PR #217/#229)、工程兜底过一次(v3.3.0 引入 STEP 0 stale-clone 自检)、自己开复发单承认了一次 —— 仍未治愈。

④ 另一家 AI 平台 Hermes 的安装期扫描器把本 skill 判为 dangerous,19 项发现,安装命令被硬阻断(PR #962, 2026-08-08)。

⑥ 我装的包里有个 .skillignore 文件,主动把一堆 dev/eval 脚本排除出 Hermes 的安全扫描 —— 排除 assets/、agents/ 是合理工程做法(等价于 .npmignore),但其中一行是 scripts/lib/vendor/,注释自承 "vendored third-party X-search client, still installed" —— 这是运行时代码绕过安装期扫描。

⑦ 它自己写的 User-Agent 里版本号也没跟上:

USER_AGENT = "last30days-skill/3.0 (Assistant Skill)"
实际版本已经是 3.22.0。连 UA 里的版本号都滞了三年的更新周期。


五、最后是法律 —— 不是灰色,是明确违约

我一开始以为这是「灰色地带」。扒完 X、Reddit、LinkedIn 的 ToS 后,这是明确违约:

  • X ToS §4(iii) 原文:「crawling or scraping the Services in any form, for any purpose without our prior written consent is expressly prohibited」。同节还有更狠的一句:「It is also a violation ... including by distributing products or services that enable or encourage violation」 —— 这一条直接指向分发者。违约金 §5:$15,000 / 百万帖。
  • Reddit robots.txt 实测是 User-agent:* / Disallow:/。Reddit UA §7 原文:「scraping ... without Reddit's prior written consent is prohibited」。
  • LinkedIn §8.2(04) 明文覆盖「through third parties (such as ... data aggregators or brokers)」—— 它用的 ScrapeCreators 正好落在此范围内。
  • Reddit v. SerpApi/Perplexity/Oxylabs(1:25-cv-08736, SDNY)2026-07-31 法官认定 DMCA §1201(a) 反规避成立,进入证据开示。本项目用相同手段(cookie 鉴权 + 前端抓取)—— 这是现行先例。
  • 全量源码 grep robots = 0 次命中。项目没有任何 robots.txt 遵守逻辑。
更刺激的是 ScrapeCreators 自己的 ToS §07/§13/§12:
合规责任 100% 推给客户;客户须为它辩护赔偿;赔付上限=你付过的钱;§10 可随时无理由终止并没收余额。

也就是说 —— 你的项目一旦被告,第一个被告是你,第二个是 ScrapeCreators,引擎作者不在被告席上。


六、最后一句话

last30days 是个真在解决真问题的工具 —— 真机跑下来那 268 秒,它确实交出了 11 条带参与度的社区证据,比传统关键词搜索更接近「社区到底在讨论什么」。 但它不是它宣称的那样。

它的真正知识资产,不是 60k star,是 SKILL.md 里那份 10 次灾难清单。 它教我们一件事:LLM 的可靠性,靠的不是更好的 prompt,是让 LLM 调试 LLM,再把诊断结果物理前移到 cache line。

至于你想不想用它 —— 见仁见智。 至少下次有人给你吹「"AI 智能体 + 多源研究 + 真实评分"」的时候,你心里应该有数:这是一个需要 Cookie 解密、ToS 违约、22 小时内四连发救火的工程,营销话术占其价值 5% 的权重。


附:快速判词速查表

维度README 自述实测实情
数据源数量20 源开箱 5 源(其余需密钥 / CLI)
评分核心按真实参与度互动度权重 5%,rerank LLM 60%
Reddit 真实分数「免费 + 真实评分」110 候选仅 3 条拿到分数(2.7%)
LLM 评分AI 智能体裁判三处 LLM 502 失败时直接出报告,AI 是增益
ToS 状态(没写)明确违约(X §4(iii) / Reddit §7 / LinkedIn §8.2(04))
README 版本v3.11.1实际 v3.22.0,滞后 11 版
健康检查(没特别说)schema-drift 判定 = grep 裸词 "schema"
第三方安全审计(没在 README)Trust Hub Fail / Snyk Fail / Socket Warn
研究方法:源码一手实证 + Windows 真机全链路 + GitHub API 直查。共四个探马、十一章、九份交付物。

#deep-research #ai-agents #open-source #toS #last30days

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens