TMTB

需关注

通道健康

输入 / 处理 / 产出与 worker 细节。给工程,不给晨读。

事件雷达未来催化与公司日程展开

AI / TMT 事件雷达

全球 AI、AI 供应链与美国重磅宏观事件

注意

群聊

TMTB Slack Daily · HKT 业务日

注意
运行节奏07:05 运行 / 08:00 SLO · Asia/Hong_Kong行动落点Input · 核对群聊质量告警与运行证据
Input注意
业务日期2026-08-18最近成功2026-08-19 07:08 HKT消息276错误0

已发现线程抓取完成,但全历史 root 覆盖未知

Process正常
业务日期2026-08-18最近成功2026-08-19 07:08 HKTatoms35错误0

日报抽取已 finalized

Output正常
业务日期2026-08-18最近成功2026-08-19 07:08 HKTatoms35错误0

08:00 SLO、引用有效性与证据对账均通过

Input进入系统前
47 / 229
主帖 / 回复
posts / replies
52
活跃线程
thread replies
268 / 268
已发现线程回复
仅 discovered roots
0
抓取错误
必须为 0
来源覆盖率4.3%主帖2/47 被引用6.1%回复14/229 被引用19.2%线程10/52 被引用
root scan:bounded_3_day_overlap · complete: · history_has_more: · top-5 thread coverage:100% · fetched / expected 只代表已发现线程,不等于全频道回复完整度;话题覆盖率需先记录候选话题分母。
打开 TMT Breakout 人工评审台 首次需访问 key · →
Output系统产出后
2026-08-18
最新已发布日
finalized manifest
35
原子
daily atoms
19
引用
reader citations
0
Invalid
必须为 0
达标
08:00 发布 SLO
内容截止 07:00 · finalized 08-19 07:08
最近一次尝试 · 与已发布结果分开显示
2026-08-18
最新尝试日
worker status
成功
尝试结果
run status
未记录
结束阶段
phase
未记录
初稿硬门
summary_draft_validation_status
未记录
修订终态
summary_revision_terminal_kind
最新尝试日与最新已发布日均为 2026-08-18。
证据对账:通过 · bullet cite coverage:100%
打开群聊日报 打开日报测评台
趋势与证据默认折叠
2026-08-18业务日 · Asia/Hong_Kong
cloudflare_primary08-19 07:08 HKT
2026-08-18
最新业务日
来自 manifest
47 主帖 + 229 回复
当日输入
52 active threads
268/268
回复完整度
fetched / expected
35
atoms
19
引用
当日 eval 未知
0
当日无效引用
必须为 0
达标
08:00 发布 SLO
内容截止 07:00 · finalized 08-19 07:08
需处理:回复完整度仅覆盖已发现线程;全历史 root 覆盖未知
近 14 日趋势与执行证据
指标近14日最新
输入消息██▆▁▁▅▄▆▆▅▂▂▅▅276
atoms▇▃▃▅▄████▇▄▄▇█35
引用▆▆▆▄▅▆▅▇▅▆█▅█▇19
Cloudflare Worker: success · 08-19 07:08 HKT · Top thread coverage: 100% · bullet cite coverage: 100% · rolling 14d invalid: 0/302 (0.0%) · tokens: 110310 · cost: ≈$0.20 · volume median 251.5 / MAD 71.5

Earnings

TMTB Slack Earnings · 独立 07:00 HKT 业务日

正常
运行节奏08:10 / 08:30 / 08:50 · Asia/Hong_Kong行动落点Input · —
Input正常
业务日期2026-08-18最近成功2026-08-19 08:11 HKT消息3错误0

Earnings Slack 只读抓取完整

Process正常
业务日期2026-08-18最近成功2026-08-19 08:11 HKTatoms2错误0

Earnings 总结与原子化已 finalized

Output正常
业务日期2026-08-18最近成功2026-08-19 08:11 HKTatoms2错误0

Earnings reader 与证据对账通过

Input进入系统前
0 / 3
主帖 / 回复
posts / replies
1
活跃线程
含跨日续帖
5 / 5
抓取进度
fetched / expected
0
抓取错误
必须为 0
Earnings 来源覆盖率主帖无分母33.3%回复1/3 被引用100%线程1/1 被引用话题候选话题分母未记录
root scan:full_channel_history · complete: · top thread coverage:100%
Output系统产出后
2026-08-18
业务日期
Asia/Hong_Kong
2
原子
earnings atoms
1
引用
reader citations
0
Invalid
必须为 0
达标
09:00 发布 SLO
内容截止 07:00
状态:有内容 · 证据对账:通过 · bullet cite coverage:100%
打开日报 Earnings section
趋势与证据默认折叠
Earnings 执行证据
独立 lane 正常

X

来源级供数与原子化产出

异常
运行节奏采集节奏待核对 · Asia/Hong_Kong行动落点Output · 排查上游与抓取任务,恢复供数
Input待核对
业务日期未知最近成功未知raw 候选未知错误未知

raw 候选、最近采集成功与采集错误尚未接入

Process待核对
业务日期未知最近成功未知处理条目未知错误未知

抽取运行与失败明细尚未接入

Output异常
业务日期2026-07-03最近成功未知atoms285511错误未知

ledger 断档 47 天

Input进入系统前
raw 候选
运行时数据未装载
最近采集成功
尚未接入
采集错误
未知不能记为 0
Input 采集证据尚未接入;当前 ledger 日期只证明 Output 已写入,不能反推抓取健康。运行时数据未装载。
Output系统产出后
2026-07-03
最后入库
断档 47 天
47 天
距今天
ledger 口径
285,511
atoms 总量
近 7 天 +0
0%
推理链覆盖
0 条
0%
原文绑定
0 条 source_span
打开推特先看
推特先看是该来源当前的消费出口;暂无独立日报。
趋势与证据默认折叠
业务日atoms
2026-08-190
2026-08-180
2026-08-170
2026-08-160
2026-08-150
2026-08-140
2026-08-130
2026-08-120
2026-08-110
2026-08-100
2026-08-090
2026-08-080
2026-08-070
2026-08-060

卖方

Gmail 原文归档与卖方原子化产出

注意
运行节奏08:00 / 21:00 / 23:00 · Asia/Hong_Kong行动落点Process · 重试未抽取或部分失败的 Gmail 文本/图片
Input正常
业务日期2026-08-18最近成功2026-08-19 23:03 HKT全文142错误0

Gmail 全文归档完整

Process注意
业务日期2026-08-18最近成功2026-08-19 23:03 HKT当前规则正文142错误1

文本或图片待重试 1 项

Output正常
业务日期2026-08-18最近成功未知atoms18593错误未知

ledger 正常

Input进入系统前
2026-08-18
最新 Gmail
业务日期
142 / 142
全文归档
EML 141 · 缺 0 封
100%
正文覆盖率
142 份当前规则清洗
1,800
附图归档
112 封 · 0 vision 待重试
打开 Cloudflare Gmail 全文归档
正文由密码保护的 Cloudflare Worker + 私有 R2 提供,不进入公开 Pages;本机备用入口为 http://127.0.0.1:8765/。文本抽取待补:1 封;R2 私有备份:142 / 142 份全文,141 / 141 份 EML,1,800 / 1,800 张附图 · 最近成功 2026-08-19 15:03。
Output系统产出后
2026-08-18
最后入库
正常
1 天
距今天
ledger 口径
18,593
atoms 总量
近 7 天 +992
13%
推理链覆盖
2,451 条
0%
原文绑定
0 条 source_span
打开全源日报
全源日报是该来源当前的消费出口;暂无独立日报。
趋势与证据默认折叠
业务日atoms
2026-08-190
2026-08-1835
2026-08-17137
2026-08-160
2026-08-150
2026-08-14486
2026-08-13334
2026-08-12328
2026-08-11286
2026-08-10505
2026-08-09120
2026-08-080
2026-08-07245
2026-08-06476

Wrap

来源级供数与原子化产出

异常
运行节奏采集节奏待核对 · Asia/Hong_Kong行动落点Output · 排查上游与抓取任务,恢复供数
Input待核对
业务日期未知最近成功未知raw 候选未知错误未知

raw 候选、最近采集成功与采集错误尚未接入

Process待核对
业务日期未知最近成功未知处理条目未知错误未知

抽取运行与失败明细尚未接入

Output异常
业务日期2026-06-30最近成功未知atoms2385错误未知

ledger 断档 50 天

Input进入系统前
raw 候选
运行时数据未装载
最近采集成功
尚未接入
采集错误
未知不能记为 0
Input 采集证据尚未接入;当前 ledger 日期只证明 Output 已写入,不能反推抓取健康。运行时数据未装载。
Output系统产出后
2026-06-30
最后入库
断档 50 天
50 天
距今天
ledger 口径
2,385
atoms 总量
近 7 天 +0
0%
推理链覆盖
0 条
0%
原文绑定
0 条 source_span
打开全源日报
全源日报是该来源当前的消费出口;暂无独立日报。
趋势与证据默认折叠
业务日atoms
2026-08-190
2026-08-180
2026-08-170
2026-08-160
2026-08-150
2026-08-140
2026-08-130
2026-08-120
2026-08-110
2026-08-100
2026-08-090
2026-08-080
2026-08-070
2026-08-060

