AITrendsevent desk
LIVE2026/06/26

Agent Team

流水线

采集、标准化、去重、聚合、打分、编辑、审核,各 Agent 保持固定边界。

npm run pipeline

Pipeline Flow

01

Source Watcher

raw_item成功
02

Normalizer

article成功
03

Deduper

article_cluster成功
04

Event Merger

event_candidate成功
05

Ranker

score成功
06

Editor Agent

recommend_reason成功
07

Reviewer

published_event成功
运行中
成功
失败
待机
动画模拟数据在节点间流动

Source Watcher

01

Input

source

Output

raw_item

定时巡检 RSS/Web/API 来源,按来源频率控制抓取间隔,去除追踪参数后写入 raw_item,高频源(HN、Reddit)每 5 分钟一次,官网/newsletter 每 15 分钟一次。

npm run pipeline:watcher
成功06/26 15:32:19139.7s

Normalizer

02

Input

raw_item

Output

article

对 raw_item 进行结构化抽取:生成摘要、提取标签、规范化 URL 和时间戳,将非结构化原始文本转换为标准 article 记录,供后续 Agent 使用。

npm run pipeline:normalizer
成功06/26 15:32:210.1s

Deduper

03

Input

article

Output

article_cluster

用语义向量相似度对 article 聚类,将标题/内容高度相近的多篇文章合并为一个 article_cluster,消除同一话题在首页的重复刷屏。

npm run pipeline:deduper
成功06/26 15:32:230.1s

Event Merger

04

Input

article_cluster

Output

event_candidate

将相关 article_cluster 聚合为单一 event_candidate,确定事件的主来源、发生时间和来源计数,构建面向展示的事件实体。

npm run pipeline:merger
成功06/26 15:32:250.0s

Ranker

05

Input

event_candidate

Output

score

综合来源权重、新鲜度衰减、热度信号(来源数量、官方认证)对 event_candidate 打分,高分事件进入编辑和审核队列。

npm run pipeline:ranker
成功06/26 15:32:270.0s

Editor Agent

06

Input

event_candidate

Output

recommend_reason

调用 LLM 为高分事件生成一句话推荐理由,提炼事件的核心价值点和受众相关性,决定首页展示角度,输出 recommend_reason 字段。

npm run pipeline:editor
成功06/26 15:32:290.0s

Reviewer

07

Input

event_candidate

Output

published_event

最终质检关卡:检查内容质量、来源可信度、是否存在敏感内容,通过审核的事件写入 published_event 表,正式进入 Timeline 展示。

