News Filter · LPG / 监控 / 系统驾驶舱

系统驾驶舱 目标 · 流水线 · 数据边界 · 动作

模式 finflow newsfilter ragflow maxkb job

驾驶舱 系统在做什么 · 跑到哪一步 · 有什么待处理

一屏看清系统在做什么、跑到哪一步、有什么待处理:从流入到精筛产出的四段漏斗 + 宏观共享网 + 待交易动作。各数字为历史累积,只在手动跑批后增长(顶栏「模式」显示当前是手动还是自动)。
怎么用:看漏斗各段条数判断哪一级在收敛;数字异常或想细查时,去【质量评估】看准不准、去【批量过滤】补数据。
NEWS FILTER · LPG
系统驾驶舱
loading
loading
待处理动作 按阻塞程度排序
loading
数据边界 契约文档
loading
loading
处理效率 吞吐速度 · 单条耗时 · 近 24h/7d 处理量 · 阶段留存
loading
流水线漏斗 stage 0 → 1 → 2 → 3 → handoff · 转化率
loading
品种三路召回重叠 品种层 kw / emb / llm pass Venn(宏观为共享层,不计入)
loading
精筛方向构成 利多 / 利空 / 中性 / 不确定
loading
打分分布 (0-10) width_bucket × 5 bins · nf_fine_assessment
loading
投票策略 · 置信度 strategy 使用占比 · 平均 LLM/emb
loading
新闻源健康 top 10 · 总量 / 粗筛通过 / 精筛产出 / 最近时间
loading
最近 7 日趋势 召回 · 粗筛通过 · 精筛产出
loading
流水线配置 四段式 · 当前模型 / 投票 / 实时计数
loading

质量评估 过滤准不准 · 准确率 / 误报 / 漏报 · 需先标注真实标签

评估过滤准不准:本窗口的准确率 / 误报(把无关判成相关)/ 漏报,以及哪条召回路在拖后腿。
前提:准确率要有意义,得先在 标注 给若干新闻打"真实标签"(ground-truth);当前标注=0 时只能看产量、看不了准确率。
窗口
本窗口结论 一句话读懂:准不准、能不能信、下一步该做什么
loading
loading
最近活动 精筛输出 / 预过滤拒条 / Job · 时间倒序 20 条
loading
7 天趋势 总流量 / 粗筛通过 / 精筛产出 — 每日
loading
分通道 · 案例 · 标注 操作员常用
关键词 (kw)留存准确率 Precision · 弃权型
loading
向量 (emb)pgvector HNSW cos τ=0.85
loading
大模型 (llm)qwen-turbo conf≥0.60
loading
案例 FP / FN / wrong_direction / TP · 需要 labels.jsonl
loading
标注管理samples/labels.jsonl · 上传 + 单条
① 快速标注最近事件
loading
② jsonl 批量 / 单条(高级)
jsonl 全文 (覆盖式),每行 {"event_id":"...","ground_truth_relevant":true/false,"ground_truth_direction":"利多|利空|中性|不确定"}
单条标注
详情(高级) · 混淆矩阵 / 模型+调度 / 归档历史 / 预过滤 — 点开展开,能力全部保留
高级详情 ML 工程视角
粗筛 (2×2)relevant × predicted
loading
精筛 (4×4)利多/利空/中性/不确定
loading
模型 / 阈值 / 权重快照运行时配置 可修改
loading
归档历史nf_test_report_archive · out/archive/
loading
预过滤拒条数详情规则过滤明确不相关的新闻 · 减少送入粗筛量
loading

实时流水线 跑批/调试时各阶段动作滚动 — 当前无自动采集,静止属正常

看"现在有没有在跑、跑到哪一步":有人手动跑批/调试时,这里实时滚动各阶段动作。
系统当前是手动模式(无自动采集),没人触发时此处静止是正常的;要跑去批量过滤页。连接断了点 重连
全链路事件流 job / recall / coarse / fine / handoff · 最近 50 条
loading

交易信号 待处理的可交易信号 · 确认接收后出队