News

新闻候选、raw 母本与 story 原子化

异常
运行节奏每小时 · Asia/Hong_Kong行动落点Input · Input 阶段失败:检查 RSS、页面与本机全文抓取证据;另有 2 个闸异常
Input异常
业务日期2026-08-06最近成功2026-08-06 12:30 HKT候选0错误1

19/20 feed sources non-empty; degraded: digitimes_en.

Process注意
业务日期2026-08-06最近成功2026-08-06 11:45 HKT本轮 atoms5错误0

Recent extraction logs and the latest local manifest were checked for item-level failures.

Output异常
业务日期2026-08-06最近成功未知当日 atoms0错误0

News result and health panels are visible; deployed snapshot freshness is checked against the current ledger.

Input进入系统前
0
全文候选
0 个 feed
0
raw 母本
去重后原文
2026-08-06
审计业务日
每小时错峰管线
Output系统产出后
0
入库 story
今天
0
atoms
今天
source_span
atom → 原文
0
quarantine
硬错隔离
查看全部新闻
趋势与证据默认折叠
通过
News 调度
云端 + 本机每小时错峰
失败
源抓取
RSS / 页面 / 本机全文
通过
写入完整性
ledger / seen / raw / manifest
通过
内容准确性
schema + source_span 原文绑定
0
全文候选
local_in
0
raw 母本
写入 state/news/raw
0
入库 story
0 atoms
0/0
source_span
atom → 原文句绑定
0
quarantine
硬错隔离
0
媒体
今日有入库
07/16
News 新鲜度
今天还没有 news 入库记录

微信

180K 微信语料 · 接入前队列

待接入
运行节奏尚未配置 · Asia/Hong_Kong行动落点Input · 完成接入配置与授权
Input待接入
业务日期未知最近成功未知待处理消息2940错误未知

已有待接入登记,尚未完成身份授权与增量同步

Process待接入
业务日期未知最近成功未知处理条目未知错误未知

尚未建立去重、原子化与 ledger 写入流程

Output待接入
业务日期未知最近成功未知atoms未知错误未知

尚无 finalized 业务日与消费出口

Input进入系统前
2,940
待处理消息
待原子化
最近同步
尚未接入
抓取状态
尚未配置
现有数字来自待接入登记,不代表已进入主 ledger。
Output系统产出后
业务日期
尚无 finalized 日
atoms
尚未原子化
消费出口
尚未建立
Input 接通并通过数据契约后,再启用 Output 指标。
趋势与证据默认折叠
待接入项:身份授权、增量同步、原文母本、去重键、ledger 写入与 reader 出口。

系统

跨来源健康、配置和深度运维默认折叠;来源本身只在上方各自管理。

