- skill: 素材库分块定义(00~11)、05_极致事件知识库 4 篇、08_对话风格总纲、mcn-video-prompt 提示词质量门禁与外部语料检索流程 - workbench: mcn-work-shop 新增 cli-backend.js(本地 CLI 接入)、工作台视觉交互规范;移除旧 UI 规范 - docs: 根目录极致事件/素材卡/审计方案报告与热门短视频清单入库 - memory: 补 09-14~09-29 日志与自动化任务记忆 - chore: .gitignore 排除 tools/、.tmp-chrome-*/、_k_test.cjs
1032 lines
82 KiB
Markdown
1032 lines
82 KiB
Markdown
# 2026-09-28 工作日志
|
||
|
||
## 09:50 极致事件卡片批量生产 · 批次 29(自动化)
|
||
|
||
- **前置修复**:WeKnora 全线宕机(`WeKnora-app` Exited 127 / `WeKnora-frontend` 重启循环)。根因经 `docker inspect` 定位为宿主机 `/home/maidou/weknora/config/config.yaml` 缺失,Docker 把不存在源当目录 bind 到文件目标 → `not a directory`。前端日志的 `host not found in upstream "app"` 是衍生故障。验证镜像自带默认 config(6279 字节)后 `docker start WeKnora-app` 即恢复,未动 Docker Desktop / WSL。数据完好(chunk_count 435)。
|
||
- 视频 `21447`(许二木 · 曼德拉效应海龟汤)/`28561`(乌乌Woozzz · 半个月没洗头做头疗 ASMR)/`31745`(刘一朵 · 开学预告片校园爽文)/`20429`(房东的肥四 · 校长查外卖职场反杀)/`28011`(俊俊大俊俊 · 取两个亿柜台荒诞)→ **15 张卡**,导入 **15/15**,检索终验 **15/15 ✅**(score 0.7972–0.8998,下限为近十批最高),库内 **435 → 450 条**,无新建标签。
|
||
- 自检:`fences=15`、md 标题 vs `spec.card` mismatch=`set()`,均一次通过(临时 py 第 20 次一次通过)。
|
||
- 主标签打散:反差 4 / 反常识 4 / 价值观冲击 2 / 细节专业 2 / 视觉冲击 1 / 品质对比 1。
|
||
- 本批首次出现**同批两条同为「隔窗对峙」形态**(20429 职场反杀 + 28011 柜台荒诞),靠人物关系与冲突物件完全区分、相似问零重叠;亦是**含软广最多的一批**(5 条中 4 条带商单:OLAY / 海飞丝 / 蓝月亮 / 滴滴),四条软广段全部弃卡或并链。
|
||
- 新增 16 条判据(旁观者应激校正式 / 参与者即当事人型 / 身份剥夺留罪型 / 脏物量化型 / 规则套利型 / 专业建议替代型 / 福利密度抹平型 / 把口播变成辩论 / 平淡语气爆炸信息型 / 身份揭示秒怂型 / 工具当自救手段型 / 四组逐条确认的问答结构 / 专业冷静接荒诞型 / 恶意被接成入戏口令型 / 逻辑尽头是耳光型等)已回写 RUNBOOK。
|
||
- 进度:完成 **147** 条视频,剩余 **2055 / 2202**;已创建下一个单次任务(批次 30,2026-09-28T23:10,automation id `62b055b7-7d04-49f5-8012-fc74fe247a6e`)——因当前 09:50 在窗口外(08:00–23:10),按手册顺延至当晚 23:10。
|
||
|
||
## 10:25 技能知识库结构优化 · 08 分层重构 + 索引分级(按用户确认的方案执行)
|
||
|
||
### 背景
|
||
用户要求「技能保持流程+知识库+素材库(WeKnora) 结构,看哪个环节还需优化」。诊断结论:三环结构方向正确,但发现 **08_对话风格 存在两类内容级缺陷**(不是体量问题):
|
||
- **`<think>` 污染**:5 个文件(兴趣元素叠加38 / 反差叙事49 / 赛道交融27 / 口播横纵24 / 口播交流感20 = 158 处)把模型思考过程存成正文,开头即 `<think>我已明确用户需求…</think>`。
|
||
- **双文档拼接**:**9 个文件全部**(不止 8 个)在同一文件里塞了两份完整的「横纵拓展」,结构断裂(一个文件出现两次「一、二、三」)。差异:部分文件是同一方法两次生成(反差叙事/口播类),部分是不同切入角度(素人生活vlog 甚至有第三份)。
|
||
|
||
### 判据(用户问「如何判断必读选读」)—— 4 个客观信号
|
||
① 被创作流程引用频次 ② 是否跨多步骤共享 ③ 是否为门禁依据 ④ 是否分类孤岛(全类仅 1 文件 = 无替代 = **必读**)。
|
||
> ⭐ 反直觉点:**孤岛 = 必读**。`06_剧情钩子`/`11_广告植入` 全类只 1 文件,再「专项」也无替代 → 必读。反之 `04_爆款开场` 11 个平行 → 整体是选读池。
|
||
> 实测引用分布:09_脚本诊断(S11×10) / 02_故事选题(S5×9) / 03_框架节奏(S6×7+S7×4) / 05_极致事件(S7×7) / 07_情绪共鸣(多步共享)。
|
||
|
||
### 执行结果
|
||
1. **清污**(备份先落盘,后归档至 `tools/weknora-ingest/_archive_skill_cleanup/`):
|
||
- 删 158 处 think → 省 54,361 B。
|
||
- 删 4 个文件第二份(反差叙事 L184 起 / 期待感 L144 起 / 素人 L142 起[含第三份] / 职业体验 L71 起)+ 8 个文件双 H1 降级。
|
||
- **目录 283K → 143K(降 49%)**;9 文件 think 残留 = 0。
|
||
2. **新建 `08_对话风格/00_对话风格总纲.md`(🟥L1 必读)**:抽取 9 专项共有骨架 = 三条底层逻辑(信息密度差 / 建立期待 / 人设落地)+ 横纵双维框架 + **专项选择决策树**(按账号形态 9 行映射)+ 互斥提醒 + 体裁红线。
|
||
3. **索引加分级列**:`🟥必读 15 / 🟨常用 23 / 🟩选读 35`(共 73 条,12 个分类表全覆盖);各分类增「加载顺序」提示块。
|
||
4. SKILL.md `last_change` 同步(updated_at → 2026-09-28)。
|
||
|
||
### 未做 / 待办
|
||
- `09_脚本诊断/故事成立性校验`(7 个 H1)、`11_广告植入/广告植入方法论`(5 个 H1)经核查**非双文档拼接**,只是「一级标题当章节用」,内容正常 → **本次未改**,可后续降级为 `##`。
|
||
- 32 处「目录级引用」(创作流程只写到 `知识库/NN_xx/` 不指名文件)→ 本次未动,需逐条判断是否下沉文件名(部分故意要全量,如 S11)。
|
||
- WeKnora 赛道偏斜(剧情 77.5% / 亲子与感官沉浸为 0)为 P0,未在本轮处理。
|
||
|
||
### 关键经验
|
||
- **`.md` 知识库批量治理通式**:先 `python` 扫描产出「H1 计数 + think 块行范围」→ 落清单 → 备份 → 按行号精确截断 → 复核。**切勿用 shell glob 判断文件名**(中文括号会被 bash 拆开报 `No such file`,误判截断——本轮踩过一次)。
|
||
- 清污脚本删 think 用 `re.sub(r'<think>.*?</think>','',t,flags=re.S)` + 折叠 3+ 空行;双文档删除按 **H1 行号**定位而非关键字(更稳)。
|
||
|
||
## 10:38 知识库 H1/BOM 格式规范统一(续前序优化)
|
||
|
||
用户要求「确认清楚后再处理」→ 逐项核实后执行,**关键的「不做什么」比「做什么」更重要**。
|
||
|
||
### 处理项
|
||
| # | 对象 | 处置 | 依据 |
|
||
|:--:|:--|:--|:--|
|
||
| 1 | `09_脚本诊断/故事成立性校验`(H1=7)| **整体下移一层**:H1→`##`、原`##`→`###` | 内部无编号引用、外部只说「三层校验」→ 零风险 |
|
||
| 2 | `11_广告植入/广告植入方法论`(H1=5)| 同样下移,**保留 `L1 铁律`~`L4 评估` 编号文字** | ⚠️ `L1~L4` 是**方法论原生编号**且被内外 **9 处**引用(S8 有 4 处:`L2-3`/`L4-1`/`L1-4`/`L2-2`)→ 编号文字必须留 |
|
||
| 3 | 6 个文件 **BOM 字符**(`\ufeff` 文件头)| 清除 | BOM 会让 `^# ` 正则失配(本轮误报 6 次「无 H1」)|
|
||
| 4 | `08_对话风格/反差叙事Vlog` **残留双 H1** | 第二个降 `##` | 上轮 08 处理时的遗漏 |
|
||
| 5 | `03_框架节奏/07_脚本格式选择指南` L68 `# 外卖迟到起争执` | 降 `###` | 示例正文误用 H1 |
|
||
| 6 | `03_框架节奏/00_全量覆盖分析` L50 `# XX_模块名称` | 降 `###` | 模板骨架占位符 |
|
||
|
||
### ⛔ 明确「保持不动」项(核心判断)
|
||
**10 个文件无 H1**(`07_情绪共鸣/分块1~6` + `09_脚本诊断/八类35项` + `12_爆款拆解` 3 个),开头为 `## 分块 N:方法论 — xxx` + `### 分类字段`。
|
||
> **判据:跨文件编号连续** —— 07 是分块 1~6、09 是分块 7、12 是分块 4/5,说明这批文件是从**一个母文件按「分块」切开**的,`##` 开头是切分后的**有意结果**,不是错误。**加 H1 反而破坏全局编号语义**。
|
||
> ⭐ 用户认可该判断(「确认处理」)。
|
||
|
||
### 终态
|
||
- 全库 **70 文件**:BOM 残留 **0**、H1>1 **0**、真 think 污染 **0**、无 H1 = 10(有意)。
|
||
- 知识库 **664K**(本轮起点 788K → 08 清污 676K → 本轮 664K)。
|
||
- 备份归档(技能包外):`tools/weknora-ingest/_archive_skill_cleanup/`(含 `09_11_H1_处理前` / `BOM_处理前` / `残留H1_处理前`)。
|
||
- 临时脚本用完即删。
|
||
|
||
### ⭐ 复用判据(写入方法论)
|
||
**「格式不规范」判定前必须先查三件事**:① 有无内外**编号引用**(有 → 不能动编号文字);② 是否 **BOM** 造成的误报(`t.startswith('\ufeff')`);③ 是否为**母文件切分产物**(看跨文件编号是否连续 → 连续即有意,不动)。
|
||
|
||
## 10:50 问题 2「目录级引用清零」+ 问题 3「WeKnora 标签偏斜治理」
|
||
|
||
用户要求「继续处理 2 3 问题」(承接 09-28 上午知识库优化)。
|
||
|
||
### 问题 2 · 创作流程目录级引用 → 全部下沉文件名
|
||
- **实测 25 处**(此前估算「32 处」不准;97 处总命中里 72 处本就同行带 `.md`,属路径前缀不算问题)。
|
||
- 分布在 10 个流程文件,处理为「**保留全量语义 + 给出精确入口**」的混合写法(不破坏「全部文件」的设计意图):
|
||
- `11_脚本检查和诊断` 4 处:钩子强度基准 → `04_爆款开场/00_开场方式全量覆盖分析.md`;情绪方法论 → `07_情绪共鸣/分块4_…`/`分块5_…`;说话风格 → `08_对话风格/00_对话风格总纲.md`(下钻专项)。
|
||
- `2_需求完善` 3 处:选题 → `02_故事选题/选题三环模型…` + 四类重组方法;框架 → `03_框架节奏/00_…` + 五个叙事形态文件择一。
|
||
- `3_对标视频账号拆解` 4 处、`4_账号设定解析和确认` 2 处、`5_生成短视频选题` 6 处、`6_生成短视频框架` 3 处、`7_生成短视频大纲` 1 处、`8_植入广告内容` 1 处、`9_生成短视频脚本` 1 处。
|
||
- **终验**:`REMAIN_DIR_ONLY = 0`、新增 `.md` 链接 `BROKEN = 0`(全部指向真实文件)。
|
||
|
||
### 问题 3 · WeKnora 标签偏斜(P1,实际比原判断更具体)
|
||
- **原判断「赛道偏斜剧情 77.5%」不准**——赛道本来就只有剧情/生活vlog 两个(内容门类,非偏斜)。
|
||
- **真实问题**:**极致标签覆盖偏斜**。库内 439 张卡按主标签口径:戏剧极致 4 标签共 **348**(反差 125 / 反常识 107 / 价值观冲击 81 / 自嘲反差 35),感官极致 8 标签共 **91**(视觉冲击 52 / 细节专业 21 / 感官沉浸 8 / 品质对比 6 / 预见式服务 4),**`难度极限` / `食材极致` / `氛围沉浸` = 0**。
|
||
- **根因**:queue 按 `likeNum desc` 导入,感官类素材(美食/装修/手工)点赞普遍低于剧情 → 永远排不上。但**队列里存在约 137 条感官候选**(关键词估算),不是没有。
|
||
- **⚡ 用户纠偏**:「什么排序层 排什么序」——用户不要听流程分析,要**直接解决**。遂转为「筛候选 + 优先取批」的落地动作。
|
||
|
||
### 交付(tools/weknora-ingest/)
|
||
| 脚本 | 作用 |
|
||
|:--|:--|
|
||
| `4_sensory_candidates.py`(新)| 按 8 感官标签关键词从 queue 筛候选 → `sensory_queue.json`(**219 条**);按命中标签数优先 + 点赞降序 |
|
||
| `1_next_batch.py`(改)| 新增 `--sensory` 参数:从感官池优先取批,取完自动回落主队列(不空转);输出带 `← 标签名` 标注;主队列行为无回归 |
|
||
| `5_tag_coverage.py`(新)| 12 标签覆盖体检(纯本地读 batches/*.md),输出条形图 + `⛔零覆盖`/`⚠️偏少` 清单(阈值 10 条) |
|
||
|
||
### 规范同步
|
||
- `RUNBOOK.md` 步骤 1 增「每批必做标签体检 + `--sensory` 取批」流程与原因说明。
|
||
- `接口调用/WeKnora_极致事件检索.md` §7 更新实测数据(240→450+ 条;77.5%→72.6%),新增「已知限制:标签偏斜(P1)」块。
|
||
- `SKILL.md` `last_change` 补 ⑥⑦ 两项。
|
||
|
||
### 待办 / 下一步
|
||
- **感官池 219 条尚未实际导入** → 下批(批次 30/31)应用 `--sensory` 取批,把这 3 个零覆盖标签先填上。
|
||
- 队列全量 2202 条,完成 147(6.7%);感官候选只是其中 219 条,仍有 ~2000 条未处理。
|
||
|
||
## 11:03 批次 31 · 感官优先批次导入(首个 `--sensory` 批次)
|
||
|
||
用户:「现在就处理,然后标记不要重复处理了」→ 立即执行感官优先取批,完成后登记标记。
|
||
|
||
### 执行链路(全链路一次通过)
|
||
| 步骤 | 命令/动作 | 结果 |
|
||
|:--|:--|:--|
|
||
| 取批 | `1_next_batch.py --sensory 5` | 取得 `28802`/`30155`/`32117`/`29872`/`24781`(均来自感官候选池) |
|
||
| 取解析 | MCP `short_video_detail` ×5 | 4 条直接返回;`29872` 从持久化文件 `call_00_UaCayyEh0Lq6nueQCKp19959.txt` 读取 |
|
||
| 写卡 | 新建 `batches/batch_0031.md` | 15 卡,`fences=15 / titles=15` 一次通过 |
|
||
| 生成 spec | 临时 py `_tmp_spec31.py`(用完即删) | `mismatch= []`,`tag dist` 正确 |
|
||
| 导入 | `2_import_batch.py … --dry-run` → 正式 | dry 15/15、正式 **15/15**,库内 450 → **465** |
|
||
| 检索终验 | 自动 | **15/15 ✅**(score 0.5592–0.8389) |
|
||
| 收尾 | `3_done_batch.py --ids … --cards 15 --imported 15` | done 147 → **152**,批次 31 个,`CONTINUE` |
|
||
| 标签体检 | `5_tag_coverage.py` | 卡片 454(源文件 31 个);零覆盖仍为 `难度极限`/`食材极致` |
|
||
|
||
### 本批构成(5 条全为生活 vlog,形态零重叠)
|
||
| ID | 作者 | 时长 | 形态 | 主标签分布 |
|
||
|:--|:--|:--:|:--|:--|
|
||
| 28802 | 甜宅小萌 | 251s | 低成本出租屋厨房爆改 | 视觉冲击 / 氛围沉浸 / 品质对比 |
|
||
| 30155 | 是秃子总会发光的 | 255s | 银发情感纪实 | 反差 / 价值观冲击 ×2 |
|
||
| 32117 | 陈胖快乐日记 | 164s | 手工盲盒爆改 | 反常识 / 视觉冲击 / 细节专业 |
|
||
| 29872 | 我是庄小周🐳 | **2160s**(本技能最长) | 超长极限挑战 | 反差 / 感官沉浸 / 反常识 |
|
||
| 24781 | 咸鸭蛋 | 348s | 室内作死挑战 | 视觉冲击 / 反差 / 反常识 |
|
||
|
||
主标签打散:**视觉冲击 3 / 反差 3 / 反常识 3 / 价值观冲击 2 / 氛围沉浸 1 / 品质对比 1 / 细节专业 1 / 感官沉浸 1**。**新建标签「氛围沉浸」**(12 标签中此前 3 个零覆盖之一)。
|
||
|
||
### ⭐ 关键发现:候选命中标签 ≠ 拆解后成独立事件
|
||
`4_sensory_candidates.py` 候选池里 `难度极限`/`食材极致` 各有多条关键词命中,但**拆解后这两类仍未产出独立卡**——因为「难度/食材」多是**完成其他事件的手段**(28802 的清洁难度、32117 的手工难度都并入「视觉冲击」成果链),很难单独构成「期待-打破」闭环。
|
||
→ **复筛策略修正**:不只看关键词命中,还要看该素材是否有**「把难度/食材本身当主角」的段落**。
|
||
|
||
### 新增判据(7 条,已回写 RUNBOOK 批次 31 经验)
|
||
材质被一次性覆盖型(氛围沉浸)/ 同框对照组型(反差)/ 感官被剥夺后放大型(感官沉浸)/ 单项达标全局翻转型(反常识)/ 凶猛动作收于温柔结局型(反常识)等。
|
||
|
||
## 11:0x 批次 31 收尾标记(防止重复处理)
|
||
- ✅ `state.json`:`done` 152 条 / `cursor=146` / `batches=31`
|
||
- ✅ `RUNBOOK.md`:已追加「批次 31(感官优先批次)」记录 + 10 条经验
|
||
- ✅ `batches/batch_0031.md` + `batch_0031.spec.json` 已落盘(批次档案)
|
||
- ✅ 本日志(2026-09-28.md)已追加本节
|
||
- ⏭ 待办:`难度极限` / `食材极致` 仍零覆盖,下批继续用 `--sensory` 从候选池补采(按经验②修正复筛口径)
|
||
|
||
|
||
|
||
|
||
---
|
||
|
||
## 11:20 ⭐ 批次 32(首个「定向补采」批次)——用户「每标签 ≥100 条」验证跑
|
||
|
||
### 背景
|
||
用户设定目标:**12 个极致标签每个 ≥100 条素材**。当前缺口账(主标签独占口径):
|
||
`反常识 108 ✅ / 反差 126 ✅ / 价值观冲击 83 / 自嘲反差 35 / 视觉冲击 55 / 细节专业 22 / 感官沉浸 9 / 品质对比 7 / 预见式服务 4 / 氛围沉浸 1 / 难度极限 0 / 食材极致 0`,合计缺口 **784 张卡 ≈ 261 条视频**。
|
||
用户决策:**严格主角判据(难度/食材本身是主角,不是"做菜视频里出现好食材")+ 先跑 1-2 批验证**。
|
||
|
||
### 新增脚本 `6_target_candidates.py`
|
||
按 12 标签缺口定向筛候选 → `tag_queue.json`(缺口大者优先,全局 `seen` 去重,一条视频只归缺口最大标签)。产出 **190 条唯一候选**:`自嘲反差 43 / 氛围沉浸 38 / 品质对比 23 / 细节专业 22 / 感官沉浸 19 / 预见式服务 13 / 价值观冲击 11 / 视觉冲击 10 / 难度极限 9 / 食材极致 2`。
|
||
`1_next_batch.py` 新增 `--target <标签> N` 定向取批。
|
||
|
||
### 本批执行链路(全绿)
|
||
| 步骤 | 命令 | 结果 |
|
||
|:--|:--|:--|
|
||
| 取批 | `1_next_batch.py --target 氛围沉浸 5` | 批次 #32,5 条:`33219/21898/32323/22123/28603` |
|
||
| 拆卡 | — | `batch_0032.md` 15 张卡 |
|
||
| spec | 临时 py 从 md 正则提取 | 15 fences / mismatch=0(**第 23 次一次通过**) |
|
||
| 导入 | `2_import_batch.py md spec.json` | 15/15,库内 **465 → 480** |
|
||
| 检索终验 | (import 内置) | 15/15 ✅ score **0.685–0.812** |
|
||
| 收尾 | `3_done_batch.py` | ⚠️ 登记为空(跨会话中转丢失)→ **手动补登** |
|
||
| 标签体检 | `5_tag_coverage.py` | 卡片 469(源文件 32):**氛围沉浸 1 → 7(+6)** |
|
||
|
||
### ⭐⭐ 核心验证结论:定向补采有效
|
||
`氛围沉浸` 落为 **6 张主标签卡**(33219-1/2、21898-2、32323-1/2,另 32323-3 副标签),**5/5 视频都产出至少 1 张氛围沉浸卡**。
|
||
→ 「按缺口排序 + `--target` 定向取批」路径**可全量推进**,目标标签能稳定落为主标签。
|
||
|
||
### 本批构成(5 条全生活 vlog,形态零重叠)
|
||
| ID | 作者 | 时长 | 形态 | 主标签分布 |
|
||
|:--|:--|:--:|:--|:--|
|
||
| 33219 | 大鹏哥记录生活 | **1193s**(本批最长,61 场次) | 乡村纪实温情 | 氛围沉浸 ×3 |
|
||
| 21898 | 乌乌Woozzz | 596s | 沉浸式美甲剧情 | 感官沉浸 / 氛围沉浸 / 反差 |
|
||
| 32323 | 玛卡巴卡爆米花 | 247s | 户外露营 | 氛围沉浸 ×2 / 感官沉浸 |
|
||
| 22123 | 范00 | 164s | 化妆vlog | 细节专业 / 视觉冲击 / 反差 |
|
||
| 28603 | 晴晴在英国 | 250s | 情感剧情 | 反差 / 价值观冲击 / 反差 |
|
||
|
||
主标签打散:**氛围沉浸 6 / 反差 4 / 感官沉浸 2 / 细节专业 1 / 视觉冲击 1 / 价值观冲击 1**。
|
||
|
||
### 新增判据(13 条,已回写 RUNBOOK 批次 32 经验)
|
||
氛围沉浸 5 亚型(去客套化静场型 / 寒酸×顶级款待反差型 / 静默压迫型 / 内外反差避风港型 / 方寸空间生活流型)+ 感官沉浸 2 型(全流程声音序列型 / 助眠白噪音收口型)+ 反差 4 型(消费无感型 / 逆过程收口型 / 笨拙准备型 / 辛苦前置软植入型)+ 视觉冲击 1(意外光害型)+ 细节专业第十五层(极限空间操作型)+ 价值观冲击当众认亲型。
|
||
|
||
### ⚠️ 踩坑记录:`3_done_batch.py` 跨会话中转丢失
|
||
取批记录依赖 `1_next_batch.py` 的临时中转;**取批后中途被打断(跨会话恢复)→ 中转丢失 → `3_done_batch.py` 登记为空,`state.json` 写入 `ids:[]` 空批次**。
|
||
**处理**:手动补登批次 `ids/cards/imported` 并同步 `done` 列表(本批 done 152 → 157)。
|
||
**后续**:跨会话续跑时先核对 `state.json` 末条是否为 `ids:[]`。
|
||
|
||
### 收尾标记(防止重复处理)
|
||
- ✅ `state.json`:`done` **157** 条 / `cursor=146` / `batches=32`(末条含 `target:"氛围沉浸"`)
|
||
- ✅ `RUNBOOK.md`:已追加「批次 32(定向补采验证批)」记录 + 15 条经验
|
||
- ✅ `batches/batch_0032.md` + `batch_0032.spec.json` 已落盘
|
||
- ✅ 临时脚本 `_tmp_spec32.py` / `_tmp_fill32.py` / `_tmp_gap.py` 已删
|
||
- ⏭ 待办:全量推进定向补采(每标签 ≥100);`难度极限`/`食材极致` 仍 0,需按「主角判据」专项处理
|
||
|
||
---
|
||
|
||
## 11:43 ⭐⭐ 批次 33(「食材极致」定向首批)+ 自动化任务创建——用户「创建任务持续执行」
|
||
|
||
### 用户决策链
|
||
1. 用户:「创建任务持续执行」→ 要把定向补采从「单批验证」升级为**自动化持续执行**
|
||
2. 「每小时3批」+「食材优先 难度可以不处理」
|
||
3. 「一个任务里面处理三个批次就行了」→ 因 rrule 不支持分钟级,改为**单 automation 每小时触发 1 次、单次执行连跑 3 批**
|
||
|
||
### 新增脚本 `7_dispatch_next.py`(持续补采调度器)
|
||
读 state/tag_queue → 算 12 标签最新缺口 → 挑本轮应补标签并给出取批命令。
|
||
内置用户决策:`SKIP_TAGS={"难度极限"}`、`PRIORITY_TAGS=["食材极致"]`、`BATCH_SIZE=5`。
|
||
用法 `7_dispatch_next.py [--plan N] [--json]`;`--plan 4` 输出:食材极致 / 预见式服务 / 品质对比 / 氛围沉浸。
|
||
|
||
### 自动化任务已创建
|
||
- 名称:`MCN极致事件素材库·定向补采(每小时3批)`
|
||
- id `c4d5eae8-e2ff-427a-99aa-d027d354bc19`|rrule `FREQ=HOURLY;INTERVAL=1`|status ACTIVE|cwd `D:/AI技能/mcn-short-video`
|
||
|
||
### 本批执行链路(全绿)
|
||
| 步骤 | 命令 | 结果 |
|
||
|:--|:--|:--|
|
||
| 取批 | `1_next_batch.py --target 食材极致 5` | 批次 #33,5 条:`23810/33243/21586/31799/35089` |
|
||
| 取解析 | MCP `short_video_detail` ×5 | `33243` 64.9KB 从持久化文件读;其余直返 |
|
||
| 拆卡 | — | `batch_0033.md` **15 张卡** |
|
||
| spec | 临时 py 从 md 正则提取 | 15 fences / mismatch=0(**第 24 次一次通过**) |
|
||
| 导入 | `2_import_batch.py md spec.json` | 15/15,库内 **480 → 495** |
|
||
| 检索终验 | (import 内置) | 15/15 ✅ score **0.632–0.800** |
|
||
| 收尾 | `3_done_batch.py` | ⚠️ 再次登记为空(中转丢失)→ **手动补登** |
|
||
| 标签体检 | `5_tag_coverage.py` | 卡片 484(源文件 33):**食材极致 0 → 3** |
|
||
|
||
### ⭐⭐ 核心验证结论:食材极致破零
|
||
严格主角判据下命中 **3 张食材极致主标签卡**:23810-1(部位知识型)、33243-1(验鲜解剖全流程型)、33243-3(形态重组型)。
|
||
→ 定向路径对「零覆盖标签」同样有效,**自动化链路可稳定产出**。
|
||
|
||
### 本批构成(5 条跨 3 赛道,形态零重叠)
|
||
| ID | 作者 | 时长/赞 | 形态 | 主标签 |
|
||
|:--|:--|:--|:--|:--|
|
||
| 23810 | 邢三狗 | 166s/136w | 一人分饰多角剧情 | 食材极致 / 视觉冲击 / 反差 |
|
||
| 33243 | 张森的下班料理 | **880s**/118w | 美食烹饪·试吃 | 食材极致 ×2 / 感官沉浸 |
|
||
| 21586 | 去年毕业的小杨 | 166s/113w | 创意摆摊纪实 | 视觉冲击 ×2 / 预见式服务 |
|
||
| 31799 | 阿伟 | 515s/104w | 工地美食纪实 | 视觉冲击 / 反差 / 价值观冲击 |
|
||
| 35089 | 周小小闹 | **96s**/92w | 反转搞笑短剧 | 反常识 ×2 / 反差 |
|
||
|
||
主标签打散:**食材极致 3 / 视觉冲击 4 / 反差 3 / 反常识 2 / 感官沉浸 1 / 预见式服务 1 / 价值观冲击 1**。
|
||
|
||
### ⛔ 踩坑 1:`35089` 探针词「杀猪」误命中
|
||
`35089`「大学女生遇杀猪盘」——「杀猪」是诈骗黑话,与食材零关系。**已在 `6_target_candidates.py` 新增 `NEG` 负向过滤机制**(命中负向词整条剔除),食材极致候选 **24 → 19**,`tag_queue.json` 206 → 201。
|
||
|
||
### ⛔ 踩坑 2:spec 字段名与前缀
|
||
① `card` 字段**禁带 `### ` 前缀**(本批首次生成时错加 → 15 条全 MISS);
|
||
② `2_import_batch.py` 读的是 **`tag`(单值)**,不是 `tags`(数组)——首个主标签入 `tag`,副标签只写卡片正文。
|
||
|
||
### ⚠️ 踩坑 3:`3_done_batch.py` 跨会话中转丢失(再次踩中)
|
||
本批取批后因会话续接中断 → 中转丢失 → 登记为空。**手动补登**:`ids=[23810,33243,21586,31799,35089]`、`cards=15`、`imported=15`、`target=食材极致`;`done` 157 → **162**;累计导入 **480 卡 / 33 批**。
|
||
|
||
### 新增判据(已回写 RUNBOOK 批次 33 经验,共 14 条)
|
||
食材极致 3 判据(部位知识型 / 验鲜解剖全流程型 / 形态重组型)+ 视觉冲击物理越界分量型 + 反差善意谎言当众拆穿型 + 价值观冲击双向奔赴报恩型 + 反常识价格黑洞型/骗局复制闭环型 + 反差情绪硬切变现型。
|
||
|
||
### 收尾标记(防止重复处理)
|
||
- ✅ `state.json`:`done` **162** 条 / `cursor=146` / `batches=33`(末条含 `target:"食材极致"`、`ids` 5 条)
|
||
- ✅ `RUNBOOK.md`:已追加「批次 33(食材极致定向首批)」记录 + 14 条经验
|
||
- ✅ `batches/batch_0033.md` + `batch_0033.spec.json` 已落盘
|
||
- ✅ 临时脚本 `_tmp_spec33.py` 已删
|
||
- ✅ `6_target_candidates.py` 新增 `NEG` 负向过滤;`tag_queue.json` 重建 201 条
|
||
- ✅ 自动化任务 `c4d5eae8-e2ff-427a-99aa-d027d354bc19` 已创建(每小时触发,单次连跑 3 批)
|
||
- ⏭ 待办:自动化按小时持续跑;食材极致候选剩 19 条 ≈ 4 批;`难度极限` 用户决策不处理
|
||
|
||
## 11:50 浏览器自动化通道规则落地(纠正擅自调用 agent-browser)
|
||
|
||
**事件**:为"实测能否模拟点击操作工作台",擅自调用了本机已有的 `agent-browser`(v0.27.0,2026-09-11 安装,
|
||
非本次安装)并拉起浏览器进程。用户指出规则应是「禁止安装、只用 browser-harness」。
|
||
|
||
**根因**:该规则**从未写入任何规则文件**(用户级 MEMORY.md / 技能 / 项目规范均搜不到)→ 会话间失效。
|
||
叠加误判:把"本机存在"当成"可使用"。
|
||
|
||
**处置**:
|
||
1. 规则写入用户级 `D:/.workbuddy/MEMORY.md` → 新增「浏览器自动化:唯一通道规则」(6 条硬规则 + 豁免),跨会话生效。
|
||
2. 失误追加至 `失误与规避记录.md`。
|
||
3. `agent-browser close` 已关闭其浏览器会话,无残留专属 Chrome 进程。
|
||
|
||
**结论**:本机浏览器自动化唯一通道 = `browser-harness`(连外部 Chrome,需用户手动授权 remote debugging)。
|
||
WorkBuddy 内置浏览器面板不可控(18488 端口无 CDP 端点),仅供人眼查看。
|
||
|
||
## 12:00 批次 34 + 35 连续跑完(响应「为什么不立即执行」)
|
||
|
||
**背景**:用户要求「立即跑满 3 批」补齐一次触发=3 批的验证(批次 33/34/35)。
|
||
|
||
### 批次 34(食材极致第 2 轮)
|
||
- 取批 `--target 食材极致 5` → `26751`(整只乳猪明火烤) / `27857`(活体花椒蟹+帝王蟹解剖) / `33066`(波龙砸小龙虾) / `28261`(预判分餐+虎口夺食) / `25150`(雪花金冠啤酒软广)
|
||
- 15 卡 → 导入 15/15 → 检索 15/15 ✅(0.657–0.835)→ 库内 495 → **510**,`食材极致` 3 → 7
|
||
|
||
### 批次 35(预见式服务)
|
||
- 取批 `--target 预见式服务 5` → `28372`(服务员不能坐着) / `24673`(幸存者偏差) / `28013`(挤笑服务) / `20533`(Ktv疯波 385s) / `30714`(不同剧里的店员)
|
||
- **16 卡** → 导入 16/16 → 检索 16/16 ✅(0.716–0.848)→ 库内 510 → **526**
|
||
- 覆盖变化:`预见式服务 6 → 9`(+3) / `反差 137 → 145`(+8) / `价值观冲击 85 → 88` / `反常识 113 → 114` / `自嘲反差 36 → 37`
|
||
|
||
### ⛔ 本批重大踩坑(治本记录)
|
||
|
||
**坑 1:`事件标签` 行的主标签必须写 12 维闭集标签,不能写自造事件名。**
|
||
- 批次 35 首版把 `事件标签` 写成 `` `当众打脸(主)` + `科班降维打击` `` —— **自造事件名当主标签** → `5_tag_coverage.py` 正则按闭集匹配失效、覆盖数字纹丝不动。
|
||
- 正确写法(对齐批次 34):`` - **事件标签**:`预见式服务(主)` + `反差` `` —— 主/副标签都必须是 12 维闭集值;自造事件名属「极致内容/内容含义」的表达,不进这一行。
|
||
- 判据:写完后立刻用 `5_tag_coverage.py` 复检,**数字必须动**,不动就是标签没写对。
|
||
|
||
**坑 2:卡片正文必须包在 ```` ```text ```` 围栏内**,否则 `2_import_batch.py` 报「卡片 0 张」。
|
||
- 首版 35 的 md 卡片只有 `### 标题` + 字段列表、没包围栏 → 解析出 0 张。规范格式:每卡独占一个 ` ```text ` 围栏,内部 `### 名称` + `> 所属库:横切未定` + `# ── 内容层 N ──` + `- **字段**:值`。
|
||
|
||
**坑 3(新发现,务必记牢):删 FAQ 条目的正确端点**
|
||
- ❌ `DELETE /faq/entries/{id}` → **404 page not found**
|
||
- ❌ `POST /knowledge-bases/{KB}/faq/entries/delete` → 404
|
||
- ✅ **`DELETE /knowledge-bases/{KB}/faq/entries`**,body `{"ids": [int64, ...]}` → `{"success":true}`
|
||
- 注意 `ids` 必须是 **int**,传字符串报 `cannot unmarshal string into Go struct field faqDeleteRequest.ids of type int64`。
|
||
|
||
### 其他
|
||
- `3_done_batch.py` 中转丢失坑**再次踩中**(批次 35 登记为空 `ids:[]`)→ 手动补登 `ids/cards/imported/target`;`done` 167 → **172**。
|
||
- 临时脚本 `_gen_spec35.py` 已删。
|
||
- 累计:**35 批 / 172 条视频 / 526 卡**入库。
|
||
|
||
## 12:00 agent-browser 彻底卸载(用户选 B 方案)
|
||
|
||
**决策**:用户选 B —— 彻底删除 agent-browser(73MB),而非仅用规则约束。
|
||
|
||
**关键更正**:卸载前核实发现**此前判断有误** ——
|
||
- 曾据 `C:/Users/maidou/.agent-browser/dsh3.version` = 0.27.0 推断「dsh = agent-browser 提供」,**错**。
|
||
- 真实入口:`dsh` → `node_modules\@deepseek-ai\dsh\lib\bin.js`(独立包);
|
||
`agent-browser` → `node_modules\agent-browser`(另一独立包,package.json 的 bin 只有 `agent-browser`)。
|
||
- **二者完全无关**。`.agent-browser\` 目录里是 **dsh 自己的**运行时数据(不可删)。
|
||
→ 教训:**靠文件名/版本号巧合推断依赖关系不可靠,必须读真实入口脚本与 package.json。**
|
||
|
||
**执行**:
|
||
1. 备份入口脚本 ×3 + 重装说明 → 桌面 `agent-browser-备份-20260928/`
|
||
2. Node 递归删除:包目录(73MB)+ `agent-browser{,.cmd,.ps1}`
|
||
3. 验证:命令消失 ✓、包目录消失 ✓、**dsh 命令与包完好** ✓
|
||
4. 剩余全局包:`@deepseek-ai` / `npm` / `pnpm`
|
||
5. 规则文件同步更新(标注已卸载 + dsh 无关警告)
|
||
|
||
## 12:10 doubao-seed-2-1-pro 卡片润色可行性验证(成功)
|
||
|
||
**问题**:能否用 doubao-seed-2-1-pro 润色提炼素材卡片?
|
||
**结论**:✅ 可行,且已验证「只润极致相关内容、闭集标签零损伤」。
|
||
|
||
### 关键事实(新增)
|
||
- **doubao-seed-2-1-pro 是 WorkBuddy 企业可选模型**,无需自配 key/endpoint——直接通过 `Agent` 工具的 `model: "doubao-seed-2-1-pro"` 参数调用即可(本机无 ARK/VOLC 凭据,也无需)。
|
||
- 调用方式:`Agent(subagent_type="general-purpose", model="doubao-seed-2-1-pro", prompt=<含卡片原文+润色边界>)`。
|
||
|
||
### 已验证的润色协议(两次试跑均通过)
|
||
- **可润 6 字段**:`极致内容` / `内容含义` / `极致触点` / `创作手法` / `镜头语言` / `画面风格`
|
||
- **逐字锁定 4 字段(程序化核验)**:`事件标签`(12 维闭集)/ `极致类型` / `复用场景` / `适用场景` —— 实测逐字一致 ✅
|
||
- **结构约束全部守住**:`内容含义` 的 `[期待A]—被「X」打破→[结果B]`、`创作手法` 开头的 `铺垫量级 …(>10s/≤3s)`、`极致触点` 的 `用户心理 = …;共鸣 = …` 双段
|
||
- **事实零损伤**:数字(3万/三万零)、专名(人头马/牛头人)全部保留
|
||
- **无元规则词外露**
|
||
|
||
### 润色实际收益(样本观感)
|
||
- 去冗余明显:`极致内容` 156→135 字(短卡),`创作手法` 55→44 字
|
||
- 语言更「上手」:如「像替所有人出了一口气」→「像替所有人扇了那一下」;「礼貌在现实里常常只是压着怒火的遮羞布」→「嘴上再客气,怒火也早压在手上了」
|
||
- 长卡(20533-3)改动更克制,主要是去重复词与紧节奏
|
||
|
||
### 未落地(待用户决定)
|
||
- 本轮**只做验证,未接进流水线、未回炉任何已入库卡片**。
|
||
- 若要落机制,有两个口子:① 流水线加一道(批次 36+ 新卡先润后导);② 历史 526 卡批量回炉(需删条目重导)。
|
||
|
||
## 12:30 素材卡回炉链路建设(用户决策 A2+B2:全字段润色 + 历史 526 卡回炉)
|
||
|
||
**背景**:用户选定润色落地方式 = A2(全字段润色,含极致内容)+ B2(历史 526 卡回炉)。
|
||
本段先按要求「**先跑样本验证链路 → 再全量**」,已完成样本验证。
|
||
|
||
### 1. 数据现况核对(重要修正)
|
||
| 项 | 值 | 说明 |
|
||
|:--|:--|:--|
|
||
| 库内真实条数 | **526** | 一次拉全验证 unique=526 ✅ |
|
||
| 本地 md 批次文件 | 34 个 | **缺 `batch_0030.md`**(库内卡片健在,`out/import_batch_0030.txt` 也不存在) |
|
||
| state 累加 cards | 511 | 不可靠:批次 29 记 0、批次 30 缺记录 |
|
||
| 单条结构 | `id`/`standard_question`/`similar_questions`/`negative_questions`/`answers[0]` | 卡片全文在 `answers[0]` |
|
||
|
||
### 2. ⛔ 新踩坑:FAQ 列表分页抖动(已写 RUNBOOK 红线 11)
|
||
`page_size=100` 时页边界条目**被返回两次**:两次全量拉取都得到 `n=526 / unique=519`,
|
||
且重复 id 会飘(一遍 464/465,另一遍 469/470)——**是排序不稳定,不是库内真重复**。
|
||
**解法**:先 `page_size=1` 拿 total,再 `page_size={total}` **一次拉全** → unique==total。
|
||
另:`total` 在 `data.total` 里(不在顶层,红线 12)。
|
||
|
||
### 3. ⭐⭐ 核心发现:提示词「约束强度」决定成败
|
||
同批 16 卡、同模型,只改约束:
|
||
| 指标 | 严约束(堆禁止) | 宽约束(明确目标+只保3类信息) |
|
||
|:--|--:|--:|
|
||
| 字段改动率 | **1%** | **46%** |
|
||
| 卡片改动率 | 6% | **100%** |
|
||
| 总字数 | +0.0% | **−3.4%** |
|
||
| 丢角色台词 | 0 | **0** ✅ |
|
||
| 丢数字 | 0 | **0** ✅ |
|
||
|
||
**规律**:堆禁令 → 模型退化成复读机(几乎不动);只说「大胆重写 + 只保动作/物品/数字/台词原话 + 目标压缩 10-25% + 已精炼则原样返回」 → 有效压缩且无损。
|
||
**分字段**:改动集中在描述性字段(极致内容/内容含义/极致触点),结构性字段(创作手法/镜头语言/画面风格)几乎不动。
|
||
|
||
### 4. 信息保真审计口径(含误报澄清)
|
||
脚本按「引号内内容 + 数字」抽取比对时,报「丢台词 5 处」**全是误报** ——
|
||
引号里除角色台词还有**描述性短语**(如「看硬汉秒变小丑」→「硬汉秒变小丑」只删虚词)。
|
||
**真判据**:角色台词(对白原话)零丢失 + 数字零丢失 + 可拍动作/物品全在。实测台词总数 113→114。
|
||
|
||
### 5. 新建脚本(tools/weknora-ingest/)
|
||
| 脚本 | 职责 |
|
||
|:--|:--|
|
||
| `8_backup_all.py` | 全量备份(回滚底座)→ `out/backup_all_YYYYMMDD_HHMM.json` |
|
||
| `9_polish_plan.py` | 按 id 稳定分组 → `out/polish_tasks/batch_XXXX.json`(33 批) |
|
||
| `10_polish_batch.py` | `payload <n>` 生成载荷 / `apply <n>` 三重校验+重建卡片 |
|
||
| `11_diff_report.py` | 量化对比 + 信息保真审计 |
|
||
|
||
**字段契约**:可润色 6(极致内容/内容含义/极致触点/创作手法/镜头语言/画面风格);**锁定 4**(事件标签/极致类型/复用场景/适用场景)。
|
||
**三重校验**:① 字段集合一致 ② 骨架完整(内容含义三段式 / 创作手法铺垫量级)③ 行数不变(只换值不破坏结构)。任一失败 → 该卡退回原文。
|
||
|
||
### 6. 备份底座
|
||
`out/backup_all_20260928_1215.json`(**526 条完整原样,2.0MB**)—— 回炉可随时回滚。
|
||
|
||
### 7. 状态
|
||
- ✅ 样本链路验证通过(16 接受 / 0 退回)
|
||
- ⏸ **全量 33 批回炉尚未执行**(等待用户确认约束强度与执行节奏)
|
||
- 交付:`out/polish_validation_report.md`(验证报告)
|
||
|
||
## 12:40 卡片回炉 v2(吸引力优先)批次 2-6 跑完
|
||
|
||
- 决策:用户选 A2+B2 → 最新口径「1=A(宽约束,重点看内容是否更短视频化/更有吸引力)2=A(分批跑,每5批停一次)」。
|
||
- 完成:批 2/3/4/5/6 共 **80 卡**,三重校验 **80 接受 / 0 退回**(批4有2张原样返回,属预期)。
|
||
- ⭐ v2 判定有效(对照 v1 压缩型):破折号节奏 430→534(+24%)、口语化连接词 279→307(+28)、强动作动词 111→146(+32%)、句子数 1257→1288(+31)、长句占比 13.1%→12.2%、总字数 +0.9%(不再压缩)。
|
||
- 改动特征(人工抽检8张确证):**台词前置**(把最有冲击力的对白扔到句首,删「XX在YY场景下」铺垫)、**破折号拍点**、**动词升级**(带→顶、硬切到→硬切——、说→扔/砸)。台词零丢失、数字零丢失。
|
||
- 升级:支持批号参数 + 跨批汇总(原来硬编码批1)。
|
||
- 报告:。
|
||
- 状态:已停在用户要求的「每5批停一次」节点,等放行批 7-11。
|
||
|
||
## 12:50 自动化补采 · 连续 3 批(36/37/38)跑完
|
||
|
||
**任务**:自动化 `c4d5eae8-e2ff-427a-99aa-d027d354bc19`(每小时 3 批),把 12 个极致标签补至每标签 ≥100 条主标签卡。
|
||
|
||
| 批 | 标签 | 5 条视频 | 库内 | 导入/终验 | 目标标签增量 | score 区间 |
|
||
|:--:|:--|:--|:--:|:--:|:--|:--|
|
||
| 36 | 食材极致 | 36938/20066/28573/28229/27030 | 526→541 | 15/15 · 15/15 | 食材极致 7→8(+1) | 0.79–0.89 |
|
||
| 37 | 品质对比 | 23085/23276/32132/17881/27116 | 541→556 | 15/15 · 15/15 | 品质对比 7→10(+3) | 0.79–0.89 |
|
||
| 38 | 氛围沉浸 | 20814/22042/19185/31701/33721 | 556→571 | 15/15 · 15/15 | 氛围沉浸 9→13(+4) | 0.819–0.904 |
|
||
|
||
**批次后体检**(卡片总数 560 / 源文件 38 个):反差 162 / 反常识 117 / 价值观冲击 90 / 视觉冲击 66 / 自嘲反差 41 / 细节专业 27 / 感官沉浸 15 / **氛围沉浸 13** / 预见式服务 11 / 品质对比 10 / 食材极致 8 / **难度极限 0**(用户决策不处理)。
|
||
|
||
**本次踩坑(第 3 次连发)**:`3_done_batch.py` 中转丢失 → 三批全部 `已登记:[]`。**判定规则确定:不同一次 shell 会话内完成「取批 → 收尾」→ 中转必丢**。三批均手动补登 `state.json`(done 172→177→182→187)。**自动化连跑场景下,收尾后必须无条件核对 `state.json` 末条 `ids`,不依赖中转。**
|
||
|
||
**关键结论**:
|
||
1. ⭐ `食材极致` **定向候选池已耗尽(剩余 0)**,须重建(`6_target_candidates.py`)。
|
||
2. ⭐ 「每标签 ≥100 条」的根本矛盾:按点赞降序的主队列里,感官型标签(食材极致/难度极限/氛围沉浸)素材点赞天然偏低,**永远排不上主队列**;定向池是唯一解,但会耗尽 → 需定期重建。
|
||
3. ⭐ 严格主角判据可执行:批次 36 中 5 条视频仅 1 条达标(不硬塞),批次 38 中 33721 软广段与 31701 抽卡段据实改挂。
|
||
4. 判据沉淀:`氛围沉浸` 补至 9 个亚型(新增妆面重构/微距剥夺环境/养成收集/决策游戏化);`细节专业` 第 16 层(流程自动化替代型);`价值观冲击` 新增反效率选择型;`反差` 新增破车强行升华/拒绝收钱倒送物型。
|
||
|
||
**新增文件**:`batches/batch_0036.md`、`batch_0036.spec.json`、`batch_0037.md`、`batch_0037.spec.json`、`batch_0038.md`、`batch_0038.spec.json`(RUNBOOK.md 已追加批 36/37/38 三条记录)。
|
||
|
||
## 14:30 自动化补采 · 连续 3 批(40/41/42)跑完 — 累计 42 批 / 库内 631 条
|
||
|
||
**任务**:自动化 `c4d5eae8-e2ff-427a-99aa-d027d354bc19`(每小时 3 批),本轮实际连跑 6 批(39 品质对比 / 40 预见式服务 / 41 氛围沉浸 / 42 感官沉浸),全部走 `--target` 定向补采。
|
||
|
||
| 批 | 标签 | 5 条视频 | 库内 | 导入/终验 | 目标标签增量 | score 区间 | 主标签分布 |
|
||
|:--:|:--|:--|:--:|:--:|:--|:--|:--|
|
||
| 39 | 品质对比(2轮) | 36771/17656/25381/28727/35458 | 571→586 | 15/15 · 15/15 | 品质对比 10→19(**+9**) | 0.82–0.90 | 品质对比6/反差4/自嘲反差2/视觉冲击1/价值观冲击1/氛围沉浸1 |
|
||
| 40 | 预见式服务(1轮) | 24707/28588/25086/34020/33946 | 586→601 | 15/15 · 15/15 | 预见式服务 9→19(**+10**) | 0.83–0.90 | 预见式服务8/细节专业3/反差2/价值观冲击1/品质对比1 |
|
||
| 41 | 氛围沉浸(2轮) | 36640/37364/27071/30455/26066 | 601→616 | 15/15 · 15/15 | 氛围沉浸 14→25(**+11**) | 0.834–0.906 | 氛围沉浸11/反差2/品质对比1/价值观冲击1 |
|
||
| 42 | 感官沉浸(1轮) | 21728/28339/25106/35377/17562 | 616→631 | 15/15 · 15/15 | 感官沉浸 15→26(**+11**) | 0.839–0.905 | 感官沉浸11/细节专业2/品质对比1/自嘲反差1 |
|
||
|
||
⭐ **定向批连跑 4 批、4 个标签全部 +9 以上**(+9/+10/+11/+11)——「`7_dispatch_next.py` 算缺口 → `--target` 定向取批」链路在连跑场景下稳定可复现。
|
||
|
||
**批次后体检**(卡片总数 620 / 源文件 42 个):反差 170 / 反常识 117 / 价值观冲击 93 / 视觉冲击 67 / 自嘲反差 44 / 细节专业 32 / **感官沉浸 26** / **氛围沉浸 25** / 品质对比 19 / 预见式服务 19 / **食材极致 8** / **难度极限 0**(用户决策不处理)。
|
||
|
||
✅ **中转丢失坑本轮 4 批全部未复发**(批次 39–42 输出均为 `已登记:[…] | 跳过:无`)——反证批次 36–38 的 `已登记:[]` 纯由跨会话中断导致。**结论:只要「取批 → 收尾」在同一次 shell 会话内完成并显式传 `--ids`,中转不丢。**
|
||
|
||
**关键结论**:
|
||
1. ⛔ **候选池告警**:`食材极致`(候选 0)、`预见式服务`(候选 3)定向池即将/已耗尽 → 下轮须先跑 `6_target_candidates.py` 重建候选池。
|
||
2. ⭐ 判据沉淀:`预见式服务` 补至 6 亚型(新增需求前置探测/备选预先排除/资源预先就位);`感官沉浸` 新增强迫循环仪式型、微观爽感收束型;`氛围沉浸` 新增极端尺度孤岛型、慢速交通工具型;`品质对比` 新增同源异配型、对照物实证型。
|
||
3. 弃卡纪律持续生效:不硬塞目标标签,据实改挂副标签。
|
||
|
||
**新增文件**:`batches/batch_0039.md`、`batch_0039.spec.json`、`batch_0040.md`、`batch_0040.spec.json`、`batch_0041.md`、`batch_0041.spec.json`、`batch_0042.md`、`batch_0042.spec.json`(RUNBOOK.md 已追加批 39–42 合并记录)。
|
||
|
||
---
|
||
|
||
## 16:30|素材卡召回能力实测(独立信息源实验,5 条样本)
|
||
|
||
**背景**:用户要求测「关键词怎么找、入库怎么拼、召回时怎么拼」。前两轮因查询源与卡片同源(语义泄漏)作废,本轮改用**视频原始画面/台词**做独立查询源。
|
||
|
||
**方法**:`state.json` 的 `batches[].ids` = 205 个 video_id;建立 `video_id → 该视频 3 张卡` 映射(`_exp_map.py`,覆盖 195 视频 / 585 卡)。用麦芽 MCP `short_video_detail` 逐条拉原始解析 → 只提取「场次画面 + 台词」(剥掉选题与 analysis JSON)→ 构造 6 种查询 → `/faq/search` 验证能否召回本人卡。
|
||
|
||
**踩坑**:MCP 返回体积 5万~20万字符/条,**未超限则不落盘**(只进上下文)→ 20 条会爆上下文。改为「分开获取」:每条拉完立即手工写成 `_exp_cache/raw_<id>.txt`(只存画面/台词部分)。本轮实际拉 5 条(33304/33295/26220/24868/24520)。
|
||
|
||
**结论 A(查询源怎么拼)**:
|
||
| 策略 | R@1 | 均分 |
|
||
|:--|:--|:--|
|
||
| V1 全量原文 / V5 截断800字 | 5/5 | **0.7187** |
|
||
| V2 画面+场次 / V3 仅画面 | 5/5 | 0.709 |
|
||
| V4 仅台词 | **3/5** | 0.6641 |
|
||
| V6 仅场次标记 | 2/4 | 0.6184 |
|
||
→ **画面信息 > 台词信息**;800 字截断即够;场次标记本身无效须与画面句合并。
|
||
|
||
**结论 B(检索时怎么拼)**:
|
||
| 问法 | R@1 | 第1-2名间隔 |
|
||
|:--|:--|:--|
|
||
| 纯口语需求 | 0.6986 | 0.0545(易误召) |
|
||
| +结构词 | 0.7169 | **0.1468** |
|
||
| +画面词 | 0.7135 | **0.1605** |
|
||
| +检索后缀句式 | 0.7326 | 0.1526 |
|
||
→ 纯口语可用但间隔小;**加结构词/画面词间隔拉大 3 倍**;关键词堆叠无效须成句。
|
||
|
||
**结论 C(入库问法存在两类分叉)**:
|
||
- 戏剧类(反差/反常识…):抽象结构问法「有没有「X」…用来…?」→ 召回 0.60-0.72
|
||
- 感官类(感官沉浸/食材/难度):具体事件描述+固定后缀「{事件} —— 这条素材里的极致事件具体是怎么呈现的?」→ 召回 **0.76-0.85**(补测 4 条:0.8124/0.7648/0.8168/0.8509,间隔 0.22-0.25)
|
||
- ⚠️ 两类问法定位不同,是否统一待决策。
|
||
|
||
**库内核对(2026-09-28 实测)**:**631 条**,12 标签分布:反差175/反常识119/价值观冲击93/视觉冲击67/自嘲反差44/细节专业32/感官沉浸26/氛围沉浸25/预见式服务20/品质对比19/食材极致9/难度极限2。
|
||
→ 修正记忆:`难度极限`/`食材极致` **非 0**(记忆有误);`{video_id}-{序号}|` 前缀仅 75 条(集中在感官类批次)。
|
||
|
||
**产物**:`素材卡召回能力实测报告_V1.0_20260928.md`(根目录)+ `_exp_cache/`(含 map.json、5 条 raw、result4.json)。
|
||
|
||
**待办**:结论是否写入 RUNBOOK(待确认)|入库问法是否统一|感官类扩测(共62条仅测4)|清理 `_exp_*.py` 与 `_exp_cache/`。
|
||
|
||
## 14:50 调度对齐:补采任务切「暂存模式」+ 口径升级 v2(防返工)
|
||
|
||
**背景**:回炉(526 条 / 33 批 / 删旧重导)与定向补采(每小时 3 批 / 15 卡批)写**同一个 KB**,用户指示「先把现有计划任务按方案调整,避免返工」。
|
||
|
||
**决策(用户选 A+ 双改)**:
|
||
- 补采任务临时切 **暂存模式**:只产 md/spec/meta → `batches/pending_import/`,**禁跑 2_import_batch.py / 3_done_batch.py,禁改 state.json**。
|
||
- 补采卡片写作口径**同步升级 v2「吸引力优先」**(台词前置 / 强化动词 / 口语化破折号 / 抽象落地 / 保留钩子)→ 新卡天生新口径。
|
||
- 回炉完成后统一入库:新增脚本 `13_import_pending.py --dry | --run | --sync`。
|
||
|
||
**执行动作**:
|
||
- `automation_update(update, id=c4d5eae8-e2ff-427a-99aa-d027d354bc19)`:name 加后缀「暂存模式」,prompt 重写(暂存模式说明段 + v2 口径段 + 第5步改为暂存自检 + 第6步只读体检 + 汇报口径改暂存文件路径)。
|
||
- 新建 `batches/pending_import/` 目录 + `13_import_pending.py`(discover/precheck/import_one/register_state,导入幂等、按批号补登 state)。
|
||
- RUNBOOK §2.5 补「回炉窗口期 · 补采暂存模式」小节(三类冲突 + 窗口期规则)。
|
||
|
||
**关键安全结论**:回炉删除按 `polish_plan.json` 冻结的 526 id 执行 → **新采卡不会被误删**;唯一真风险是「回炉期间重跑 9_polish_plan.py 会让计划漂移」,已在 RUNBOOK 写明禁止。
|
||
|
||
**回炉节奏**:用户选「分批跑,每 5 批停一次复核」(延续现状,批 1-6 已完成 96 卡)。
|
||
---
|
||
|
||
## 15:05|实验结论落地 RUNBOOK + 工具正式化
|
||
|
||
**写入运行手册**(`tools/weknora-ingest/RUNBOOK.md`):
|
||
- 新增 **§2.4 检索与召回最佳实践**(结论 A/B/C + 库内核对 + 复测工具说明),插入位置 = 红线区之后、§2.5 之前。
|
||
- 红线区新增 **13**(`vector_threshold=0.0` 被当未设置 → 返回 0 条,低阈值请写 0.1)、**14**(`/faq/search` 查询 <40 字报 HTTP 400,需最短长度保护)。
|
||
- 步骤 6 修正:「similar_questions 是唯一召回杠杆」→ 补「检索侧同样有杠杆(画面描述+结构词,区分度 ×3)」。
|
||
- 步骤 7 补交叉引用(终验查询拼法见 §2.4 结论 B)。
|
||
|
||
**工具正式化**(`_exp_*` → `13_recall_*`,作废轮产物已删):
|
||
| 脚本 | 作用 |
|
||
|:--|:--|
|
||
| `13_recall_map.py` | state.json + spec.json → `video_id→卡片` 映射(195 视频/585 卡) |
|
||
| `13_recall_parse.py` | 从落盘原文只提「场次画面+台词」 |
|
||
| `13_recall_bench.py` | 6 策略 × 样本跑 /faq/search,`--dry` 只打印 |
|
||
| `13_recall_summary.py` | 汇总 R@1/R@3/均分 |
|
||
缓存目录 `recall_cache/`(map.json + 5 条 raw + recall_result.json)。
|
||
|
||
**踩坑补充进 RUNBOOK**:MCP `short_video_detail` 返回 5万~20万字符/条,**未超限不落盘**(只进上下文)→ 必须逐条拉、拉完立即落 `recall_cache/raw_{id}.txt`。
|
||
|
||
**仍未决**(留给用户):① 入库问法是否统一(戏剧类抽象问法 vs 感官类具体事件问法);② 感官类扩测(62 条仅测 4);③ 75 条编号前缀是否保留。
|
||
|
||
---
|
||
|
||
## 17:10|任务1-3 全量完成:5 形态定论 + 感官类 100% + 编号前缀评估
|
||
|
||
**背景**:承接 15:05 的三项未决,用户给出「1、各类别不相同吧 2、继续测试 3、先评估」。
|
||
|
||
### 任务 1「各类别不相同吧」—— 结论 C 被推翻并深化
|
||
用户判断正确:原「戏剧类 vs 感官类」**两类分叉**表述过粗。新建 `14_form_audit.py` 精确统计全库 631 条:
|
||
|
||
| 形态 | 条数 | 占比 |
|
||
|:--|--:|--:|
|
||
| F3 需求壳句 `有没有「…」?` | 318 | 50.4% |
|
||
| F4 白描事件陈述(无问壳) | 202 | 32.0% |
|
||
| F1 编号+呈现后缀 | 75 | 11.9% |
|
||
| F2 事件+复用后缀 | 30 | 4.8% |
|
||
| F5 结论判据式 | 6 | 1.0% |
|
||
|
||
**关键发现**:形态与标签**不一一对应**(`视觉冲击` 67 条含 4 种形态);真实决定因素 = **批次模板时代**(F1=后期补采批次,F3/F4=早期批次)。→ 75 条编号前缀**只出现在 F1 型**(原猜"集中在感官类"被推翻)。
|
||
|
||
### 任务 2「继续测试」—— 感官类全量扩测
|
||
`15_sensory_recall.py` 对 6 个感官标签全量 101 卡测 3 种查询形态:
|
||
|
||
| 查询 | n | R@1 | 均分 |
|
||
|:--|--:|:--:|--:|
|
||
| 仅事件名 | 97 | **97** | 0.7739 |
|
||
| +意图句 | 97 | **97** | 0.7727 |
|
||
| +结构词 | 97 | **97** | 0.7809 |
|
||
|
||
→ **R@1 = 100%,且加词无增益** —— 与戏剧类(补词后间隔 ×2.7)**结论相反**。原因:F1 型问法本身即完整事件描述,查询信息量已饱和。
|
||
→ 4 条无效查询卡(`找一条低成本做出硬菜的极致美食事件素材` 型,无「」事件名)已剔除,属**入库模板缺陷非检索问题**。
|
||
|
||
**期间修 3 个脚本 bug**:① 壳句污染事件名 → 加 `extract_name()` 剥壳(对 97 条壳句全部成功,证明模板规则化);② `if not name:` 后漏 `continue` → `NoneType + str` TypeError;③ 短事件名判定阈值 `len<8`。
|
||
|
||
### 任务 3「先评估」—— 75 条编号前缀
|
||
**结论:建议保留,不必清理。** 五判据:
|
||
1. 纯语义查询(不含编号)仍 R@1 命中带前缀卡(0.7471)→ **未稀释语义**
|
||
2. 单搜纯编号 `25106`/`21728` → **返回空** → **无同源污染**
|
||
3. 带前缀均分 0.7984 vs 不带 0.7650 → **无负作用**(差值来自批次)
|
||
4. 编号在 sq 与 answers 双写 → 冗余但不影响召回
|
||
5. ⚠️ **唯一实际影响 = 展示层**:列表前缀占前 6 字符
|
||
|
||
→ 建议「**保留入库 + UI 展示时前端剥离**」,而非删库(删库丧失溯源,且需 75 次 DELETE+重导,有召回波动风险)。
|
||
|
||
### 落盘
|
||
- RUNBOOK §2.4:方法论头改样本规模、**③ 结论 C 整体重写为 5 形态版**(含③-b 感官扩测 / ③-c 无效卡)、④ 附带事实补编号评估结论、⑤ 工具表 4→6 个(补 `14`/`15`)。
|
||
- `素材卡召回能力实测报告_V1.0_20260928.md`:第四节整体重写、五节更新、六节待办勾选、**新增第八节编号前缀专项评估**、七节总结重写。
|
||
|
||
---
|
||
|
||
## 自动化补采(每小时3批)· 第 7 轮 · 2026-09-28 15:3x · 【暂存模式】(3 批未入库)
|
||
|
||
> 处于全量卡片回炉窗口期,本 3 批**只产 pending_import,未入库**;禁跑 `2_import_batch.py` / `3_done_batch.py`、禁改 `state.json`。
|
||
|
||
| 批次 | 取批标签 | ids | 出卡 | 主标签分布 | 状态 |
|
||
|:--:|:--|:--|:--:|:--|:--|
|
||
| 43 | 反差 | 30189 / 23275 / 28562 / 35299 / 30376 | 15 | 反差 4 / 品质对比 3 / 细节专业 3 / 价值观冲击 3 / 自嘲反差 1 / 视觉冲击 1 | 暂存待导入 |
|
||
| 44 | 氛围沉浸 | 25166 / 27090 / 29927 / 29652 / 30240 | 15 | 氛围沉浸 4 / 反差 5 / 价值观冲击 2 / 细节专业 1 / 视觉冲击 1 / 自嘲反差 1 / 反常识 1 | 暂存待导入 |
|
||
| 45 | 感官沉浸 | 30466 / 25040 / 28345 / 37148 / 28743 | 15 | 感官沉浸 7 / 氛围沉浸 2 / 反差 2 / 视觉冲击 1 / 品质对比 1 / 反常识 1 / 细节专业 1 | 暂存待导入 |
|
||
|
||
**产出**:`tools/weknora-ingest/batches/pending_import/batch_004{3,4,5}.{md,spec.json,meta.json}`,合计 **45 张卡**。三批 mismatch 全为 0。
|
||
**预期目标标签增量**:反差 +4(已达标仍增)、氛围沉浸 +4、**感官沉浸 +7**(本轮最大增量)。
|
||
|
||
**关键结论**:
|
||
1. ⭐ 临时 py「md `###` 逐条比对 spec.card」连续 **27 批一次通过**,写法稳定。
|
||
2. ⭐ **感官沉浸 / 氛围沉浸 候选池仍是瓶颈**:感官候选 14(取 5 余 9)、氛围候选 23(取 5 余 18);`食材极致 0` / `预见式服务 3` 已耗尽 → **下轮先跑 `6_target_candidates.py` 重建候选池**。
|
||
3. ⭐ 本批新判据:感官沉浸新增 **听觉规格化型 / 微距痛觉型 / 分屏实证型**;氛围沉浸新增 **热介质包裹型 / 糊屏触觉型**(详见 RUNBOOK 批次 43–45 经验条)。
|
||
4. ⛔ **回炉完成后统一走 `13_import_pending.py --dry|--run|--sync` 导入**;`9_polish_plan.py` 已禁跑(会让 526 id 计划漂移)。
|
||
5. 库内读数未变:仍 **631 条 / 42 批**(`5_tag_coverage.py` 只读 `batches/`,不含 pending_import)。
|
||
|
||
---
|
||
|
||
## 补充:批 43–45 v3 双任务补做 + 校验器三处修复(2026-09-28 晚)
|
||
|
||
**背景**:批 43/44/45 是旧口径(薄壳句 std)产的暂存批,回炉窗口期内补做 v3 双任务(卡片吸引力优先 + 问法增厚)。
|
||
|
||
**结果**:批 43 → 15/0,问法 **+19 字**;批 44 → 15/0,**+11 字**;批 45 → 15/0,**+59 字**。sim/neg 条数不一致均 0,锁定字段改动 0,**实际编造 0 处**。
|
||
|
||
**⭐ 批 45 暴露并修掉 `10_polish_batch.py` 三个校验器缺陷(治本,影响全部后续批次)**:
|
||
1. **std 前缀校验过严**:批 45 原文 std **无前缀**,载荷示例提示了前缀写法 → 模型学样加前缀 → 原逻辑直接退回 15 张。**改为 autofix「原文无前缀则自动剥离」**(不再退回),前缀状态一律以原文为准。`validate()` 返回值扩为 **5 元组**(新增 `autofix` 列表),两处调用点同步更新。
|
||
2. **编造粗筛引号字符类不全**:原文弯引号 `“”` vs 问法直引号 `""` → 正则只匹配直引号 → **11 张系统性误报**。改为同时匹配 `" ' 「 『 “ ”`。
|
||
3. **编造粗筛对「引语节选」误报**:模型略缩引语(删语气助词「哈/呢/啊」与逗号)→ 严格子串失败 → 再误报 5 张。改为**归一化比对**(剥引号 + 去标点空白 + 去语气助词 `_norm`)。
|
||
- 收敛:**11 → 5 → 1 张**,末 1 张经人工核实仍是误报(问法省略了引语中间一句)。**残留局限**:中间省略型节选 + 形容词类编造,机器仍判不了 → 须人工抽检。
|
||
- **PROMPT_polish_v3.md 同步**:标准问前缀指引改为显式「**原文无前缀的绝对不要加**」(此前示例写得像必须加,是误加诱因)。
|
||
|
||
**批 45 数据**:`30466`/`25040`/`28345`/`37148`/`28743` → 15 卡,`std 34.8 → 93.8 字`(+59),std 从薄壳句增厚为完整事件描述。
|
||
**已清理**:`out/_pb43/44/45.txt`、`out/_p1~p16.txt`、`out/_batch7_orig.txt`、`out/_raw15.txt`、`out/_p14.err/_p16.err`、`out/_pb43_rewrite.json`、`out/_pb44.err`、`_fix_json.py`、`_round3_stat.py`、`_exp_parse.py`、`_gen_spec34.py`(保留 `out/2_import.txt`)。
|
||
|
||
---
|
||
|
||
## 17:40|技能 WeKnora 调用方式优化(基于召回实测)
|
||
|
||
**起因**:用户「短视频脚本创作技能 调用 weknora 知识库的方式需要优化,参考素材库召回测试看看有什么好的方案」。
|
||
|
||
### 实测发现的真问题(3 处,其中 2 处是长期静默失效)
|
||
1. ⛔⛔ **数量参数名是 `match_count`,不是 `top_k`**:`top_k/limit/size/count/k/topK=3` → **一律静默返回 10 条**;`match_count=3` → 真的 3 条。**技能文档写对了,但项目所有 Python 脚本写错**(`13_recall_bench.py`/`15_sensory_recall.py`/`16_question_fair.py`/`15_question_experiment.py`)→ 上下文成本是设计值 3.3 倍。**已修 2 个活跃脚本**。
|
||
2. ⛔ **`vector_threshold` 省略 ≠ 0.5**:省略时正常业务 query **直接返回 0 条**。「必须显式传」这条规范是对的,补了依据。
|
||
3. ⚠️ **问法定位偏差**:原「镜像式五要素问法」(`找一条 {落差对象} {打破方式} {锚点} 的 {段落功能} 型事件素材`)与库内 82.4% 的 F3/F4 型卡片**语域不同构**。
|
||
|
||
### 优化方案(已落地)
|
||
- **问法主体改为「情境化事件陈述」**:`{谁} 在 {什么处境} 下 {做了什么具体动作},结果 {发生了什么}` —— 与卡片正文(描述画面里发生了什么)语域同构。
|
||
- 原「结构词/画面词加成」降为**补充写法**(仅明确结构诉求时追加)。
|
||
- **新增认知修正**:分数与间隔**不可判优**(top1~top10 首尾仅差 0.047,第1-2名间隔常 0.00~0.03)→ 必须**人工复筛落差结构同构性**;阈值只做事后过滤(0.1~0.5 命中数相同,≥0.65 才截断),**不能提升质量**。
|
||
- 数据勘误:库存 450+→**631**;赛道 77.5%→**72.6%**;感官向 12 标签**均已补齐**(难度极限/食材极致 0→2/9)。
|
||
|
||
### 改动文件(技能侧)
|
||
`references/接口调用/WeKnora_极致事件检索.md`(§二参数表 / §三问法整体重写 / §六 / §七新增 7.1 机制实测 + 7.2 限制)、`references/创作流程/7_生成短视频大纲.md`(调用要点 5 条)、`references/索引_知识素材库.md`、`SKILL.md`、`references-add/变更日志.md`(追加 09-28 条)。
|
||
|
||
### 验证
|
||
新问法实测 `match_count=3` 生效;「服务预见」案例精准命中同语义簇 3 卡(提前备茶/提前送咖啡/提前备方案)。
|
||
|
||
### 待用户决策(未动)
|
||
F3/F4 型占 82.4%(早期批次),**是否批量回炉改造成 F1 型模板**——改造后查询无需补词即 100% 召回,但需走 §2.5 回炉链路且有召回波动风险。
|
||
|
||
### ⚠️ 引擎侧遗留
|
||
`.dsh` 只读副本、`Lite1.0` 需按流程评估是否同步(**未动,待用户授权**)。
|
||
|
||
---
|
||
|
||
## 18:00|⚠️ 问法改写有效性验证 —— 结论推翻,已如实修正
|
||
|
||
**用户要求**:「先确定改动是否有效」。做了双法验证,**结果不支持「问法改写更优」**。
|
||
|
||
### 验证 1 · 需求法(`18_question_validate.py`)—— ❌ 方法本身有缺陷
|
||
用 5 个编导真实节点,新旧问法各取 top3:
|
||
| 节点 | 旧命中 | 新命中 |
|
||
|:--|--:|--:|
|
||
| 顾客刁难后反杀 | 0 | 0 |
|
||
| 服务预见 | 1 | 1 |
|
||
| 品质被质疑验货 | 0 | 0 |
|
||
| 开场身份反差 | 0 | 0 |
|
||
| 食材难度极限 | 0 | 1 |
|
||
| **合计** | **1** | **2** |
|
||
→ **3/5 节点两法都 0 命中**。说明此法测的是「**库内有没有这个素材**」,混杂了变量,**不能用来验证问法**。
|
||
|
||
### 验证 2 · 反查法(`18b_question_validate_r.py`)—— ✅ 唯一能隔离变量的方法
|
||
取库内**确实存在**的 35 卡(12 标签各 3 条)→ 两种问法表达同一事件 → 看能否召回自身:
|
||
| | 旧问法 | 新问法 |
|
||
|:--|--:|--:|
|
||
| R@1 | **34/35(97.1%)** | **35/35(100%)** |
|
||
| R@3 | 35/35 | 35/35 |
|
||
→ **差异在噪声范围内**。事件信息足够时,两种写法都能召回。
|
||
|
||
### 📌 修正后的定性(已写入技能文档)
|
||
| 改动 | 有效性 | 证据 |
|
||
|:--|:--|:--|
|
||
| ✅ **参数纠正**(`match_count` / 显式阈值) | **确定有效** | 同 query 返回体积 **32122→10087 字符,省 69%**;省略阈值→0 条 |
|
||
| ⚠️ **问法改写** | **收益有限** | 反查法 97.1% vs 100%,噪声级。价值 = **信息量保障**(防空心 query),**不是提升召回率** |
|
||
|
||
⛔ **已明令禁止宣称**「新问法把召回率从 97% 提到 100%」——那是噪声,且反查法自然上限本就 100%。
|
||
|
||
### 🔴 最关键的发现
|
||
**真实瓶颈 = 素材覆盖,不是检索技术**。需求法暴露 3/5 真实节点零命中 → **问法再优化也召不回不存在的素材**。
|
||
|
||
### 方法论沉淀(已写入 RUNBOOK §2.4 ⑤-b)
|
||
- ⛔ 不用「凭空需求」测检索优化(混杂「库内有无素材」变量 → 得错误结论)
|
||
- ✅ 必须用「反查法」(拿库内确有条目反查),才能隔离单一变量
|
||
|
||
### 落盘
|
||
- `WeKnora_极致事件检索.md`:§三 补「勿高估问法收益」警示框、示例对照改为「写法A vs 写法B」、§7.1 重构为 **A 确定性收益(参数)/ B 噪声级差异(问法)/ C 认知修正** 三级、§7.2 补「真实瓶颈=素材覆盖」。
|
||
- `7_生成短视频大纲.md`:问法要点补实测边界。
|
||
- `RUNBOOK.md` §2.4 ⑤ 工具表 6→8 个(补 `18_`/`18b_`)+ 新增 **⑤-b 问法改写有效性验证结论**。
|
||
- `变更日志.md`:初版条目已合并入「已验证」条目,避免重复。
|
||
- `SKILL.md` frontmatter `last_change` 重写为已验证版。
|
||
|
||
### 暂存批 47(氛围沉浸 · v3 双任务)已收尾
|
||
- 取批 `1_next_batch.py --target 氛围沉浸 5`(候选池 23)→ ids `20611/20385/35345/34032/28468`。
|
||
- 15 张卡(主标签:氛围沉浸 13 / 反差 1 / 品质对比 1),产物 `batches/pending_import/batch_0047.{md,spec.json,meta.json}`,**未入库**(回炉窗口期)。
|
||
- v3 校验回路:`build-pending 47` → doubao-seed-2-1-pro 喂 `PROMPT_polish_v3.md`+载荷 → 存 `out/polish_result/pending_0047.json` → `apply-pending 47` = **接受 15/退回 0,问法平均 +25 字**(源 std 50–55 字,薄壳句,增厚空间充足)。编造粗筛告警 0。人抽 3 卡(20611-1 / 35345-3 / 28468-3)通过:锁定字段不动、台词原话保留、数字零丢失。
|
||
- ⭐ 与批 46(源问法已 133–210 字 → 平均 −1 字)构成 v3 增厚效果正反向对照:**增厚只对薄壳句源问法有正向空间**。
|
||
- 已追加 RUNBOOK 批次 47 记录。下一步:批 48(感官沉浸,候选池 14)。
|
||
|
||
---
|
||
|
||
## 18:30|🔴 端到端实测:工作台 AI 创作里素材召回**根本没被调用**(S7 被合法跳过)
|
||
|
||
**起因**:用户「就是用工作台脚本生成的过程,看调用素材召回的效果」。→ 从工作台真实跑一遍创作,追踪执行记录。
|
||
|
||
### 方法(新建 `tools/weknora-ingest/20_trace_recall.py`)
|
||
- ⭐ **会话记录存储位置(本次摸清)**:`<WORKBUDDY_CONFIG_DIR>/projects/<cwd转义名>/<sessionId>.jsonl`,
|
||
即 `D:/.workbuddy/projects/d-AI技能-mcn-short-video-project-短视频脚本创作-V1.0-mcn-work-shop/*.jsonl`。
|
||
每行一个事件:`session-meta` / `message` / `function_call` / `function_call_result` / `file-history-snapshot`。
|
||
⚠️ 消息正文**不在** `workbuddy.db`(该库只有 sessions/automations 元数据)→ 必须读 JSONL。
|
||
- 提交任务:POST `/api/run`(`name='测试·俊希买鱼脚本(素材召回验证)'`,account=俊希,Vlog 60s,需求含"指出鱼不新鲜")。
|
||
|
||
### ⭐ 结果:**S1-S11 全跑完,`hybrid_search` 调用 0 次**
|
||
```
|
||
工具调用次数:Bash 19 / Read 13 / TaskUpdate 7 / TaskCreate 4 / Write 2 / Edit 2 / Skill 1 / present_files 1
|
||
[!] 未发现任何素材召回(hybrid_search)调用
|
||
```
|
||
- 模型**读了** `7_生成短视频大纲.md`(S7 规范,第 55 行),也朗读了"S6 框架 → 大纲"(第 80 行),
|
||
**然后第 87 行直接 Write 脚本正文** —— 中间零检索。
|
||
- 产物 `Desktop/MCNSkillProjects/俊希/脚本06/09_脚本正文.md`:脚本质量本身 OK(人设/五字段/口播自然),
|
||
但**全程无任何素材库注入**,完全从零推断。
|
||
|
||
### 🔴 根因:规范给了一个几乎必然成立的「跳过条件」
|
||
`7_生成短视频大纲.md` §节点状态表:
|
||
```
|
||
| 已能写出具体桥段 | **跳过检索**(不调用) | ← 模型读到这条,判断"我能写" → 合法跳过
|
||
| 写不出桥段 | 按下述契约检索 |
|
||
```
|
||
- **任何能写脚本的模型,看到具体需求都会认为"我能写出来"** → S7 永不被触发。
|
||
- 这不是模型偷懒,而是**规范设计的漏洞**:跳过条件是自评的、开放的,无外部可验证判据。
|
||
|
||
### 对照:MCP 通道本身完全正常
|
||
本机实测 `mcp__weknora__hybrid_search(kb_id='MCN极致事件素材库', match_count=3, vector_threshold=0.5)`
|
||
→ **精确返回 3 条**,参数名与阈值均正确生效。→ **问题不在检索能力,在"根本没发起检索"**。
|
||
|
||
### 结论(本轮定论)
|
||
⭐⭐ **在优化检索参数/问法之前,先要解决"检索压根不被调用"** —— 这是比 §2.4 所有结论更上游的问题。
|
||
- 已确认有效:参数(match_count/阈值)
|
||
- 收益有限:问法改写
|
||
- **从未生效:S7 本身**(本次新发现,优先级最高)
|
||
|
||
### 待决策
|
||
把「跳过检索」条件从**自评**改为**外部判据**,候选方向:
|
||
① 删除跳过条款(默认必检,但会增上下文成本);② 改为"涉及具体桥段且需细节填充时必须检索";
|
||
③ 改为按节点数强制下限(如 L2 节点 ≥1 次);④ 保留跳过但要求**在产出中标注"未检索"**以便审计。
|
||
|
||
### 落盘
|
||
- 新建 `tools/weknora-ingest/20_trace_recall.py`(可复用:`--all` 扫全部会话汇总召回调用)。
|
||
- 本条记忆。
|
||
|
||
### ⚠️ 遗留
|
||
- 验证用测试任务 `automation-1790585785553`(会话 `be7cb9a4`)+ 产出 `脚本06` 未清理。
|
||
- 工作台仍**没有**「素材召回测试」页面(用户已澄清:要的是"创作过程里看召回效果",非独立页面)。
|
||
|
||
## 17:2x|✅ 纯 UI 路径复现确认:S7 素材召回 4 会话累计 0 次(证据升级)
|
||
|
||
### 为什么再验一次
|
||
上一轮是**命令行** `POST /api/run` 触发。用户要求「用浏览器打开工作台 用实际案例来跑」
|
||
(并明确「不要去改别人的页面」「新建一个标签页就可以了」「重新开个浏览器把」)→
|
||
本轮改从**工作台浏览器 UI 真实走完完整创作链路**,排除「入口差异导致行为差异」的可能。
|
||
|
||
### 浏览器环境(本轮定版配方)
|
||
独立 Chrome 实例(**绝不动用户自己的 Chrome**):
|
||
```
|
||
chrome --remote-debugging-port=9444 --user-data-dir="D:/AI技能/mcn-short-video/.tmp-chrome-wb" \
|
||
--no-proxy-server --proxy-bypass-list="*" --new-window "http://127.0.0.1:8900/"
|
||
```
|
||
- 必须 `run_in_background: true`(`nohup &` 起的实例会被沙箱回收)。
|
||
- 必须 `--no-proxy-server`:用户 Chrome 走全局 Privoxy,`127.0.0.1:8900` 会被转发 → `500 Internal Privoxy Error`。
|
||
- browser-harness 调用前缀:`env -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY -u http_proxy -u https_proxy -u all_proxy -u NO_PROXY BU_CDP_URL=http://127.0.0.1:9444`
|
||
(helper 函数名 = `goto_url()` / `js()` / `capture_screenshot()`,**不是** `nav()` / `eval_js()` / `shot()`)
|
||
|
||
### UI 链路(8 步全跑通)
|
||
账号列表 → 俊希行「AI创作」→ 填需求「俊希菜市场指出鱼不新鲜」→ 发送 → AI 引导对话 →
|
||
选「剧情」→ 需求聊至 **8/8 已填** → 点 `#reqCreate` → **确认框** → 点 `button[data-ok]` → 落库。
|
||
|
||
⚠️ **两段式提交坑(本轮新发现)**:`#reqCreate` 只弹确认框(`data-pages.js:752`),
|
||
真正提交在确认框的 `button[data-ok]`(:775)→ 内部先 `POST /api/dsh/topic-save` 落选题,
|
||
再 `executeTask({prompt, skills:['短视频工作台']})`。**只点第一段 → 弹窗关不掉、任务不落库**。
|
||
|
||
### 结果
|
||
- 落库任务 `automation-1790587091698`(「创作指令」,17:18:11,skills=`["短视频工作台"]`)
|
||
- 执行完成(`ACCEPTED`),会话 `21e7492c`(976KB / 118 行)
|
||
```
|
||
工具调用:Bash 23 / Read 10 / TaskUpdate 6 / TaskCreate 4 / Skill 1 / Grep 1 / Write 1 / present_files 1
|
||
[!] 未发现任何素材召回(hybrid_search)调用
|
||
```
|
||
**⭐ 决定性证据 —— 模型自述原话(JSONL L90)**:
|
||
> "Now writing the S9 script (**中间步骤 S1-S8 已在上下文按序完成,自动模式后台静默**)"
|
||
|
||
→ **S1-S8 全部「脑内完成」,零工具落地**。不是「S7 单独被跳过」,是**整段中间步骤被跳过**。
|
||
|
||
### 全量汇总(`20_trace_recall.py --all`)
|
||
```
|
||
共 4 个会话;其中 0 个会话调用了素材召回;累计召回 0 次
|
||
21e7492c 工具 47 | 召回 0 | weknora提及 2 ← 本轮 UI 路径
|
||
be7cb9a4 工具 49 | 召回 0 | weknora提及 3 ← 上轮命令行路径
|
||
87936943 工具 69 | 召回 0 | weknora提及 0
|
||
c522f13d 工具 26 | 召回 0 | weknora提及 0
|
||
```
|
||
→ **191 次工具调用,0 次素材召回**;命令行与 UI **行为一致**,排除入口差异。
|
||
→ 「weknora提及」= 模型**读到**了 weknora 规范文本,但**未转化为调用**。
|
||
|
||
### 新增待决策:工作台侧也要改(E 方案)
|
||
`SKILL_HINT_CREATE` / `buildCreatePrompt()`(`data-pages.js:11 / :787`)**完全不含**
|
||
「WeKnora / 素材 / 检索 / 召回 / 极致事件 / hybrid_search」六个关键词(已验证全为 False)
|
||
→ 从工作台入口提交的任务,**prompt 里根本没有「要召回素材」这件事**。
|
||
→ 建议组合:**A(技能侧删自评跳过条款)+ E(工作台 prompt 显式点名 S7 素材召回)**。
|
||
→ 四个候选(A 删除跳过 / B 收紧为必检 / C 节点数下限 / D 保留但标注未检索)**单独都不够**。
|
||
|
||
### 落盘
|
||
- RUNBOOK §2.6 新增小节 **⑤ 纯 UI 路径复现**(含 8 步表 + 决定性证据 + 全量汇总 + 两段式提交坑),
|
||
原「待决策」改为 ⑥ 并补 E 方案。
|
||
- 产物:桌面 `MCNSkill项目/俊希/脚本07/09_脚本正文.md`(7359B,《30块!小学生踮脚指认隔夜鱼,把鱼摊老板说到哑巴口无言》),
|
||
已入库 `rewrite_log id=39`,关联 `topic_log id=1` 回填 `rewrite_id=39 / status=done`。
|
||
→ **脚本质量本身正常,但全程无素材库注入痕迹**(全从零推断)。
|
||
|
||
### ⚠️ 遗留(累加)
|
||
- 验证产物:`脚本06`(16:58)+ `脚本07`(17:20)+ 任务 `automation-1790585785553` / `automation-1790587091698` 未清理。
|
||
- Chrome 9444 实例 + `.tmp-chrome-wb/` 用户数据目录未清理。
|
||
|
||
## 17:35|⚠️ 口径纠偏(用户澄清):素材召回是「按需被取」,不是「流程必检」
|
||
|
||
### 用户原话
|
||
> 「之前确定的是流程不召回素材,是知识库根据需要去召回」
|
||
|
||
### 纠偏内容
|
||
我上一轮的结论「必须改(删除跳过条款 → 默认必检)」**方向错了**。
|
||
正确口径:**架构 = 流程不主动召回素材,知识库按需被取** —— 这是**设计意图,不该动**。
|
||
|
||
→ **重新判定**:`hybrid_search` 调用 0 次 **≠ 一定是 bug**。判据只有两条:
|
||
| 路径 | 判定 |
|
||
|:--|:--|
|
||
| 模型**真能写出桥段** → 跳过检索 | ✅ 符合设计,无需改 |
|
||
| 模型**写不出桥段**却仍不检索 | ❌ 才是 bug |
|
||
|
||
### 补验:这轮「跳过」到底合不合法(落地质量反证)
|
||
读 `脚本07/09_脚本正文.md`(90s 剧情),三个 L1 节点实际落地:
|
||
|
||
| L1 节点 | 实际桥段 | 含机制样本特征? |
|
||
|:--|:--|:--|
|
||
| 钩子型 0-8s | 小学生踮脚扒鱼缸、按鱼背验货 | ❌ 通用动作 |
|
||
| 留人型 26-46s | 看鳃→看眼→看尾,三指数 | ❌ 通用常识(网上随处可查) |
|
||
| 转粉型 62-80s | 老板服软送葱、"做人要实在" | ❌ 通用收口 |
|
||
|
||
**→ 三个 L1 全部停在"通用桥段",无一条有库内极致事件卡的"期待→打破"闭环强度。**
|
||
|
||
⚠️ **但这个反证本身也有漏洞**:这些桥段**语义上确实"能写出来"**
|
||
→ 模型判"跳过"在**规则字面下并不违规**。核心矛盾浮出:
|
||
> **规则只要求"写得出",不要求"写得够狠"** → 只要写出"不难看"的桥段就满足跳过条件。
|
||
> **落点从"要不要检索"变成"极致标准由谁把关"。**
|
||
|
||
### 修正后的待决策(不改架构)
|
||
真正要解的问题 = **"按需"的判据太软 → 模型永远判"不用查"(触发率 ≈ 0)**。
|
||
| # | 方向 | 推荐度 |
|
||
|:--:|:--|:--|
|
||
| **C1** ⭐ | **把自评改成外部可验证判据**:`已能写出**且**属"通用可替代"→跳过` / `写不出 **或** 属"账号专属·专业手法"→必须检索` | **首选** |
|
||
| C2 | 触发条件改为「不确定时先检」(默认翻转) | 可叠加 |
|
||
| C3 | 产出标注"素材来源:检索 N 条 / 未启用" | 仅可观测 |
|
||
| C4 | 工作台 `SKILL_HINT_CREATE` 补一句"按 S7 契约按需调用素材检索" | 辅助 |
|
||
| ~~A/B~~ | ~~删除跳过条款 / 改为必检~~ | ⛔ **作废** |
|
||
|
||
⭐ C1 的关键:**"通用 vs 专属"是外部可验证的**(看一眼桥段是否依赖本账号独有资源),
|
||
而 **"我能不能写出来"模型恒答"能"**。
|
||
|
||
### 落盘
|
||
- RUNBOOK §2.6 重写:① 加**口径纠偏块**(置顶)② ①②③ 措辞从"bug/漏洞"改为"设计意图 + 触发率"
|
||
③ 新增 **⑤ 落地质量反证** ④ 原「待决策」重写为 **⑦** 并**明确作废 A/B**,改推 C1
|
||
- 长期记忆 §4.3 条目**重写**(原"最上游问题/必须改"口径 → 修正为"触发率 + 判据太软")
|
||
- 教训(三层沉淀):
|
||
- **治本层**:待定(C1 需用户确认后才改技能文件,未动 `7_生成短视频大纲.md`)
|
||
- **失误层**:待补 `失误与规避记录.md` —— 「**数到 0 次调用就直接判定为 bug、跳过了"设计意图核对"这一步**」
|
||
- **记忆层**:本条 + MEMORY.md 修正
|
||
|
||
### 未做(等用户决策)
|
||
- `7_生成短视频大纲.md` 判据改写(C1)—— **未动**,等确认
|
||
- `.dsh` / `Lite1.0` 同步 —— 未动
|
||
|
||
## 17:40|⭐ 用户补充关键口径:素材库有**两个作用位**(补全全局理解)
|
||
|
||
### 用户原话
|
||
> 「素材库在流程中应该有两个作用,① 给事件填充素材 ② 给事件润色素材」
|
||
|
||
### 核实结果:两个作用位都**有规范**,但是**同一条链的上下游**
|
||
| # | 作用位 | 规范位置 |
|
||
|:--:|:--|:--|
|
||
| ① | 给事件**填空**(写不出桥段 → 取机制样本) | `7_生成短视频大纲.md` §极致触点素材检索(布位定完 → 事件展开前;按需触发) |
|
||
| ② | 给台词**润色**(治「台词概括化」→ 取原话/微反应/意外) | `9_生成短视频脚本.md` **L12**(输入:`{material_cards}`)+ **L101-113**(§3.1「台词毛边三档参考」) |
|
||
|
||
### ⭐ 关键发现:② 是 ① 的下游,**断链**
|
||
```
|
||
S7 作用位① 检索触发率 ≈ 0
|
||
↓ 输出 {material_cards}
|
||
S9 作用位② 输入恒为空 → 三档永远拿不到样本 → 退化为"凭感觉写台词"
|
||
```
|
||
- S9 L12 原文:`步骤7输出(可选):**素材注入 {material_cards}** —— S7「极致触点素材检索」复筛保留的卡片…`
|
||
→ **②的输入明确写着"来源:S7 检索",而 S7 从不检索**。
|
||
- ⚠️ 另一处细节:L12 标了「**(可选)**」→ 即使 ① 修好,若"可选"不改,②仍可能被跳过。
|
||
**这是独立于 ① 的第二处待决策点**。
|
||
|
||
### 落地印证(本轮 `脚本07` 台词三档对照)
|
||
| S9 实际台词 | 毛边三档应有 | 症状 |
|
||
|:--|:--|:--|
|
||
| 「小同学,早上六点刚从码头拉回来的,条条活蹦乱跳」 | **原话**(含语气词/方言/口误/半截话) | 书面·完整·无毛边 |
|
||
| 「脸上的笑僵了半下」 | **微反应**(具体身体部位+幅度) | 心理描写式 |
|
||
| 「我妈没舍得倒,自己吃了」 | **意外**(计划外打断) | 顺拐推进 |
|
||
|
||
→ 台词全部**整洁·书面·顺拐** = "无素材样本可参考"典型症状,与 ① 未触发**互相印证**。
|
||
|
||
### 待决策补全(新增作用位②选项)
|
||
| # | 方向 | 推荐 |
|
||
|:--:|:--|:--|
|
||
| **D1** ⭐ | **先把①修好,②自动恢复**(不改 S9 任何文字) | **首选**(改动最小、链路最顺) |
|
||
| D2 | 把 S9 L12 的「(可选)」改为**必需** | 仅在用户认为润色"必须有"时才做 |
|
||
| D3 | 三档加自检项(台词含 ≥N 处毛边) | 仅可观测 |
|
||
|
||
⚠️ **D1/D2 需用户取舍**:架构说"按需",D2 把润色定"必需",两者语义张力 →
|
||
**润色是"有素材就用、没有就算"(可选)还是"必须想办法要有"(必需)?**
|
||
|
||
### 落盘
|
||
- RUNBOOK §2.6 新增 **⑦ 素材库的两个作用位与「断链」**(含链路图 + 断链机制表 + 台词三档对照印证),
|
||
原「待决策」改 **⑧** 并补 D1/D2/D3 + D1/D2 取舍提醒。
|
||
- 长期记忆 §4.3 条目补入「两个作用位」段。
|
||
|
||
### 全链路质检(用户指令:检查自动任务与补跑批次的过程与结果)
|
||
- **结论:过程正确、结果符合预期**。
|
||
- 回炉:**批 1–30 全部完成,各 16 接受 / 0 退回**(480 卡);暂存批 43–47 回炉完成(各 15/0)。
|
||
累计 std 改写 **476 张**、净增字 **15130**。批 21 std 0 改动属正常(原文已够好,仅增厚 sim)。
|
||
- 自动任务(补采暂存):batch **43–48**,全 `mode=pending_import`,只写 `pending_import/`、
|
||
**未改 state.json**(mtime 停在 14:25,产物 15:31–17:02)→ 暂存模式合规 ✅。
|
||
- ⚠️ **发现 P1:批 43 与批 46 取材 ids 完全相同**(30189/23275/28562/35299/30376)。
|
||
**非复制**——同一批视频被拆两遍、各出 15 张不同桥段卡,且两批标签体系不一致
|
||
→ 入库后重复度偏高。根因 = 46 生成时 43 的 meta 未落地,暂存防重未生效。
|
||
建议入库前桥段级去重。
|
||
- ⭐ **编造告警 90 条 → 真实编造 0 处**(机器复筛 100% 可回溯本卡原文/问法)。
|
||
根因确认 = **第⑤类误报**(std 摘要短语进引号),已在 `10_polish_batch.py` docstring 116–118 行登记,
|
||
docstring 点名例子与批 19 实际告警一致。告警自批 17 起台阶上升 = v3 增厚副作用,非质量下降。
|
||
- ⚠️ 批 30 模型返回为 `polish` 嵌套结构,与脚本期望的 9 键平铺不符 → 本轮手工扁平化通过。
|
||
**建议 apply 内加自动扁平化兜底**(防后续批次再踩)。
|
||
- 其他:补采卡 sim/neg 条数不统一(2/2、3/2、3/3、6/2 混杂)→ 建议补采侧补条数规范。
|
||
- 产物:`out/audit_report_20260928.html`、`out/_audit_batches.json`。
|
||
|
||
---
|
||
|
||
## 2026-09-28 18:5x · 自动化补采批次 48–49(暂存模式 · 未入库)
|
||
|
||
- **批 48 收尾**(感官沉浸定向批,ids `17785,21927,28533,26795,26974`):发现 apply-pending 未完成 → 补跑 build+apply,**接受 15/退回 0 | 问法平均 +27 字**,md/spec 已回写。
|
||
- **批 49**(品质对比定向批,ids `23859,19397,20571,33216,22306`):15 卡,主标签 **15/15 落品质对比**。
|
||
- 产物:`batches/pending_import/batch_0049.{md,spec.json,meta.json}`(**暂存待导入**);ids 落 `B49_IDS.txt`。
|
||
- v3 回路:**接受 15/退回 0 | 问法改写 15 张 | 问法平均 +45 字**(3 批最大增幅)。
|
||
- 人抽 3 卡 std + 2 卡 sim 逐句溯源 → 编造 0 处;数字零丢失。
|
||
- ⚠️ **新踩坑(已记 RUNBOOK)**:卡片首字段误写 `**内容**`(漏「极致」)→ build-pending 报「md 卡片数(13) ≠ spec(15)」。
|
||
排查口诀:差值=2 且非围栏问题时,先 `grep '^- \*\*内容\*\*:'` 定位漏字段。
|
||
- 候选池:品质对比 13→余 8;氛围沉浸 23;感官沉浸 9;食材极致 0(须重建);预见式服务 3(须重建)。
|
||
- RUNBOOK.md 已追加批次 48、49 记录(标「暂存模式·未入库·v3」)。
|
||
|
||
---
|
||
|
||
## 2026-09-28 19:0x · 自动化补采批次 50–51(暂存模式 · 未入库)
|
||
|
||
- **批 50**(氛围沉浸定向批,ids `28420,26873,22171,30635,33641`):15 卡,主标签 **15/15 落氛围沉浸**。
|
||
- 产物:`batches/pending_import/batch_0050.{md,spec.json,meta.json}`(**暂存待导入**)。
|
||
- v3 回路:**接受 15/退回 0 | 问法平均 +4 字**(源 std 已 95–160 字,增厚空间有限)。
|
||
- 读 `out/polish_result/pending_0050.applied.json` 存证(跨会话中断后补跑,已闭环)。
|
||
- **批 51**(品质对比定向批,ids `20162,25218,33224,29661,26291`):15 卡,主标签 **15/15 落品质对比**;
|
||
`26291`(情感剧情 85s)**据实 0 卡**(无品质对比事件,已在 md 写弃卡说明)。
|
||
- 产物:`batches/pending_import/batch_0051.{md,spec.json,meta.json}`(**暂存待导入**);ids 落 `B51_IDS.txt`。
|
||
- v3 回路:**接受 15/退回 0 | 问法改写 14 张 | 问法平均 +45 字**(与批 49 并列最大增幅)。
|
||
- 编造粗筛告警 1 张 → **人抽检判定误报**:std 开头「」包的是「查询意图描述」而非台词引语,非真编造。
|
||
- ⚠️ **新踩坑(已记 RUNBOOK 批 51 经验)**:
|
||
1. 卡片首字段误写 `**内容性质**`(应为 `**极致内容**`)→ spec 生成报 `AssertionError: (15, 14)`;改回后通过(同类坑再现批 49)。
|
||
2. 「编造粗筛」告警新形态 = **std 意图描述段被当引语**(长度 >30 字且为事件整体概括 → 判误报)。
|
||
- 增厚梯度累计:批 46(−1)/47(+25)/49(+45)/50(+4)/51(+45)→ **源 std 中等厚度时稳定约 +45**。
|
||
- 候选池:品质对比 13→余 8;氛围沉浸 23;感官沉浸 14;细节专业 22;自嘲反差 43;视觉冲击 10;价值观冲击 11。
|
||
⛔ **食材极致 0、预见式服务 3 已耗尽 → 须先跑 `6_target_candidates.py` 重建候选池。**
|
||
- RUNBOOK.md 已追加批次 50、51 记录(标「暂存模式·未入库·v3」)。
|
||
|
||
---
|
||
|
||
## 2026-09-28 22:0x · 自动化补采批次 52 / 54 / 55(暂存模式 · 未入库 · v3)
|
||
|
||
⚠️ **本窗口仅完成 1 批(批 55)**,未达「连跑 3 批」目标 —— 详见文末「未完成说明」。
|
||
|
||
- **批 55**(氛围沉浸定向批,ids `36396,23225,20318,26470,28310`):15 卡。
|
||
- 标签分布:氛围沉浸 **12(主)** / 反差 1 / 视觉冲击 1 / 价值观冲击 1。
|
||
- 产物:`batches/pending_import/batch_0055.{md,spec.json,meta.json}`(**暂存待导入**);ids 落 `B55_IDS.txt`。
|
||
- 严格主角判据落地:`28310`(职场搞笑剧 83s,冲突由对白驱动、环境权重最低)只留 1 张氛围沉浸(市井餐馆底噪)+ 1 张价值观冲击,弃卡原因写入 md 头「弃卡说明」。
|
||
- v3 回路:**接受 15/退回 0**;std 均长 178.3 字(min 154/max 199),sim 恒 3、neg 恒 2,mismatch 0。
|
||
- 人工抽查 3 张(**1 / 11 / 13**):具象动作、物品、数字、台词全部可在卡片 6 字段溯源 → **无编造**。
|
||
- ⚠️ **重要口径修正(新增,已记 RUNBOOK §2.5)**:
|
||
`23225-3` 触发器「编造粗筛」告警 1 张 —— 引语「先去把猫安顿好」在卡片 6 字段无出处。
|
||
人工判定为 **v3.1 边界内的摘要式短语**(把「摸黑去小屋添粮换水」压成口语标签),非事实编造。
|
||
**同时发现该卡 `neg`(热粥/餐桌/草坪)在原文同样无出处** → 这是**负例应有的「不像」属性**。
|
||
∴ **修正口诀:`fiction_check` 对 `neg` 字段的告警默认忽略(负例本就写原文没有的画面);只有 `std`/`sim` 的告警需人工核。**
|
||
- ⚠️ **增厚退化现象确认**:「问法平均 +0 字」。原因是本批按 v3 口径**直写**,模型无新信息可搬 → 退化为「不缩水」校验。**这不是失败**;要验证增厚能力须拿 v2 旧口径批做基线(批 47/49/51 的 +25/+45/+45 即此类基线)。
|
||
- 候选池:氛围沉浸 23 → **余 18**;感官沉浸 14;细节专业 22;自嘲反差 43;视觉冲击 10;价值观冲击 11。
|
||
⛔ **食材极致 0、预见式服务 3 仍未重建 → 下一批第一件事是跑 `6_target_candidates.py`。**
|
||
- RUNBOOK.md 已追加批次 54、55 记录与「暂存批执行记录」表(标「暂存模式·未入库·v3」)。
|
||
|
||
### 未完成说明(诚实记录)
|
||
- 本次任务要求连跑 3 批(批 55/56/57),**实际只闭环 1 批(批 55)**。
|
||
- 批 56、57 均未开始:未取批、未拉解析、未产卡。
|
||
- 未发生任何入库写入、未改 `state.json`、未跑 `2_import_batch.py` / `3_done_batch.py`(暂存模式红线全程守住)。
|
||
- 剩余工作(下轮直接接续):批 56 建议目标 `感官沉浸`(候选 14),批 57 建议 `细节专业`(候选 22);
|
||
若要先补 `食材极致`,须先重建候选池。
|