Files
tps-dashboard/note/续接快照_看板分析升级_设计讨论_v3.md
T

362 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 续接快照 — 看板分析升级 v3(AI 打标流程设计阶段)
> 用途:下次新 chat 接力用。承接 2026-06-09 v1 + 2026-06-10 v2,包含 2026-06-11 一整天讨论。
> 状态:AI 打标流程设计已收敛;Cline 实操指令已交付至 Step 1.A/1.B;等 Cline 反馈推进 1.C。
> 更新时间:2026-06-11
> 顾问:Claude Opus 4.7 制片人:刘通
---
## 零、本快照与 v1/v2 的关系
v12026-06-09)和 v22026-06-10)的所有结论**全部仍然有效,不替换**。本 v3 是增量,主要做了三件事:
1. 用 11 篇真实文稿验证 v2 的叙事结构 3 档分法,发现 3 档不稳,**收为 2 档**
2. **锁定 10 期基准答案集 v0.1**(叙事结构 + 开篇钩子两个字段)
3. **设计完整的 AI 打标流程**并启动 Cline 实操
---
## 一、今天最重要的两项决策
### 1.1 叙事结构 3 档 → 2 档(路 B 方案)
v2 写进规格的 3 档"强主线悬念 / 主线演进 / 并列结构"——经过 10 期真稿验证发现"强主线悬念 vs 主线演进"在实操中区分不开(两档都满足"打乱顺序观众能跟上"),且 v2 心法"打乱顺序观众是否一头雾水"AI 打标无法稳定执行。
**最终采用路 B 方案:合并为 2 档:`主线演进` / `并列结构`**
判别尺度:
- **主线演进** = 全片由某种"贯穿主线"串起来。主线可以是:
- a) 内在概念(哲学命题/反差/共同绝境/共同特征,如"自然 vs 人类"、"绝境逼出创新"
- b) 时间/因果链(技术演进时代线、装备发展史)
- c) 性能阶梯(从弱到强、从慢到快)
- 心法:打乱顺序观众觉得逻辑乱,但能跟上
- **并列结构** = 各段相互独立、相互可替换,共性只来自分类共性(命名/装备域/空间方位),不是有张力的主线
- 心法:打乱顺序观众基本无感
**关键边界(这些都不构成主线)**
- 命名共性:4 件装备都以"马"命名 → 不是主线
- 装备域共性:5 件装备都装了 AI → 不是主线
- 空间方位共性:远/中/近程防空 → 不是主线
真正的主线必须能让"段 A 是为了铺垫段 B"或"段 B 回应段 A 的命题"。
### 1.2 字段最终版(覆盖 v2 §2 相关字段)
| 字段 | 类型 | 枚举 |
|---|---|---|
| `narrative_structure` | 单选 | `主线演进` / `并列结构`**从 3 档收为 2 档** |
| 其他 5 字段(program_format/equipment_domain/scene_tags/tech_tags/opening_hook | | 维持 v2 定义不变 |
---
## 二、10 期基准答案集 v0.1(已锁定)
10 期清单(取自 v2 §5.1 的 11 篇文稿,X-76 完稿/最终稿合并为 ep14,用**最终稿**):
| 期次 | 节目 | 收视 | narrative_structure | opening_hook |
|---|---|---|---|---|
| 3 | 硅基大脑 | 0.85 | 并列结构 | 中 |
| 4 | 潜艇仿生 | 0.92 | **主线演进** | 强 |
| 5 | 舰证不凡 | 0.72 | 并列结构 | 中 |
| 7 | 马年军事图鉴 | 0.95 | 并列结构 | 强 |
| 10 | 射速决定论 | 0.703 | 并列结构 | 弱 |
| 11 | 空战颠覆者 | 0.859 | **主线演进** | 中 |
| 12 | 逆袭战局 | 0.85 | **主线演进** | 强 |
| 13 | 长短智慧 | 0.533 | 并列结构 | 中 |
| 14 | X-76 飞行器 | 0.873 | 并列结构 | 中 |
| 15 | 空中坚盾 | 0.875 | 并列结构 | 强 |
分布:3 主线演进 / 7 并列结构;钩子 3 强 / 6 中 / 1 弱。
**基准答案集是"活的",不是写死的答案**
- 它是 AI 打标 prompt 里的 few-shot 示例
- 通哥审稿时如果判断更准 → 把新一期加入示例集 / 替换某期
- 长大到 30 期、80 期,会逐步切换到 pgvector 向量检索机制
### 与 v2 Excel 草标签的关键修正
- ep03 硅基大脑:v2 标"主线悬念(弱)+热点" → **改为 `并列结构`** + scene_tags=`热点跟进`
- ep07 马年图鉴:v2 标"强主线(符号统摄)" → **改为 `并列结构`**(符号统摄不另立维度,由开篇钩子 + scene_tags=节点策划 共同承接其 0.95 高分)
- 其他 8 期标签按 2 档制重新映射详见 `ground-truth.json`
---
## 三、AI 打标流程完整设计
### 3.1 三阶段流水线
```
新一期文稿 → [阶段1 AI 出草稿] → [阶段2 制片人审核] → [阶段3 落库]
↓ ↓ ↓
3 个 prompt 串行 独立小工具 标 confidence
+ 置信度自评 + 替换示例集 + 上看板
```
### 3.2 Prompt 拆 3 个独立调用(不合并)
- **Prompt 1**:节目形态 + 装备域 + 场景标签 + 技术线(4 个分类字段)—— 待写
- **Prompt 2**:叙事结构(**已写第一稿,含 3 示例**)
- **Prompt 3**:开篇钩子(只看前 1-2 分钟文本)—— 待写
理由:合并 prompt 顾此失彼,独立可单独调示例集、单独看准确率,可不同字段用不同模型。
### 3.3 置信度三档(对齐 v2 §5.4)
| 落库 confidence | 来源 | UI 颜色 |
|---|---|---|
| 制片人确认 | 制片人在审核界面点了"确认" | 深绿 |
| AI建议-高置信 | AI 自评高 + 制片人尚未审核 | 浅绿 |
| AI建议-中置信 | AI 自评中 + 制片人尚未审核 | 黄 |
| AI建议-低置信 | AI 自评低 + 制片人尚未审核(强制优先审核) | 红 |
| 标题推断 | 文稿缺失,只靠标题猜 | 灰 |
### 3.4 模型选型:3 个候选(M2.7 砍掉)
| 模型 | 角色 | 备注 |
|---|---|---|
| **MiniMax M3** | 主推 | Cline 现已配置,1M 上下文,国内站 api.minimaxi.com |
| **DeepSeek V4**Pro 或 Flash) | 替代候选 | 1M 上下文,价格低 |
| **小米 MiMo v2.5 Pro** | 替代候选 | 1M 上下文,MIT 开源 + API |
**M2.7 已确认不稳定(通哥实战验证——读文稿写笔记总犯错),从候选阵容剔除**
成本估算:单期 3 prompt 调用 ≈ 2 万 token 输入 + 2000 token 输出。选型阶段全程总成本约 20 元。
### 3.5 审核 UI 与看板的关系(严格方案,已定)
- 审核小工具放在**制片人页**(加图标),独立于大看板
- **未审核字段在看板上显示"待审核"**,不显示 AI 草稿值
- 制片人审过后,已确认值才进入看板给编导看
- 严格方案,保证编导看到的全是经过质量门的数据
### 3.6 示例集"慢慢长大"机制(非常重要)
**关键澄清:完全不需要"训练 AI"**。LLM API 是无状态的,每次调用模型本身冻结。所谓"示例集"实际上是每次调用都要带进 prompt 的参考资料——是 AI 的"判官手册",不是它内化的能力。
- 示例条目只塞"摘要 + 标签 + 理由"(每条 ≈ 350 token),**不塞原文**
- 判别准则 markdown 是独立部分(稳定不变)
- 示例集 + 判别准则一起塞 prompt
技术演化路径:
| 示例池规模 | 技术方案 |
|---|---|
| 10-30 期 | 全部塞 prompt |
| 30-80 期 | pgvector 算相似度,每次挑 8-12 期相似示例 |
| 80+ 期 | 5 个经典固定示例 + 5-8 个动态检索示例 |
栈里 pgvector 已就位(v1 §7),第二阶段不新增依赖。
### 3.7 prompt 缓存月度更新纪律(待加入 backlog F1)
DeepSeek V4 / 小米 MiMo 等模型支持 prompt 缓存,命中后输入价格降 80%。
**纪律**:示例集每月集中更新一次,**不碎片化更新**。日常审稿时把"想替换的候选"先记本子上,月底统一改。这样既保持示例集"慢慢长大",又能吃到缓存红利、压住 token 成本。
---
## 四、Cline 实操进度
### 4.1 工作区目录结构(已定)
```
E:\tps-dashboard\ai-labeling\ ← 新增顶层目录
├── benchmark-set\
│ ├── transcripts\ ← 10 份文稿(.md)
│ └── ground-truth.json ← 10 期标准答案
├── prompts\
│ ├── prompt2_narrative.md ← Prompt 2 第一稿(含 3 示例)
│ ├── prompt1_classification.md ← 待写(下一步)
│ └── prompt3_hook.md ← 待写(下一步)
├── experiments\ ← 每次跑结果(不入 git)
├── scripts\
│ ├── run_labeling.py
│ ├── import_transcripts.py
│ └── requirements.txt
├── .env.example
├── .gitignore
└── README.md
```
### 4.2 实操步骤路线图
| 步骤 | 内容 | 验证什么 | 状态 |
|---|---|---|---|
| **1.A** | Cline 创建目录结构 + 7 个文件骨架 | 文件创建对不对 | **指令已交付** ⏳ |
| **1.B** | Cline 拷贝 10 期文稿 docx→md | 文件到位、清洗后无 `**` 符号 | **指令已交付** |
| 1.C | pip install + M3 单跑 ep04 潜艇仿生 | Prompt 写对、JSON 输出对 | 待执行 |
| 1.D | 调 prompt(如 1.C 没命中) | Prompt 调好后再做下一步 | 待执行 |
| 2 | M3 跑全 10 期 | M3 命中率 | 待执行 |
| 3 | 切 DeepSeek V4 跑全 10 期 | 模型对比 | 待执行 |
| 4 | 切小米 MiMo 跑全 10 期 | 模型对比 | 待执行 |
| 5 | 多模型对比表 → 通哥拍板用哪个模型 | 选型决策 | 待执行 |
### 4.3 MiniMax M3 技术参数(已查证 platform.minimaxi.com 文档)
| 项目 | 值 |
|---|---|
| base_url | `https://api.minimaxi.com/v1`(国内站,**注意 i** |
| model 字段 | `MiniMax-M3`**大小写敏感**,写成 minimax-m3 会报 "model not found" |
| OpenAI SDK 兼容 | ✓ 支持 |
| openai 库版本 | 锁定 `openai==1.55.0`(避免新版自动把 system 转 developer 角色,MiniMax 不支持 developer 角色) |
| `response_format` JSON mode | ⚠️ 文档未明确,**不用此参数**,改 prompt 末尾强约束(跨模型兼容) |
### 4.4 三段已发的 Cline 指令(关键参数留存,避免再查)
如新 chat 顾问需重发 Cline 指令,关键参数:
```python
# MODEL_CONFIG(在 scripts/run_labeling.py 中)
MODEL_CONFIG = {
"m3": {
"base_url": "https://api.minimaxi.com/v1",
"model_name": "MiniMax-M3",
"api_key_env": "MINIMAX_API_KEY",
},
# DeepSeek V4 / 小米 MiMo Step 3-4 阶段才加
}
# call_model() 函数——不要 response_format 参数
response = client.chat.completions.create(
model=config["model_name"],
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
temperature=0.1,
# ❌ 删 response_format={"type": "json_object"}
)
```
```text
# requirements.txt
openai==1.55.0
python-dotenv>=1.0.0
```
```markdown
# prompts/prompt2_narrative.md 的 USER 部分末尾必须有:
【重要:输出约束】
你的回复必须是且只是一个合法的 JSON 对象,不要有任何前置说明、
后置说明、markdown 代码块包裹(不要 ```json 标记)、思考过程描述。
直接输出 { 开头,} 结尾的纯 JSON。
```
### 4.5 10 期文稿映射表(Step 1.B 用)
源目录:`E:\TPS-我和顾问的便签\刘瑞桦收集\`
目标目录:`E:\tps-dashboard\ai-labeling\benchmark-set\transcripts\`
| 源 docx | 目标 md |
|---|---|
| 硅基大脑终稿.docx | ep03_硅基大脑.md |
| 潜艇的仿生之路.docx | ep04_潜艇仿生.md |
| `_舰__证不凡一稿.docx` | ep05_舰证不凡.md |
| 马年军事图鉴0125.docx | ep07_马年图鉴.md |
| `_枪械射速决定论_0225.docx` | ep10_射速决定论.md |
| 完稿_武器进化论_空战颠覆者.docx | ep11_空战颠覆者.md |
| 逆袭战局的组装武器.docx | ep12_逆袭战局.md |
| 枪械设计中的长短智慧总稿.docx | ep13_长短智慧.md |
| `_X_系列新成员_X-76飞机-最终稿.docx` | ep14_X76飞机.md |
| 空中坚盾__解码现代防空网.docx | ep15_空中坚盾.md |
注意:ep14 用**最终稿**,不用完稿(两版结构一样,仅措辞润色差异)。
文件处理逻辑:检测前 4 字节,若为 `PK\x03\x04` 是真 zip docx(用 python-docx 提取),否则是 UTF-8 纯文本(被命名为 docx)直接读取。清洗:去掉 `**` 强调符号、连续空行合并。
---
## 五、Prompt 2 第一稿核心要点
写在 `ai-labeling/prompts/prompt2_narrative.md`Cline 已写入)。结构:
- **SYSTEM 部分**(可缓存):
- 角色:《军事科技》栏目内容分析助手
- 判别准则:2 档定义 + 心法
- 关键边界:3 类不构成主线的共性
- 示例集:潜艇仿生(主线演进-内在概念)/ 空战颠覆者(主线演进-时间线)/ 马年图鉴(并列结构-命名共性)—— 3 例
- 输出 JSON schemanarrative_structure / main_thread / reasoning / key_evidence / confidence / confidence_reason
- 置信度自评标准
- **USER 部分**
- `{transcript}` 占位符
- 输出强约束(避免 markdown 包裹)
剩余 7 期(ep03/05/10/13/14/15)的示例待 v0.2 补——等 M3 跑通后看是否还需要扩示例集。
---
## 六、待办池(建议追加到 backlog.md
### F1. AI 打标示例集更新纪律【优先级:中,上线后启用】
- 背景:示例集占大头 tokenDeepSeek V4 / 小米 MiMo 等模型支持 prompt 缓存,命中后输入价格降 80%
- 纪律:示例集每月集中替换一次,不碎片化更新;想替换的候选先记本子上,月底统一改
- 触发时机:AI 打标系统上线后第 1 个月起
### F2. Prompt 1 + Prompt 3 撰写【优先级:中,等 Prompt 2 验证后】
- Prompt 1:4 分类字段(节目形态/装备域/场景/技术线)
- Prompt 3:开篇钩子(只看前 1-2 分钟)
- 等 Prompt 2 在 M3 上验证通过、命中率 OK 后再写
### F3. Decision 3 横轴量化方法落地【优先级:中】
- v2 §3 已基本定(栏目均值偏离),但还没真正算过 23 期具体数值
- 跟 Prompt 1 撰写并行,可单独推进
### F4. 23 期回填确认(继承 v2 §5.5)
- ep15 空中坚盾原"空军防空" → 应该是 `导弹与反导`?请确认
- ep16 启程远航原只有 scene_tag "节点策划"equipment_domain 缺失,疑似 `海军舰船`
- ep18 海上先锋·无人舰艇 → `海军舰船` + tech_tag=`无人作战`,请确认
---
## 七、纪律红线(沿用 v2 §6 + 增补)
沿用:
- **改表须 Opus 审**Cline 不得自行加字段
- **AI 只出草稿、给方向,人拍板**
- **不做编导排名**(团队视角走"能力地图")
- **置信度三档必须在 UI 上可辨**
- 时间边界永远显式可调
新增(v3 引入):
- **未审核字段不上看板**,编导只看已确认数据
- **AI 打标三个 prompt 独立**,不合并
- **示例集每月集中更新**,不碎片化(吃缓存红利)
- **Prompt 内容不让 Cline 创作**——Cline 是执行者不是作者,Prompt 由 Opus 写、Cline 落文件
---
## 八、技术备忘(沿用 v2 §7 + 新增)
沿用:
- 栈:React18 + Vite + AntD5 + Zustand FastAPI + SQLModel + PG16 + pgvector
- 图表:ECharts / @ant-design/charts
- 配色固化:米色底 `#fbf9f1`、深绿主色 `#6b8e6b`
- 三色色板:红 `#c0584f` / 蓝 `#5b8db8` / 绿 `#7aa874`
- 基础线 0.6448 / 摸高线 0.89892026
新增(AI 打标实验):
- AI 打标工作区独立顶层 `E:\tps-dashboard\ai-labeling\`,不混进 backend
- 模型 API 调用走 OpenAI SDK 兼容接口(避开 Anthropic 接口的 developer 角色坑)
- `experiments/*.json` 不入 git(结果不固化)
- `prompts/*.md` 入 git(核心资产)
- `benchmark-set/` 入 git(标准答案 + 文稿是栏目核心资产)
---
## 九、新 chat 开局第一句
> "续接 v2 → v3。今日完成:叙事结构改 2 档制(主线演进/并列结构)、10 期基准答案集 v0.1 锁定、AI 打标流程完整设计、Cline 已收 Step 1.A + 1.B 指令。先把 Cline 跑到哪儿的结果贴回来给我看,然后推进到 1.C 跑 ep04 潜艇仿生。"
---
## 附:今日核心结论一句话总结
> 叙事结构 3 档收为 2 档(主线演进/并列结构);10 期基准答案集 v0.1 锁定;AI 打标流程三阶段流水线 + 3 prompt 独立调用 + 置信度三档 + 模型选型阵容(M3/DeepSeek V4/小米 MiMoM2.7 砍掉)全部定稿;Cline 实操路线 1.A → 1.B → 1.C → 2 → 3 → 4 → 5 已铺好,下一步等 Cline 反馈推进 1.C。