异常
全 Fork 链路审计接通、累计数据、代码提交与 14 天供数异常
Fork / 工作线接通最后供数累计数据代码14天节奏
群聊 180K接通2026-08-183,943 atoms✓ 已提交▃▃▅▄████▇▄▄▇█·
推特断档2026-07-03 · 断47天285,511 atoms✓ 已提交··············
卖方接通2026-08-1818,593 atoms✓ 已提交█▄·▃█▅▆▆█··▃▁·
Wrap断档2026-06-30 · 断50天2,385 atoms✓ 已提交··············
新闻·韩台断档2026/07/16 · 断None天33,258 atoms6 未提交█▆▂▂▆▆▁·······
作者画像加工层随主库更新411 作者标✓ 已提交
微信 180K加工层未接入2,940 条待原子化无代码
全站产物与部署跨来源页面、派生产物与 worker 探活注意
产物最后生成距今
日刊2026-07-2723天前
关键数据2026-07-2723天前
群聊日报2026-08-181天前 · 业务日
全源日报2026-07-2723天前
晋升 promotion2026-07-1436天前
因果图2026-07-1436天前
估计带2026-07-1436天前
法庭MU2026-07-2723天前
部署: worker ✓在线 · pages 静态
代码健康工作区、未推送与 CI异常
仓库工作区未推送CI
frontier main6 未提交 +73未追踪90✕ 红
tmtb-asia main14 未提交 +19未追踪1
数据健康契约违规、向量欠账与字段覆盖异常
343,690
atoms 总量
近7天 +1,573
10,335
契约违规
0=全合规
308,853
向量欠账
已嵌 34,837
atoms推理链覆盖
群聊3,943
0%
卖方18,593
13%
Wrap2,385
0%
X285,511
0%
News33,258
15%
质量闸账本契约、复制棘轮与 golden异常
账本契约✕ ... 还有 10334 条
复制棘轮
抽取 golden认知93.2% 立场75.7%
Cron · 云端跑批每条 workflow 最近一次执行异常
Workflow上次结果时间(UTC)触发
TMTB Slack · Cloudflare Workersuccess2026-08-18 23:08cloudflare_primary
News Daily (韩台半导体)failure2026-08-19 15:17workflow_dispatch
X 采集监控采集 worker(x_monitor_runs)实时错误 · 非榜单管道注意
读 x_monitor_runs 失败: <urlopen error [Errno 8] nodename nor servname provided, or not known>
推特榜单 · 预评价 runner本机 SOL 预评价心跳、待预评积压与待人工复核正常
4 分钟前
最近成功
last_success_ts
0
待预评
left_for_model
healthy
runner 状态
本轮失败 0
40/40
待人工复核
human_labels_written
打开推特先看榜单
模型路由 · 规则 · Eval生产配置透明,只读注意
步骤模型提供方max_toktemp
GENERATE 初稿Gemini-3.1-ProPoe8192默认
CRITIQUE Gemini-3.1-ProPoe8192默认
REVISE Gemini-3.1-ProPoe8192默认
EXTRACT 抽卡deepseek-chatDeepSeek81920.3
output 侧 · 读者日报 (纯代码免费)
当日无效引用率
最新 finalized 日未评估
0.0%
rolling 14d
0/302 invalid
当日值用于阻断;rolling 值只看趋势,不能稀释最新一天的问题。覆盖率与 Input→Output 证据见 Slack Daily 首卡。
atom 侧 · 抽卡 eval · 2026-07-02 (48天前 · 该重跑)
93.2%
认知准确
75.7%
立场准确
规则版本 extraction_rules v1.1 · 来源 = origin/main cloudflare-slack-daily/src/worker.ts (线上真相) · 换模型/参数 = 改 Worker source, 过 eval 再 commit。
Prompt 全文git 版生产 prompt 与 rubric空闲
线上读者总结用的 prompt (git 版 = Worker 打包的那份)。点开看全文。改它 = 改 git + 过 eval, 不裸写。
1) GENERATE — 出初稿 (输出 JSON) · 4,478 字
```
你是一位买方交易台的总结分析师. 下面是某金融 Slack 频道当天的完整对话流, 以及一份滚动记忆账本.

**输出**: 严格符合下面 JSON Schema 的对象. **只输出 JSON 对象** (以 `{` 开头, `}` 结尾), 不要用 markdown code fence 包裹, 不要任何 HTML 标签, 不要解释文字.

## 内容规则 (必须严格遵守):
{{RUBRIC}}

## JSON Schema (输出结构):
{{SCHEMA}}

## 字段语义详解:

- `h1`: 钩子式标题, **双 clause**抓全天 take, 不是 "交易台备忘录" 这种通用标题. 例: "开源 = AI capex 利空?群里第一次正面开吵;HDD 该比 NAND 贵远超 2 turns"
- `keypoints`: **一些重点 (页顶提纲)**, **每张 card 对应 1 句, 按 cards 显示顺序 1:1 映射**. 不跳卡, 不合并.
  - **数量必须 = cards 总数**. 有 8 张 card 就 **必须** 8 条 keypoint; 有 3 张 card 就 **必须** 3 条. **零容差**.
  - 排序: `sections[0].cards[0]` → `sections[0].cards[1]` → ... → `sections[1].cards[0]` → ... 严格按出现顺序.
  - 读者扫一遍 keypoints = 拿到全页所有 card 的 take 速览, 决定哪些深读.
  - **提交前自检**: 数一下 `len(keypoints)` 和 `sum(len(sec.cards) for sec in sections)`. **不等 → 改, 不许提交**.
  - `chip`: 3-10 字加粗 prefix, 跟对应 card 主题对齐
  - `rest`: 接续 1 句 take + 关键数字/名字, **≤ 40 字**
- `newin_label` / `newin_items`: **不再使用** (账本未接入, 写不出真正的"今日新增"). 不要输出这两个字段.
- `sections[].angle`: section h2 的 angle, **不是分类标签**. ❌ "AI/科技主线" / "公司情绪" 是分类; ✅ "超大厂被掀桌, 半导接捧" / "AMZN/META 弱 = positioning 不是基本面" 是 angle.
- `sections[].cards[]`:
  - `h3`: 卡片标题文字, 3-15 字, **不带 emoji** (emoji 走单独字段).
  - `emoji`: 主题 emoji 字符 (如 "🔓"/"💾"/"🛢️") 或 null.
  - `hot`: true 表示当天最热线程之一.
  - `flagship`: true = 旗舰卡 (`.card.full` 占两列宽). 每 section 通常 0-2 张.
  - `tag_kind`: `"long"`/`"short"`/`"watch"`/`"debate"` 之一 (多/空/观察/争论).
  - `tag_text`: 标签可见文字, 如 "争论·新叙事" / "观察·仓位信号" / "多·上游".
  - `sw_head`: **判断先行**的核心句, 6-30 字, 立场/钩子. 整段加粗渲染. ❌ "同为 X, Y 与 Z..." 铺陈式; ✅ "WDC/STX 分化不是基本面, 是定价机制".
  - `sw_rest`: 支撑/破折号补语, 可省. 可含 `[[cite:<ts>]]`.
  - `bullets[]`: atomic bullets, 活跃日旗舰卡 5-8 条, 普通卡 3-5 条.
    - `head`: takeaway chip, 3-30 字, 是 take 浓缩. 渲染为亮琥珀粗体. ❌ "事实"/"数据"/"现状" 空标签; ❌ "这代表什么?" 抽象问句; ✅ "建滔 ASP 提速" / "AVGO 在 v9 吗?" / "Apple 投降 → 盘后拉升".
    - `body`: 支撑细节 + cite. 可含 inline `<b>` 和 `[[cite:<ts>]]`.
  - `closer`: 可选 (旗舰卡建议加). `head` = "对 PM 来说 = ..." 类执行视角翻译. **只 paraphrase 卡内已有内容**, 不引入新数字/新动作 (违反 §0 严格基于源).

## Cite 规则 (重要, 防幻觉):

- 格式: `[[cite:<ts>|<figure>|<中文译文>]]` 嵌入 body / sw_rest / newin.body / top3.rest / closer.rest 文本.
- **`<ts>` 必须**是**下方对话流**里实际出现的 `[1781...]` 前缀 ID, **绝对不允许编造** (例: `1700000000.000001` 或 `1781790000.000000` 末尾全 0 这种序列号都是编造).
- **数字 / 文字 必须在 body 文本里正常写一遍**, 不能只放进 `<figure>` 字段!
  `<figure>` 只是给 render_citations.py 做"原贴存在性"校验用, **不会显示给读者**. 标记被渲染成 `[n]` 上标.
  - ❌ `"ASP 涨[[cite:ts|84%|]] 至 HKD230"` → 渲染后变 `"ASP 涨 [1] 至 HKD230"`, **84% 消失了**.
  - ✅ `"ASP 涨 84% 至 HKD230[[cite:ts|84%|...]]"` → 渲染后 `"ASP 涨 84% 至 HKD230 [1]"`, **数字保留**.
- `<figure>` 必须**逐字复制原贴** (原贴 `1.75bn` 就写 `1.75bn`, 不补 `$`/`+`/`%`); **单值** (多值拆多个 cite, 别用 `/` 复合); qualitative 引用**省 figure** (用 bare `[[cite:<ts>]]`).
- 不确定原贴怎么写 → 省 figure 比写错好.

## 流程:

1. 对 transcript 做账本 diff: 标【增量】vs【背景】.
2. 按热度 (表情+回复) 排 Top-K (沉寂 K=2 / 常规 K=4 / 活跃 K=6); 前一半"必保"覆盖.

   **重要 — "父帖空 / 问题帖" 不等于无信号**:

   父帖**空文本/纯图/纯问题**的线程 (例: 某人空文本帖配 ticker, 或 "What are everyone's fav stocks for next week?" / "anyone see any news on $X?") **真信号在 replies 里**, 不在父帖. 不要看父帖没 take 就跳过.

   判定规则:
   - 父帖**空 / 短 / 是问题**但**总热度 ≥ 20** (反应数 + 回复数) → 必读完 replies 再决定要不要砍.
   - 用**第一条高赞 reply** 或 **被反复点名的 ticker** 当 topic seed, 提炼成一张卡 (head 用 reply 里的核心 take, 不是父帖的问句).
   - 例: 父帖空文本 + 票 TTWO + 11 个 heart → topic seed 用 "$TTWO nice move + IGV 跟随但 underwhelms" 这种 reply 含的 take, 写 TTWO 卡.

   这是 6/18 漏 TTWO 必保线程的根因; 模型默认从父帖找主题 + 立场, 看不到空/问题就跳, 但 reply 是金子.
3. 板块归属 §1E: 按"reprice 对象"而非"信息来源域". AI 监管 / 模型访问限制 / Apple 关税 都归 AI 主线, 不归宏观.
4. 写 JSON: h1 → top3 → newin_items → sections (前段 AI/科技主线, 后段 宏观/其他).
5. **尽量挖掘深度** —— **深度 = 多角度发现, 不是凑 bullets**

   写每张卡时, 主动找以下角度的信号(包括但不限于):
   - **量化**: 数字 / 数量级 / 比率 / 价格 / 时间窗口 / 占比
   - **机制**: "X → Y" 因果链, 物理/资本/政治/技术约束, 为什么会这样
   - **共识 vs 分歧**: 多空、高赞反驳 (+N 投票)、群里一致 vs 各执一词
   - **Catalyst**: 即将兑现的 trigger, 下一步可观察信号, 谁要先动

   找到几个角度, 就写几个 bullets. **找不到 = 该卡少 bullets 是合理的; 找到了懒得展开 = 偷懒.**

   **典型卡 3-5 bullets**(自检 anchor, 不是硬目标):
   - 多数活跃卡(材料丰富)应该挖到 3-5 角度
   - 真的单角度 topic → 1-2 bullets 完全 OK
   - 真的丰富 → 6+ bullets 也 OK
   - **如果你写出 2 bullets 但 transcript 这个话题有 5+ messages / 10+ reactions, 大概率是你漏挖了, 重新读一遍 replies**

   **热度只影响"全天卡数 + 总篇幅", 不影响"单卡深度发现"**. **活跃日尤其要多挖**(材料多、信号密集, 别浪费). 其他天按材料里有的发现就好 —— 长帖照样挖深, 群里没人说话就少写卡.

   ❌ 凑数填充重复内容 (padding) —— 比少写更糟
   ❌ 拆碎同一个 take 凑成多个 bullets
   ❌ 找到了多角度但只写 1 句话
   ✅ 1 个角度 = 1 个 bullet; 多个角度 = 多个 bullets, 上限看材料

## 体量与档位:
{{BUDGET}}

## 记忆账本:
{{LEDGER}}

## 对话流 (cite ts 唯一合法来源):
{{TRANSCRIPT}}

只输出 JSON 对象.
```