精筛产出的可交易信号(利多/利空 · score≥5)在这里排成待消费队列,下游/操作员确认后出队。
勾选 → 确认接收 把信号标 acknowledged(出队);下游系统按 /api/handoff/stream?since= 游标增量拉。
说明 · 从静态日志升级为状态机事件流 每条 handoff 信号带状态:pending 待消费 → acknowledged 已回执;同一 (event_id,品种) 出更新信号时旧条 superseded 让位。 append 幂等语义不变,actionable 口径仍为 利多/利空 + score≥5。 下游消费契约:GET /api/handoff/stream?since=<last_id> 拉增量,记录返回的 next_since 作为下次游标(at-least-once)。
已选 0

飞书推送 交易信号 → 飞书群 · 投递状态 / 队列 / 明细 / 手动控制

把精筛产出的交易信号(handoff)推到飞书群的投递链路在这里可视化:推送开关、目标群、投递队列(待发/重试/已达/失败)、最近每条推送的明细与失败原因。
开关推送 暂停/恢复;失败或暂停期堆积的投递点 重新排队 让 worker 下一轮重发;下方明细逐条看推了什么、到哪个群、成没成。
说明 · 投递语义与边界 投递按 (handoff_id, chat_id) 持久化到 nf_feishu_delivery,每条信号对每个群恰好成功一次(进程重启不丢不重)。 瞬时失败按指数退避重试,超过 NF_FEISHU_MAX_ATTEMPTSdead;碎片化文本(GDELT 标签汤)被质量闸 suppressed 不入群。 开关推送 为进程级覆盖(不改 .env),重启后回到 NF_FEISHU_ENABLED 的值。 正文/标题自包含于 nf_trading_handoff(过滤时已持久化),不回连 finflow。
加载中… 目标群
最近投递明细 逐条:标题 / 方向 / 评分 / 群 / 状态 / 反馈数 / 失败原因 · 倒序
loading
群回复反馈 群里对推送卡片的回复 → 关联到对应新闻信号 · 已自动回执
说明 · 反馈闭环如何工作 机器人推送的每张卡片都记下了飞书 message_id仅当群里有人「引用该卡片回复」文本时, 飞书把 im.message.receive_v1 事件回调到 /api/feishu/events,系统通过 parent_id/root_id 精确关联回对应 handoff,落库 nf_feishu_feedback 并自动回执。 群里自由发言(哪怕 @机器人)不是回复、不触发;文件、图片和分享消息直接忽略。需在飞书开放平台配置事件订阅地址。
loading

质量告警 指标跌破阈值线即告警 · 只监测,不自动调参

盯住过滤质量:粗筛准确率/误报率/召回/精筛方向准确率跌破阈值线时,主动告警并在顶栏红条提示。
评估一次 按当前标注算指标;有告警则下方列出,确认后转 acknowledged;指标回到健康区自动消解。
说明 · 为何只监测不调参 本面板只读 nf_* 评估结果 + labels 算指标,跌破阈值线就记一条告警事件, 绝不反向改流水线参数(weighted_pass_threshold 等)。阈值线本身经 运行时配置alert_* 字段调(调的是监测灵敏度,不是模型)。 标注 < alert_min_labeled 时跳过评估(指标无统计意义,不制造噪声)。

批量过滤 挑一批新闻跑过滤 · 实时进度与历史作业

手动触发一批 finflow 新闻跑过滤,看实时进度和历史作业。
limit(+可选源)→ 提交,下方实时出进度;跑岔了可 取消,想重跑点 rerun
说明 · 失败不阻塞,终态 succeeded / partial / failed 每一次"拉 finflow → 过流水线 → 写 newsfilter"都建模为一个 Job, 持久化到 nf_jobs 表。失败项不打断后续,终态可能是 succeeded · partial · failed。Job 可重跑(rerun),血缘保留。

新建批量任务

当前任务 · 实时进度

暂无运行中的任务。点击上方按钮新建,或在历史里选一条查看。

历史任务

loading

单条调试 手输一条新闻 · 逐级看它怎么被判定

