v0.45.0 · 港股卫星篮子 + 币种守卫 + 开发流程误报修复 · 1597 tests · 2026-08-03

开发计划
& 记录

Satellite Agent 的路线图、当前排期与逐会话开发记录。每次开发会话结束后在 开发记录 顶部追加一节。路线图变更时同步更新排期。
版本
v0.45.0
agent Tests
851
web-backend
669 · 🚀
Corpus
64.5%
事件归档
995
自动化
在线
01 · 系统现状

当前运行状态

阶段 A 全量在线:每 6h 数据刷新 + 每日中文日报 + 周一决策周报 + 失败自动告警。中文产业活水受 GFW 架构约束,通过 operator 桥接入。

⚙️

自动化任务

GitHub Actions · 阶段 A 四个 workflow
data-refresh每 6h · 持续运行
daily-feishu每日 UTC 00:37 · 中文日报
weekly-feishu周一 01:37 · 决策周报
failure-alertworkflow 失败→飞书红卡
飞书双通道 v0.6.1 · WEBHOOK_EXTRA
daily-report 落盘cron 链尾 hook · by_source 段
📡

数据源 · 761 条归档

英文 RSS 活水 + 静态种子 + operator 桥
来源条数类型
wiki-timeline 487 静态历史
HarnessFarm 125 静态种子
SpaceNews 48 RSS 英文
SatNews 41 RSS 英文
Space Intel Report 14 RSS 英文
Spaceflight Now 11 RSS 英文
European Spaceflight 9 RSS 英文
ShockEvents 20 静态种子
国家航天局 CNSA 6 operator 桥
X 推文 (待接入) 0 代码已建 待 operator
🏗

架构概览

数据源层 → 处理层 → 输出层 · 两条产品线不共享 schema
数据源层
RSS 英文源 ×4 wiki-timeline HarnessFarm ShockEvents InvestorManifest CNSA operator 桥 X operator 桥 (待)
处理层
ingest_pipeline.py classifier.py (rules-only) extract.py decide() valuation.py market_model.py llm.py (翻译/debate)
输出层
飞书日报 (中文 · 每日) 飞书周报 (双视角 · 周一) 实时看板 index.html agent/docs/live.html
基础设施
EH-1 jobs (SQLite 状态机) GitHub Actions (cron 调度) FastAPI (Bearer 鉴权) Prometheus /metrics failure-alert workflow
架构约束:GitHub Actions (美区 Azure IP) 被 GFW 封锁,无法直接抓中国 gov/SOE 站。中文信号只能走 ① operator 桥(本机抓 + commit JSONL)或 ② 阶段 B 中国服务器。  |  两条产品线agent/ = Satellite Agent (events/companies/threads schema,已在线);web/ = InvesResearch Agent (纸面 PRD,未开工)。
📊

质量指标 · 当前基线

corpus 63.1% 已到自然终点 · 停止进一步攻坚
Corpus
63.1%
警戒 <55%
盲测集
0.68
警戒 <0.60
合成集
1.00
不可破
agent Tests
700
0 回归
已明确停止:LLM 覆盖分类(v22/v23 净减分)· threads 侧千帆组网修复(两份标注集口径冲突,续 37/41 两次实证)· 进一步质量攻坚(剩余失败多为标注哲学不一致)
🏢

公司种子库

SEED_COMPANIES 92 家 · 29 verified (2026Q1 财报核实)
核心网4 家 verified
终端6 家 verified
芯片4 家 verified
运营支撑13 家 verified
运载发射2 家 verified
芯片/运载发射 verified 上限低是结构性约束 — 这两线 SEED 几乎全是未上市民企,无公开季报可核实
02 · 路线图

三个 Tier 分级

Tier 1 我可独立推进;Tier 2 需 operator 一次性动作(代码已就绪);Tier 3 战略级有触发条件。

1

我可独立推进

无外部依赖,可随时启动。代码改动 + 测试 + 推送即可完成。

SELF-CONTAINED
T1-A · P0

InvestorManifest 0 命中修复

第 7 数据源灌入 +334 events 但命中主线 0 条。根因:SEED 缺美国公司 + VOYG source_date 全空。
待启动0.5 轮P0 最高优
T1-B · P1

daily-report 看板趋势视图

daily-report action 已落盘,看板尚无历史趋势视图。加近 7 日主线热度折线/条形图。
待启动0.5 轮P1
T1-C · P2

FE Round 2 · D
公司 segments 维度

公司卡片加分部 segments 字段(与种子库扩容合并,避免二次迁移 schema)。
规划中1 轮
T1-D · P2

FE Round 2 · E
3 层叙事 / 敏感度传导

决策报告加 3 层叙事结构 + 关键假设敏感度数学传导(Brett Caughran 方法论)。
规划中1 轮
T1-E · P2

FE Round 2 · F
数据来源 Ledger

每条判断挂来源 ledger + 冲突对账,让决策报告可追溯、可质疑。
规划中1 轮
T1-F · P3 长尾

wiki/people → NER 词表

expert/wiki 63 位人物 → extract.py NER 词表扩充。ROI 低,在主线跑通后再做。
低优0.5 轮
2

需 operator 一次性动作

代码已完整建好,仅差 operator 本机执行脚本 + commit。

OPERATOR NEEDED
T2-A

X 轻量桥上线

export_x_events.py 代码已完整建好(续 40)。operator 本机跑导出脚本 + commit JSONL,X 信号自动进日报 + 看板。每次 2 分钟。
代码半完成等 operator高价值
T2-B

CNSA operator 桥维护

首批 6 条已入库(续 47)。需 operator 定期在可达网络执行 export_cnsa_events.py + commit,维持中文 gov 信号。
首批已入定期维护
T2-C

阶段 B 服务器
(阿里云 2C2G)

解锁三件 serverless 做不到的事:X 信号常驻入库 / 运营态持久化 / live API 秒级实时。setup_server.sh + bootstrap 脚本已就绪。
按需operator 半天装机触发条件见下
3

战略级 · 有触发条件

不为没人用的功能先做。触发条件到了照计划走。

CONDITIONAL
T3-A

SQLite → Postgres