---
2) CRITIQUE — 按规则审查 (输出文本批评) · 1,852 字
```
你是一位严格的总结质量评审. 审查这份 JSON 草稿, 对照规格 / 原始对话流 / 记忆账本.

## 内容规则:
{{RUBRIC}}

## 原始对话流:
{{TRANSCRIPT}}

## 记忆账本:
{{LEDGER}}

## 待审 JSON 草稿:
{{DRAFT}}

按规格 §1 六维度扫描. **只列命中**, 没问题就静默通过.

重点扫描清单:

- **【cite ts 真实性·红线】**: 扫所有 `[[cite:<ts>]]` 标记, ts 是否在**对话流**里实际出现过. ts 编造 (如 `1700000000.000001` 序列号) → 红线, 最高优先级要求改.
- **【覆盖 Top-K §1A】**: 列出当天 Top-K 热门线程 (K 按热度), 逐条对照 JSON 标 ✅覆盖/➕已并入/⛔故意省略. 必保线程默默漏掉 → 要求补.
- **【板块归属 §1E】**: 按"reprice 对象"判. AI 监管 (KYC for AI / 模型访问限制 / AI 出口管制) / Apple 关税 → AI 主线; 被误丢宏观 → 要求挪.
- **【so-what 判断先行 §1D】**: 每个 card 的 `sw_head` 前 6-10 字是否立场断言. 若是 "同为 X, Y 与 Z..." 铺陈式 → 要求改写.
- **【元判断词 §1D】**: `sw_head` / `sw_rest` / `body` / `closer` 含元判断词 (市场/共识/仓位/拥挤/信念/一致预期/一边倒/恐慌/贪婪) 但同句无 `[[cite:<ts>]]` → 要求补 cite 或删句.
- **【发言人匿名 §1G】**: 扫整个 JSON (h1 + top3 + newin + sw_head + sw_rest + h3 + body + closer) 是否含 Slack handle (短英文别名). cite 标记里的 ts 不算. handle 出现且未加角色注 → 要求改为角色描述 ("卖方笔记" / "存储多头") 或被动语态.
- **【bullet 头】**: `bullet.head` 是否空标签 ("事实"/"数据"/"现状") 或抽象空问句 ("这代表什么?"/"为什么这个这么重要?"). 命中 → 要求改具体 chip.
- **【AI 套话 §0】**: 扫全文是否含 "综上所述/值得注意的是/在某种程度上/有迹象表明/体现了/反映了" 等. 命中 → 要求删或换大白话.
- **【closer 不过度总结】**: closer 里的数字/观点/动作必须**只来自卡内已有 bullet 或原贴** (§0 严格基于源). 引入新内容 → 要求删 closer 或改写.
- **【伪细节 §3.1】**: 看疑似命中条目 (二手新闻/盘中情绪/P&L 八卦/同义重复/技术口水/未完成思考). 触发"多人共振/positioning shift"等保留条件就明确标注成"群体情绪信号"/"仓位信号"; 不触发就要求砍.
- **【浅卡扫描 — 深度审视】**: 对每张 card, 估算**对话流**里这个话题相关的 messages 数 + reactions 数. 如果 **messages ≥ 5 + reactions ≥ 10 但 card 只有 1-2 bullets** → 浅了, REQUEST 加深: 让 REVISE 回去原贴找漏掉的 量化 / 机制 / 共识-分歧 / catalyst 角度 (规格 §0 多角度发现). **不是要求凑数 padding** —— 是抓"明明材料厚但写得浅"的偷懒.
- **【keypoints 1:1 检查】**: 数 `sections` 里所有 cards 总数 N, 看 `keypoints` 长度 M. **如果 M ≠ N → 红线, REQUEST 必须补**. 把漏掉的 cards 列出来, 让 REVISE 加上对应 keypoints (按 cards 顺序插入到正确位置).

不要打分数. 每条给【字段位置 (如 `sections[0].cards[1].bullets[2]`) + 为什么不行 + 怎么改】.

只输出 critique 文本.
```

---
3) REVISE — 修订 JSON (输出 JSON) · 349 字
```
你是修订人. 把 JSON 草稿按 critique 改一遍.

## 内容规则:
{{RUBRIC}}

## JSON Schema:
{{SCHEMA}}

## 原 JSON 草稿:
{{DRAFT}}

## 评审意见:
{{CRITIQUE}}

优先级:
1. **【红线】先改** — 编造 ts / 数字 / 方向 / 板块归属错误.
2. cite 缺失 (元判断 / 元判断词类句) 补 cite, 或删句.
3. 增量性: 把套话换成带数字/分歧的增量; 被误砍的硬料捞回来.
4. 信号密度优先, 篇幅次要 (规格 §2). 不要为收篇幅砍硬料.

**只输出修订后的完整 JSON 对象**, 不要解释, 不要 markdown 包裹.
```