npm run pipeline:reviewer
成功06/26 15:32:310.0s
06/26 15:32:31Reviewer成功0.0s{"approved":6,"needs_human":0,"rejected":16}
06/26 15:32:31Reviewer开始-Step started
06/26 15:32:29Editor Agent成功0.0s{"processed":6}
06/26 15:32:29Editor Agent开始-Step started
06/26 15:32:27Ranker成功0.0s{"processed":22}
06/26 15:32:27Ranker开始-Step started
06/26 15:32:25Event Merger成功0.0s{"processed":22,"events":22}
06/26 15:32:25Event Merger开始-Step started
06/26 15:32:23Deduper成功0.1s{"processed":30,"clusters":22}
06/26 15:32:23Deduper开始-Step started
06/26 15:32:21Normalizer成功0.1s{"processed":22,"created":22}
06/26 15:32:21Normalizer开始-Step started
06/26 15:32:19Source Watcher成功139.7s{"fetched":737,"new":22,"skipped":0}
06/26 15:30:00Source Watcher开始-Step started
06/26 15:02:44Reviewer成功0.1s{"approved":7,"needs_human":0,"rejected":20}
06/26 15:02:44Reviewer开始-Step started
06/26 15:02:42Editor Agent成功0.0s{"processed":7}
06/26 15:02:42Editor Agent开始-Step started
06/26 15:02:40Ranker成功0.2s{"processed":27}
06/26 15:02:40Ranker开始-Step started
06/26 15:02:38Event Merger成功0.1s{"processed":27,"events":27}
06/26 15:02:38Event Merger开始-Step started
06/26 15:02:36Deduper成功0.1s{"processed":37,"clusters":27}
06/26 15:02:36Deduper开始-Step started
06/26 15:02:34Normalizer成功0.1s{"processed":27,"created":27}
06/26 15:02:34Normalizer开始-Step started
06/26 15:02:32Source Watcher成功152.2s{"fetched":737,"new":27,"skipped":0}
06/26 15:00:00Source Watcher开始-Step started
06/26 14:32:39Reviewer成功0.0s{"approved":5,"needs_human":0,"rejected":9}
06/26 14:32:39Reviewer开始-Step started
06/26 14:32:37Editor Agent成功0.0s{"processed":5}
06/26 14:32:37Editor Agent开始-Step started
06/26 14:32:35Ranker成功0.0s{"processed":14}
06/26 14:32:35Ranker开始-Step started
06/26 14:32:33Event Merger成功0.0s{"processed":14,"events":14}
06/26 14:32:33Event Merger开始-Step started
06/26 14:32:31Deduper成功0.1s{"processed":21,"clusters":14}
06/26 14:32:31Deduper开始-Step started
06/26 14:32:29Normalizer成功0.2s{"processed":14,"created":14}
06/26 14:32:29Normalizer开始-Step started
06/26 14:32:27Source Watcher成功147.4s{"fetched":747,"new":14,"skipped":0}
06/26 14:30:00Source Watcher开始-Step started
06/26 14:02:23Reviewer成功0.0s{"approved":6,"needs_human":0,"rejected":10}
06/26 14:02:23Reviewer开始-Step started
06/26 14:02:21Editor Agent成功0.1s{"processed":6}
06/26 14:02:21Editor Agent开始-Step started
06/26 14:02:19Ranker成功0.1s{"processed":16}
06/26 14:02:19Ranker开始-Step started
06/26 14:02:17Event Merger成功0.0s{"processed":16,"events":16}
06/26 14:02:17Event Merger开始-Step started
06/26 14:02:15Deduper成功0.1s{"processed":23,"clusters":16}
06/26 14:02:15Deduper开始-Step started
06/26 14:02:13Normalizer成功0.1s{"processed":16,"created":16}
06/26 14:02:13Normalizer开始-Step started
06/26 14:02:11Source Watcher成功131.0s{"fetched":767,"new":16,"skipped":0}
06/26 14:00:00Source Watcher开始-Step started
06/26 13:32:35Reviewer成功0.0s{"approved":2,"needs_human":0,"rejected":10}
06/26 13:32:35Reviewer开始-Step started
06/26 13:32:33Editor Agent成功0.0s{"processed":2}
06/26 13:32:33Editor Agent开始-Step started
06/26 13:32:31Ranker成功0.0s{"processed":12}
06/26 13:32:31Ranker开始-Step started
06/26 13:32:29Event Merger成功0.0s{"processed":12,"events":12}
06/26 13:32:29Event Merger开始-Step started
06/26 13:32:27Deduper成功0.0s{"processed":17,"clusters":12}
06/26 13:32:27Deduper开始-Step started
06/26 13:32:25Normalizer成功0.1s{"processed":13,"created":13}
06/26 13:32:25Normalizer开始-Step started
06/26 13:32:23Source Watcher成功143.3s{"fetched":737,"new":13,"skipped":0}
06/26 13:30:00Source Watcher开始-Step started
06/26 13:01:54Reviewer成功0.0s{"approved":4,"needs_human":0,"rejected":10}
06/26 13:01:54Reviewer开始-Step started
06/26 13:01:52Editor Agent成功0.0s{"processed":4}
06/26 13:01:52Editor Agent开始-Step started
06/26 13:01:50Ranker成功0.0s{"processed":14}
06/26 13:01:50Ranker开始-Step started
06/26 13:01:48Event Merger成功0.0s{"processed":14,"events":14}
06/26 13:01:48Event Merger开始-Step started
06/26 13:01:46Deduper成功0.1s{"processed":18,"clusters":14}
06/26 13:01:46Deduper开始-Step started
06/26 13:01:44Normalizer成功0.2s{"processed":14,"created":14}
06/26 13:01:44Normalizer开始-Step started
06/26 13:01:42Source Watcher成功102.0s{"fetched":796,"new":14,"skipped":0}
06/26 13:00:00Source Watcher开始-Step started
06/26 12:31:51Reviewer成功0.1s{"approved":9,"needs_human":0,"rejected":28}
06/26 12:31:51Reviewer开始-Step started
06/26 12:31:49Editor Agent成功0.0s{"processed":9}
06/26 12:31:49Editor Agent开始-Step started
06/26 12:31:47Ranker成功0.0s{"processed":37}
06/26 12:31:47Ranker开始-Step started
06/26 12:31:45Event Merger成功0.1s{"processed":37,"events":37}
06/26 12:31:45Event Merger开始-Step started
06/26 12:31:43Deduper成功0.2s{"processed":48,"clusters":37}
06/26 12:31:43Deduper开始-Step started
06/26 12:31:41Normalizer成功0.2s{"processed":38,"created":38}
06/26 12:31:40Normalizer开始-Step started
06/26 12:31:38Source Watcher成功98.9s{"fetched":746,"new":38,"skipped":0}
06/26 12:30:00Source Watcher开始-Step started
06/26 12:02:00Reviewer成功0.1s{"approved":5,"needs_human":0,"rejected":18}
06/26 12:02:00Reviewer开始-Step started
06/26 12:01:58Editor Agent成功0.0s{"processed":5}
06/26 12:01:58Editor Agent开始-Step started
06/26 12:01:56Ranker成功0.0s{"processed":23}
06/26 12:01:56Ranker开始-Step started
06/26 12:01:54Event Merger成功0.0s{"processed":23,"events":23}
06/26 12:01:54Event Merger开始-Step started
06/26 12:01:52Deduper成功0.1s{"processed":28,"clusters":23}
06/26 12:01:52Deduper开始-Step started
06/26 12:01:50Normalizer成功0.1s{"processed":23,"created":23}
06/26 12:01:50Normalizer开始-Step started
06/26 12:01:48Source Watcher成功108.4s{"fetched":746,"new":23,"skipped":0}
06/26 12:00:00Source Watcher开始-Step started
06/26 11:31:43Reviewer成功0.1s{"approved":5,"needs_human":0,"rejected":16}
06/26 11:31:43Reviewer开始-Step started
06/26 11:31:41Editor Agent成功0.0s{"processed":5}
06/26 11:31:41Editor Agent开始-Step started
06/26 11:31:39Ranker成功0.0s{"processed":21}
06/26 11:31:39Ranker开始-Step started
06/26 11:31:37Event Merger成功0.0s{"processed":21,"events":21}
06/26 11:31:37Event Merger开始-Step started
06/26 11:31:35Deduper成功0.1s{"processed":28,"clusters":21}
06/26 11:31:35Deduper开始-Step started
06/26 11:31:33Normalizer成功0.1s{"processed":21,"created":21}
06/26 11:31:32Normalizer开始-Step started
06/26 11:31:30Source Watcher成功90.9s{"fetched":766,"new":21,"skipped":0}
06/26 11:30:00Source Watcher开始-Step started
06/26 11:01:25Reviewer成功0.1s{"approved":8,"needs_human":0,"rejected":27}
06/26 11:01:25Reviewer开始-Step started
06/26 11:01:23Editor Agent成功0.0s{"processed":8}
06/26 11:01:23Editor Agent开始-Step started
06/26 11:01:21Ranker成功0.0s{"processed":35}
06/26 11:01:21Ranker开始-Step started
06/26 11:01:19Event Merger成功0.1s{"processed":35,"events":35}
06/26 11:01:18Event Merger开始-Step started
06/26 11:01:16Deduper成功0.1s{"processed":44,"clusters":35}
06/26 11:01:16Deduper开始-Step started
06/26 11:01:14Normalizer成功0.2s{"processed":35,"created":35}
06/26 11:01:14Normalizer开始-Step started
06/26 11:01:12Source Watcher成功72.6s{"fetched":796,"new":35,"skipped":0}
06/26 11:00:00Source Watcher开始-Step started
06/26 10:31:58Reviewer成功0.1s{"approved":5,"needs_human":0,"rejected":25}
06/26 10:31:58Reviewer开始-Step started
06/26 10:31:56Editor Agent成功0.0s{"processed":5}
06/26 10:31:56Editor Agent开始-Step started
06/26 10:31:54Ranker成功0.0s{"processed":30}
06/26 10:31:54Ranker开始-Step started
06/26 10:31:52Event Merger成功0.0s{"processed":30,"events":30}
06/26 10:31:52Event Merger开始-Step started
06/26 10:31:50Deduper成功0.3s{"processed":36,"clusters":30}
06/26 10:31:50Deduper开始-Step started
06/26 10:31:48Normalizer成功0.1s{"processed":30,"created":30}
06/26 10:31:48Normalizer开始-Step started
06/26 10:31:46Source Watcher成功106.4s{"fetched":766,"new":30,"skipped":0}
06/26 10:30:00Source Watcher开始-Step started
06/26 10:02:04Reviewer成功0.1s{"approved":6,"needs_human":0,"rejected":20}
06/26 10:02:04Reviewer开始-Step started
06/26 10:02:02Editor Agent成功0.0s{"processed":6}
06/26 10:02:02Editor Agent开始-Step started
06/26 10:02:00Ranker成功0.0s{"processed":26}
06/26 10:02:00Ranker开始-Step started
06/26 10:01:58Event Merger成功0.1s{"processed":26,"events":26}
06/26 10:01:58Event Merger开始-Step started
06/26 10:01:56Deduper成功0.1s{"processed":34,"clusters":26}
06/26 10:01:56Deduper开始-Step started
06/26 10:01:54Normalizer成功0.2s{"processed":26,"created":26}
06/26 10:01:54Normalizer开始-Step started
06/26 10:01:52Source Watcher成功112.4s{"fetched":746,"new":26,"skipped":0}
06/26 10:00:00Source Watcher开始-Step started
06/26 09:32:10Reviewer成功0.1s{"approved":7,"needs_human":0,"rejected":14}
06/26 09:32:10Reviewer开始-Step started
06/26 09:32:08Editor Agent成功0.0s{"processed":7}
06/26 09:32:08Editor Agent开始-Step started
06/26 09:32:06Ranker成功0.0s{"processed":21}
06/26 09:32:06Ranker开始-Step started
06/26 09:32:04Event Merger成功0.0s{"processed":21,"events":21}
06/26 09:32:04Event Merger开始-Step started
06/26 09:32:02Deduper成功0.1s{"processed":29,"clusters":21}
06/26 09:32:02Deduper开始-Step started
06/26 09:32:00Normalizer成功0.1s{"processed":21,"created":21}
06/26 09:32:00Normalizer开始-Step started
06/26 09:31:58Source Watcher成功118.5s{"fetched":737,"new":21,"skipped":0}
06/26 09:30:00Source Watcher开始-Step started
06/26 09:01:59Reviewer成功0.0s{"approved":4,"needs_human":0,"rejected":14}
06/26 09:01:59Reviewer开始-Step started
06/26 09:01:57Editor Agent成功0.0s{"processed":4}
06/26 09:01:57Editor Agent开始-Step started
06/26 09:01:55Ranker成功0.0s{"processed":18}
06/26 09:01:55Ranker开始-Step started
06/26 09:01:53Event Merger成功0.0s{"processed":18,"events":18}
06/26 09:01:53Event Merger开始-Step started
06/26 09:01:51Deduper成功0.1s{"processed":23,"clusters":18}
06/26 09:01:51Deduper开始-Step started
06/26 09:01:49Normalizer成功0.1s{"processed":18,"created":18}
06/26 09:01:49Normalizer开始-Step started
06/26 09:01:47Source Watcher成功107.0s{"fetched":776,"new":18,"skipped":0}
06/26 09:00:00Source Watcher开始-Step started
06/26 08:31:22Reviewer成功0.1s{"approved":13,"needs_human":0,"rejected":19}
06/26 08:31:22Reviewer开始-Step started
06/26 08:31:20Editor Agent成功0.0s{"processed":13}
06/26 08:31:20Editor Agent开始-Step started