手输一条新闻,逐级看它怎么被判:宏观前置网 → 品种三路召回 → 四输入投票 → 精筛打分。
填标题 + 正文 → 运行全流程;改了关键词/提示词/阈值后,先在这里单条验证再跑批。
stage 0 · 新闻源短讯 100 字内 · 中英均可 stage 1 · 多路召回 stage 2 · 粗筛 stage 3 · 精筛

stage 0 · 输入

I/O · 实时新闻 → 召回新闻 · 宏观前置网 + 品种三路 输入 实时新闻 · 输出 召回新闻(宏观共享网 + 品种各路独立 pass/fail) · 方法 §2.0 宏观政策召回(共享)+ 品种召回(关键词 / 新闻库检索 / 大模型理解)
标题
正文

stage 1 · 多路召回(宏观前置网 + 品种细分)

§2.0 宏观(共享) · 品种 keyword · embedding · LLM 先经宏观政策共享前置网(判"是否市场普遍关注"),再做品种细分:kw 走品种关键词命中、 emb 走离线 LPG 新闻库相似度、LLM 走品种在线判定。宏观与品种信号在粗筛处四输入加权投票。
idle · 在上方输入并运行。

stage 2 · 粗筛策略

majority / union / intersection · 加权投票 输入 召回新闻 · 输出 粗筛新闻 · 方法 策略聚合(majority / union / intersection)· 权重 kw=2 / emb=1 / llm=2,默认 pass_threshold=3
idle · 在上方输入并运行。

stage 3 · 精筛策略

LLM + RAG · 方向 / 打分 / 解读 输入 粗筛新闻 · 输出 精筛新闻 + 解读 + 方向 + 打分 · 方法 LLM + RAG(retrieve top-K 权威报告做上下文)
idle · 粗筛未通过则不进入精筛。

归档样本 手工归档的新闻样本 · 带人工标注的品种与多空方向 · 跑过滤去重

浏览手工归档的新闻样本,每条带人工标注的品种与多空方向(作为真实标签);勾选后批量跑过滤(跨重启去重,不重复跑)。
筛选 / 翻页 → 勾选 → 跑选中;已跑过的行标灰,不会重复消耗 LLM。品种 / 方向列是人工标注,对照流水线结果可看判得准不准。
说明 · 原文物理隔离 · 品种/方向来自人工标注 手工归档的原始新闻 — 不写 finflow,直接落 samples/ 下的 JSONL 文件。 品种 / 方向列按 日期 + 标题 匹配 samples/key_samples_*.jsonl 的人工标注填入(能源相关品种高亮);少数未标注样本显示 —。 进入流水线后只在 newsfilter 记录 source_key 运行状态,已跑过的行不会重复运行。
已选 0 条 · 跨页保留

新闻源 原始新闻全量 · 只读浏览 · 可挑选跑过滤

只读浏览 finflow 原始新闻(11 万+ 条),勾选若干条直接跑过滤。
按 日期 / 源 / 关键词 筛 → 勾选行 → 跑选中,进度就地显示;只读不改 finflow。
说明 · finflow PG 只读, 已跑过的行禁选 直接连 finflow PG 看 canonical_events 全量 — 连接层只读:不写一行, 连接层强制 set_session(readonly=True)。 每行天然带 UUID event_id, 以 nf_recall_keyword 是否存在该 id 作为 "已跑过" 信号, 不重复烧 LLM。已跑过的行会标灰禁选, 想重跑请去 任务 · 跑批 走 rerun 血缘。