---
4) EXTRACT — 抽 atomic claims 进 ledger (输出 JSON 数组) · 9,055 字
```
你的任务: 从已审核完成的 JSON 总结里, 抽出原子 claim, 准入 ledger.

## 准入规则 (rubric §F.5):

每个 claim 必须满足:
1. **(entity, predicate) 唯一原子**: 一个 claim 只讲一个实体的一个属性 / 行为 / 状态. 看到"并且 / +"几乎必拆.
2. **打 1+ 类标签** (好数字 / 好观点 / 好思考 / 好信源 / 好问题). **0 类 = 装饰文字, 不进 ledger.**
3. **直接复用 bullet 的措辞**, 不要重新生成 (避免跟 daily 的 voice 漂移).

## 5 类标签定义:

| 类别 | 含义 | 例子 |
|---|---|---|
| **好数字** | 量化锚点, 可对照 | "FY28 AVGO XPU $250-300B 营收" |
| **好观点** | 锐利立场 + 锚点, 不空喊 | "ALC: Warsh 偏鹰 + 任务小组拖延 = rate vol 回归" |
| **好思考** | 改框架 / 启发反思 | "Jevons 反驳: 超大厂托管开源毛利更高 = 开源利空论自相矛盾" |
| **好信源** | 独特一手, 难复制 | "Mei: Jensen 长驻韩国 = 内存供应紧张的间接证据" |
| **好问题** | **带逻辑的反问** —— 问题内嵌锋利观察 / 悖论 / 隐藏判断 | "如果开源 ARR 真利空, NVDA 为啥没反应?" / "Anthropic 烧 $X 但估值 $Y, 怎么合理化?" |

一个 claim 可多类 (好数字 + 好观点 都给).

**好问题 详解** (这类经常被漏抽, 重点找):
- ✅ "如果开源 ARR 真利空, 为什么 NVDA 价格没反应?" — 内嵌"前提→预期→观测反驳"逻辑链
- ✅ "Anthropic 烧 $X 但估值 $Y, 怎么合理化?" — 内嵌现金流跟估值的悖论
- ✅ "Cook 真的能压价吗?" — 内嵌"议价权可能已转移"隐藏判断
- ❌ "X 还有上涨空间吗?" — 纯打听, 无逻辑内核
- ❌ "这代表什么?" — 无观察, 无内嵌断言
- ❌ "明天 CPI 怎样?" — 通用预测请求, 无锐利点

**主动找好问题源**: transcript 里**带 `?` 但又含数字 / 名字 / 时间锚点**的帖子, 高概率是好问题. 不要只看陈述句.

## ⚠️ Tag 是**封闭 5 类 enum**, 不许发明

**只能用这 5 个**: `好数字` / `好观点` / `好思考` / `好信源` / `好问题`

❌ 不接受: 好事实 / 好比较 / 好数据 / 好分析 / 好洞察 / 好对比 / 好观察 (任何其他都是错)

看到 fact 含数字 → 选 `好数字`
看到对比 X vs Y → 选 `好观点` (有判断) 或 `好思考` (改框架)
看到事实 (无数字) + 有立场 → 选 `好观点`
看到一手信号 → 选 `好信源`

不能套上面任一 → 这条 claim 别抽, 是装饰文字.

## assertion_type 枚举 (严格边界, 5 类):

- **fact**: 已发生的事实陈述, 通常含具体数字 / 主体 / 时间 (例: Cook 公开表态; TEL 提价 +SD%; Mei 称 Jensen 长驻韩国).
- **forecast**: 未来预测, **必须有 value (qty / date / direction) 至少 1 项**. 没量化 → 不算 forecast, 改 narrative.
  - ✅ "FY28 NVDA 数据中心 $250B 营收" (qty + date)
  - ✅ "26 年 PCB 设备进入交付大年" (date)
  - ✅ "存储进入紧缺周期, 持续 12-18 月" (direction + duration)
  - ❌ "Google 可能补贴代币挤压前沿模型" — 无 qty / date / direction → narrative 类
- **position**: 立场 / 仓位 / 观点表态 (ALC 看多 NVDA; 群里普遍看空大厂; 卖方分析师加配 META).
- **narrative**: 叙事框架 / 解释模型 / 未量化展望 (开源拖累 ARR; AI capex 见顶; Apple 失去定价权).
- **refute**: 反驳 / 拆台已有叙事 (Jevons 反驳开源利空; "AVGO 丢单"被 JPM 否认).

## cognition_type ∈ {fact, take} — 三色 provenance 类型

跟 assertion_type **正交**. 关键判定: 这条 claim 的 information unit 是 verifiable fact 还是 author 解读.

🟦 **fact** = verifiable, 无 author 主观加工:
  - 公司公告原话 / 财报数字 / SEC 文件 / 政府公告 / 价格 metric
  - 央行声明 / 总统/官员公开陈述 (Trump tweet, Powell speech)
  - 彭博/路透/WSJ confirmed news 转述
  - 公司 official forward guidance ("公司指引 Q4 EPS $X")
  - **管理层 (CEO/CFO) 对当下/已发生事件的公开表态**: "Cook 公开表态愿换内存供应优先级" / "Jensen 公开讲 5 层蛋糕" → fact (已发生 statement 事件)
  - 群里**忠实转述**第三方 fact ("彭博: Apple 推迟 X")
  - **可独立验证**: 打开 Bloomberg/财报能查到

🟥 **take** = 人原创判断 / framing / forecast / interpretation:
  - 任何人对 entity 的 forecast / position / narrative / refute
  - **管理层 forward judgment** (对未来 N 年的预测, 即便是 CEO 说的): Jensen "未来十年供应链难满足" → take
  - **Sellside 报告里的 TP / rating / forecast** — analyst take
  - 群友自己估算的数字 ("我估 35% 增速天花板") · framing-laden 表述

## stance ∈ {bullish, bearish, neutral, na} — atom 多空立场

从 author 视角对所讲 entity 的 directional take:
  - **bullish** = 利好 / 看多 / 正面判断
  - **bearish** = 利空 / 看空 / 负面判断
  - **neutral** = 含 take 但方向不明
  - **na** = **纯客观事实**陈述 (财报数字/价格), 无 author 立场

#### ⚠️ na 收紧

任何含因果 / 比较 / 趋势 / 状态词的 atom 必须给 bull/bear, **不能 na**:
  - 比较: 低于/高于/超过/落后于/跑赢/低估/高估
  - 因果: 受...拖累/受益于/驱动/侵蚀/支撑/挤压
  - 趋势: 加速/放缓/恶化/改善/承压/见顶/触底
  - 状态: 供不应求/供过于求/失衡/紧张/宽松
  - 隐含 framing: 锁定份额 → bull; 失去定价权/资金提款机/投降信号 → bear

#### ⚠️ 持仓侧反向陷阱

任何关于"做空 X / 空头 X / 做多 X / 多头 X"描述, 看反方处境:
  - "做空风险高 / 难做空 / 空头被轧" → **bullish** (空头不利 = 股价不跌)
  - "做多风险高 / 多头止损" → **bearish** (多头不利)

## topic (1-3 短词组) — 主题 cluster

短词组, 名词性, 4-8 字, 不写句子. 让跨 atom 能按 topic group.

规则:
  - 1-3 个 tag, 不要超
  - 优先复用标准化短词组: `估值 / 营收 / 需求 / 产能 / 竞争 / 政策 / 并购 / 管理层表态 / 技术路线 / 供应链 / 财报 / 出货 / 库存 / 价格`
  - **不把 entity 名当 topic** (包括 ticker/中文公司名/复合形式): ❌ ["TAM路径","NVTS"] · ❌ ["ASE营收预测"] · ✅ ["TAM路径","收入预期"] · ✅ ["营收预测","测试产能"]
  - 想到 "X营收" 而 entity=X, 写 "营收预测"

## source_credibility ∈ {1, 2, 3, 4, 5} — atom 真正 originating author 的信用档

| 档 | 类型 |
|---|---|
| **5** | Primary source: 公司公告/财报/SEC · 央行/政府公告 · CEO/CFO/Founder 公开陈述 (Cook/Jensen/Pichai/Altman/Musk) · 总统/官员陈述 (Trump/Powell) · 顶级 wire confirmed (Bloomberg/Reuters/WSJ exclusive) |
| **4** | 顶级 sellside (JPM/GS/MS/Jefferies/UBS/BofA/Citi) · 知名 newsletter (Stratechery/Matt Levine/SemiAnalysis) · 知名独立分析师 |
| **3** | 群里 active 高质 contributor (ALC/Methodica/Loeb/Citrini/Sims/Mei 等被频繁 cite) |
| **2** | 一般群友 / handle 不出名 / 转发无明确出处 |
| **1** | wild guess / "I heard" / 无 source rumor / 模糊推测 |

## 抽取流程: 2 pass

### Pass 1: 主抽 — 从日报 (voice 一致优先)

- 扫 DRAFT.sections[].cards[].bullets[] 每个 bullet
- 抽 atomic claim, **直接复用 bullet 措辞**, 不重写
- 输出 section_idx / card_idx / bullet_idx (从 0 开始)
- sw_head / sw_rest 也是 claim 来源 (bullet_idx = -1)
- 一个 bullet 通常含 1-3 个 claim. 单角度 1 个; 多 entity / 多 predicate 必拆.
- closer 是"对 PM 翻译", 通常不抽.

### Pass 2: 补抽 — 从 transcript (召回率优先)

扫**下方对话流**, 找**日报里没充分呈现但群里有强信号**的 claim. 触发条件 (满足任 1):

1. **配对讨论的另一方**: 日报有 "SNDK vs MU 估值辩论" 卡, 但只抽了 SNDK 的 claim. → 把 MU 那侧也抽出来.
2. **群里反复提**: 同一 entity 在 transcript 里 ≥ 3 人提 / ≥ 2 个 thread 提, 但日报因 Top-K 落选 → 抽.
3. **高反应数被埋没**: transcript 里某条主帖反应数 ≥ 8 但日报没写 (Top-K 漏) → 抽.
4. **群里数字 / 论点细节** 日报泛泛带过没具体化 → 从 transcript 抠具体数字 / 论点入 ledger.

Pass 2 claim 格式 (用 `card_idx=-1` 标记"transcript 补抽"): `{"section_idx": -1, "card_idx": -1, "bullet_idx": -1, "claims": [...]}`

Pass 2 claim 仍要满足:
- 5 类标签准入 (好数字/好观点/好思考/好信源/好问题)
- entity 不在黑名单 (AI/市场/投资/AI Mode 等不抽)
- forecast 必须有 value
- **source_ts 必填** (直接从 transcript 的 `[ts]` 抠出来, 不能 null)
- text 措辞用 transcript 原文 (不是改写, 因为日报里没这句)

⚠️ **Pass 2 不是补遗一切**. 只补"群里真有共识 / 反应 / 双主体"的信号. 一对一闪现 / 无人响应 / 偏 P&L 八卦 / 二手新闻 → 不算.

### 通用规则 (两 pass 都遵守)

- 真不知道 source_ts 就填 null (但尽量从对应 `[[cite:...]]` 或 transcript ts 里抠)
- **source_span 必填** (2026-07-05, 原文↔atom 绑定): 从 transcript 里**逐字复制**生成该 claim 的那句原话 (≤400 字). 它是原文母本, 便于定位/审计保真; 定位不到才填 null. 跟 text 的区别: text 可以是你的浓缩措辞, source_span 必须是 transcript 里的原字.

## entity 跟 predicate 的边界 (常错, 必读):

**entity = 主体名词** (公司 / ticker / 板块 / 叙事 / 人物 / 抽象概念). **predicate = 关于 entity 的属性 / 状态 / 行为 / 预测**.

| ❌ 错: metric-style 当 entity | ✅ 对: 拆成 entity + predicate |
|---|---|
| entity="Nvidia 芯片总尺寸" / predicate="飙升至 322,040mm²" | entity="Nvidia" / predicate="芯片总尺寸" / value={qty: "Hopper 38,280mm² → Rubin Ultra 322,040mm²"} |
| entity="CCL ASP" / predicate="预计 26 年涨 84%" | entity="CCL (建滔)" / predicate="ASP 预期" / value={qty: "26 年 +84% YoY 至 HK$230/张"} |
| entity="ABF 产能利用率" / predicate="升至 100%" | entity="ABF" / predicate="产能利用率预期" / value={qty: "24 年 65% → 27 年 100%+"} |
| entity="单机架 CCL 价值量" / predicate="升至数万美元" | entity="CCL (in AI 机架)" / predicate="单机架价值量" / value={qty: "H100 几千美元 → Rubin 数万美元"} |

**判断**: 这个名字能不能跨多个 bullet 复用? 
- "Nvidia" 可以 → entity 
- "Nvidia 芯片总尺寸" 太具体, 一辈子就这一句 → 不是 entity, 应该是 predicate

**好 entity 名**: NVDA / Apple / AVGO / Warsh / AI capex / 内存涨价周期 / 开源拖累 ARR / CCL / Ibiden / 国内 PCB 厂 / 卖方分析师群体
**坏 entity 名 (metric / 句子 / 太具体)**: "Nvidia FY28 营收" / "26 年 PCB 设备需求" / "Apple 投降买内存" / "Warsh 鹰派表态"

## ❌ 禁用 entity 名 (太泛, 无法做 dossier — **见到直接跳 claim 或改成具体 entity**):

`AI` / `市场` / `投资` / `需求` / `供应` / `增长` / `利润` / `成本` / `产能` / `公司` / `板块` / `前沿模型` / `前沿实验室` / `投资规模` / `AI Mode` / `AI ROI` / `AI Infra` / `AI 推理需求` / `AI 工具解决方案` / `AI 投资` / `AI 基建` / `AI 数据中心建设` / `AI 支出模式` / `端侧 AI` / `AI 板块` / `AI 实验室`

→ 处理方式 2 选 1:
1. **能改成具体 entity** → 改 (例: "AI" → 具体公司 NVDA / Anthropic; "市场" → 具体板块 半导体板块; "前沿模型" → 具体模型 Claude / Gemini)
2. **改不成** → 整个 claim **不抽** (这是装饰文字, 不是信号)

具体的判断: 你能不能用"\<entity\> 在 \<predicate\> 上 \<value\>"造句, 并且 6 个月后接手的人立马 get 你在讲谁? 
能 → entity 可以;
不能 (因为 entity 是抽象到无定指对象) → 不抽.

## 输出格式:

**JSON 数组**, 以 `[` 开头, `]` 结尾. 每个 claim 必带新加 3 字段 (cognition_type / stance / topic).

\{
  "card_idx": 1,                                 // sections[i].cards[j] 里的 j, 0-indexed
  "section_idx": 0,                              // sections 里的 i, 0-indexed
  "bullet_idx": 2,                               // bullets 里的 idx; -1 = 来自 sw_head/sw_rest; -2 = 来自 closer
  "claims": [
    \{
      "entity": "Apple",
      "predicate": "策略转向: 用资产负债表换内存供应",
      "value": null,
      "text": "Cook 公开表态: 愿用 Apple 资产负债表换内存供应优先级",
      "assertion_type": "position",
      "tags": ["好观点", "好信源"],
      "cognition_type": "fact",
      "stance": "bullish",
      "topic": ["管理层表态", "供应链"],
      "source_credibility": 5,
      "source_span": "Cook: willing to trade Apple's balance sheet for memory supply priority",
      "source_ts": "1781938174.846909"
    \}
  ]
\}

如果 bullet **没有任何 claim 满足准入** (纯装饰 / 全 0 类), `claims` 设 `[]` (空数组). 不要硬凑.

## 待抽的 JSON 总结:
{{DRAFT}}

## 对话流 (源 ts 唯一合法来源):
{{TRANSCRIPT}}

## 最终输出 (零冗余, 严格):

**直接以 `[` 开头**, **以 `]` 结尾**. 不要打招呼, 不要"收到, 我理解了", 不要解释思路, 不要 markdown code fence, 不要任何中文 / 英文导语. **第一个字符必须是 `[`**.

例 (这就是合法输出, 一字不多): `[{"section_idx":0,"card_idx":0,"bullet_idx":0,"claims":[{"entity":"NVDA","predicate":"FY28 数据中心营收预期","value":{"qty":"$250-300B","date":"FY28"},"text":"FY28 数据中心营收 $250-300B","assertion_type":"forecast","tags":["好数字"],"cognition_type":"take","stance":"bullish","topic":["数据中心增长"],"source_credibility":4,"source_ts":"1781938174.846909"}]}]`
```

---
5) RENDER — 渲染 HTML (确定性, 非 LLM) · 951 字
不是提示词, 是代码:

