Skip to content

RSSHub 标准化源接入层 #1

@Arcadia822

Description

@Arcadia822

背景

当前 source-curation 阶段确定的 RSS 源数量有限,runtime-retrieval 源依赖外部检索提供商,agent 无法直接接入国内主流平台(知乎、B站、微博、掘金等)的结构化数据流。

RSSHub 是一个开源的 RSS 聚合服务,已为 1000+ 网站提供标准化 RSS 路由,包括中文互联网生态的绝大部分平台。

参考实现

OpenTrends (nexmoe/opentrends) 在 RSS 源接入层做了两件事:

  1. RSSHub 路由表:定义了大量 RSSHub route 配置(如 zhihu/hotbilibili/ranking/0weibo/search/hot),通过 RSSHub 实例获取结构化数据。
  2. Hedged Request 策略:同时请求多个 RSSHub 实例(默认 7 个公共实例),用 Promise.any() 取最快响应,单实例超时 3500ms,实例间延迟 300ms。这解决了公共 RSSHub 实例不稳定的问题。
// OpenTrends 的 hedged request 模式示意
const instances = ["rsshub.app", "rsshub.rssforever.com", ...];
const result = await Promise.any(
  instances.map(url => fetchWithTimeout(`${url}${route}`, 3500))
);

提案

在 Skrya 的源体系中引入 RSSHub 作为标准连接器,让 agent 在 source-curation 阶段能够:

  1. 发现 RSSHub 路由:维护一份内置的 RSSHub 路由映射表(平台 → route pattern),agent 在配置源时可以直接引用。
  2. 声明 RSSHub 源类型:在 sources.json 中新增 rsshub 类型,字段包括 routeinstance_urls[]timeout_mshedge_delay_ms
  3. Hedged FetchIntelligenceService._load_events_from_sources() 中新增 rsshub 分支,实现多实例并发请求 + 取最快响应。
  4. 实例降级:当所有公共实例都失败时,回退到 runtime-retrieval 模式(让外部检索提供商覆盖)。

sources.json 新增字段示意

{
  "id": "zhihu-hot",
  "name": "知乎热榜",
  "type": "rsshub",
  "enabled": true,
  "route": "/zhihu/hot",
  "instance_urls": [
    "https://rsshub.app",
    "https://rsshub.rssforever.com"
  ],
  "timeout_ms": 3500,
  "hedge_delay_ms": 300,
  "max_items": 15
}

对 agent 流程的影响

  • source-curation SKILL.md 增加 RSSHub 路由发现指引
  • agent 在确认源时,可以将"知乎热榜"、"掘金热门"等直接以 rsshub 类型写入配置
  • 减少对 runtime-retrieval 的依赖,提升数据可预测性

优先级

— 直接扩展 agent 可连接的数据源范围,尤其对中文互联网追踪场景(当前最大的信息缺口)。

备注

来源:agent=牛马AI, model=mimo-v2.5-pro, reference=opentrends

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions