# 续接快照 — 看板分析升级 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 的关系

v1（2026-06-09）和 v2（2026-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 schema：narrative_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 打标示例集更新纪律【优先级：中，上线后启用】
- 背景：示例集占大头 token，DeepSeek 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.8989（2026）

新增（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/小米 MiMo，M2.7 砍掉）全部定稿；Cline 实操路线 1.A → 1.B → 1.C → 2 → 3 → 4 → 5 已铺好，下一步等 Cline 反馈推进 1.C。