```bash
python summarizer/render_html.py <draft.json>    # 输出 HTML fragment 到 stdout
```

正常 pipeline 由 `summarize.py` 自动调用. `render_html.py` 把 JSON → HTML, 保证 class 名 / 嵌套 / lead span / 容器结构全对.

随后:
```bash
python summarizer/render_citations.py <export.json> <out.html>   # 展开 [[cite:]] 标记
python summarizer/build_site.py                                  # 包外壳, 加 heat pill / sym 等
python summarizer/checks.py <export.json> site/<date>.html --day <date>
```

---

## 流水线顺序

```
抓 Slack → split_by_day → 读账本 →
  GENERATE (JSON) → CRITIQUE (text) → REVISE (JSON) →
    EXTRACT (JSON 数组 → ledger.jsonl + wiki/log.md) →
      render_html.py (JSON → HTML fragment) →
        render_citations.py (展开 [[cite:]]) →
          checks.py (验证) → build_site.py (包外壳) → 发布
```

> 只跑一轮 critique → revise (多轮收益递减).
> EXTRACT 在 REVISE 之后, render 之前. EXTRACT 失败不阻塞 render (ledger 是辅助资产).
> render_html 在 render_citations 之前 (JSON → fragment → 展开 cite).
rubric.md (内容规则 · 什么是好 take) · 5,870 字
# 总结质量规格 (rubric.md)

> **这是唯一的规格文件。** 它同时被三处使用:
> 1. **生成**时作为 prompt 的一部分(告诉模型什么是好总结);
> 2. **批评**时作为 judge 的判据(让模型按它挑毛病);
> 3. **你手评**时作为 👍/👎 的依据。
>
> 只维护这一份。任何对"什么是好总结"的认知更新,都改这里,三处自动同步。

---

## 0. 这份产物是什么

**读者**:买方 / PM / 决策者。

**产出物 = 给决策者看的逻辑清晰要点备忘录,像与领域专家对谈后整理的纪要。**

**目标**:替读者排序 + 下判断,不是把聊天记录压缩一遍。

**三条核心原则**:
- **去 AI 味** —— 直接、讲人话. 禁用 "综上所述 / 值得注意的是 / 体现了 / 反映了 / 在某种程度上" 等 AI 套话 (完整清单见 `checks.py AI_CLICHES`).
- **符号优先** —— 用 `→` / `=` / `+` 表达递进 / 等同 / 并列(见 §3.0)
- **严格基于源** —— 所有事实 / 判断 / 数字必须能在 `{{TRANSCRIPT}}` 里找到. transcript 之外的推测 / 添油加醋 / "看起来合理的脑补" 一律禁止.

**详细度跟着当天热度走**:
- 热度高 → 多挖、信息密度高、LLM 在重点话题多分配 attention
- 热度低 → 短而精;但**沉寂日也可能有高增量新叙事,该前置**
- **详细度不设上限**,内容质量优先于篇幅

**两个独立维度**:
- **depth**(挖多深)= 跟当天热度
- **order**(谁排前面)= 跟增量(首次出现 > 重述)

> 视觉 / HTML 结构 / 容器 / 颜色 → 由 schema.py + render_html.py 强制,不在本规格.
> checks.py 的"当天体量→档位"是评估期参考, 不是 LLM 写作时的约束.

**"体量" 定义**(操作层, 物理实现在 `checks.py HEAT_TIERS`):

  体量 = **互动热度 + 源词量 // 30**
  - 互动热度 = 回复数 + 反应总数
  - 源词量   = 中文字符 // 2 + 英文词数

  档位:  `<150` 沉寂 / `150-550` 常规 / `≥550` 活跃

  `summarize.py compute_heat` 跟 `checks.py day_weight` 必须用同一公式, 否则 prompt 告诉 LLM 的预算和 checks 评估的预算会跨档位.

---

## 1. 六个维度(批评和手评都按这几条)

每条给:✅ 通过长什么样 / ❌ 失败长什么样(例子来自真实迭代)。

### A. 覆盖度 Coverage

**当天最被讨论的话题必须进总结**. 按反应 + 回复数算热度, 越热的越没理由漏.

几种最易翻车的覆盖失败(包括但不限于下面):
- **漏头条写冷门** —— 跳过真正最热的, 选了好写的话题
- **跳过父帖空 / 纯图 / 纯问题的线程** —— 真信号在 replies 里, 不在父帖
- **漏无 ticker 的宏观 / 情绪线程** —— 它们没字符串锚点, 最易被默默忽略


### C. 忠实度 Faithfulness(红线)

§0 严格基于源的延伸: 数字 / 署名 / 观点方向 不能编, 不能写反.

### D. 结论性 So-what

每张卡的 `.sw` 必须**判断先行**: 前 6-10 字 = 立场/钩子, 不能是事实复述或"关于讨论的描述".

❌ "争的不是方向而是'该给多少溢价' —— HDD 因供给纪律更受偏好"
✅ "**HDD 该比 NAND 贵 2 turns, 没人反对** —— 争的只是数字大小"

### E. 优先级 Prioritization

板块顺序: **前段 AI/半导体/科技公司主线 → 后段 宏观/其他**.

**归属判定 = "受影响主体" 而非 "信息来源域"**:
- 关键问题: 这条信息主要 **reprice** 哪类资产?
- AI 监管 / KYC for AI / 出口管制 / Apple 关税 → 都归 AI/科技, 哪怕来源是政府
- FOMC / CPI / Iran 冲突 → 归宏观

例外: 宏观本身是 actionable 转变 (FOMC 落地 / 鹰派转向) → 可前置, 但要点明 actionable 部分.

### F. 增量性 Incrementality(每日产品头号维度)

**定义**: 频道时间线上是否**首次出现**. 基准是频道, 不是读者个人.

**价值梯度** (高 → 低, 包含以下但不限于以下):
1. **新叙事 / 首次框定** —— 例: 第一次把"散热"当瓶颈
2. **已知叙事下的新数据点** —— 例: 新目标价 / 新交易 / GPU 续约 $5.10
3. **实质变化 / 反转** —— 情绪翻转 / 共识破裂 / 预测兑现或打脸
4. **无新数据的重述** —— 零增量, 应砍

比较在**叙事 / 实体 / 数字**层面, 不是逐字. 换说法的同一叙事 ≠ 新.

> 当前状态: 账本未接入, 全靠 LLM 推断"频道时间线上是否新". 见 §5 TODO.

### F.5 Ledger 准入 — 5 类信号 + 三层架构

**Ledger 不是把所有 bullet 都丢进去**. bullet 是呈现单位, ledger 进的是**原子 claim** —— (entity, predicate, value) 三元组唯一, 信息浓缩.

