PERSONAL INTELLIGENCE PIPELINE · 架构与数据流
公开情报系统:从采集到发布
当前生产系统的组件架构、数据流、存储模型、调度策略与失败路径。 统计值在构建时直接读取项目 YAML,不是运行时监控指标。
01 / ARCHITECTURE
组件架构与控制流
schedules.yamlcollect · research · analyze · report/v1/*items · analyses · reports只读采集primary → fallbackreader-v4 JSON schemabuild → deploy → GET verify控制面由 Multica 触发,数据面由固定采集器和 Worker API 执行。模型不直接写 Git 或 D1;写入经过 Schema、幂等键和发布门禁。
02 / SEQUENCE
一次完整运行:输入、处理、输出
- 1
调度与到期查询
每 30 分钟触发
collect-due。Worker 根据enabled、interval_minutes、last_checked_at返回到期频道;overlap=skip 防止任务重叠。- Input
- catalog + channel cursor
- Output
GET /v1/channels/due
- 2
固定路由采集
每个频道绑定明确的 collector 与参数模板。MCP 绑定预先验证;主方式失败时按配置尝试 fallback,不在运行时临时选择供应商。
- 启用采集器
- MCP 20 · RSS 4 · GitHub API 5 · HTTP 2
- Output
CollectionPage(items, next_cursor)
- 3
标准化、时间证据与去重
统一 URL、正文和时间。去重顺序为
channel + external_id→ canonical URL →channel + content_hash。目录页只作线索,正文和发布日期未核验前不得进入报告。- Write
POST /v1/items/batch- 游标
- 写入成功后才推进
- 4
正文补全与待分析队列
研究任务补抓完整正文、最终 URL 和发布日期证据。只允许近 72 小时、正文完整、非 discovery-only、且当前 content revision 尚无分析的条目进入队列。
- Read
GET /v1/items/pending-analysis- Guard
content_revisioncompare-and-swap
- 5
结构化分析
模型阅读全文并返回严格 JSON:headline、summary、key_change、why_it_matters、importance、confidence、topics、watch_next 和逐事实 evidence。importance(1–5)与 confidence(0–1)仅用于内部排序。
- Validate
analysis-batch.schema.json- Write
POST /v1/analyses/batch
- 6
确定性选稿与生成
按重要度、置信度和时间排序,再按 item ID 与来源 URL 去重;最多 12 条,其中最多 3 条重点。午间版只收 importance ≥ 4;无有效新内容则 skipped。
- 窗口
- 08:15 / 12:45 / 18:45 / weekly 7d
- Output
content/posts/intelligence/*.zh.md
- 7
发布门禁与线上验收
检查公共来源、证据、敏感信息、Front Matter、Hugo 构建、Git diff 和允许路径;之后提交并推送。Actions 成功后仍会 GET 页面并核对 64 位 artifact 指纹。
- Status
- draft → validating → ready → published
- Failure
- 保留草稿并记录 Run / Issue
03 / STORAGE
D1 核心数据模型
targets 1 ── N channelschannels 1 ── N itemsitems 1 ── 1 analysesreports N ── N itemspipeline_runsaudit_events| 表 | 保存内容 |
|---|---|
channels | 采集配置、游标、最近成功/错误、连续失败次数 |
items | 原始条目、正文哈希、发布时间、来源元数据 |
analyses | 结构化分析、模型、提示词版本、证据 |
reports | 窗口、版次、Markdown、状态、提交和 URL |
04 / SCHEDULE
生产调度
| Job | 频率 | 作用 |
|---|---|---|
collect-due | */30 min | 采集到期频道 |
analyze-pending | hourly :05 | 补全并分析 |
morning | 08:30 | 早报 |
midday | 13:00 | 高重要度快讯 |
evening | 19:00 | 晚报 |
weekly | Sun 20:00 | 7 天周报 |
时区:Asia/Shanghai。调度与报告策略分别保存在 schedules.yaml 和 report-policy.yaml。
05 / FAILURE PATHS
失败时系统如何收敛
primary → fallback → retry / last_error → health review
discovery_only / rejected → enrichment → max attempts
one repair retry → run failed → exact error in issue
stop → keep draft → preserve Git/D1 evidence → no duplicate run