归档样本 的对偶: historical 是 samples/*.jsonl 文件 · 自造 source_key 去重; finflow 是 PG canonical_events · 直接用 UUID event_id 去重。 两者跑批入口同一条流水线 (scripts/run_on_finflow.run_one), 全链路痕迹落 newsfilter PG 的 nf_* 表; 若开启长期镜像,只合并写回 canonical_events.tags.nf.<derivative> 摘要。
已选 0 条 · 跨页保留

过滤结果 已跑过过滤的新闻累积结果 · 方向 / 打分 / 全链路下钻

已经跑过过滤的新闻结果:方向 / 打分 / 各路是否通过,可点开看单条完整判定。
这里是历史累积(手动跑批/调试跑出来的,非自动采集)。按 源 / 方向 / 分数 / 状态 / 标题 筛选 + 翻页;点行的 trace 看 宏观→品种召回→投票→精筛 全链路。
说明 · 来源:手动跑批/调试 · 永久留存于 newsfilter PG 本页是所有跑过流水线的新闻的结果累积——条数 = 你触发过的过滤量,不会自动增长。 永久存在 newsfilter PG,支持按源 / 方向 / 打分 / 状态 / 标题模糊过滤。 每一行可点 Trace 下钻看 stage 0-3 的全字段轨迹。

外部服务 外部向量库 / 对话 Agent 接入状态 · 当前未启用

可选外部服务(RAGFlow 向量库 / MaxKB Agent)的接入状态探针 —— 当前默认未启用。
这里只读探状态;要启用/填地址去参数配置ragflow_* / maxkb_* 字段。
架构边界:RAGFlow / MaxKB 不写任何 nf_* 或 finflow 表 — 它们各自管自己的存储(RAGFlow 用 Elasticsearch + Infinity,MaxKB 用 PG + pgvector), 本系统只通过 HTTP 调用它们的检索 / 对话接口。 配置在 运行时配置 · 外部 · RAGFlow / MaxKB 分组,改完立刻生效。
RAGFlow
DeepDoc 解析 · 向量召回
未连接
状态loading…
MaxKB
LangChain Agent · 操作员对话前台
未连接
状态loading…

成本预算 真实账本 / 估算缺口 / 月度预算

成本来源拆解真实 token 优先 · 缺口估算
loading
模型单价表元 / 1K token
loading

参数配置 在线改阈值 / 权重 / 模型 · 改完即生效、跨重启保留

在线改阈值 / 权重 / 模型等参数,改完立即生效、跨重启保留。
改值点保存即生效(下次跑批读到新值);重置回出厂默认;DSN / 向量维度已锁,改了要重启故禁用。
说明 · overlay 机制 / 锁定字段 / 重置语义 出厂默认在 src/config.py(frozen=True),本表是 PG 里的覆盖层 nf_config。 改完点保存 — 立刻写到内存 SETTINGS,正在跑的 Job 下一次属性读取就生效; 重启后由启动 hook 重放覆盖,不会丢。
已覆盖 字段表示当前进程值跟 src/config.py 默认不同; 点 重置 删除覆盖、回出厂默认。 finflow_dsn / newsfilter_dsn / embed_dim 锁定,改它们需要重启 + 改 schema。
loading

提示词 各 LLM 提示词 · 改完即时生效,无需重启

编辑各 LLM 提示词:宏观相关性判定、品种相关性判定、精筛打分、离线抽词。
改→保存即失效对应推理链,下次调用就用新提示词,无需重启;改完可去单条调试验证效果。
说明 · 与运行时配置的边界 / LCEL 缓存失效语义 本页编辑的是 仓库里的 prompt 文件内容 — 不是路径本身。 路径在 运行时配置 · 路径 / 文件 分组改, 内容在这里改。两个维度互不交叉,改完都即时生效。

保存后系统会自动 失效对应的 LCEL 单例(_relevance_chain / _finefilter_chain),下次流水线调用即用新 prompt — 不需要重启进程。 keyword_extract / keyword_verify 属 build-time 物料, 改完不影响在跑的批次,下一次离线重提词库时生效。
loading

召回词库 宏观共享层 + 品种细分层 · 关键词与定义在线编辑

编辑召回物料:宏观共享层(全品种通用的政策/地缘词与定义)+ 各品种层(如 LPG 专有词与定义)。
关键词改完下次跑批即生效;定义(注入提示词)改完即失效推理链。改完去单条调试验证。
说明 · 两级结构 / 生效语义 召回物料分两级:宏观政策层(全品种共享,config/macro/*)与 品种细分层(每个品种各一份,config/commodities/<品种>/*)。

· 关键词(keywords.txt):在线匹配每批新读,改完下次跑批即生效,无需重启。
· 定义(definition.md):运行时注入相关性 / 精筛提示词,改完自动 失效 LCEL 链,下次调用按新定义重建。
loading
群消息关键词建议 飞书群分析师发言 → LLM 批量抽词 → 人工审核 → 一键写入 keywords.txt
加载中…

加载中…

近期捕获群消息 — 原始发言溯源,点开展开
近期群消息 nf_feishu_group_messages · 最近 50 条 · 只读

展开后自动加载

物料快照 召回层 / 精筛层 物料只读快照

只读快照:召回层物料(离线新闻库 / 关键词 / 定义)与精筛层物料(权威报告 / few-shot)。
看现状用这里;要编辑召回词库 / 提示词
说明 · 离线物料 (可被 RAGFlow 接管) 本节内容是系统跑流水线时依赖的静态物料 — samples/lpg_offline_news.jsonl · config/keywords.txt · config/lpg_definition.md · samples/chairman_daily.jsonl 等。 集成 RAGFlow 后,这部分会迁移到外部 dataset,看板自动 fallback。
loading

审计日志 配置变更与作业操作流水 · 排查"为什么结果变了"

谁在何时改了哪个配置、跑了哪些作业的流水 —— 排查"为什么结果变了"。
只读;结果异常时来这看最近的配置改动史与作业操作。
配置变更nf_config_history
loading
Job 操作流水nf_jobs · rerun / cancel / schedule
loading
归档与当前配置test report archives + nf_config
loading

口径释义 每个指标怎么算、好不好怎么看 · FIELD & METRIC DICTIONARY

两级漏斗入流 → 召回 → 粗筛 → 精筛 → 信号
入流:finflow 当日入流水线的事件总量。
召回(三路并联):关键词 / embedding / LLM 任一通过即进粗筛(宁多勿漏)。
粗筛 coarse:四输入投票(macro+关键词+emb+LLM)定是否相关。
精筛 fine:RAG 给方向/强度/置信/解读,产出可消费信号。
交易信号 handoff:精筛通过、经死区抑制后对外发布的条目。
质量指标recall / precision / accuracy
recall 召回率 = TP/(TP+FN) — 真相关里被抓住的比例(漏报越少越高)。
precision 精度 = TP/(TP+FP) — 判为相关里真相关的比例(误报越少越高)。
accuracy = (TP+TN)/N — 整体判对比例。
※ 需标注集才可算;样本小时点估计带宽,看区间勿当定论。
Sp/Sn 判别闸embedding 召回 · 双边对比(2026-06)
Sp = 与正库(LPG 相关历史事件)最高余弦相似。
Sn = 与负库(确认非 LPG,1万条)最高余弦相似。
判定:Sp≥阈值 且 Sp−Sn≥margin → 正;对称 → 负;否则 uncertain。
当前阈值:sp_thr=0.72 / margin=0.0(标定后由 0.85/0.05 下调,可热配回滚)。
※ margin=0 仍非单边:正邻须赢过负邻,故"超阈值但更像噪声"的伪正例被否决。
三路召回kw / emb / llm
关键词:品种词命中数≥阈值(快、可解释、漏隐式)。
embedding:Sp/Sn 语义判别(抓隐式、受参照库覆盖限制)。
LLM:按品种定义判相关性+置信(准、有成本)。
※「三路对比」页看哪条在拖后腿。
精筛 RAG 产出direction / score / confidence
方向:利多 / 利空 / 中性 / 不确定。
score 0–10:0–2 无关·3–4 噪音·5–6 边际·7–8 明显·9–10 决定性。
置信 0–1:模型对该判断的把握。
死区 dead-band:方向强度落在 ±0.3 内 → 压成中性(宁可漏报,提精度)。
粗筛投票coarse voting
union 并集:任一路过即过(召回优先)。
majority 多数:过半数路通过。
intersection 交集:全路通过(精度优先)。
weighted 加权:按各路权重打分过阈。

版本追踪 Pipeline 运行历史 · 模型版本 · 信息源效果漏斗

当前配置
加载中…
Pipeline 运行历史 最近 20 次
版本精筛模型粗筛模型 开始时间状态 处理粗通精通推送耗时
加载中…
信息源效果漏斗(近 30 天) 召回 → 粗筛 → 精筛 → 推送
来源召回粗通精通推送推送率
加载中…