用 sqlite3 直接查 agent/data/agent.db 实测每条数据通路的体量、鲜度、判重健康、5 主线覆盖、已知问题,
给每个源一个 9 维质量评分 + 一句话定级。这个页面回答两件事:
(A) 我们现在在吃哪些料、各自吃了多少;(B) 这些料里哪些是干净的、哪些有暗坑要修。
每张卡 4 个 KPI(量 / 鲜度 / 通路 / 覆盖) + 3 项质量 grade(量级 / 鲜度 / 准确性) + 最关键的一句话定级。有暗坑的源会单独出 ⚠ 已发现 红框, 直接对应 §3 的问题清单。
expert/X/data/x.sqlite3 3140 行 / 78 账号 / 时间跨度 2020-09 → 2026-04;
launchd 03:00 daily 已在岗 (任务 com.invesresearch.x-ingest);
5 主线覆盖 4/5:核心网 14 / 运营支撑 11 / 终端 2 / 芯片 1 / 运载发射 0(国外火箭账号未在 seed)。
occurred_at 字段直接吃了 Twitter 原始格式 "Wed May 20 13:00:33 +0000 2026",
不是 ISO8601 → 窗口查询 / 排序 / decide() 7d/30d 窗口都会按字符串排,排出来的不是真正时间序。
expert/data/harnessfarm/real_ingest_cases.jsonl (续 12 vendor 自 public/),
205 case,A 路 (scripts/import_harnessfarm.py) 灌进 events 124 条 + C 路 (sources/harnessfarm.py) 1 条;
5 主线分布:核心网 +69 / 终端 +79 / 运营支撑 +49 / 芯片 +18 / 运载发射 +3。
自带 expected_analysis.mainline / thesis_impact 跨产线 ADVICE baseline (threads 30% partial 60% / impact 43%)。
JsonlSource 读时, RawEvent.source 字段被 publisher 名(AST SpaceMobile / Apple / MediaTek …)覆盖了"HarnessFarm · "前缀
→ 反查时按 url 域名才能挑出来, 不能 LIKE 'HarnessFarm%'。
expert/data/shock_events/events.csv (续 12 vendor 自 public/),
21 条策展冲击事件 (2021-2026),严重性高/中 each;impact 源层硬编码 削弱 (全负面);
5 主线分布:运载发射 15 (NG-4 / NG-3 / Starlink G9-3 / Virgin Orbit / Astra / Firefly) /
核心网 5 (Starlink 地磁暴 40 颗 / ViaSat-3 / Intelsat 33e) / 运营支撑 1 / 终端 1。
HarnessFarm 偏强 94% + ShockEvents 全弱 100% → 互补 thesis 评分幸存者偏差。
agent/config/rss_feeds.json 2 feed:SpaceNews enabled(每次抓 ~24 items,关键词过滤后 ~10 入库) /
Satellite Today disabled (Fastly Varnish 403 anti-bot,UA/cookies 都被 block)。
中文产业站(工信部 / 通信世界 / 通信产业网)2020 后 RSS 全部下架(404 或返 HTML)。
CLI satagent fetch --source rss --config agent/config/rss_feeds.json 通,但暂未挂 cron。
agent/samples/ 4 份 jsonl 总 185 条 ground truth:
labeled_validation.jsonl 96 条 (P0-C 3/4 扩 · 5 主线全覆盖) ·
labeled_real.jsonl 26 条真实集 (macro F1=0.857) ·
labeled_regression.jsonl 31 条 ·
labeled_global_satellite_internet_202606.jsonl 31 条全球。
外加 labeled_harnessfarm_v1.jsonl 205 条跨产线。
satagent ingest --source 公司公告 --text "..." --url ... 单条投。
SEED_COMPANIES:wiki entities → 47 家公司(20→33→47 三次扩, commit a55745d / 4bdc4a8) ·
(2) ontology.py:wiki concepts → 词典 +15 词 + 第 5 主线 LAUNCH_VEHICLE +103 词(commit 83c56b6 / 4bdc4a8) ·
(3) samples/labeled_validation.jsonl:wiki timeline → 10→96 条 sub-agent 标注(commit 2c2f631)。
P0-C 4/4 (people → NER 词表) ROI 低留长尾。
把 6 个 Source + 1 wiki 种子层在 9 个质量维度上横向打分。 ✅ 强 · ◐ 中 · ⚠ 弱 · ⏸ 不适用。 最右一列是综合定级,对应 §1 详卡的一句话定级。
| 源 | 量 | 鲜度 | 通路 | 覆盖 | 跨度 | 成本 | GT | 判重 | 问题 | 定级 |
|---|---|---|---|---|---|---|---|---|---|---|
| X-SQLite | ✅ 368 | ✅ daily | ✅ cron | ◐ 4/5 | ✅ 5y+ | ✅ 自动 | ⏸ 无 | ✅ url+ts | ⚠ 日期 | 中 |
| HarnessFarm | ✅ 125 | ⚠ 冻结 | ✅ 双入口 | ✅ 5/5 | ✅ 跨年 | ✅ 文件 | ✅ 自带 | ✅ | ◐ src 字段 | 强 |
| ShockEvents | ◐ 20 | ⚠ 冻结 | ✅ 双入口 | ✅ 5/5 | ✅ 5y | ✅ 文件 | ✅ 人工 | ✅ | ✅ 无 | 强 |
| RSS | ◐ ~10/抓 | ✅ 实时 | ◐ 1 enabled | ◐ 仅英文 | ✅ 近期 | ✅ 自动 | ⏸ 无 | ✅ | ⚠ 中文断 | 中 |
| JSONL | ✅ 185 | ⚠ 静态 | ✅ | ✅ 5/5 | ✅ | ✅ | ✅ 标注 | ✅ | ✅ | 强 (corpus) |
| Text | ⚠ 8 | ⚠ 手贴 | ◐ CLI 单条 | ◐ 4/5 | ◐ 7d | ⚠ 人工 | ⏸ 无 | ✅ | ⚠ 无模板 | 弱 |
| Wiki 种子 | ✅ 1.4K+ | ◐ 06-07 灌 | ✅ build | ✅ | ✅ | ✅ | ✅ | ⏸ 不运行时 | ✅ | 强 (build) |
| 合计 (6+1) | 521 events | 1 daily cron | 4 live | 5/5 主线 | 2018-2026 | cron+文件 | 3 源带 GT | url+ts 全开 | 5 个待修 | — |
把这次摸底过程中发现的 5 个数据质量问题摊开, 每个都给:现象 / 影响 / 修复方案 / 优先级。 P0 直接影响 decide() 正确性, P1 影响产品覆盖, P2 是体验 / 可维护性。
created_at 字符串 "Wed May 20 13:00:33 +0000 2026" 直接当 occurred_at 写入 events 表。sources/x_sqlite.py 加 _to_iso() 用 email.utils.parsedate_to_datetime 转 ISO + RawEvent 构造调用;
agent/scripts/backfill_x_occurred_at.py 一次性 UPDATE 历史 368 条 (幂等 / 真跑成功 / 复跑 0 行);
test_x_sqlite_source.py +2 单测 (test_occurred_at_normalized_to_iso 强制 ISO + test_to_iso_helper_pure 4 形态);全仓 361→363 passed。
agent/config/rss_feeds.json 里中文 feed 全部 enabled=false 留存档。
4bdc4a8 才加的,X-SQLite 没补齐就导致 thesis 评分里 运载发射 完全靠 HarnessFarm + ShockEvents 撑;
一旦那两个 fixture 集没新增,运载发射就实时数据 0 信号。
expert/X/scripts/scrape.py 的账号清单加 12-15 个国外火箭账号(@SpaceX / @rocketlab / @blueorigin / @Firefly_Space / @virgin_orbit / @relativityspace 等)
+ 国内火箭(@iSpaceCN / @LandSpace 等);ontology 已经有运载发射词典支持。预计 半天。
scripts/import_harnessfarm.py 用 JsonlSource 读 HarnessFarm jsonl 时,
RawEvent.source 字段被 jsonl 里的 publisher 名(AST SpaceMobile / Apple / MediaTek …)整个覆盖了,
丢了"HarnessFarm · "前缀。C 路新 source 已修。
WHERE source LIKE 'HarnessFarm%',要按 url 域名(apnews/techcrunch/cnbc)挑;
报表 / 数据视角面板的 "数据源" 分布饼图会把 HarnessFarm 拆成 N 个小切片。
'HarnessFarm · ' ;
或者 接受现状(不影响 decide() 正确性, 只影响反查 UX),作为"已知历史伤疤"留着。
建议后者。预计 5 分钟 / 接受。
satagent ingest --text "..." --source 公司公告 --url ... --occurred-at ...;
operator 看新闻 → 切终端 → 拼参数 → 跑命令,一条事件十几秒。
skills/text-ingest-template:URL → title / source / occurred-at 抽取模板 + 5 行复用脚本。
预计 2-3 天 (含飞书 bot)。
把 §3 的 5 个问题排进时间线, 同时把后续接入候选(MDA / VOYG / CRS / SpaceX briefing)放进 中期。近期把 P0 #1 X-SQLite 日期格式先修, 这是 70% events 时间字段的正确性问题。
public/HarnessFarm-skills/ 13 个目录 + public/HarnessFarm-satellite-agent/ 1 个 + 顶层 5 zip + 1 xlsx,共 20 项(续 12 补全)。
按状态分类:✅ 入源 / vendor · ⏳ 待接入 · ⏸ 冗余备份。
续 11 vendor 4 工具;续 12 解耦 2 运行时数据到 expert/data/;
续 14 写 InvestorManifestSource 通杀 4 投资者 manifest,events 521 → 855 (+334)。
当前 12/20 = 60%(6 入源 / 4 工具 vendor / 2 冗余备份)。
剩 6 待接入 (VOYG-cust 295 行 source_date 全空 0 入 / HAWK-LUNR / SpaceX briefing / 4 顶层归档),
路线 B LLM 抽取处理时间缺失类。
| 目录 | 状态 | 体量 | 说明 |
|---|---|---|---|
| HarnessFarm-satellite-agent/ | ✅ 入源 + vendor | 205 case | 另一个并行 4 主线 satellite-agent (LeadResearchAgent + LLMFactExtractionAgent + source-backed corpus) C 路 HarnessFarmSource 接入 · 续 12 解耦: jsonl 从 public/ 副本到 expert/data/harnessfarm/,source 默认 path 已切;public/ 副本可删 |
| commercial-space-...-shock-events/ | ✅ 入源 + vendor | 21 events | 人工策展 21 条近 5 年商业航天冲击事件 csv D 路 ShockEventsSource 接入,入 events 20 条 · 续 12 解耦: csv 从 public/ 副本到 expert/data/shock_events/,source 默认 path 已切 |
| collect-investor-meeting-materials/ | ✅ vendor | 672 行 | 投资者会议 (earnings/IR/AGM/conference/webcast) → expert/collectors/investor/satagent collect investor --companies "RKLB Rocket Lab, ..." · 一次一家迭代 · 产物落 agent/data/collected/investor/<run-ts>/ |
| collect-customer-intelligence-materials/ | ✅ vendor | 308 行 | 客户合同 / 招投标 / usaspending awards 抓取 → expert/collectors/customer/satagent collect customer --companies "VOYG Voyager Technologies" · 一次一家迭代 |
| international-financial-reports/ | ✅ vendor | 586 行 | 非美上市公司财报 (年报 / 半年报 / 季报) → expert/collectors/intl-reports/satagent collect intl-reports --discover-only · 硬编码 ETL/TSAT/GILT |
| sec-filing-downloader/ | ✅ vendor | 908+378 行 | SEC EDGAR 10-K / 10-Q / 修订 / IPO 历史 → expert/collectors/sec/satagent collect sec --companies "RKLB Rocket Lab, PL Planet Labs" · 一次多家 · smoke 通 · 12KB zip 产出 |
| commercial-space-...-shock-events-source-materials/ | ⏳ 待接入 | 53 行 + 50 原文 | shock-events 的原始素材库 — 37 news URL records + 13 官方 html 素材已被 events.csv 抽完,接入价值低,留作"事件 → 原文"反查通路 |
| crs-investor-meeting-materials/ | ✅ 入源 | 100 → 92 events | Carpenter Technology Corporation (CRS, NYSE) 投资者会议资料包 续 14 InvestorManifestSource schema A · ingested 92 (7 FAIL filtered) |
| mda-investor-meeting-materials/ | ✅ 入源 | 192 → 94 events | MDA Space Ltd. (TSX:MDA) 投资者会议资料包 续 14 InvestorManifestSource schema A · ingested 94 (94 FAIL filtered, MDA 早年材料挂多) |
| mda-voyg-crs-financial-agent-output/ | ✅ 入源 | 165 → 107 events | MDA + VOYG + CRS 三家 financial-agent 统一 manifest 续 14 InvestorManifestSource schema C · ingested 107 · 用 fiscal_year+period 推季末日期 |
| voyg-investor-meeting-materials/ | ✅ 入源 | 63 → 41 events | Voyager Technologies (VOYG, NYSE) 投资者会议资料包 续 14 InvestorManifestSource schema A · ingested 41 (21 FAIL filtered) |
| voyg-customer-intelligence-materials/ | ⚠ 0 入 (无日期) | 296 → 0 events | VOYG 客户情报 — usaspending normalized awards 续 14 InvestorManifestSource schema B · ingested 0 · 295/295 行 source_date 全空 → 全 filtered. 下轮路线 B LLM 抽 PDF/JSON 推断时间 / 或加 fallback date 参数 |
| hawk-lunr-report-packages/ | ⏳ 待接入 | 717 KB | HAWK + LUNR 报告包 (两家 SPAC / IPO 公司, 含 ISR 卫星 / 高超声速等) zip 内文未解压看, 接入前需 unzip 确认 schema |
| spacex-orbital-ai-compute-briefing/ | ⏳ 待接入 | PDF + PPTX | SpaceX 轨道 AI 计算 S1 简报 — 单份长文档 单份 PDF/PPTX, 人工 review 挑句 / 走 Text 源单条投比写 Source 划算 |
| ↓ 续 12 摸底新发现 · public/HarnessFarm-skills/ 顶层 6 个零散归档(之前 §5 漏列) | |||
| MDA_完整中文投研分析报告.xlsx | ⏳ 高价值 | 66 KB | ⭐ 中文投研报告 — MDA Space 的中文版完整投研分析,跟 wiki 知识库结构最接近 路线 B · LLM 抽取走 expert-wiki-ingest pattern · 优先级高于一般 PDF |
| MDA_Interim_Quarterly_Reports.zip | ⏳ 待接入 | 6 MB | MDA 季度财报合集 zip — 跟 mda-investor-meeting-materials/ 互补路线 B · 或解压后用 sec-filing/intl-reports 模式 |
| VOYG⭐️.zip | ⏳ 待接入 | 16 MB | VOYG (Voyager Tech) 全量归档 — 跟 voyg-investor + voyg-customer 三向重叠 路线 A/B · 先解压看内容再决定 |
| orbit-wars.zip | ⏳ 待接入 | 7 KB | 轨道战争(地缘政治冲突)主题归档,7 KB 体量很小 路线 C 候选 · 体量小可直接 Text 单条投 |
| commercial-space-...-shock-events.zip | ⏸ 冗余 | 17 KB | 上方 commercial-space-...-shock-events/ 目录的 zip 副本已被 ShockEventsSource 集成, zip 形式无须再接, 可视为归档备份 |
| commercial-space-...-shock-events-source-materials.zip | ⏸ 冗余 | 7.8 MB | 上方 commercial-space-...-shock-events-source-materials/ 目录的 zip 副本原素材的 zip 形式, 跟目录形式同源, 可视为归档备份 |
续 12 全摸底发现 public/ 总 480 MB,删除影响 5 类: (1) 4 工具 vendor 副本(可删 · 已在 expert/collectors/)· (2) 2 数据 vendor 副本(本轮已解耦 → expert/data/,public/ 副本可删)· (3) 8 待接入内容包(共 ~145 MB,删了就丢)· (4) 6 顶层零散归档(本表新增 4 行 + 2 冗余备份)· (5) ~290 MB upstream git history(原是 HarnessFarm/-skills.git clone,删了下次 git pull 拉新内容要重 clone)。 推荐分阶段:本轮先解耦 2 数据 + 文档化 6 漏列;public/ 保留作为 upstream snapshot,后续 8 内容包按路线 A/B/C 处理完, 才考虑彻底删。
把 8 个待接入内容包按结构化程度分类,各自走不同的 Source 模式,不要一份份手写 7 个 source.py。
5 个 *_manifest.csv 共 916 行 (CRS 100 + MDA 192 + VOYG inv 63 + VOYG cust 296 + mda-voyg-crs 165), schema 一致(company / ticker / period / event_date / source_url / material_type)。 写 1 个 Source 通杀, 公司 / 事件类型枚举映射在 source 层。
财报 PDF / 投资者 PPTX / SpaceX briefing 这类半结构化长文,不能直接入 events 表(信息密度太低 / 一条事件占好几页)。 走 wiki ingest 抽 entities / concepts / timeline, 再走 seed importer 灌进 SEED_COMPANIES / ontology / labeled_validation。
(1) shock-events 原素材 — 已被 events.csv 抽完, 接入价值低, 留反查通路即可; (2) HAWK/LUNR zip — 未解压看 schema, 公司不在 SEED_COMPANIES 47 家里, 优先级低; (3) SpaceX briefing — 走 Text 源单条投比写 Source 划算。