触发条件:多用户同时写入时。设计已完成(postgres-migration-design-2026-06-17.md)。现在 SQLite 完全够。
待命数轮
T3-B

expert wiki 双向闭环

X 每日推文 NER 命中 → 回写 wiki/entities/*.md 的"X 动态"段。代码半建成(wiki_index.py + x_to_wiki.py)。
代码半建X 信号稳定后
T3-C

debate → LangGraph

当前 debate.py skeleton 够用。LangGraph checkpointer 在复杂任务拆解需求出现时再做。
远期
T3-D

agent CLI → FastMCP

web 端 M2/M3 共建时顺带迁移。当前 CLI 形态满足所有场景。
远期
T3-E

web 端 M1 数据层启动

InvesResearch Agent 第二条产品线。触发条件:Tier 1-2 技术栈对齐完成后,启动成本大幅降低。当前纸面 PRD。
远期依赖 Tier 2
T3-F

agent 多市场延伸

框架可复用到低空经济 / 储能 / 人形机器人。关键是 ontology.py 领域无关化。卫星主线稳定运营后再说。
远期
03 · 当前排期

现在做什么

近况(2026-08-03)v0.45.0 港股卫星篮子 + 行业聚合币种守卫 + 开发流程误报修复 —— 收口版,补上市场版图最后一块。两块:① 港股卫星篮子 satellite_hkHK:01045 亚太卫星 · HK:01725 洲际航天科技 · HK:00031 航天控股,卫星专题从「美股 + A股」补齐成三市场)—— 这条曾在 v0.41.0 因「港股主业标的只有一只、不成篮子」而诚实留白,今年板块扩容后条件满足才补上;配套前置修复行业聚合缺失的币种守卫,因为港股内地公司普遍「港币交易、人民币披露」,不修就会拿 HKD 市值除 CNY 净利、并把 CNY 营收直接加进 HKD 合计(实测合计会从 48.16 亿错成 54.58 亿)。守卫沿用既有规则「不硬算错数」:异币种成分倍数置空、不计入合计、列进 agg.fx_excluded 显式披露,刻意不做汇率折算② Stop 钩子 git 检查两处误报修复(开发工具)—— 检查范围收窄到 origin/main..HEAD,不再把 main 上他人已合并的公开提交(实测一次点名 187 条)当成待修提交并建议 rebase --reset-author;同时修掉「SSH 签名 + 未配 allowedSignersFile → 每个正确签名的提交都被判 Unverified」。测试 1597(web-backend 669 + agent 851 + cli 77),另加开发工具离线测试 19 条断言。本版起恢复 GitHub Actions 自动发版(额度 2026-08-03 实测已恢复)。

更早(2026-07-26)v0.44.0 命令行客户端 + 全站英文版 + 系统架构页 —— 主线是「让这套东西能被别人用、也能被别人看懂」。四块:① npm 包 invesresearch(零依赖 MIT、Node ≥18、21 条命令,npx invesresearch quote NVDA 即用;它不是第四个服务、只是两个已公开只读接口的瘦客户端,所以不碰任何凭证)· ② 全站英文版(低侵入 i18n 引擎按中文原文整串查字典替换界面文案、浏览器自适应 + 手动切换并记忆;711 条词条覆盖看板/工作台/卫星四页/CLI 页/架构页;动态数据不进字典)· ③ 两个新页面/cli 命令行专页 · /how-it-works 系统架构全景页,含手写内联 SVG 全景图 + docs/ARCHITECTURE.md,只写已在生产跑着的部分)· ④ 秒开与数据面(SWR 本地缓存推广到卫星四页/看板 K 线/工作台公司调研;事件流三层扩容后稳定 100 条〔52 条英文〕)。另修三起生产问题:空库被换上生产〔磁盘满 + 页缓存假绿,加 --fail-if-empty 硬保护〕· 板块预警阈值分数/百分数混用致横幅近乎常亮且显示「中位 -457.5%」〔656 个测试全绿是因为测试把同一个 bug 一起编码进去了〕· 重建命令漏 -f 时 compose 捡走另一份默认配置、不透传 LLM key 致静默降级〔本次自己造成的,已加 deploy/rebuild.sh 根治〕。测试 661 + 841 + 77 = 1579 · 后端 pulse 修复需 ECS rebuild。v0.43.0 首页看板实时化 + 实时 K 线行情 —— 起因巡检首页看板发现 CEO Brief 异常(主线评分全 0、如何崩塌空、反方矛盾无链接),追根到「看板一直走每日静态快照、agent 决策后端从未上公网」。三块:① 看板实时化(把 satellite_agent.api 部署为公网只读服务 agent.oaf.world:Docker service + Caddy 只读 GET 白名单〔写端点 404〕+ SQLite 库每小时 cron 刷新〔灌库 + 换库前自动配证伪触发器/看熊清单〕· 看板默认接 live、不可达静默回落每日快照 · CEO Brief 三 bug 修〔主线评分读 current 归一 · 如何崩塌/反方矛盾 linkify〕· 证伪 4 块只在 CEO Brief 不在投资 Brief · cron_agent re-exec 防「运行中脚本被改写」)· ② 实时 K 线行情(首页顶部蜡烛 K 线面板 12 标的〔SpaceX/亚信安全/亚信科技等 美股/A股/港股/科创板〕+ 市值/PE 币种感知〔$/¥/HK$、跨币种/亏损/缺数诚实标注〕+ 时间轴 1M~Max 到上市以来/bars 上限 500→7300〕+ 长序列改面积线 + 长区间失败多级回退近端)· ③ 议事厅识别不出标的(整句/未上市如 kimi)诚实报错、不再冒充「演示数据」· web-backend 648 tests · 后端 /bars+agent API 需 ECS rebuild(已上线)。v0.42.0 卫星互联网专题群 + 行业异动预警 —— 起因 7-17 SpaceX 发射失败牵动全板块股市、但 看板无预警(诊断两根因:日更快照太慢 + 无预警层)。补两块能力:① 行业异动预警 sector-pulse(新增 /sector-pulse突发高严重度事件〔板块成分 + SpaceX 作舆情风向标近 48h 新闻,规则判严重度、**只看标题**防误报——生产实测过「纳指大跌」大盘综述被摘要 plunge 误报〕+ 板块中位涨跌异动〔≤-3% 报警、≤-6% 严重〕两确定性信号合成,垣信/千帆·中国星网/国网·星舰星链走关键词监控〔未上市无 ticker 也预警〕、事件标题快模型翻中文,都不命中不报警**不制造警报**)· ② 卫星专题群四张深度看板全交叉互链(/spacex 行情/财务/SpaceX vs 卫星同业对比/护城河多空 + 与 mbabrand 品牌·舆情·创始人三维内联卡片 · /yuanxin 垣信·千帆星座〔未上市诚实留白〕· /xingwang 中国星网·国网 · /constellation 星座竞赛九强总览 + 发射·组网时间线)· ③ E2 监控完整指南/monitoring-guide 网页版)· web-backend 648 tests · 后端 /sector-pulse·/watch-news 需 ECS rebuild。v0.41.1 叙事分级热修 —— v0.41.0 把快模型 IR_LLM_MODEL_FAST 默认设成 anthropic/claude-haiku-4-5,但生产走自建 AIGW 网关(无直连 Anthropic key)打不通、且 /ask 路由未兜 LLM 调用异常 → 对话调研+新闻翻译 rebuild 后报错;修:① 默认改**留空回落主模型**(分级变纯 opt-in、行为不变,要省成本显式配网关自己的快模型名)· ② route() 包异常 LLM 失败诚实降级 unknown 不 500 · web-backend 633 tests。v0.41.0 2026 H2 路线图 B/C/D/E 一次发版 —— D 对话调研深化(多轮上下文 + 追问建议 chip + 财报意图,「它估值贵吗」承接上一轮标的)· C 覆盖面(白酒/家电 A 股行业篮子 + 港股卫星评估诚实留白只单列亚太卫星不硬拼 + HK/US 中文名扩 ~60 条 91→151)· B 数据深度(A 股财务字段补全 failover 接入行业/相对估值,配 TUSHARE_TOKEN 后 ROE·PB 出真数、无备源诚实留空 + 跨源校验扩面到 A 股)· E 运营(叙事分级:快模型 Haiku 走路由/翻译、主模型走深度叙事,控成本+提速不降质 + Prometheus/Grafana 监控叠加层,LLM 成本走 Langfuse 诚实标注)· web-backend 632 tests · 后端需 ECS rebuild。v0.40.2 QA 全功能巡检修复 —— 对看板+工作台所有功能点击/执行/验证(Playwright 全量错误巡检 0 未捕获异常 + 行为验证 + 真后端 curl),改正两处不起作用:① 护城河/多空 + 对话调研单标的 LLM 叙事全空(根因 max_tokens=512 太小、中文结构化 JSON 被截成半截解析失败,修为默认 1600 + IR_LLM_MAX_TOKENS env,rebuild 后生产实测 parse_ok=true);② 行业调研「生成行业研报」占位(新增 genIndustryReport() 用缓存聚合合成真研报进阅读页)。v0.40.1 搜索显示名补丁 —— 修 v0.40.0 生产实测发现的 /search?q=宁德 显示成 SZ:300750 而非「宁德时代」(先命中本地别名占位名、A 股名未回填);search_symbolsadd 改为 uid 已存在且原名占位时回填真名;uid/路由一直正确,仅显示名修正,生产 rebuild 后实测「宁德」→「宁德时代」。v0.40.0 全市场标的名称模糊搜索 —— 对话调研/⌘K 搜索原靠一张 ~50 条静态表把名称→uid 映射死,表外查不到;本版接数据源做全市场模糊搜索「没有的也能搜」:新增 GET /search(混合、实时为主+日缓存)——本地精选秒回 → 中文走 A 股全量中文名(baostock)→ 拉丁/代码走 港/美股 Yahoo(英文/拼音/代码);对话调研 /ask 加搜索兜底(命中即用、歧义列候选不硬猜),前端 ⌘K 本地即时 + 防抖调 /search 合并;铁律:名称是数据源事实非 LLM 猜、best-effort 失败回落本地;诚实边界:A 股中文名全量、港/美股英文·拼音·代码全量 + 精选中文名。v0.39.2 对话调研体验补丁 —— 修用户反馈两处:① 对话历史持久化(存本机 localStorage、留最近 40 条,进对话调研自动恢复、切视图/刷新/重开都在,加「清空对话」);② 修深链公司页误显英伟达(深链到未入库标的如智谱 HK:02513 时 hero 回落硬编码英伟达外壳,改 currentCompany():后端在线且未入库用真 uid 中性外壳、名走 displayName→智谱,纯模拟态才留英伟达 demo)。v0.39.1 对话调研oaf.world 首页 —— v0.39.0 上线的对话调研交互好,但埋在工作台里访客不一定找得到;本版把它搬到首页顶部:加对话调研提问框,用户一进站就能用自然语言问一句,回车/点「调研」→ 跳工作台对话视图自动作答(像 Perplexity 首页搜索框→结果页);问答逻辑仍只在工作台一处、首页只做提问框+深链、保持纯静态零后端。v0.39.0 对话调研接真 —— 工作台「对话调研」原为纯前端演示(写死占位 + 假回复),本版接到真后端:新增 POST /ask,用户随口问一句,LLM 只做意图路由 + 实体抽取(不产出任何数字),再按已解析到的标的数量分派既有确定性 skill——1 标的→护城河多空 /thesis、≥2 标的→横向对比 /compare、命中行业→板块聚合 /industry、都没有→诚实降级给候选;答复里数字全部来自这些 skill(真实报价+财报),名称→uid 走确定性查表 + 代码规范化、识别不到绝不让 LLM 猜代码;生产实测「烽火通信护城河如何」端到端跑通、存疑标记如实透传进研判。v0.38.0 行业板块 「预热缓存」 —— 投研工作台行业调研 / 跨市场板块这类重活视图(并发拉 N 只成分报价+财报聚合 + LLM 板块叙事,~10s+)原本每次点进都干等实时,本版做成缓存:先把结果持久化到 localStorage(跨刷新/会话,点进秒开、按需「↻ 刷新」),再叠一层服务端静态预算build_industry.py 每日 batch 写 web/data/industry/<key>.json + cron_industry.sh 提交 main → CF Pages),让缓存所有访客共享、始终预热(任何人首次点进就秒开、无需各自等一次);前端静态预热优先、与本地缓存取较新者、都没有才拉实时,头部标注来源(预热缓存 / 缓存 / 实时 · N 前);铁律照旧:数字确定性聚合缺数留白、叙事只 LLM 定性、预热文件 best-effort 可降级。v0.37.0 卫星互联网 跨市场板块 —— 工作台把卫星互联网美股 vs A股并排:各市场自下而上成分聚合的板块估值/规模(中位 PE/PB/ROE/毛利率、合计营收净利、CAGR、coverage 透明标样本数)+ 每市场 LLM 板块叙事 + 事件提及热度代理(明示口径)+ 顶线确定性 PE 对比;后端加 A 股卫星篮子 satellite_a(CNY 10 只精选、去非纯标的保可比),复用 /industry、两市场币种独立不混算;生产实测 A 股 10/10 覆盖、中位 PE 278.9(仅 4 家有效透明)、板块整体亏损诚实呈现;港股纯标的薄暂不单列。v0.36.2 每日复盘研判去单调 —— 修连日雷同的「今日看点/研判」(天天「买烽火通信」、而它 ⚠️数据存疑):① 换维度(今日看点改讲「今天变了什么」:升温最快主线热度 delta + 临近催化剂)+ ② 存疑不封王(DCF 只认数据可靠且正上行、无干净标的就诚实留白)+ ③ 盯盘每日轮换(`/compare` 输入天天变→研判随之不同);全部确定性计算、缺数留白。v0.36.1 运维稳态补丁 —— 修好每日复盘自动化两处根因:每日复盘核心 /compare 取数加重试(偶发读超时不再整篇拖垮日报,仅重试超时/连接/5xx·429)+ 六个 ECS 宿主 cron 分叉自愈pull --ff-onlyfetch→rebase→冲突则 reset,修 v0.36.0 发版暴露的分叉卡死);全为宿主脚本、ECS git pull 即生效。v0.36.0投研看板从只读升级为可探索的驾驶舱 —— 按《投研看板交互升级 PRD》三轮全上线、纯前端零新增后端:P0 全局切片条(时间窗/主线)+ 跨面板联动 + 列表下钻 + URL 深链(?w=&t=&c= 可分享视角)· P1 ⌘K 搜索 + 自选关注(localStorage)+ 趋势卡聚焦/悬停读数 + 矩阵排序 · P2 布局自定义(折叠/显隐/重排持久化)+ 对比模式(两主线并排比确定性指标);另 知识图谱进工作台(与看板同源)+ 发版自动化(cron_release.sh)。铁律:交互只切片不造数、缺数留白、无账号无 PII、离线可测。v0.35.0 补齐 PRD P2 余下三项——卷阁·付费库类型分类(按真实维度:报告解读+人物,不套虚构类型)、观点台(admin 专属最小静态版、空态不编、CF Access 网关后)、催化剂自动清过期(cron_static.sh);3D 按 PRD 暂缓。附 build_chain/build_narrative 宿主 3.6 兼容修复 + 3.6 lint 守护。至此 PRD P0+P1 五项 + P2 全部四项落地v0.34.0 对照 PRD 盘点后启动 P2 卫星叙事股票池(方法论/锚定标杆/三梯队/催化剂 + 优先议事联动),并补齐线框细节(议事厅战绩榜+虚拟净值、A股缺季度降级年度、产业链图谱节点详情滑出);至此 PRD P0+P1 五项 + P2 叙事池全部上线;附 publish_release.py(VM 发版绕开 Actions)。v0.33.0 对标 podsai.ai 写出 PRD 后一口气落地 P0+P1 五项「让用户每天回来」机制 —— 议事厅(人格化多智能体研判 + 复盘记账战绩)· 财报/事件日历 · 公司页季度财报轴 + AI 财报快评 · 卫星互联网全产业链图谱 · 每日复盘上站(日报站内归档可回翻);同期把卫星 Agent 定时任务迁 ECS 省 Actions 额度。web-backend 541 tests、前端 93 条 Playwright 断言全绿;铁律(数字来自工具、缺数不编)自始至终守住。

更早(2026-07-07):06-25 后主线转到 web-backend 第二产品线 —— agent 侧发 v0.7.0(wiki NER 四向,700 tests 全绿);web-backend 从骨架推到 生产化全线上线(真实行情 + Claude Opus 4.8 叙事 + 阿里云海外 ECS 公网 api.oaf.world),详见 生产化交接页开发记录 最新条。生产化上线后连发 v0.9.0→v0.13.0:三市场(美/A/港)行情+财报+舆情+估值全 live、SSE 进度流、港股汇率修正、观测三件套(Langfuse + /metrics + 跨源校验);v0.13.0 把 web-backend 从「查单只票的工具」推成「产品」(自选列表、横向对比、每日研报定时推飞书、运营加固、公司名);v0.14.0 把 oaf.world 个股页从 demo 逐块真化 —— K 线(/bars)、顶部 KPI(现价/市值/PE/ROE)、舆情(真实新闻)、财务(利润表 + /financials/history 五年趋势 CAGR)全真。后端全程无状态。agent 侧那笔「InvestorManifest 0 命中」旧债经复核早已修完(见 03 上方已解决卡),定位校正为「全球卫星互联网 · 中文呈现」。

✅ 已解决 · 原 P0 · T1-A

InvestorManifest 0 命中修复

第 7 数据源(续 14,InvestorManifestSource)灌入 +334 events 却 0 命中主线的问题, 两个根因均已在后续会话修复(本卡为历史记录,2026-07-07 复核确认关闭)。
已修(复核实据)
  1. SEED 缺境外公司 → 已补续(2026-06-10)批加 13 家境外卫星公司SEED_COMPANIES(MDA Space / Voyager / Carpenter / Planet Labs / Iridium / Viasat / AST SpaceMobile / Eutelsat OneWeb …),aliases 含 ticker 与大小写变体,company_threads 别名等值匹配兜底 → 公司反哺可命中;多家续 41 已补 verified 真实财报数据
  2. VOYG 空日期 → 已修_occurred_at_b(续 19.2)加 fallback 链,source_date 空时依次从 source_title / notes / 文件路径抽 ISO 日期
  3. 复核:相关 46 测试全绿(seed 扩容 / schema / 反哺 / manifest 源);全量 ~703 tests
定位校正(重要)
  • 产品定位是 全球卫星互联网产业 · 面向中文读者呈现不是「中文卫星互联网」—— SEED 覆盖 SpaceX / OneWeb / Viasat 等全球运营商 + 中国 A 股两腿;可达的全球英文源是主菜,中国 gov 源是 A 股腿的补充。 续 47 的「GFW 挡住中国 gov 站」按全球定位看不是存亡问题,只是配菜缺口。
P1 · T1-B · 跟进

daily-report 看板趋势视图

8f75fb1 已建 daily-report action,落盘复用 weekly_report(7d) + by_source 段,cron 链尾自动跑。 但看板 index.html / live.html 当前只展示最新快照,无历史趋势。 加近 7 日主线热度趋势小组件,让用户直观看到各主线热度变化。
实现思路
  1. daily-report action 已落盘每日报告到 agent/docs/sample/(或新建 data-live/daily-reports/ 归档)
  2. 每次 data-refresh 提取近 7 天报告里的 thread_heat 字段,写入 trend.json
  3. 看板 JS 读取 trend.json,渲染 5 主线 × 7 天的迷你折线图(纯 SVG,零依赖)
  4. 两份 dashboard(index.html + live.html)同步,node --check 通过
验收标准
  • 看板新增趋势区块,5 主线各有近 7 日迷你图
  • data-refresh 每 6h 自动更新趋势数据
  • 无新后端 API,纯静态 JSON + 前端渲染
  • 无 JS 框架依赖,node --check 通过
待命 · T2-A · 等 operator

X 轻量桥上线(代码已就绪)

续 40 已完整建好 scripts/export_x_events.py + refresh_live_data.py 管线。 X 信号是当前最差异化的数据优势(95 个航天账号 × 航天分类),仅差 operator 本机执行 3 步 + commit。 完整操作手册见 agent/docs/x-bridge-operator-runbook.md
operator 操作(约 2 分钟)
# 1. 确保本地 X 数据库有近期数据 bash agent/scripts/run_x_scrape.sh # 2. 导出脱敏 JSONL(无私信/凭证,仅公开推文字段) python agent/scripts/export_x_events.py # 3. commit 进仓库 → Actions 下次 data-refresh 自动读入 git add agent/data-live/x-events-archive.jsonl git commit -m "data: X 事件刷新 $(date +%Y-%m-%d)" git push
效果
  • X 信号自动进日报候选池 + 看板,无需改任何 workflow
  • refresh_live_data.py 每次重建都读取该归档(operator 一 commit 下次就吃到)
  • 脱敏边界:只留 title/content/url/source/occurred_at,无账号私信、无 cookies
04 · 开发记录

逐会话记录

倒序排列,最新在前。每次开发会话结束后在此顶部追加一条。同步更新 DEVELOPMENT-PLAN.md §5

2026-07-07 🚀 v0.14.0 · 最新 web-backend 个股页真化:从 demo 到真数据
v0.13.0 之后一整轮把 oaf.world 个股页从「真研判 + 假图/假 KPI/假舆情/假财务」的割裂,逐块换成真实数据: ① K 线 —— 新增 /bars,个股页价格图从种子造假换成真实历史 K 线(三市场统一)。 ② 顶部 KPI —— /quote 补 shares/currency,前端算真实 现价/市值/PE/ROE(ROE 无权益则「—」)。 ③ 舆情 —— mock 情绪时序换成 /news 真实近期新闻(标题+来源+源链接)。 ④ 财务 —— 真实利润表共同百分比 + 新增 /financials/history 多期财务(baostock 循环年份 / yfinance 读全列 / edgartools failover)→ 五年趋势表 + CAGR。 守铁律:后端有数据才真化,没有的如实降级不编。杜邦/可比公司仍 mock(需权益/同业名单,pipeline 无)。
PR #50–#53 → main web-backend 340→350 · agent 700 tests
发布生产化交接页 · CHANGELOG v0.14.0 · reports/release-v0.14.0.md
2026-07-07 🚀 v0.13.0 web-backend 从「工具」到「产品」:黏性 · 运营 · 公司名
v0.12.0 之后一整轮把 web-backend 从「能查单只票的工具」推成「有关注盘、每天主动推研判、挂了会告警」的产品,后端全程无状态① 产品黏性 —— 自选列表(localStorage 持久化 + 实时报价)、横向对比 /compare(2–4 支并排估值 + LLM 一句研判,每标的 0 次 LLM)、估值假设可调(前端 + 日报 IR_DIGEST_ASSUMPTIONS)。 ② 运营加固 —— healthcheck.py 挂 cron 探 /health、状态翻转推飞书(认飞书业务码不静默);/metrics token 访控;成本护栏。每日研报 daily_digest.py 复用 /compare 定时推飞书。均纯标准库、宿主 3.6 兼容、复用已部署服务不加 DB。 ③ 公司名 —— A 股中文(baostock)、美/港英文全名(yfinance)+ 内置中文映射(US:NVDA→NVIDIA Corporation · 英伟达),60+ 常研标的;刻意不用 LLM 翻译(公司名是事实)。
13 PR → main(#35–#47) web-backend 296→340 · agent 700 tests
发布生产化交接页 · CHANGELOG v0.13.0 · reports/release-v0.13.0.md
2026-07-06 🚀 v0.12.0 web-backend 观测 + 质量 + 前端三市场打通
v0.11.0 之后一轮「补齐观测与质量」,三项均 live 验证: ① Langfuse LLM 观测 —— 复用 litellm 原生 Langfuse callback,配 key 就开、没配静默降级(凭证只经 env);一份报告 3 次 LLM 调用(评级理由 / 敏感性 / 舆情基调)归到同一 trace 并各自命名,token/耗时/成本一眼可查。JP 区 live 验证:面板出 trace,3 个命名 generation 齐全。踩坑 langfuse<3:litellm callback 认 v2 SDK(读 langfuse.version),装成 4.x 会静默崩,已钉版本。 ② 跨源财务校验落地 —— fetch_financials_cross_checked 接进 /research:美股补第二财务源(edgartools 主 + yfinance 备),关键指标差异 >10% 置 data_quality_flag,报告「数据质量」段浮现 ⚠️ 存疑告警,单源自动退化。 ③ 前端三市场接入 —— app.htmlresolveUid:裸代码按后端口径解析市场前缀(600519→SH0700→HKNVDA→US),索引外标的也能直连研报;弹窗提示三市场示例。
4 PR → main(#30/#31/#32/#33) web-backend 296 · agent 700 tests
发布生产化交接页 · CHANGELOG v0.12.0 · reports/release-v0.12.0.md
2026-07-06 🚀 v0.11.0 web-backend 打磨:A 股中文舆情 + 港股 HKD/RMB 币种修正
v0.10.0 之后的两项打磨,均 live 验证: ① A 股中文舆情 —— 新增 GoogleNewsProvider(Google News RSS,海外可达、有中文),baostock 取中文名(600519→贵州茅台)再按名搜;茅台返回新浪/东财当天新闻。Google 不可达则 failover 到 yahoo 英文,不倒退。三市场舆情全到位。 ② 港股币种修正 —— yfinance 港股报价 HKD、财报 RMB,原 DCF 混用有 ~8% 偏差;现 Quote/FinancialStatement 带币种,analyze_companyfetch_fx(含 USD 腿兜底)折算到报价币种再算,每股内在价值与现价同为 HKD 可比;取不到汇率如实降级。
4 PR → main(#25/#26/#27/#28) web-backend 283 · agent 700 tests
发布生产化交接页 · CHANGELOG v0.11.0 · reports/release-v0.11.0.md
2026-07-05 🚀 v0.10.0 web-backend 能力扩展:三市场(港股)+ 研报 SSE 实时进度流 + 新闻舆情段
v0.9.0 生产化上线后的三项扩展(按优先级陆续做): ① 港股接入 —— YFinanceProvider 市场感知(纯数字→港股 .HK、字母→美股),补齐港股日线/报价/财务,对齐「A股/港股/美股」三市场定位;腾讯 0700 live 验证口径无误(营收 7517 亿、毛利率 56.2%、总股本 90 亿股)。 ② 研报 SSE 进度流 —— POST /research/stream 逐节点下发进度(supervisor→fundamentals→report),前端把 ~20s 假进度条换成真实推进。 ③ 新闻舆情段 —— 打通 NEWS 类型 + GET /news,报告加「新闻舆情」段(标题确定性列出、LLM 只写一句话基调)。美股/港股经 yfinance;A 股暂无免费源。
3 PR → main(#21/#22/#23) web-backend 257 · agent 700 tests
发布生产化交接页 · CHANGELOG v0.10.0 · reports/release-v0.10.0.md
2026-06-28 ~ 07-05 🚀 v0.9.0 生产化上线 web-backend 第二产品线全线上线(真实数据 + Opus 4.8 + 公网 HTTPS · 美股 + A 股双市场)
agent 侧发 v0.7.0(wiki NER 四向 Direction-A/B/C/D + wk 面板,700 tests)。web-backend 从 M1-M3 骨架(v0.8.0)→ REST 服务 + 前端对接(v0.8.1)→ 生产化全线上线(v0.9.0)A 真实行情 yfinance/edgartools/baostock(修 edgartools 5.x API 漂移)· B 真实 LLM Claude Opus 4.8 经 AIGW 网关,只写叙事不改数字 · C 部署 阿里云海外 ECS + Caddy 自动 HTTPS + 前端默认接入 + /metrics 观测 + 每 IP 限流。 A5 A 股双市场:海外 ECS 实测 tushare 卡 2000 积分、akshare 境内站不可达,主源改用免费且海外可达的 baostock(扩展支持财务/报价);茅台 600519 live 验证口径无误,/research 出真实 DCF + 中文研判。公网 api.oaf.world 可访问,前端 oaf.world 点调研直连(美股 + A 股)。
18 PR → main web-backend 237 · agent 700 tests
交接生产化交接页 oaf.world/handoff · web-backend/ HANDOFF · PRODUCTION · DEPLOY
2026-06-25 续 48 分析全仓代码文档,制定开发计划
读取所有核心文档(DEVLOG / NEXT-STEPS / dev-roadmap / 历史 reports),梳理系统现状(v0.6.1 / 577 tests / corpus 63.1% / 761 条 events 归档)。 新建 DEVELOPMENT-PLAN.md(路线图 + 排期 + 记录格式规范)和本网页 dev-plan.html(可视化跟踪)。
2 commits 577 tests · 无代码改动
33a9bb8docs: 新建 DEVELOPMENT-PLAN.md — 开发计划与记录主文档 (续 48)
(本次)docs: 新建 dev-plan.html — 开发计划可视化网页
2026-06-20 ~ 24 v0.6.1 发版 飞书双通道推送 + daily-report 落盘
飞书双通道:新增 SATAGENT_FEISHU_WEBHOOK_EXTRA 环境变量,日报/周报同时推送到两个飞书群。 daily-report 落盘:新增 daily-report EH-1 action,复用 weekly_report(7d) + by_source 段,在 cron 链尾自动落盘每日报告,为后续趋势视图铺路。
3 commits 577 tests
8f75fb1feat(jobs+report): daily-report 落盘 · 复用 weekly_report(7d) + by_source 段 + cron 链尾 hook
01867c0ops(feishu): 日报/周报支持双通道推送 (SATAGENT_FEISHU_WEBHOOK_EXTRA)
998679ddocs(changelog): v0.6.1 飞书双通道推送
2026-06-18 续 47 GFW 封锁中国 gov 站 → CNSA operator 桥 bootstrap
续 46 的国家航天局 HTML 源内容完美对口,但 data-refresh 实测:GitHub Actions(美区 Azure IP)被 GFW/地域封锁,抓不到 cnsa.gov.cn。 处置:cnsa 源 enabled=false;交付 scripts/export_cnsa_events.py(operator 桥脚本)。 我方沙箱可达,bootstrap 首批 6 条(通信技术试验卫星/千帆星座组网/朱雀手机直连)commit 进仓库 → Actions 直接读到。 架构结论:中国侧数据(gov 站/x.sqlite3)美区 Actions 都够不着,这是 GFW 决定的,非工程能绕的。
2 commits +6 条 CNSA 事件 架构约束确认
f9bbc41fix(sources): cnsa 源 enabled=false — Actions GFW 封锁实测 · 续 47
5d6dd95feat(sources): 中文 gov 事件 operator 桥 + bootstrap 国家航天局首批 · 续 47
2026-06-18 续 46 接通中文产业活水 — 国家航天局 HTML 抓取源
定位核心约束:线上中文产业活水近乎为零(近 2 月中文 9 / 英文 76)。中文 RSS 生态已塌,但实测国家航天局 200 可达。 新增 sources/html_news.py · HtmlNewsSource:配置驱动的中文新闻 HTML 抓取源,浏览器 UA / utf-8/gb18030 兜底 / 关键词过滤。 实测抓取 12 条 → 过滤留 7 条对口,入库后分到"运载发射"+"运营支撑"主线。中文卫星互联网信号正式进决策闭环。
1 commit 567 → 573 tests (+6)
8d58810feat(sources): 接通中文产业活水 — 国家航天局 HTML 抓取源 · 续 46
2026-06-18 续 45 修看板数据不更新根因 — Pages 跳过 [skip ci] 提交
用户报"看板英文 RSS 不见了、新闻都是旧的"。根因实证:Cloudflare Pages 默认跳过 [skip ci] 提交,而 data-refresh 机器人提交一直带 [skip ci] → 每 6h 的快照/翻译更新从不部署,线上冻结在最近一次代码提交。 修复:data-refresh.yml 提交去掉 [skip ci];agent-ci.yml paths 加排除 !agent/data-live/**(纯数据提交不触发测试)。 顺带:refresh_live_dataupdate_inline_snapshot 同步更新 index.html + live.html 内嵌快照,让离线兜底也是当前真实数据。
2 commits 根因:CI/CD 配置问题
3a3d7fbfix(deploy): 看板快照/翻译永不上线 — Pages 跳过 [skip ci] 根因 · 续 45
cfc2352ci(agent): paths 也排除 agent/docs/live.html (续45 兜底快照提交)
2026-06-18 续 44 看板中文化 — 英文 RSS 标题译中文(持久缓存)
英文 RSS 标题进日报/看板后全是英文(Ariane 6 / AST SpaceMobile...)。新增 zh_cache.py:递归覆盖快照所有节点补 title_zh(事件再补 summary_zh),持久缓存 data-live/title-translations.json(只译新标题,省 LLM 调用)。无 LLM key 优雅降级(用已有缓存,前端回退英文)。 前端:ztl(o)=title_zh||title helper,4 处渲染改用中文,hover tooltip 显示英文原文。
1 commit 562 → 567 tests (+5)
b655876feat(dashboard): 看板中文化 — 英文 RSS 标题译中文 (持久缓存) · 续 44
2026-06-18 续 43 RSS 关键词扩容 + 新增 Space Intel Report 源
定位薄环节:归档 699 事件里 RSS 活水仅 ~67 条且全英文西方媒体,中文产业无活水。 shared_keywords 26 → 50:补齐 verified 公司矩阵漏掉的运营商/制造商专名(eutelsat/inmarsat/ast spacemobile/mda space/planet labs...)+ 10 个中文核心词(卫星互联网/千帆/星网/低轨/星座...)。 新增 Space Intel Report(spaceintelreport.com):商业卫星运营商/星座/政府采购纯度极高,WebFetch 实测 2/3 命中。 守护:test_rss_config.py 新增"英文 verified 公司必有关键词可命中"断言。
1 commit 559 → 562 tests (+3)
8547115feat(rss): 关键词扩容对齐公司矩阵 + Space Intel Report 源 · 续 43
2026-06-17 续 42 Tier-3 D/E/F 一次推进(审计 + 设计 + 代码半)
三项战略级任务各按现实约束定深度: F (wiki 双向闭环)wiki_index.py + x_to_wiki.py 代码半完整(operator 本机跑,x.sqlite3 gitignored)。 D (阶段 B 服务器)tests/test_deploy_scripts.pybash -n 守护 setup_server.sh 语法 + 文档↔脚本一致性;服务器本体待 operator 买机器装。 E (Postgres)postgres-migration-design-2026-06-17.md 全量兼容性审计(17 模块/90 处 sqlite3)+ 触发条件 + 3 轮计划 + 回滚;现在不迁(cron 串行写 SQLite 够)。
1 commit +11 tests (F×6 + D×5)
4d03677feat(tier3): D/E/F 一次推进 — F 代码半 + D 守护 + E 设计待命 · 续 42
2026-06-17 续 41 Tier-1 B 千帆组网(半收)+ Tier-1 C 公司财报 10→29
Tier-1 C(公司真实财报):verified 10 → 29 家(2026Q1 公开财报,WebSearch 现查不编造)。9 家 A 股 + 10 家海外。decision.py 输出加 data_quality 字段,看板 verified 营收标绿色 ✓。 Tier-1 B(千帆组网漏判):一半否决一半保留。strategy 侧:组网=加速启发式 corpus 62.1%→63.1% (+2pp),保留。threads 侧:补运营支撑实测 labeled_real 0.68→0.60 (−8pp),全量 revert。核心发现:两份标注集对千帆组网 threads 口径直接冲突,续 37 原则性停止在跨集层面再次实证。
5 commits 547 → 548 tests corpus 63.1% (+2pp)
e03f06dfeat(seed): Tier-1 C 公司真实财报 verified 10 → 30 家 (2026Q1)
66ebeaafeat(validation): Tier-1 B 千帆组网 — strategy 组网=加速 +2pp, threads 侧实测否决
2026-06-16 续 40 X 轻量桥代码半建成 — X 信号即插即用
roadmap 判定"下一个真台阶是让 X 信号进来,C1 轻量桥优先于买服务器"。代码半完成: scripts/export_x_events.py(operator 侧:读 x.sqlite3 → 脱敏 → 关键词降噪 → 写 data-live/x-events-archive.jsonl)+ refresh_live_data.py 每次重建都读该归档(operator 一 commit 下次就吃到)+ 完整操作手册 agent/docs/x-bridge-operator-runbook.md。 X 信号变成"operator 一次 commit 即插即用"。
1 commit 542 → 547 tests (+5)
0641ae5docs(x-bridge): operator 本机操作手册 (Tier-1 C1 · 续 40)
2026-06-15 续 39 观察期体检 + LLM 空主线补判(实测净平 → opt-in)
4 天无人值守观察期(06-11→06-15)后体检:零故障运转(data-refresh 每 6h、daily-feishu 连续 4 天、weekly-feishu 正常)。 发现并修复:① 调度延迟(cron :00 → :37 错峰)② 缺自我监控 → 新增 failure-alert.yml(workflow 失败推飞书红卡)。 制定 dev-roadmap-2026-06-15.md(Tier 1/2/3 详细拆解)。 同日实测 LLM 空主线补判(classify_empty_fallback):glm-4.6 全量 overall 62.1%→62.1%(净 0.0pp),机制安全建好,默认 opt-in(env 可开)。
2 commits 529 → 542 tests
2026-06-11 ~ 12 续 35-38 v0.6.0 发版 · 质量攻坚 4 轮 35.5%→63.1% · 阶段 A 全量在线
续 34:实时看板上首页 + 日报/周报双推送 + 日报中文化(glm-4.6 翻译)。阶段 A 至此全量闭环。 续 35-37:质量攻坚 4 轮,规则 35.5%→62.1%(+26.6pp),labeled_real 0.52→0.68(+16pp);LLM 覆盖两种模式全部净减分(v22/v23),生产定稿 rules-only续 38:corpus v3.1 标注口径统一(最小重标 6 条),63.1% 持平(原则性停止)。 续 35 同日:公司真实财报 10 家头部 verified(2026Q1)+ RSS 3 新源(SpaceflightNow/European/SatNews)。 v0.6.0 发版(pyproject/__init__/api.md)。
corpus 35.5%→63.1% labeled_real 0.52→0.68 452 → 536 tests
2026-06-11 续 33 阶段 A/B 必要性验证 + 阿里云部署文档
回答"P0 先部署 Cloudflare,验证 Linux 云服务器必要性"。 必要性定论:服务器只被三件事真正需要(X 信号链路 / 运营态持久化 / live API),周报/LLM/月检都可 serverless 承载。推荐先 A 后 B,不为没人用的功能先付钱。 交付 cloud-server-deployment.md + 网页版:阿里云选型 / setup_server.sh 一键装机 / 与 Cloudflare 三种连接关系 / 运维巡检 + 故障表 + 安全清单。
1 commit serverless 方案定论
2026-06-03 ~ 10 续 1-32 · 历史 Phase 1-3c · EH-1/3 · FE Round 1 · ADVICE 三件套 · expert/ 整合 · v0.5.0 发版
详细记录见 DEVLOG.md(倒序流水账)和 NEXT-STEPS.md §3/§4(时间锚与历史规划档案)。
涵盖:Phase 1/2/2.1/3a/3b/3c 全部落盘 · EH-1 调度 + EH-3 飞书 · Tier 1.2 LiteLLM · FE Round 1 三件套 · ADVICE D/B/E · expert/wiki + X 整合 · 第 5 主线运载发射 · corpus v2.0/v3.0/v3.1 · validation baseline · HarnessFarm/ShockEvents/InvestorManifest 数据源 · v0.4.0/v0.5.0 发版。
~32 次会话 0 → 536 tests 0 → 761 条事件
05 · 快速参考

常用命令 & 配置

开发时常用的命令、环境变量和关键文件。完整版见 DEVELOPMENT-PLAN.md §6

⌨️ 常用命令

# 运行测试 cd agent && python -m pytest tests/ -q # 运行验证(corpus 基线) satagent validate --corpus agent/samples/labeled_validation.jsonl # 本地起 API SATAGENT_DB=/path/to/db uvicorn satellite_agent.api:app --port 8765 # 单次决策报告 satagent decision --view both --window 30 # 本地数据刷新 python agent/scripts/refresh_live_data.py # 看板快照更新 python agent/scripts/refresh_live_snapshot.py

🔑 环境变量

变量用途
SATAGENT_DBSQLite 数据库路径(生产必填)
SATAGENT_LLM_API_KEYLLM key(日报翻译/debate)
SATAGENT_FEISHU_WEBHOOK_URL飞书主通道 webhook
SATAGENT_FEISHU_WEBHOOK_EXTRA飞书副通道(v0.6.1 双通道)
SATAGENT_API_TOKENBearer 鉴权 token
X_SQLITE_PATHX 推文 SQLite 路径
SATAGENT_LLM_EMPTY_FALLBACKLLM 空主线补判(on/off,默认 off)

📁 关键文件

文件说明
agent/satellite_agent/seed.py公司种子库(92 家,29 verified)
agent/satellite_agent/ontology.py主题词典(5 主线 + 6 维度)
agent/satellite_agent/classifier.py事件分类器(rules-only)
agent/satellite_agent/jobs.pyEH-1 调度(ACTIONS registry)
agent/satellite_agent/notify.py飞书通知(双通道 + 卡片)
agent/data-live/events-archive.jsonlRSS 事件归档(761 条)
agent/data-live/cn-events-archive.jsonl中文 gov 事件(operator 桥)
agent/scripts/export_x_events.pyX 推文导出脚本(operator 桥)
DEVELOPMENT-PLAN.md本页 Markdown 源文件
DEVLOG.md完整历史开发流水账

🔗 文档导航

页面说明
index.html实时看板(主入口)
dev-plan.html本页 · 开发计划与记录
plan.html全貌门户(四问索引)
sources.html数据源质量视角
docs.html文档总览
blueprint.html系统全景信息图
walkthrough.html端到端 10 步演示
live.htmlagent 演示前端
DEVELOPMENT-PLAN.md本页 MD 源文件(权威)
DEVLOG.md历史开发流水账