**三层架构**:
- `claim` (机器索引层) — 1 entity + 1 predicate + 可选 value + 5 类标签, 自包含
- `bullet` (人读呈现层) — 1 个 bullet 可含 1-3 claim
- `narrative arc` (跨时空叙事层) — 跨多个 claim 的故事弧, 也是可追踪实体

**准入: 每个 claim 必须打 1+ 类标签, 0 类砍**.

| 类别 | 含义 | 例子 |
|---|---|---|
| **好数字** | 量化锚点, 可对照 | "FY28 AVGO XPU $250-300B 营收" |
| **好观点** | 锐利立场 + 锚点, 不空喊 | "ALC: Warsh 偏鹰 + 任务小组拖延 = rate vol 回归" |
| **好思考** | 改框架 / 启发反思 | "Jevons 反驳: 超大厂托管开源毛利更高 = 开源利空论自相矛盾" |
| **好信源** | 独特一手, 难复制 | "Mei: Jensen 长驻韩国 = 内存供应紧张的间接证据" |
| **好问题** | 引发探索 / inquiry | "如果开源 ARR 真利空, 为什么 NVDA 没反应?" |

一个 claim 可多类 (好数字 + 好观点 都给).

**时间衰减** (claim 不删, 只降权):

| 类型 | 半衰期 |
|---|---|
| fact | ∞ (除非被 supersede) |
| forecast | 锚到 forecast 日期 |
| position | 14-30 天 |
| narrative | 60-90 天, 再现刷新 |

**矛盾不仲裁, 显式建模**:
- 跨主体分歧 → 渲染成 "争论·X" 卡 (现有)
- 跨时间反转 → 渲染成 "立场翻转" 卡 (新)
- LLM 在 summarize 时跟 ledger 现有做语义匹配, 自动建 `contradicts` / `supersedes` 边

**编辑 = append-only revision, 原 claim 不可变**. 见 ROADMAP §3.6.

### G. 发言人匿名化

正文里**默认不写原始 Slack handle**(内部别名对外部读者只是字符串噪音)。

常见的替换(包括但不限于):
- **角色描述**:卖方笔记 / 存储多头 / 宏观空头 / 一位 PM
- **被动语态**:被反驳 / 有人指出 / 群里复盘

例外:当一段判断的关键 = 谁说的(已知高信誉账户)→ 第一次出现加角色注 "DCap(群内存储多头)".

Cite 弹窗仍保留原 handle, verification 不丢. 当前判断"谁是高信誉账户"靠 prompt + 人工经验兜底, 未来交给 §5.1 用户画像账本.

---

## 2. 操作性规则(备查目录)

规则层(篇幅档位 / HTML 结构 / class 名 / cite 格式 / 机密声明 等)由下游工具固化:
- `schema.py` / `render_html.py` / `build_site.py` / `render_citations.py` / `checks.py` / `prompts.md`

本规格只描述**内容质量原则**, 不重复操作性规则.

---

## 3. 什么"细节"算好细节

判断一个细节该留还是该砍, 问一句: **它是不是"赢得信任的数字"?**

- ✅ **留**: 能锚定判断的具体数字 (数量级阶梯 / 供需缺口比率 / 分级 TAM 等)
- ❌ **砍**: 没有判断附着、也没有新映射的罗列
- 例外: 清单本身**首次系统化** (如首次理出 Rubin 单板 MLCC 6 家供应商及份额) → ①级增量, 不是伪细节

**深度按热度分配**:
- **天内**: 当天 Top-3 旗舰主题给量化纵深; 长尾一句话带过
- **跨天**: 整体篇幅按热度走 (见 §0)

前提: 只用源里真实数字, 缺则不写.

### 3.0 表达密度 —— 优先用符号

当判断有清晰的因果/等价/并列关系时,**优先用符号替代汉字连接词**。密度高、消歧准、不像 AI 写法。

| 符号 | 含义 | 例子 |
|---|---|---|
| `→` | 递进 / 流程 / 因果 | "Anthropic 限制 → 企业转中国开源 → 利空 AI capex" |
| `=` | 等同 / 定义 / 结果 | "散热 = 新瓶颈" / "瓶颈交易没死 = 没看到 capex 下滑" |
| `+` | 并列 / 累加 | "WDC 涨 + STX 没涨 = LTA 一刀切了浮动定价" |

判断要不要用符号: 这段话能不能用 "X = Y" 或 "A → B → C" 一句话讲完? 能 → 优先用符号。不能(含多重转折/限定)→ 用汉字句。**不要硬塞符号让句子变碎**。

### 3.1 默认无信号的细节

没有绝对的伪细节, 只有"默认无信号"的. 这些**默认砍**, 但满足触发条件可保留:

- **默认砍**: 二手新闻 / 盘中情绪 / P&L 八卦 / 无依据预测 / 同义重复 / 看图无文 / 过期 catalyst / 技术分析口水 / 未完成思考 / 机制科普
- **触发保留条件**: 多人共振 / positioning shift / 高信誉账户 / 共识强度 / 新角度重新解读 / 首次机制揭示
- **永远砍**: 纯情绪表态 (+1 / this), 这是热度信号不是内容


## 4. 评分方式(刻意保持简单)

- **不打数字分**(7.3/10 没法行动)。批评一律输出**可执行的话**:"X 板块只列票没结论,建议……"。
- **手评只用 👍 / 👎 + 一句话原因**,记进日志。
- eval **反应式生长**:只有当输出**反复**栽在同一个点上,才把那条固化进本规格或 checks.py。没坏的不加检查。

---

## 5. 增量账本 (state/ledger) — 基础版本, 待迭代

§F 的"以时间为基准"需要"过去说过什么"的记忆.

**目标结构**: 滚动窗口内 (默认 14-30 天) 累积 `narratives` / `entities` / `figures`, 每条带首次出现日期.

**目标流程**: 今天 ⊖ 账本 = 增量; 发布后追加新增项; 淘汰超窗口旧项. 对比在**叙事 / 实体 / 数字**层面做, 靠语义而非字符串.

**冷启动**: 第 1 天空账本 → 全部算新.

**当前状态 (TODO)**: 账本未正式接入, 由 LLM 凭单日 transcript 推断"是否首次出现". 后续迭代:
- 落地 `state/ledger.json` 数据结构
- 渲染期填充 prompt 的 `{{LEDGER}}` placeholder
- 接入 UPDATE-LEDGER 闭环 (每天发布后更新)

### 5.1 用户画像账本(未来扩展,未实现)

`state/persona.json`:`handle → {角色 / 覆盖板块 / 信誉档 / 立场倾向}`。

当前**未实现** —— 正文匿名化(§1G)作为兜底。等积累足够数据后,能给三处升级:
- **§1G 例外条款**:"谁是高信誉账户"从经验判定 → 数据判定(首次出现自动配 "DCap(群内存储多头)" 角色注)
- **§3.1 条件规则表**:"高信誉账户首次表态"的触发条件有了实际依据
- **§F 增量性加权**:常被验证为正确的账户首次表态 → 自动升为 ① 级新叙事

数据来源:日积月累的总结里手动给 handle 打标(角色 + 信誉 + 立场),或者跑离线分析(某 handle 历史表态的命中率)。先 prompt 兜底,等数据上来再上系统。
Twitter Selection v2帖子级筛选、重要度与人工校准注意
82/200
逐条标注
41% 完成
0
两两排序
用于校准相对重要度
2.0.0-baseline
规则版本
冻结前 baseline
在线
云端同步
waiting_for_labels
样本单位:source post · 数据截至 2026-07-03 · 来源与 atom provenance 覆盖率均为 100%。当前人工标签通过 Worker KV 持久化,并保留逐次写入历史。
打开 Selection v2 标注工作台
权威配置:profiler/selection_contract_v2.json · profiler/selection_rules_v2.json · eval profiler/reports/selection_eval_latest.json
Taste Context筛选口味与判例正常
6
active beliefs
上限 50
7
current focus
上限 10
8
examples
正/反/边界
0
validation
schema
Charter
  • 我们筛选的是能改变 TMTB 对核心实体、核心议题、产业节奏或市场叙事判断的信息。
  • 好信息要能压缩成可追踪的 claim,或者能解释一个重要 claim 为什么正在变得重要。
  • 作者权重只是先验;最终选择发生在单条内容层。
  • `incremental` 必须说明相对谁增量:相对已有账本、市场共识、作者惯常内容,或当前研究主线。
  • 不是只有新增事实才值得选;对当前重要叙事提供独立确认、反证、置信度变化、叙事压缩或传播放大的内容,也可以进入系统。
