feat(ai-labeling): AI 打标实验工作区初始化 + 模型选型完成

This commit is contained in:
simonkoson
2026-06-11 18:34:55 +08:00
parent 9a86c936ee
commit 202e02c254
22 changed files with 2762 additions and 0 deletions
@@ -0,0 +1,154 @@
# 续接快照 — 看板分析升级(设计讨论阶段)
> 用途:下次(或新 chat / 第二账号)接力用。记录已定决策、待拍板项、实施路线、纪律红线。
> 本文只记"还在流动 / 还没做"的事;已落地的旧事见 phase 日志。
> 状态:**纯讨论,未碰代码、未改表。**
> 更新时间:2026-06-09(制片人当日撤回家前)
> 顾问:Claude Opus 4.8 制片人:刘通
---
## 一、这是什么
把仪表盘从"看成绩"升级为"能分析"。灵感源 = 制片人此前与 Claude 协作产出的
**《2026 Q1–Q2 收视诊断分析》**21 期,配套 Excel 8 Sheet + 复盘 PPT 14 页)。
最终形态是**看板**,不是 PPT / Excel。
核心资产不是那些表,而是其中提炼的**双引擎模型**:
> **收视 ≈ 题材热度(地基)× 叙事结构(放大器)**
> 叙事结构判别法:主线悬念结构(高分)vs 图鉴式并列结构(低分)——
> "把各段顺序打乱,观众看不出区别 = 并列 = 需重构主线"。
升级的本质 = 把这个一次性人工复盘,做成一台**一直在运转的诊断仪**。
---
## 二、已定决策(不再议)
1. **配色走浅色**:沿用 App 米色底 `#fbf9f1` + 深绿 `#6b8e6b` 主色,**不做深色大屏**。
理由:与 App 主体一致、兼容手机端、耐读、合"辅助不替代"的温暖气质。
深色科技风**留作 2.0 独立"数据大屏"蓝本**(墙上挂 / 对领导汇报),不进 App 主体。
2. **DataEase 不进 1.0**:栈冲突(Java/MySQL/Doris vs Python/PG/React+ 4核8G 扛不住 +
现有仪表盘已含独有业务逻辑。模板的"好看"是 ECharts/AntV 的功劳,可在 React 栈直接复刻。
DataEase 留作 2.0 候选(自助式 BI 或独立大屏,只读连 PG,独立部署)。
3. **实现分三层**(看板升级的脊梁):
- **第一层 纯算的**:核心指标卡、走势(含基础/摸高目标线 + 滚动3期均值)、阶段对比、
题材对比、编导维度。**唯一解锁钥匙 = 题材字段**,其余字段 episodes 已有。
- **第二层 打标后才能算的**:加 `结构类型` + `证据来源/置信度` 两个字段后,
自动生成**招牌视觉——双引擎象限图**(横=题材热度,纵=叙事结构,点大小/色=收视,
置信度用颜色/网纹区分)。
- **第三层 算不出只能写的**:一句话诊断 / 5 大病因 / 高低样本成因 / 提振方案。
做成"本期诊断小结"块——**AI 起草、制片人审改后发布**,绝不自动下结论。
4. **AI 介入两种模式,均"AI 出草稿、人拍板"**(踩死宪法):
- **入库时打标**(每期一次):新文稿入库,AI 读完草拟 `结构类型 / 开篇类型 / 一句亮点短板`
制片人审核后落库。
- **周期性诊断**(每季一次):AI 拿结构化数据 + 稿子起草诊断小结,制片人改完才发布。
- **绝不能让 AI 自动盖章下结论**(如"所以别做枪械")。
5. **置信度三档**(看板上必须分清):
`制片人读稿确认` / `AI 读稿建议·待审` / `仅标题推断`
因为 AI 判结构会"自信地判错",哪些是确认、哪些是 AI 草稿、哪些纯猜,须一眼可辨。
6. **运行时 LLM ≠ Cline 的 MiniMax**:应用运行时调来做分析的模型,通过 API 想配哪个配哪个
Claude 亦是选项),与 Cline 写代码用的 MiniMax 无关。
**选模型用数据说话**:拿制片人已确认的 11 期"读稿判断"当标准答案,让候选模型各打一遍标、
对答案,谁与制片人判断最一致用谁。成本可忽略(每月几期 + 每季一次,量极小)。
7. **编导板块不做排名(团队视角)**:看板用意在**辅助复盘,不在问责**。
- 团队视角 = **"能力地图"**(谁擅长哪种结构 / 哪类题材,把强项做成全组可复用模板),
不做"谁垫底"的榜。
- 制片人视角 = 看完整排名 + 可下钻到单期。
- 锁可后开(哪天想加竞争);底层是同一套数据。
- 附统计理由:跨窗口比原始均值会骗人(某人恰好摊上 3 期枪械洼地≠他差),
公平比需"题材/结构基准相对",很复杂;能力地图正好绕开。
8. **"活的边界"——两类东西分开活**:
- **实时脉搏**(核心指标 / 走势 / 滚动均值 / 题材累计):永远滚动、显示"最近怎么样",无固定边界。
- **周期复盘**(双引擎象限 / 病因 / 提振方案):天生有边界,**按周期生成的成品**。
- **以"季度"为脊梁 + "任意区间"按需现拉**。季度合排播节奏、约13期统计够稳、
对上"月度复盘会 + 季度大复盘"机制。月度太碎(才4期)、年度太粗(年中滑坡被平均掉)。
- 每张分析图都要有**显式时间选择器**,边界永远可调,绝不糊成"全部历史"。
9. **编导离职处理**(软引用 `editor_id + 姓名快照` 已预埋):
- 历史分析里**离职编导不消失**(他的片子永远算进那段时间的题材/结构/阶段统计)。
- 面向当下的视图(现役能力地图 / 下月担当)**可筛掉离职者**。
- 分析默认**按时间段组织、而非按当前在职者**——谁来谁走都不污染历史。
---
## 三、待拍板(制片人回去想清楚,回来先定这三件)
1. **题材枚举最终口径**(第一层的钥匙)。Excel 草案:节日策划 / 防空体系 / AI前沿 /
飞行器空战 / 通用概念 / 舰船海军 / 枪械。问题:偏临时、有重叠、"通用概念"是筐。
待定:清洗成正式枚举?单选还是可多标?
2. **结构类型:枚举 + 打标流程**(第二层的命门)。
- 枚举草案(来自分析):强主线悬念 / 主线演进 / 图鉴式并列 / 展示型并列 / 单点解析…需收敛。
- 流程:靠 AI 入库打标(草稿)+ 制片人审核;存量可让 AI 先读库里稿子起草、制片人抽查回补。
(此前"几百期没法回补"的死结,因引入 AI 读稿而解开。)
3. **题材热度(象限横轴)怎么量化**。纵轴(结构)靠打标清楚;横轴"热度"目前是定性的。
三条路:①用题材历史均值份额当代理 ②每期打"蹭没蹭热点"布尔标 ③粗分冷/温/热三档。
选哪条直接决定象限图准不准。
---
## 四、实施路线(六步,从纸上到帮手)
> 总纪律:**不吃掉 Week 6 的 TPS 对话 MVPPhase 4a 仍是第一优先级)。**
> 本轨道与 MVP 并行/其后排,分步交付。
- **Step 0 锁三项口径**(纯讨论,无代码):定第三节那三件。这是一切的前置闸门。
- **Step 1 改表(一刀)**episodes 加 `题材 / 结构类型 / 开篇类型(?) / 证据来源·置信度 /
主线亮点短板备注` 等字段。**改表须 Opus 审 + 配回补方案,先别让 Cline 动。**
依赖:AI 自动打标需要**文稿已入库**(与 Phase 3 知识库 manuscript 入库打通)。
- **Step 2 第一层看板**(首个用户可见交付):题材回补后,建/升级"纯算"分析视图 +
浅色换肤一并做。此时"能分析的下半身"立起来。
- **Step 3 AI 打标链路**:入库即读稿打标(草稿→审核→落库带置信度)+ 存量回补run +
模型基准测试(11 期对答案选模型)。
- **Step 4 第二层·双引擎象限**:结构标齐后,画招牌象限图 + 高低样本下钻。
- **Step 5 第三层·诊断小结**:AI 季度起草诊断 → 制片人审改发布;周期复盘成品生成。
- **Step 6 闭环**(最远):把诊断结论接进 TPS 策划提示(提报枪械时提示"本月已1期"+
排期规则。形成 **分析→策划→排期→收视→再分析** 的"栏目大脑"回路。
---
## 五、纪律红线(勿忘)
- **改表须 Opus 审**Cline 不得自行加字段/改 schema。
- **AI 只出草稿、给方向,人拍板**;任何分析结论不得自动发布。
- **不做编导排名**(团队视角);问责风险类表述只进制片人视角。
- **不吃 Week 6 TPS MVP**;本轨道分步、靠后排。
- **置信度三档必须在 UI 上可辨**,不许把 AI 草稿/标题推断当确证展示。
- 时间边界永远显式可调,分析图必带时间选择器。
---
## 六、技术备忘
- 栈:React18 + Vite + AntD5 + Zustand FastAPI + SQLModel + PG16 + pgvector(宪法锁定)。
- 图表:用 React 栈里的 ECharts / @ant-design/charts(即 DataEase 同款 ECharts/AntV 引擎)。
- 配色固化:米色底 `#fbf9f1`、深绿主色 `#6b8e6b`、浅绿 `#c8d9b0`
柱图三色(反直觉)优秀=柔红 `#c0584f` / 达标=柔蓝 `#5b8db8` / 待提升=柔绿 `#7aa874`
按"该期播出年份的目标"判色(.clinerules 5.1/5.2)。
- 基础线 0.6448 / 摸高线 0.89892026 年;逐年只增不改)。
- 运行时分析 LLM 走 API,可配;与 Cline 的 MiniMax 物理无关。
---
## 七、毕业路径
待第三节三项口径锁死 + Step 1 改表方案定稿,本快照内容**升级进宪法**:
- `project_plan.md`:新增"仪表盘·分析升级"模块规格(含三层 + 双引擎 + 能力地图 + 周期边界)。
- `dev_plan.md`:新增对应阶段(建议排在 Phase 4a MVP 之后)。
- 一次性测试/占位数据清理仍按 Phase 5 上线前处理。
---
## 八、下次开局第一句
"先定题材枚举和结构类型打标流程;定完我把双引擎象限图画个实物示意,对着抠第二层。"
@@ -0,0 +1,226 @@
# 续接快照 — 看板分析升级(设计讨论阶段 · v2)
> 用途:下次(新 chat / 第二账号)接力用。本快照承接 2026-06-09 v1,包含 2026-06-10 一整天讨论的所有结论。
> 状态:**仍在设计讨论,未碰代码、未改表。**
> 更新时间:2026-06-10
> 顾问:Claude Opus 4.7 制片人:刘通
---
## 零、本快照与 v1 (2026-06-09) 的关系
v1 定的 9 条"已定决策"和 6 步实施路线**全部仍然有效,不替换**。本 v2 是在 v1 基础上的**增量收敛**——主要收敛了 v1 里"三件待拍板"的前两件,并对双引擎模型做了一次结构性升级(多了一个独立维度)。
---
## 一、今日(2026-06-10)讨论的根本性升级
### 1.1 双引擎模型 → "双引擎 + 一个独立辅助维度"
原 PPT / v1 快照里说的双引擎是:
> 收视 ≈ 题材热度(地基)× 叙事结构(放大器)
今天讨论后的修订:
> 收视 ≈ 题材热度(横轴)× 叙事结构(纵轴)+ 开篇钩子(独立维度,叠加显示)
**为什么独立"开篇钩子"**
PPT 第 8 页 5 大病因里"开篇是定义而非场景"独占第 4 条,且 PPT 第 9 页"主线悬念 vs 图鉴并列"判别法里"开篇=场景 vs 开篇=定义"被列为关键特征之一。原 PPT 把开篇并入叙事结构,但今天讨论认为:
- 开篇负责"留住观众"(前 1-2 分钟,决定观众换不换台)
- 叙事结构负责"留住之后的体验"(整集骨架)
- 两者功能不同、AI 打标也是分开判断更稳
### 1.2 "话题性"的拆解(通哥提出,今日讨论结论)
通哥提出"做了多年制片人,一直被教育选题决定成败、话题性是关键",但说不清话题性是什么、与"热度"是否重叠。今日拆解:
| 话题性的组成 | 是什么 | 现有维度承接 |
|---|---|---|
| **题材稳态热度** | 题材类别长期接受度 | 横轴承接 |
| **时机加成** | 大新闻/节点/装备首发撞上 | 场景标签承接 |
| **切口话题感** | 切口本身抓人程度(颜值洼地、跌下神坛) | 不独立立维,由"横切类比"形态部分承接 |
**结论:话题性不独立立维**。三块成分中两块已被现有维度承接,剩下"切口话题感"AI 打标极不稳定,且会拉低系统整体可靠度,"横切类比"形态本身已经部分捕捉。
### 1.3 与 PPT 第 9 页双引擎论述的细微出入(须明示)
PPT 第 9 页把"热点 / 新装备 / 节日"全部归到"题材热度"引擎里。今天我们的拆分**把这部分从横轴抽离出来,独立成"场景标签"字段**。这个出入是**优化而非偏离**:
- 原 PPT 模型:题材热度 = 稳态 + 时机(合并)
- 今日模型:题材热度(横轴)= 稳态;时机 = 场景标签(独立)
好处:能区分"该题材类别天生地基弱" vs "这一期没赶上时机",诊断粒度更细。
---
## 二、最终维度规格(第一件事 · 题材枚举关门)
### 字段一:`program_format` 主题材(单选,必填)
6 类,按"节目形态"切分(不是按讲什么装备切):
| 枚举值 | 含义 | 23期实战命中 |
|---|---|---|
| `装备深解` | 围绕一款/一型具体装备的深度剖析 | 4 期 |
| `横切类比` | 用某个切口(趣味/功能/技术)跨装备类比 | 10 期 |
| `历史纵深` | 沿时间线讲装备/战术的演进 | 4 期 |
| `前沿科技` | 新技术在军事装备上的应用 | 2 期 |
| `事件战例` | 围绕某次行动、战役、冲突 | 1 期 |
| `人物牵引` | 用人物作叙事入口和牵引线 | 2 期 |
**重要:** 原 Excel 草案的"通用概念"被消化掉了;"节日策划"从主题材移到场景标签(且重命名为"节点策划")。
### 字段二:`equipment_domain` 装备域(多选,至少 1 项)
9 类,按硬装备类别切:
`陆战装备` / `海军舰船` / `航空航天` / `导弹与反导` / `信息化` / `后勤保障` / `轻武器` / `跨域` / `其他`
**注意:**
- "枪械" 已升级为"轻武器"(涵盖手枪/步枪/机枪/单兵反坦克等)
- "空军防空" 已重命名为"导弹与反导"
- "无人作战" 从装备域剥离,移到技术线
- "跨域" 与 "其他" 的语义区分:跨域 = 多个域都涉及;其他 = 不属于已列举任何一个域
### 字段三:`scene_tags` 场景标签(多选,可空)
4 类,回答"为什么这周播":
`节点策划`(可预判热度节点:纪念日、周年、节庆——通哥拍板:不是"节日策划"是"节点策划",涵盖如"福建舰下水三周年"这类装备/事件节点)/ `热点跟进`(突发新闻)/ `装备首发`(新装备亮相)/ `展会`
### 字段四:`tech_tags` 技术线标签(多选,可空)
3 类,新质新域作战追踪:
`无人作战` / `智能化`AI/算法/智能决策)/ `有人无人协同`
未来如"高超音速""定向能""网电""太空"反复出现,再加。
### 字段五:`narrative_structure` 叙事结构(单选,今日新增维度,3 档)
| 档位 | 含义 | 判别原则(写进规格) |
|---|---|---|
| `强主线悬念` | 开篇立问/立悬念 → 中段层层揭谜/反转 → 收尾闭环 | 打乱顺序观众会一头雾水 |
| `主线演进` | 有内在递进逻辑(时间线/因果链/性能阶梯),无强悬念 | 打乱顺序观众会觉得逻辑乱但能跟上 |
| `并列结构` | 纯枚举,各段独立 | **打乱顺序观众基本无感** |
**判别原则正式写进规格**:来自 PPT 第 9 页通哥原话——"把各段顺序打乱,观众若看不出区别 → 就是并列结构"。所有打标(人工 + AI)按此心法走。
**注:** v1 草案里的"展示型并列"今日合并进"并列结构""单点解析"今日确认它其实是主题材形态(装备深解的子型)而非叙事结构,从结构枚举中拿掉。
### 字段六:`opening_hook` 开篇钩子强度(单选,今日新增维度,3 档)
| 档位 | 含义 |
|---|---|
| `强钩子` | 新闻引入 / 反差冲突 / 画面震撼 / 悬念问题 |
| `中等` | 背景铺陈 / 装备亮相 / 历史溯源 |
| `弱钩子` | 直接讲技术 / 直接讲概念 / 平铺直叙 |
**对应 PPT 第 8 页病因 #4 "开篇是定义而非场景"——强钩子 = 场景,弱钩子 = 定义。**
---
## 三、横轴量化方案(第三件事 · 已定)
横轴 = **题材热度**,零点 = **栏目均值**
```
横轴值 = 该题材类别在分析窗口内的均值收视份额 − 全栏目均值收视份额
```
- 零点 = 栏目自身的平均线(如 2026 上半年约 0.72)
- 正值 = 该题材"地基好"
- 负值 = 该题材"地基弱"(如军事理论可能 −0.08)
- 单位:收视份额绝对差值
**重叠问题解法**(通哥已认可视觉方向):
- 横轴 jitter + 垂直 jitter,避免完全重合
- 气泡大小 = 单期收视份额
- 鼠标悬停看具体期次/编导
- 同点聚集 = 诊断信号(如横切类比扎堆在"并列结构"档,本身就在提示问题)
---
## 四、双引擎象限图视觉规格(今日定稿)
| 元素 | 编码 |
|---|---|
| 横轴 | 题材热度(栏目均值偏离) |
| 纵轴 | 叙事结构 3 档 |
| 气泡大小 | 收视份额 |
| 气泡颜色 | 收视判定三色(红 `#c0584f` 优秀 / 蓝 `#5b8db8` 达标 / 绿 `#7aa874` 待提升,按播出年份目标判,反直觉规约) |
| 气泡边框 | 开篇钩子(粗实线=强 / 细实线=中 / 虚线=弱) |
| 悬停 tooltip | 节目名 + 期次 + 份额 + 钩子档 |
**已用 23 期模拟数据画过示意图**,通哥已认可视觉方向("我认可,而且我觉得很好,不挤")。下次接手时可以直接在 Cline 里复现这个示意图,作为前端落地的参考稿。
---
## 五、还在流动的事(待办池)
### 5.1 第二件事剩余 · 叙事结构 AI 打标流程(下次主战场)
- **11 篇真实文稿**(通哥已上传到 project files+ PPT + Excel 已就位,下次开 chat 第一动作就是读这批样本
- 对照 23 期实际数据,把每一期的 `narrative_structure``opening_hook` 试着打标,看是否落进定义的边界、哪些边界模糊
- **基准样本集** = 通哥已读稿确认的 11 期。下次 chat 里把这 11 期的"标准答案"标注出来,未来作为 AI 模型选型的基准(哪个候选模型与制片人判断一致度最高用谁)
- AI 打标具体流程怎么走、置信度怎么判、制片人审核工作量预估 —— 都留到下次讨论
### 5.2 第二件事剩余 · "主线演进"和"强主线悬念"边界
PPT 第 7 页里这两类共存(如《空战颠覆者》0.859 = 主线演进;《潜艇仿生》0.92 = 强主线悬念)。两者都有顺序、都不能打乱,区别在"悬念张力"。AI 打标能不能稳定区分两者?需要对着真稿子讨论。
### 5.3 第六个独立维度的 backlog · 标题"3 秒可懂"
PPT 第 11 页定义了好标题公式(具体装备 + 反差/悬念/数字/类比),4 条铁律。但**不进 1.0**——可量化难、且属于"上架前钩子"与"开播后钩子"功能不同。记入 backlog,未来作为 `title_quality` 维度独立追踪。
### 5.4 改 schema 的方案
`episodes` 表加 6 个字段(program_format / equipment_domain / scene_tags / tech_tags / narrative_structure / opening_hook+ 1 个置信度字段(confidence: 制片人确认 / AI建议 / 标题推断)。
**纪律**:改 schema 须 Opus 审 + 配回补方案,Cline 不得自行动手。回补方案要点:
1. 23 期已标注按本快照映射回填(命名变更:枪械→轻武器、空军防空→导弹与反导、无人作战从装备域迁到技术线)
2. 历史更早期次走 AI 打标草稿 + 制片人审核
3. 改表脚本走 `backend/sql/00X_*.sql` 手写 SQL
**改表方案下次讨论清楚再让 Cline 动**
### 5.5 23 期需要回填确认的项
- 第15期《空中坚盾》原 tag "空军防空" → 应该是 `导弹与反导` 还是别的?请通哥确认
- 第16期《启程 远航》原只有 tag "节点策划",装备域缺失,请通哥补填(疑似 `海军舰船`
- 第18期《海上先锋·无人舰艇》映射为 装备域=`海军舰船` + 技术线=`无人作战`,请通哥确认
---
## 六、纪律红线(沿用 v1,再次提醒)
- **改表须 Opus 审**Cline 不得自行加字段
- **AI 只出草稿、给方向,人拍板**
- **不做编导排名**(团队视角走"能力地图")
- **不吃 Week 6 TPS MVP**(本轨道分步、靠后排)
- **置信度三档必须在 UI 上可辨**
- 时间边界永远显式可调
---
## 七、技术备忘(沿用 v1,无变化)
- 栈:React18 + Vite + AntD5 + Zustand FastAPI + SQLModel + PG16 + pgvector
- 图表:ECharts / @ant-design/chartsChart.js 仅在快照示意图里用过,落地走 ECharts)
- 配色固化:米色底 `#fbf9f1`、深绿主色 `#6b8e6b`
- 三色色板:红 `#c0584f` / 蓝 `#5b8db8` / 绿 `#7aa874`
- 基础线 0.6448 / 摸高线 0.89892026
- 运行时分析 LLM 走 API(可配)
---
## 八、下次开局第一句
> **"先读 project files 里的 11 篇真实文稿,按今日定的叙事结构 3 档和开篇钩子 3 档试着打标,从中找出'主线演进 vs 强主线悬念'的边界难点;同时把这 11 期作为未来 AI 打标基准的标准答案集固化。"**
---
## 附:今日核心结论一句话总结
> 双引擎模型升级为"双引擎 + 开篇钩子"三维模型;话题性拆解后并入现有维度(不立独立维度);6 个字段的完整规格定稿;横轴零点 = 栏目均值;视觉方案通哥已认可;改表方案待下次定稿后才能动手。
@@ -0,0 +1,361 @@
# 续接快照 — 看板分析升级 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。