---
type: research
title: 热点事件需求核对
summary: 国内平台关键词监控的源码差距、关键假设、评估协议与验收场景；业务尚未执行
status: 需求已澄清，方案待验证
date: 2026-10-07
updated: 2026-10-07
---

# 热点事件需求核对

本页保留源码与评估依据；后续用户要求的完整工程设计已落实至[总 PRD 功能条款](../product/prd/01-PRD.md#功能性需求与优先级)、[PROJECT §12](../product/reference/02-技术架构.md#12-关键词监控工程设计提案)、[数据库设计](../product/reference/07-关键词监控数据库设计.md)和[验证与交付设计](2026-10-07-关键词监控验证与交付设计.md)。统一时间窗为 UTC 半开区间，新的具体边界与故障场景以后者为执行核对入口；没有新增业务运行结论。

需求来自[用户原话与补充](../product/reference/04-需求与验证入口.md)，产品目标与规则统一写在[总 PRD](../product/prd/01-PRD.md)。本页只记录分析依据和验证方法，不维护第二份 PRD 或任务进度。原先的“主题命中 / 平台热榜 / 事件归并三选一”已由新指令澄清：先验证关键词相关的帖子与评论、相关性和时效性；旧候选排除评论的描述不再适用。

用户要求最终支持国内主流及 X、Instagram 等海外平台，POC 只验证国内。逐个平台做小验证是执行建议，不把产品缩成单来源，也不以 HN 代替国内平台。平台工作清单见 PRD §7.2；尚未逐项确认穷尽名单，尚无本轮业务运行结果。

## 本轮 PM 方法

使用 `create-prd` 对齐目标、用户、价值、范围和发布门槛；使用 `identify-assumptions-existing` 检查价值、易用性、可持续性和技术可行性；使用 `test-scenarios` 把需求变成可观察的操作与结果。八节结构复用总 PRD，验证使用既有[POC 卡](2026-10-07-国内平台关键词监控POC验证.md)，不新增独立产品文档体系。

## 当前实现与需求的差距

核对基线：2026-10-07，`751a5168` 工作目录。以下是源码事实，未读凭据、未查业务库、未启动采集或调用模型；源码默认值不代表本机实际配置。旧能力文档的“可用/部分可用”是历史结论，不证明本次通过。

| 环节 | 源码事实与定位 | 对 POC 的影响 |
|---|---|---|
| 配置与召回 | [monitors/services.py](../../../backend/app/monitors/services.py#L326) 的查询规划和 `evaluate_monitor_rules`（408 行）处理任一/全部/排除词；[discovery.py](../../../backend/app/content/discovery.py#L510) 先按 title + text 硬过滤再保存 | 可复用规则，但没有该入口的语义扩展召回；主题说明、别名分组与近义表达预览不能仅由现有字段推断已支持 |
| 国内采集 | [搜索工厂](../../../backend/app/content/discovery_execution.py#L74) 与[评论工厂](../../../backend/app/content/comments_execution.py#L71) 的国内社交原帖加评论组合执行分支仅 B 站，另有 RSS/新闻等补充发现入口；[B 站运行参数](../../../backend/app/monitors/runs.py#L174) 限 5 条、1 页 | 微博等目录入口不等于接通。首卡若选微博，需要先验证/补足适配；若选 B 站也须重新取得真实证据。不得为了达标默认提高现有限额 |
| 相关性 | [analysis/schemas.py](../../../backend/app/analysis/schemas.py#L235) 是 `relevant` 布尔和理由；[分析服务](../../../backend/app/analysis/services.py#L244) 仍要求字面匹配 | 能做相关判断的契约不等于能给“最相关”排序；分档和理由须验证，不宣传已具备连续语义评分 |
| 监控列表 | [content/services.py](../../../backend/app/content/services.py#L1479) 按记录 ID 查询，分析相关布尔在返回项中展示 | 个人监控没有按主题相关度排序的闭环；需核对目标排序怎样影响实际列表 |
| 两种相似能力 | [公开搜索](../../../backend/app/publication/search.py#L52) 使用标题/摘要/正文的字面权重；[事件信号](../../../backend/app/events/signals.py#L410) 有可选向量相似度关联；[事件聚类](../../../backend/app/events/clustering.py#L164) 有标题相似候选 | 都有实现用途，但不等于关键词监控的语义召回或重排；不能因为存在 embedding 就声称本需求已完成 |
| 时间 | [通用发现](../../../backend/app/content/discovery.py#L466) 用左闭右开窗；[B 站适配](../../../backend/app/sources/adapters/mediacrawler.py#L243) 用闭区间；未知时间会保留。[列表](../../../backend/app/content/services.py#L1606) 用发布时间或首次发现时间筛选，另有 `timeline_basis` 标识 | 没有把采集时间直接写进发布时间，但时间线有回退；要统一边界并确保“最新发布”不纳入未知日期内容 |
| 评论 | [评论任务](../../../backend/app/content/comments.py#L84) 用固定原帖及 TOP 选项；[目标选择](../../../backend/app/content/services.py#L2818) 按帖互动选取；[关系契约](../../../backend/app/sources/contracts.py#L329) 和[存储](../../../backend/app/content/services.py#L833) 支持父链与缺父占位 | 可复用关系骨架；TOP 不证明来源实际按点赞排序，有父 ID 不证明已取得父正文；评论主题相关性、评论时间窗及抽样说明仍要验收 |
| 开关与证据 | [config.py](../../../backend/app/core/config.py#L172) 的 MediaCrawler、AI、embedding、事件聚类源码默认关闭；[B 站集成样例](../../../backend/tests/integration/test_keyword_discovery.py#L86) 用 JSONL 回放 | 本轮没有读取部署值或运行测试。固定样例和开关代码只证明存在路径，不能证明真实平台可用 |

优先复用现有主题、任务、内容、评论父链、模型适配和结果页面；先补闭环缺口，不以本次需求分析授权重建采集框架或数据库。

## 平台资料核验

2026-10-07 只读取公开项目文档，没有采集平台业务内容。

- [MediaCrawler 官方仓库](https://github.com/NanmiCoder/MediaCrawler) 列出小红书、抖音、快手、B 站、微博、贴吧、知乎的关键词检索及二级评论能力。它是候选实现来源；上游声明不等于 Ripplesight 已接入，也不证明当前账号可运行。该列表没有证明头条、微信公众号和视频号可取得帖子与评论。
- [Sentence Transformers 官方检索与重排文档](https://www.sbert.net/examples/sentence_transformer/applications/retrieve_rerank/README.html) 将候选检索和候选相关性重排分开。本项目据此区分两个问题，但不采用其模型或新增服务；现行模型仍遵守[本机 Codex 决策](../decisions/03-模型只用本机Codex.md)。重排方法与具体模型选择是两回事。

## 最容易失败的假设

信心是本轮定性判断，均未有当前业务实验支持。

| 风险 | 假设与可能失败点 | 信心 | 最小验证与失败后的动作 |
|---|---|---|---|
| 价值 | 相同关键词未必同一事件；AI 分析可能没有减少无关内容 | 低 | 同池盲评关键词基线与 AI 结果；无增益则保留基线、修订主题含义，不扩大模型链路 |
| 易用性 | 用户能理解任一/全部/排除规则，以及“部分采集”不等于全量 | 低 | 观察一次配置、预览和评论展开；误解则先修说明与预览，不增加复杂规则 |
| 技术可行性 | 每个国内平台能同时提供相关帖子、评论父链和可靠时间 | 低 | 每个平台用同一验证卡取真实小样本；登录、限额、父链或日期缺口分别记录，不用一个成功平台抵消另一个失败平台 |
| 可持续性 | 免费、本人单账号、本机 Codex 边界内可在有限时间完成 | 低 | 记录请求数、排队、用量、处理时间和人工维护；超时/风控停止并留下部分结果，按现有决策调整规模 |
| 评估可信度 | 前列高准确率能反映足够覆盖，热评能代表所有观点 | 低 | 分别抽查候选外漏采和评论抽样偏差；不成立时缩小结论，不能用加权总分掩盖缺失 |

历史 PRD 曾提出“情感不达标换其他本机模型”及“20—50 条评论足够反映舆论”。前者与现行模型决策有差异，后者没有代表性证据；本轮不实施情感、不修改生效决策，已在原章节标出问题。

## 怎么评估相关性和时效性

以下操作是 AI 提案，实际数量和规则在执行前冻结。

- **按平台建池**：保留同一主题、查询/别名版本、时间窗、实际页数与上限、过滤前取得的唯一候选、失败项和过滤理由。首次建议上限 100 条；若现有来源限额更小，先记录差距，执行卡单独约定次数与上限，不自动扩请求。
- **先校准再盲评**：真实样本足够时，每个平台建议前 20 条用于修订规则，另冻结至少 40 条为评估集；按原帖/近重复组隔离两组，避免同一内容泄漏。用户看不到算法名或得分，按 PRD 四档标注主题相关性和支持片段；疑难项二次复核，保留原标签与裁定。
- **对照公平**：相同评估池、时间窗、可见字段；基线为硬规则通过后的可信发布时间倒序，实验为相关性门槛和分档排序。报告 P@10 分子/分母及差值。模型未评估/失败项单列，不能静默删掉以抬高准确率；少于 10 个可返回项按证据不足报告。若基线已很好而无改善，只能说效果相当。
- **漏采单独算**：另人工找同一平台/窗口内少量已知相关帖，逐条标注未被查询返回、被硬过滤、被模型误判或时间异常。完整标注池可算池内召回，分母为池中全部人工直接相关项；若为零则无定义。平台搜索结果不等于全站，不能外推全网召回。
- **时间可复算**：冻结窗口终点，使用发布时间、首次发现、任务开始及可读时间分别计算内容年龄、发现延迟、处理耗时；空值/未来值不参与数值统计，并报告缺失比例。至少两轮观察评论增量；没有新评论时只能证明重跑，不声称真实增量已验证。
- **三种证据分开**：在线真实采集证明来源链路；已有真实样本只能证明下游处理；人工构造边界样本只证明规则行为。全部真实样本原文留在本机受控证据目录；公开知识库仅登记脱敏数量、结论和必要的公开出处，不粘贴凭据、账号会话或评论作者画像。

## 可执行的验收场景

共同角色：本人作为主题跟踪者，执行者记录步骤和证据。在线场景先具备获准的平台、本人登录、固定输入与时间窗；故障/边界场景使用固定样本，不人为触发真实风控。下表是验收设计，均未执行。

| 目标与起始条件 | 步骤及应观察到的结果 |
|---|---|
| 正常链路：存在可核对的国内帖与评论 | 配置示例主题并预览 → 显示实际查询/规则；执行 → 分平台显示真实状态；展开前列帖子与评论 → 原文、时间、匹配理由和父链可核对；标记有用/无关 → 反馈保留 |
| 关键词歧义与近义表达 | 混合同名负例、别名正例和无字面词的相关样本 → 比较候选、硬过滤、重排三步；同名不自动判相关，未进入候选的内容不宣称由重排找回 |
| 排除词和否定句 | 预览“账号出售”广告与揭露售号骗局的帖子 → 硬排除影响可见；修改排除词 → 新规则版本可核对；模型保留否定和不确定含义，不编造事实 |
| 旧闻与窗口边界 | 放入高热度旧帖、窗口起止点、不同来源的同秒样本 → 按统一窗口约定判定；重复抓取 → 发布时间和首次发现不被刷新 |
| 未知或异常日期 | 放入无日期、相对日期、未来日期与跨时区样本 → 时间依据可见，异常隔离，未知值不冒充近期发布 |
| 旧帖新评论与短回复 | 为已选择的旧帖加入“终于修好了”等回复 → 显示新评论时间及原帖上下文，旧帖不变新帖；评论不必重复关键词，但灌水不进入代表内容 |
| 部分评论与缺失父链 | 分别打开零评论、已删除、不可见、截断和缺父样本 → 各有准确状态及采集数/上限/排序；缺父不伪造，对当前样本不作舆论总体推断 |
| 失败及模型降级 | 模拟来源失败、登录失效、验证码/限流、模型超时 → 明示阶段并保留已取数据；风控来源停止新请求，模型待分析不等于不相关；没有匹配和没有成功取得数据分开 |
| 同源重跑与跨帖转载 | 同一 ID 重跑 → 不多出一份；两条相似帖 → 保留各自原文和评论，关联不等于删除或合并父链 |
| 国内覆盖边界 | 核对每个平台的帖子/评论/时间/排序证据 → 有缺口的列为部分或阻塞；热榜接通、HN 成功或单平台通过均不能替代国内清单验收 |

## 下一步使用方式

实际执行用[国内平台关键词监控 POC 验证卡](2026-10-07-国内平台关键词监控POC验证.md)。首个平台、完整国内枚举、真实主题、窗口及指标仍需落到卡内；用户已明确的产品方向无需重复确认。执行状态只写 [BACKLOG](../../../BACKLOG.md)。未进行业务验证，不生成“通过”的能力验收记录。