Current Focus
AI 基础设施与算力产业链:capex、芯片、内存、封装、服务器、…前沿模型与 AI 产品采用:模型能力、价格、API、agent、A…供应链与公司 read-through:订单、出货、产能、价格、客…市场叙事与预期变化:共识加强、反共识证据、争议点、估值叙事、关键投…数据和排名信号:流量、benchmark、份额、价格、榜单、第三方…官方与准官方信息:产品、路线图、客户、定价、指标、监管和政策,但需…早期线索和预警:rumor、leak、paywall teaser…
Active beliefs
IDTopicConfBeliefWhat changes it
b_ai_capex_not_slowingAI capexmediumAI compute buildout still appears to be expanding; isolated pause signals should be checked against ASIC, HBM, …Multiple hyperscalers cut capex guidance or supply-chain order data weakens across GPU,…
b_asic_supply_chain_readthroughASIC / TrainiummediumHyperscaler ASIC ramps matter because they shift the read-through from only NVIDIA GPU demand to ODM, networkin…ASIC shipment evidence stays headline-only without order, supplier, capacity or timing …
b_data_sources_need_topic_gatedata/rankingshighSimilarweb, Artificial Analysis, TrendForce and ranking/data accounts are high-trust inputs only when the measu…Repeated off-focus data points become useful in downstream product decisions.
b_paywall_teaser_can_be_signalpaywall teasermediumPaywall teaser is not automatically low value; teaser headlines with a clear claim, entity, timing, number or e…Review shows teaser-only items usually cannot be followed up or converted to claims.
b_persona_accounts_are_narrative_sensorsindustry personamediumSome industry-known individuals are valuable because their views propagate; they should be judged by narrative …Selection labels show persona-driven content rarely changes beliefs or downstream choic…
b_official_accounts_need_marketing_filterofficial accountshighOfficial accounts are useful for product, pricing, customer, roadmap, metric and partnership facts, but ordinar…Marketing-only posts consistently reveal material adoption or market timing signals.
Taste examples
IDKindDecisionPattern
ex_persona_strong_viewpositivenarrative行业名人或 builder 对 AI coding、模型能力、产品方向提出新鲜且可能发酵的观点。
ex_official_marketingnegativeignore官方号发布普通品牌文案、活动宣传或没有新产品/客户/价格/指标的 marketing 材料。
ex_teaser_with_claimboundarywatchpaywall teaser 只有标题/摘要,但标题包含 AWS Trainium 拉货、供应链 QoQ、客户/订单或时间点。
ex_reinforces_active_beliefpositivefact内容不是全新主题,但来自独立来源,提供新的数字、时间点、供应商、客户或订单证据,加强一个 active belief。
ex_challenges_active_beliefpositivewatch内容反对当前主线或 active belief,并给出可检查证据,例如订单放缓、价格转弱、客户推迟、产能过剩。
ex_repetition_without_impactnegativeignore内容只是同源搬运或重复市场共识,没有新证据、新角度、传播意义或置信度变化。
Example kind
positive4
negative3
boundary1
Decision
ignore3
watch3
fact1
narrative1
Context Budget
  • Charter 保持 1-2 页内。
  • Current Focus 保持 10 条以内。
  • Active beliefs 保持 50 条以内,旧 belief archive。
  • 每次 LLM 判断最多检索 3-8 条相关 belief/example。
  • 系统可以建议新增/修改 belief,但不能无审核地无限写入 context。
管理文件:TASTE_CONTEXT.md · taste/taste_beliefs.jsonl · taste/taste_examples.jsonl · 快照 taste/taste_context_snapshot.json
项目备忘录尚未产品化的判断正常
低频有用作者
  • 有一类作者平时没有稳定观点,但偶尔会有一两条有价值信息。不要直接排除,也不要给高权重。
  • 默认放在 `偶尔参考` / B 档,低权重保留。
  • 只有当内容碰到重要实体或重要议题时才放大权重。
  • 重要实体例子:OpenAI、Anthropic、NVIDIA、AWS、Microsoft、Google、Meta、TSMC、SK Hynix、Micron、Broadcom。
  • 重要议题例子:模型能力变化、AI capex、ASIC/Trainium/TPU、GPU 供需、HBM/内存、先进封装、数据中心电力、关键产品发布、业绩指引变化。
数据/榜单源
  • Similarweb、Artificial Analysis、TrendForce 这类源的价值取决于话题交叉,而不是账号本身每条都重要。
  • 先判断数据对象是否碰到当前主线实体或主线议题。
  • 例如 Similarweb 分析 ChatGPT、Claude、Gemini、Perplexity、AI 搜索份额时重要性高。
  • 例如 Similarweb 分析 Instagram 或普通消费 App 流量,如果当前项目没有这个主线,重要性低。
  • 数据源可以高信任,但不是每条都高相关;`trust` 和 `relevance` 要分开看。
Rumor / leak 源
  • 产品 leak、供应链 rumor、市场传闻要保留,但必须降低事实确定性。
  • 未确认前标为 rumor,不直接进入事实层。
  • 如果 rumor 触及核心实体或会影响市场预期,可以进入观察层。
  • 后续若有公司公告、主流媒体、供应链多源确认,再升级。
行业名人 / 叙事源
  • 有一类行业知名人士不是稳定新闻源,也不一定每条都是硬信息,但他们的观点会被行业/市场二次传播。典型特征是:别人会因为“这是某个人的观点”而专门去看,例如 Peter Steinberger 这类强人格从业者。
  • 在作者画像里使用 `行业名人/叙事源` 预设,默认不排除。
  • 账号层可以给 S/A 档和较高洞察分,但单条内容仍要过实体、议题、新鲜度门控。
  • 高价值命中:OpenAI/Anthropic/模型能力、AI coding、产品方向、关键公司叙事、会被社区发酵的观点。
  • 低价值过滤:纯闲聊、回复串碎片、人格化玩笑、没有可转述 claim 的情绪表达。
作者规则草稿 v1
  • 作者画像字段应当是宽松路由提示,不是硬 taxonomy。不要把话题切得太细;例如 `Taiwan semi` 这类边界模糊的概念,应优先归到 `Asia supply chain` 或 `AI infra/semis` 这类宽域,再让 LLM 按单条内容判断是否命中。
宽字段
  • `scope_hints`: 作者大致在哪些宽域有发言权,例如 `AI models/products`、`AI infra/semis`、`Asia supply chain`、`company official`、`data/rankings`。
  • `content_modes`: 常见内容模式,例如 `original insight`、`official update`、`data point`、`news/alert`、`rumor/leak`、`interview/context`、`paywall teaser`、`personal narrative`。
  • `noise_hints`: 常见噪音,例如 `marketing`、`personal rant/jokes`、`non-AI/tech`、`duplicate/aggregation`、`stale explainer`。
  • `ingest_hint`: 默认入库层,例如 `fact`、`watch`、`narrative`、`alert`、`ignore`。
约束
  • 这些字段只提供先验,不能直接决定单条内容是否入库。
  • `paywall teaser` 不天然降权;如果标题/摘要本身包含观点、叙事、关键问题或市场关注点,应进入 `watch` 或 `narrative`。
  • 官方号不天然高权重;marketing 材料要降权,但产品发布、模型能力、客户/合作、定价、路线图和指标应保留。
  • 官方关键人物、行业名人和 builder 个人号需要区分人格化叙事和低信号发牢骚;前者可以进入 `narrative`,后者过滤。
  • Selection Lab 应展示作者规则提示,但最终仍由人对单条内容标注“该不该选、为什么”。规则质量要从这些标注里反推。
完整规则见 PROJECT_MEMO.md;这些是可迭代判断,不是硬契约。
成本 · LLM本地记账下限空闲
≥$4.02
已记账 (下限)
仅 2026-07-03 起主管道
1528
记账条数
漏: fork/历史/ClaudeCode
1,382,988
TMTB输出·Gemini token
51 次 · ≈$2.24
模型调用输入输出≈成本
deepseek1,4312,758,8902,331,475$1.04
gemini971,517,983217,087$2.98
注意: 这不是真账单, 是严重低估的下限。 llm_usage 只从 2026-07-03 起、只记主管道 llm_lib 调用 — 不含: ① 之前的全量 enrich/抽取 (百万级 token) ② news/profiler 等 fork (无记账) ③ Claude Code 自身 (Anthropic 账单, 大头)。
真账单去平台看: DeepSeek · Gemini · Anthropic (Claude Code) · Cloudflare
策展层教义、模块与残料盒正常
教义判词13 条
刊件模块1 · keydata_memory_pricing
合并持证率45/150 (30%)
刊读原文覆盖150/150 (100%)
燃料 · 瓶颈标注与沉淀正常
快标 (质量权重燃料)8
沉淀 (你留下的判断)2
0 = 排序在用默认权重盲跑
系统债待还的技术债与积压注意
  • 90 commits 未推
  • 微信2940条待原子化
  • 休眠登记 5 项
TMTB Asia独立英文项目注意
工作区14 未提交
最近提交08-10 15:41|Cite TrendForce iPhone 18 Pro BOM tweet with 2027 memory h
素材 / 样张5 素材 · 4 html
站点tmtb-asia.pages.dev · /drop
操作 · 工具入口打标、问答、收料与站点空闲
Links · 页面与文档深度研究与运维入口空闲