Files
daily-robots/docs/superpowers/specs/2026-07-29-ai-news-research-quality-design.md

6.3 KiB
Raw Blame History

Design: Research 模式 AI 时讯质量(去重 · 国内配额 · 可信源)

Generated: 2026-07-29
Repo: daily-robots
Status: APPROVED
Related: skills/daily-ai-news-research/SKILL.md, daily/news/research.py, docs/superpowers/specs/2026-07-14-wecom-diversity-dedup-design.md

Problem Statement

当前 DAILY_AI_NEWS_MODE=research 下:

  1. 内容重复高:同事件多源报道并列入榜(如 OpenAI 联名 / Altman 减速 / HF 入侵同簇Kimi K3 开源与多条适配);itemstech_items 只按 link 去重skill 还允许主题重叠。
  2. 几乎无国内资讯prompt 写「不区分国内国外合并精选」模型偏国际源research 分支关闭国内 RSS企微也不再出国内独立区块。
  3. 可信度不稳:低质搬运 / 营销号可进榜(如证券之星类),与「以官方/权威为准」不符。

样例:output/2026-07-29.ai-news-research.json

Decisions已确认

决策点 选择
国内资讯路径 A继续 research 合并展示;不恢复国内独立区块;不引入 RSS 回填
国内配额 主列表至少约 30%10 条 → ≥3 条国内tech_items 不强制国内
去重范围 C:同事件多源只留 1 条 + tech_items 相对 items 主题不得复述
可信度 国内/国际均以 官方 + 权威媒体 为准;不可信则不写,宁缺毋滥
实现路径 Prompt/skill 约束 + research.py 解析后硬校验(推荐方案 2
条数不足 少返回;禁止为凑满 limit / 国内配额灌低质或同事件条目

Explicit Non-Goals

状态
恢复「国内 AI 时讯」独立企微区块 本期不做
research 不足时用国内 RSS 补齐 本期不做(偏离路径 A
切回纯 RSS 本期不做
LLM 语义嵌入聚类 本期不做(规则 + 实体/关键词即可)
generate.py research/rss 分支结构 不动

Architecture

Cursor Agent (WebSearch)
        │
        ▼
skills/daily-ai-news-research/SKILL.md  +  research prompt
        │  JSON: items / tech_items
        ▼
parse_research_response (link 去重)
        │
        ▼
post_process_research_items
  1. trusted-source filter
  2. same-event dedupe (items)
  3. tech vs items topic filter
  4. CN quota packing (min_cn)
        │
        ▼
_apply_pushed_dedup → generate / wecom

仍走现有 fetch_ai_news_researchgenerate.py research 分支;企微保持一块合并时讯。

Components

1. Skill / promptskills/daily-ai-news-research/SKILL.md + fetch_ai_news_research 文案)

更新要点:

  • 中英文检索都要做;主列表国内 ≥ min_cn(默认 30%),但只收可信国内源
  • 删除「主题可重叠」「必须恰好 N 条硬凑」;改为「不足少返回」。
  • 同事件只保留一条最权威源;tech_items 不得复述 items 已覆盖的事件/产品发布。
  • 来源优先级:官方 blog/changelog/新闻稿、政府/监管原文、一线权威媒体、学术官方;禁止二手搬运、标题党、不明自媒体、证券营销号(无权威交叉验证则不写)。
  • 用户 prompt 从「不区分国内国外,合并精选」改为「合并展示,国内配额硬性,可信度优先」。

2. 后处理(daily/news/research.py

2.1 国内判定(任一即国内)

  1. 可选字段 region: "cn"|"intl"(有则优先)。
  2. source_name / host 命中国内白名单量子位、36氪、雷锋网、IT之家、财新、机器之心、钛媒体、虎嗅等
  3. 常见中文域(.cn 及已知国内 host

2.2 可信源过滤

  • 维护 TRUSTED_HOSTS / TRUSTED_SOURCE_NAMES(国际 + 国内权威;含官方域如 openai.comanthropic.comblog.google 等)。
  • 不在白名单 → 剔除(保守:宁可短列表)。
  • 官方域优先于二手报道;同事件去重时官方源胜出。

2.3 同事件去重items

  • 在 link 去重之后。
  • 归一化 title+desc抽取主实体公司/产品)+ 事件动词簇(开源、入侵、联名、适配…)。
  • 高置信重叠 → 只留排序更靠前且更可信的一条;保守策略避免误杀明显不同事件。

2.4 tech vs items

  • tech 与任一 item 同事件,或同主实体且同属「发布/适配/SDK」簇 → 丢弃 tech。
  • items 已有 Kimi K3 开源 → tech 中 HF / 昇腾 / 摩尔线程适配全部剔除。

2.5 国内配额

  • min_cn = env DAILY_WECOM_AI_NEWS_CN_MIN;若未设或 ≤0max(1, lim * 3 // 10)10 → 3
  • 去重后尽量保证最终 items 中国内 ≥ min_cn:国内可信条优先占位,再用国际可信条补满。
  • 可信国内不足 → 短列表 + 日志 news_cn_short:N不用低质源灌满

3. 配置

变量 默认 含义
DAILY_WECOM_AI_NEWS_CN_MIN 0= 按 30% 推算) 主列表国内最少条数;正整数覆盖

.env.example 注明;.env 可不改(沿用推算)。

4. 测试(tests/test_ai_news_research.py

  • 国内判定(白名单 / .cn / region)。
  • 可信过滤:证券之星类 host 剔除;官方/权威保留。
  • 同事件Altman 减速与员工联名若同属「减速/治理请愿」簇 → 只留 1 条;与 HF 入侵若实体+事件动词不同则可分簇保留(保守,避免误杀)。
  • techitems 已有 Kimi K3 → 多条 Kimi 适配 tech 全剔除。
  • 配额:混合列表打包后国内 ≥ min_cn(在可信国内足够时)。

验收可对 2026-07-29.ai-news-research.json 跑后处理做人工对照。

Failure Behavior

情况 行为
CURSOR_API_KEY / Agent 失败 与现网一致:enabled: False
去重/可信过滤后变短 接受短列表;日志 news_dedup_drop / news_cn_short
可信国内为 0 不编造、不 RSS 回填;国际可信条照常(若有)

Files Touched

  • skills/daily-ai-news-research/SKILL.md
  • daily/news/research.py
  • tests/test_ai_news_research.py
  • .env.example(可选配置说明)

Out of Scope Reminder

不改 RSS 抓取路径;不改 research/rss 模式切换结构;不恢复国内独立企微区块。