演示

演示编辑部。这里的机构、来源与报道均为虚构,并冻结在演示时钟上,本站没有任何实时新闻。 演示时钟:2026年3月12日 星期四,09:00 UTC,已冻结。 关于演示

方法

编辑部如何决定你看到什么

每一步都是确定性的,全部由本地 JSON 文件跑出:同样的输入必然得到同样的站点。这里不调用任何模型、订阅源或数据库。

演示数据

本构建里的每个机构、产品、来源和报道都是为演示虚构的。报道没有链接,因为编造的链接看起来会像真实引用。编辑部时钟冻结在 2026-03-12T09:00:00Z;所有时长、热度、趋势与新鲜度都相对它计算,因此这里的一切都不可能显得“实时”。只要有报道或来源未标记为演示,构建就会拒绝。

流程

  1. 校验每个来源、话题、实体、报道与人工调整;任何问题即中止。
  2. 去重:丢弃重复提交的条目,标记转载副本。
  3. 归并报道成事件,并记录每一个判定。
  4. 评分:在演示时钟下计算热度、趋势、状态与新鲜度。
  5. 编成每日期号,按规则执行。
  6. 渲染并审计静态站点;拒绝不安全的输出与失效链接。

运行 python3 tools/explain.py 可打印每一个判定,也可以直接读编辑日志。

重复条目与转载副本

重复条目是同一来源再次提交相同标题,通常是重新抓取。它会被丢弃,永远不计。 转载副本是另一来源在 24 小时内带有完全相同的标题与摘要,或用 via 声明了出处。它会留在事件时间线上以保留出处,但不算独立来源,因此既不加热度也不加来源数。本构建中:丢弃 1 条重复,标记 1 篇转载。

把报道归并成事件

报道按时间从早到晚处理。每一篇都与所有“最近一篇报道距今不足 14 天”的事件中的每一篇报道比较:

相似度 = 0.6 × J(实体) + 0.4 × J(用词)

J 是杰卡德指数:共同项除以全部项。用词取自标题与摘要,去掉停用词。两篇报道若没有共同实体,得分直接为零,因此仅凭措辞相近永远不会归并。得分达到 0.35 即并入最佳事件,否则这篇报道自成一个新事件。距事件首篇报道超过 24 小时到达的报道记为后续进展,更早的记为跟进报道。

0.35 这个门槛是按本演示数据定的。本构建中最低的并入得分是 0.362,最强的被拒候选是 0.283;预期的归并结果固定写在 tests/expected_events.json 里,由测试套件校验。真实数据需要用一批已标注的报道配对来定门槛。 data/overrides.json 里的人工调整在算法之后执行,且永远不会被算法覆盖;本构建有一处,记录在事件页与日志里。

实体是人工标注在演示报道上的。生产环境中它们应来自抽取步骤,候选检索也应使用向量检索,而不是两两全比。

热度

热度 = 10 × Σ 0.5距今天数 / 24 小时

求和范围是该事件的独立来源。每个来源只计入最近 48 小时内最新的一篇报道,所以一家媒体连发十条也只算一次,两天没人碰的报道会降到零。刚刚报道的来源贡献 10 分,一天后只贡献 5 分。本站的热度条在 50 分时满格。

以演示时钟下热度最高的事件为例(Orchard 3 发布:三种规模的开放权重模型):

  • Orchard Labs 官方博客:19 小时前,10 × 0.519.00/24 = 5.78
  • Signal Wire 通讯社:18.3 小时前,10 × 0.518.33/24 = 5.89
  • Circuit Review:16.5 小时前,10 × 0.516.50/24 = 6.21
  • Builders 论坛热帖:15 小时前,10 × 0.515.00/24 = 6.48
  • Gradient Gazette:1.5 小时前,10 × 0.51.50/24 = 9.58

合计 33.9。这些是针对冻结时钟算出的演示数值,不是实时数据。

状态与趋势

新出现
在演示时钟前 24 小时内首次出现。
有后续
最近 24 小时内到达了一篇后续报道。
持续
最近 24 小时内又有报道,但没有后续进展。
较早
最近 24 小时内没有新内容。

趋势比较当前热度与 6 小时前的热度。升温要求至少上涨 3 且涨幅达 25%;降温要求至少下跌 3。在这 6 小时内首次出现的事件,状态记为新出现。若有参与的来源处于停滞,趋势会被标为数据不完整。

期号

每天的期号在 08:00 UTC 编成,取此前 24 小时内的报道。事件需要 2 个独立来源,或一个官方一手来源,才能成为头条;其余列为“也提请留意”。一个事件一条,按编成时的热度排序,最多 6 条。已经上过头条的事件,只有在窗口内出现后续时才会再次入选。编成时间之后的报道顺延到下一期;简报页把这类报道列在“本期之后”。

新鲜度

每个来源都声明自己的出稿节奏。最后一次检查超过 1 个间隔即为延迟,超过 3 个间隔即为停滞。简报页与来源页会如实写出,而不是让人误以为编辑部已经收全。

导出

随站点在本地生成,数据同源,每个载荷都标注为演示:

  • feed.xml:RSS 2.0,每期一条。在拿到真实 HTTPS 域名之前,条目链接使用占位域名 https://news.tongjiai.icu/zh(保留域名,不可解析)。
  • api/v1/index.json:列出下面的 JSON 文件。
  • api/v1/events.json、api/v1/topics.json,以及 api/v1/editions/ 下每期一个文件。

这些是形似接口的静态文件,不是运行中的服务:没有查询参数、没有分页、没有认证。

本构建的参数

来自 data/config.json。
heat.window_hours48
heat.half_life_hours24
heat.scale10
heat.trend_hours6
heat.rising_min_delta3.0
heat.rising_min_ratio0.25
heat.series_hours24
grouping.window_days14
grouping.threshold0.35
grouping.entity_weight0.6
grouping.token_weight0.4
grouping.followup_after_hours24
grouping.syndication_window_hours24
edition.compile_hour_utc8
edition.max_items6
edition.min_independent_sources2
freshness.late_after_intervals1
freshness.stale_after_intervals3

现在能做什么,还需要什么

本构建已具备

  • 校验、去重、转载识别与事件归并,附完整判定日志。
  • 固定时钟下可复现的热度、趋势、状态与新鲜度。
  • 按规则编成的每日期号、话题页、每事件一条时间线、搜索与筛选。
  • 本地已读标记、RSS 与 JSON 导出,全部离线生成。

需要真实基础设施

  • 真实订阅源与抓取调度,并按来源限速。
  • 用于长期历史的数据库,文件放不下时必需。
  • 用于候选检索的实体抽取与向量化,以及判断后续的模型或编辑。
  • 转载任何真实来源之前的授权审查。