Files
mcn-short-video/.workbuddy/memory/2026-09-24.md
T
maogeigei d07049ecf1 chore(repo): 归集 09-14~09-29 工作产出(技能/知识库/工作台/报告)并收敛临时产物
- 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
2026-09-29 18:56:24 +08:00

193 lines
37 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.
# 2026-09-24 工作日志
## 00:0x · 极致事件卡片批量生产 · 批次 4(无人值守自动任务)
- 处理 `21819 / 33425 / 21779 / 30078 / 20367` → 出卡 15,导入 WeKnora FAQ 库 `MCN极致事件素材库` 15/15,检索终验 15/15(threshold 0.5,score 0.73–0.82),库内 **75 条**。
- 产物:`tools/weknora-ingest/batches/batch_0004.md` + `batch_0004.spec.json`。
- 踩坑(已治本写入 RUNBOOK):spec 的 `card` 与 md 的 `### ` 标题需逐字一致,导入脚本只报「对不上」不报差异位置 → 导入前用 3 行 Python 比对两边标题。
- 状态:完成 22 | 剩余 2180 / 2202;已建第 5 批单次任务(2026-09-24T00:15)。
## 00:2x · 极致事件卡片批量生产 · 批次 5(无人值守自动任务)
- 处理 `21730 / 24840 / 21727 / 28330 / 34790` → 出卡 15,导入 15/15,检索终验 15/15(threshold 0.5,score 0.75–0.85),库内 **90 条**。
- 产物:`tools/weknora-ingest/batches/batch_0005.md` + `batch_0005.spec.json`。
- 做法沉淀(已写入 RUNBOOK「批次 5 经验」):4/5 仍是周小闹系列 → **同系列内给每条视频的 3 张卡各配不同主标签**(本批主标签 = 反差5/反常识4/视觉冲击2/自嘲反差2/价值观冲击1/预见式服务1/细节专业1),避免批内互抢召回;25s 极短视频按独立闭环同样拆 3 卡。
- 状态:完成 27 | 剩余 2175 / 2202;已建第 6 批单次任务(2026-09-24T00:28)。
## 00:34 · 极致事件卡片批量生产 · 批次 6(无人值守自动任务)
- 处理 `18909 / 28311 / 36728 / 24841 / 30153` → 出卡 15,导入 15/15,检索终验 15/15(threshold 0.5,score 0.73–0.84),库内 **105 条**,无新建标签。
- 产物:`tools/weknora-ingest/batches/batch_0006.md` + `batch_0006.spec.json`;RUNBOOK 已追加批次 6 记录与经验。
- 做法沉淀:278s 长视频拆 3 卡取「开场装杯被打脸 / 中段数量奇观 / 结尾信物升华」,软广段与派餐段宁弃;「自嘲反差」主标签判据再验证 = 先高调立 flag 再自己拆台。写 spec 前的比对脚本一次通过。
- 状态:完成 32 | 剩余 2170 / 2202;已建第 7 批单次任务(2026-09-24T00:39,id `f353aa08-…`)。
## 00:4x · 极致事件卡片批量生产 · 批次 7(无人值守自动任务)
- 处理 `30101 / 31774 / 17404 / 17468 / 28294` → 出卡 15,导入 15/15,检索终验 15/15(threshold 0.5,score 0.75–0.85),库内 **120 条**,无新建标签。
- 产物:`tools/weknora-ingest/batches/batch_0007.md` + `batch_0007.spec.json`;RUNBOOK 已追加批次 7 记录与经验。
- ⚠️ **踩坑(已治本写入 RUNBOOK 步骤 5 红线)**:`2_import_batch.py` 用非贪婪正则按 ` ```text ` 围栏解析卡片,**15 张卡写进同一个围栏只会被识别成 1 张** → 报「卡片 1 张」+ 14 条 spec 对不上。正确写法 = 每张卡独占一个围栏。导入前自检:`len(re.findall(r'```text\n(### [^\n]+\n.*?)\n```', src, re.S))` 应等于卡数。
- 标签判据补充:「细节专业」= 专业条款被拆成递进问答、一轮顶回一个理由;「预见式服务」= 预判对方的难堪并提前把台阶铺好(与品质对比无关)。
- 状态:完成 37 | 剩余 2165 / 2202;已建第 8 批单次任务(2026-09-24T00:52,id `5bc97c8c-…`)。
## 01:0x · 极致事件卡片批量生产 · 批次 8(无人值守自动任务)
- 处理 `26518 / 33453 / 24498 / 26497 / 36468` → 出卡 15,导入 15/15,检索终验 15/15(threshold 0.5,score 0.69–0.79),库内 **135 条**,无新建标签。
- 产物:`tools/weknora-ingest/batches/batch_0008.md` + `batch_0008.spec.json`;RUNBOOK 已追加批次 8 记录与经验。
- 本批首次混入非周小闹素材:`24498` 周大爷不服老(186s 硬核健身 vlog,全片首个生活 vlog 卡)、`36468` 癫婆(50s 军训段子)。
- 做法沉淀:① 围栏自检 + 标题比对两个自检**合并为固定前置步骤**,本批一次通过;② 主标签打散 = 反差4/反常识3/视觉冲击3/价值观冲击2/品质对比1/细节专业1/自嘲反差1;③「品质对比」= 品质标准被资历/利润公然替换;④「细节专业」= 一轮搜证顶回一个理由形成闭环;⑤ 50s 短段子拆 3 卡可行,前提三卡的期待-打破落在不同对象上;⑥ 生活 vlog 用 `行为极致·{离谱/反差/整蛊}`,剧情用 `戏剧极致·{反转/冲突/冲击/荒诞/专业}`。
- 状态:完成 42 | 剩余 2160 / 2202;已建第 9 批单次任务(2026-09-24T01:05,id `65cbe8c2-…`)。
## 01:1x · 极致事件卡片批量生产 · 批次 9(无人值守自动任务)
- 处理 `24856 / 21778 / 24792 / 37368 / 20343` → 出卡 15,导入 15/15,检索终验 15/15(threshold 0.5,score 0.68–0.82),库内 **150 条**,无新建标签。
- 产物:`tools/weknora-ingest/batches/batch_0009.md` + `batch_0009.spec.json`;RUNBOOK 已追加批次 9 记录与经验。
- 本批首个校园暗访爽剧素材:`37368` 脱缰凯(272s 校长微服私访查饭卡乱扣费),`极致类型` 仍走 `戏剧极致·{反转/荒诞}`。
- 做法沉淀:① **spec 改用临时 py 按 md 顺序生成**(自建卡片顺序表 + 标签/标准问/相似问/反例问),从根上消灭「md ### vs spec.card」不一致,配合围栏自检一次通过;② 主标签打散 = 反常识4/反差4/视觉冲击2/价值观冲击2/细节专业2/自嘲反差1;③「细节专业」补层 = 物证点破(敲盒底日期 / 举硬盘)+ 极快语速链条推理,缺物证不成立;④ 272s 长视频仍只拆 3 卡,结尾猎奇彩蛋(地窖啃烂土豆)宁弃不为之单开卡。
- 状态:完成 47 | 剩余 2155 / 2202;已建第 10 批单次任务(2026-09-24T01:21,id `d9abd8a9-…`)。
## 00:3x · MEMORY.md 精简重写(25973 → 11339 字符)
- 注入时超限被截断 → 按「索引 + 红线 + 踩坑」原则重写:WeKnora 详细参数、采集脚本细节等已固化在 `tools/weknora-ingest/RUNBOOK.md` 与技能文件,此处只留指针;保留工具链坑、创作红线、子技能要点。
## 01:2x–01:3x · 极致事件卡片批量生产 · 批次 10(5 视频 → 15 卡)
- 视频:31775 菜难吃 / 35110 外卖堂食不一样 / 18973 赠菜要好评 / 23334 俩人坐包房(均周小闹)+ 20270 时间的终点(至尊旭 科幻悬疑 616s,本流水线首个科幻题材)。
- 产出:batches/batch_0010.md + .spec.json;导入 WeKnora FAQ 库 15/15,终验 15/15 ✅(score 0.79–0.87,历批最高),库内 150 → 165 条;无新建标签。
- 主标签打散:反常识 4 / 价值观冲击 3 / 反差 3 / 细节专业 2 / 视觉冲击 1 / 自嘲反差 1。
- 自检一次通过:fences=15;md `###` 行 vs spec.card mismatch 空集(沿用批次 9 的「临时 py 按 md 顺序生成 spec」,用完即删)。
- ⚠️ 新踩坑(已写进 RUNBOOK 红线 3):正式导入返回 `success_count=11` 但库内实际 +15 且终验全 ✅ —— completed 时 success_count 尚未累加完,**判定必须看「库内增量 + 检索终验」,不能看 SUMMARY**。
- 新增经验(已入 RUNBOOK):616s 超长视频仍只拆 3 卡(开场悖论 / 中段物证击穿 / 结尾闭环焊死),中间走马灯奇观整段弃;「细节专业」第三层判据 = 一个具体到位置的物证("你上一口袋的安神片")瞬间击穿专业方。
- 进度:完成 52 | 剩余 2150 / 2202(cursor=51);已建第 11 批单次任务 2026-09-24T01:40(id `bcc1c2ac-…`)。
## 01:52 极致事件卡片批量生产 · 批次 11(自动化)
- 处理 5 条:`26549`(李炮儿 258s 挑战一天五份工,生活vlog·职业挑战)、`20359`(周小闹 包房丢东西)、`27956`(三虎子gy 52s「女子本身就是好字」,亲子萌娃)、`30169`(周小闹 假好评,大女主商战线)、`28273`(周小闹 后厨忘记做菜,老板权谋线)。
- 出卡 15 张,导入 15/15,检索终验 15/15 ✅(score 0.67–0.82);库内 **165 → 180**;进度完成 57 | 剩余 2145(cursor=56)。
- 产物:`tools/weknora-ingest/batches/batch_0011.md` + `.spec.json`。
- 主标签打散为 反差 4 / 反常识 4 / 价值观冲击 4 / 自嘲反差 1 / 视觉冲击 1 / 细节专业 1,无新建标签。
- 新方法沉淀(已写回 RUNBOOK「批次 11 经验」):① 临时 py 生成 spec 第 3 次一次通过(fences=15、mismatch 空集);② 52s 纯对话型亲子 vlog 也能拆 3 卡(开场反差转述 / 中段金句反驳 / 结尾挖坑反杀),判据是三卡「期待-打破」落在不同对象;③「细节专业」第四层判据 = 把抽象规则门槛换算成具体数字+日常道具(2950 vs 3000 立案线 → 硬塞两个纸巾盒);④「视觉冲击」可用满屏旋转花字+鬼畜复读音效"吞噬"人物表达精神崩溃,不必是实景奇观;⑤ 同一 IP 下不同故事线(暑假工反击 / 大女主商战 / 老板权谋)可同批共存,相似问绑定各自冲突物件与金句即可不互抢。
- 已建第 12 批单次任务 `fd1c3dc0-e076-43dd-afab-a66ae61c7fa4`,scheduledAt 2026-09-24T01:57(窗口内 +5min)。
## 02:10 极致事件卡片 · 批次 12
- 处理 5 条:`30154`(周小闹 菜品出错,老板权谋线)、`26468`(周小闹 提前排菜,部门内斗线)、`24826`(周小闹 午休开会,暑假工硬刚线)、`24495`(礼君君 187s「女朋友能有多丢人」,**首个情感剧场**)、`17251`(侯绿萝 81s 老钱班,**首个校园荒诞喜剧,本批最短**)。
- 出卡 15 张,导入 15/15,检索终验 15/15 ✅(score 0.71–0.83);库内 **180 → 195**;进度完成 62 | 剩余 2140(cursor=61)。
- 产物:`tools/weknora-ingest/batches/batch_0012.md` + `.spec.json`。
- 主标签打散为 反差 5 / 反常识 4 / 价值观冲击 3 / 自嘲反差 1 / 细节专业 1 / 视觉冲击 1,无新建标签。
- 新方法沉淀(已写回 RUNBOOK「批次 12 经验」):① 临时 py 生成 spec 第 4 次一次通过(fences=15、mismatch 空集),写法已完全稳定;②「细节专业」**第五层判据(新增)**:不只是物证顶回对方,还包括"专业规范先立到极细(揭盖朝向 12 点钟方向)→ 执行者在同一套动作上当场翻车 → 管理层把事故改写成'必须培训'的论据",规范从保护盾异化为甩锅凭据;③「视觉冲击」可靠"道具直接砸到脸上"的动作量成立(成把钞票物理扇脸 + 塞比脸还大的金元宝)用于 3 秒改尺度;④ 81s 极短校园喜剧同样能拆 3 卡(开篇奇观 / 离谱赠礼 / 反转+彩蛋);⑤ 跨题材混批(餐饮职场 + 情感剧场 + 校园喜剧)实测不互抢召回,相似问绑定各自冲突物件与金句即可。
- 已建第 13 批单次任务 `3fdaf397-9b2f-4888-bf5e-a28eeace8ef0`,scheduledAt 2026-09-24T02:15(窗口内 +5min)。
## 极致事件卡片批量生产 · 批次 13(2026-09-24 02:28)
- 处理 5 条:`28325`(周小闹·托盘/借冰)、`33485`(周小闹·没大米饭了)、`33400`(周小闹·上菜小推车)、`35036`(周小闹·借厕所)、`24870`(脱缰凯·老师年纪小)。
- 出卡 15 张,导入 15/15,检索终验 15/15 ✅(score 0.73–0.86);库内 **195 → 210**;进度完成 67 | 剩余 2135(cursor=66)。
- 产物:`tools/weknora-ingest/batches/batch_0013.md` + `.spec.json`。
- 主标签打散为 反常识 4 / 反差 4 / 价值观冲击 3 / 视觉冲击 2 / 细节专业 1 / 自嘲反差 1,无新建标签。
- 新方法沉淀(已写回 RUNBOOK「批次 13 经验」):① 临时 py 生成 spec 第 5 次一次通过(fences=15、mismatch 空集);②**「反常识」新增「对称翻车」型**——两难的两个选项各自都翻车(不借被网暴 / 借了被抽烟霸位耗光耗材连爱心卫生巾被薅秃),落点在"这道题本身没有安全解";③**「视觉冲击」可以是"代价被具象化"**——为面子撤推车 → 一地碎瓷 + 跪地 + 2000 元餐损 + 半个月工资;④**「细节专业」第六层**——把不可见的"累"拆成三级可称量(空盘 → 加菜 → 加汤水 20 多斤)再塞进对方手里做体感,"你行你上"被物理化;⑤ 同系列四线 + 一个校园题材混批仍不互抢召回。
- 已建第 14 批单次任务 `766c89cf-cfb8-4a48-9859-33e0356d9cb1`,scheduledAt 2026-09-24T02:35(窗口内 +5min)。
## 02:45 · 极致事件卡片批量生产 · 批次 14 ✅
- 处理视频:`36712`(穿短裙)、`35106`(弄脏名牌包)、`24854`(不能坐电梯)、`28262`(上交手机)、`28286`(下班来客人)—— 5/5 全周小闹,但五条故事线互不重叠。
- 出卡 15 张,导入 15/15,检索终验 15/15 ✅(score 0.74–0.84);库内 **210 → 225**;进度完成 72 | 剩余 2130(cursor=71)。
- 产物:`tools/weknora-ingest/batches/batch_0014.md` + `.spec.json`。
- 主标签打散为 反常识 4 / 反差 4 / 价值观冲击 4 / 视觉冲击 2 / 自嘲反差 1,无新建标签。
- 新方法沉淀(已写回 RUNBOOK「批次 14 经验」):① 临时 py 生成 spec 第 6 次一次通过(fences=15、mismatch 空集);②**「反常识」新增「规章自相矛盾」型**——这套规章本身没有安全解(不用传菜梯就洒怕扣钱,用了客梯要躲店长;收了手机连急救电话都接不到),落点在制度悖论;③**「视觉冲击」新增「物理断供」型**——不靠奇观特效,直接切断环境本身(拉总闸 → 全场全黑 → 手机冷光 → 摸黑结账),爽感在"终止键握在最没权力的人手里";④**「价值观冲击」新增「一次裁决内赏压并行」**(罚店长 500 + 免员工 100 + 留人敲打 + "你得跟我一条心呐"一气呵成)。
- 已建第 15 批单次任务 `7cb57404-bd54-4903-8612-eafedcb5d19e`,scheduledAt 2026-09-24T02:50(窗口内 +5min)。
## 09:43 · 极致事件卡片批量生产 · 批次 15 ✅
- 处理视频:`36742`(后厨偷懒)、`21753`(职场人情味)、`17452`(客人带食材)、`30168`(培训)—— 4/5 周小闹但四条线互不重叠;`33483`(良田 209s 摄影养成)为本技能**首次处理「生活 vlog 情感纪实」形态**。
- 出卡 15 张,导入 15/15,检索终验 15/15 ✅(score 0.72–0.87,上限 0.8657 为本链最高);库内 **225 → 240**;进度完成 77 | 剩余 2125(cursor=76)。
- 产物:`tools/weknora-ingest/batches/batch_0015.md` + `.spec.json`。
- 主标签打散为 反常识 4 / 反差 3 / 价值观冲击 3 / 视觉冲击 2 / 细节专业 2 / 自嘲反差 1,无新建标签。
- 新方法沉淀(已写回 RUNBOOK「批次 15 经验」):① 临时 py 生成 spec 第 7 次一次通过(fences=15);②**「反常识」新增「正确废话」型**——角色用一句完全正确的话给自己做最离谱的辩护("后厨是人也不是机器"是事实,却用来论证虾线可以不去;"有点人情味"是美德,结果经理替下属端盘子、老客在楼下没人接),落点在"这句话本身没错所以谁都反驳不了";③**「视觉冲击」第三层:代价在镜头前实时发生且不可撤回**(夺回来的茅台已被开了,一句"送给客人了"把两瓶台子变沉没成本);④**「细节专业」第七层:用对方原话当物证**——把对方说过的话连腔调带动作原样复刻("哎呀有啥不行啊,服务至上嘛"),让否认本身变成新笑料,判据=证据即对方的表演痕迹。
- 已建第 16 批单次任务 `940bb983-4aed-445e-927d-93d225940f10`,scheduledAt 2026-09-24T23:10(执行时 09:43 在窗口外 → 顺延当晚 23:10)。
## 12:1x · 方案:极致事件素材接入创作流程(分析,未改技能文件)
- 需求:分析脚本创作流程,如何加入知识库调用、让创作参考恰当极致事件素材、丰富内容层次。
- **核心诊断**:技能全仓 `grep -i weknora` = **0 命中** → WeKnora 240 条卡是**离线资产**,创作流程零引用;S7 的 `{material_content}` 注入者「编排层」**全仓仅 1 处提及且无定义**(悬空引用)。
- **内容层次模型(4 层)**:载体层(8 库,拍什么)/结构层(03_框架节奏,怎么排)/**机制层(WeKnora 卡,凭什么留人)← 未接入、最薄**/表达层(08_对话风格,怎么说)。S7 的 L2 密度自检只查"具体度"不查"爆点机制是否成立" → 大纲可以既具体又平。
- **实测(本次新跑,10 组跨赛道创作意图打 faq/search,threshold 0.5)**:
- 命中 9/10,分数窄带 **0.50–0.61**,天花板低;
- **纯抽象 query 零命中**("一句话让所有人都沉默"→0);**带具象动作的 query 最高分**("被当场刁难的人用专业细节顶回去"→0.6058)→ **问法必须带具象锚点**;
- 发现 **15 条「泛化磁铁卡」**(编号 A1/A2/B1/B2 + 11 条名称式,标准问统一为"找一条 X 的极致事件素材")语义与任何意图都近,频繁挤占 top1;
- **赛道覆盖偏斜**:剧情 186/240(77.5%),亲子仅 3,**「感官沉浸」「氛围沉浸」= 0 条**(治愈/慢生活向检索为空)。
- 复用发现:卡片 `内容含义` 结构 `[期待A]—被X打破→[结果B]` **可反向当爆点成立性自检器**(无新数据即可用)。
- **方案三接入点**:A(P0)S7 事件展开前做机制检索,问法用「镜像式五要素」(与库内标准问语域同构:落差对象+打破方式+具象锚点+段落功能);B(P1)S9 台词毛边(原话/微反应/意外三档);C(P1)S11 爆点溯源(无来源=编造爆点,照搬=P0)。
- **红线**:① 转译必须"取材不取形"(只取落差结构/手法类别/铺垫量级,禁搬人物·台词·道具);② WeKnora 是开发机本地 Docker(用户环境没有)→ **必须静默降级**为 8 库筛条,脚本含 Key/端口**不入技能包**,只进 `tools/`;③ FAQ 纯向量 + `CustomMetadata` 不参与过滤 → 收敛只能靠 query 语义与检索后复筛(top5 复筛留 ≤2);④ 阈值恒显式 0.5(提到 0.6 会大面积漏)。
- 产物:`极致事件素材接入创作流程方案_V1.0_20260924.md`(仓库根目录)。**未改任何技能文件**,待授权后按缺口清单 8 项执行。
- 数据侧待办(已记入方案 §四):改造 15 条泛化磁铁卡标准问、清理 6 条卡 `事件标签` 字段混入的自检备注、后续批次优先补非剧情赛道。
## 12:2x · 方向修正:极致事件素材接法改为「方法驱动」(用户提出,两轮确认)
- **用户质疑**:「极致事件是否需要根据创作方法去应用,而不是直接加入到创作流程中」→ 判断:**对,上一版方案的接法方向是反的**。上一版把卡库当成 S7 的一个检索子步骤直接插进流程(布位→检索→填充)= **素材驱动**;应改为**方法驱动**(方法定手法 → 判定定类型与布位 → 素材作实例供给)。
- **证据(本轮新查)**:`知识库/05_极致事件/` 10 个文件实为两类混放——① 规则/索引层(00 总纲、01 映射表、02 赛道形态、03 评估标准)已被 S6/S7 引用;② **方法层 6 个(极致行为创作法 + 预期反转/荒诞化/抽象化/无厘头/错位化)在创作流程中 0 调用**(唯一 1 次出现在 `创作流程规范.md` 第 380 行的目录罗列,属罗列非调用;「极致行为创作法」连文件名都未出现)。对照:**S5 选题有完整方法论清单**(5 大方法 + 明文"AI 执行时须读取对应文件")→ S5 是方法驱动,S6/S7/S9 不是。
- 上一版实测跨赛道检索分低(0.50–0.61)的**病根是方法缺位**(泛意图在向量空间无收敛点),不是检索参数问题。
- **三层关系确认(用户本轮再次收口)**:方法层(怎么制造极致感)/ 判定层(这是什么极致)/ **素材层(用什么材料)**;调用方向自上而下。
- ⭐ **「极致事件素材」= 素材层的事件类**,与 8 库「载体类」**并列**(不是素材库的替代)。用户定性:极致事件素材起的就是素材库的作用。
- 「极致事件」一词两义必须切开:**作为知识库维度**(`知识库/05_极致事件/`)= 方法 + 判定,**不是素材**;**作为素材**(240 条卡)= 素材层,**不是方法**。
- 素材层两类**用法/检索方式不同**:载体类 8 库 = **字段筛条**(四维标签),可直接取用(换成本账号具名物品);事件类卡 = **语义检索**(FAQ 纯向量、无字段过滤),只能**结构参照 + 转译**(属别人账号事件,禁直取)。
- **设计推论(待落地)**:① ❌ 取消「接入点 A = S7 新增检索子步骤」——极致事件素材既属素材层,就**不应有独立接入步骤**;② ✅ 改为**扩展 S7 现有「素材库」定义域**(8 库 → 8 库 + 极致事件卡库),共用同一调用链「类型定库 → 筛条/检索 → 填充」,仅检索方式分叉 → ⚠️ **该"扩容"表述当天 13:0x 被用户纠正为"切换"**(见下节);③ 方法层接线是本需求的**另一半**(不改则素材层扩大后仍是素材驱动)——落点 = S7「极致触点节点布位」表新增「候选创作方法」列(无需新增步骤)。
## 13:0x · 定性修正:不是「扩容」,是「切换」(用户纠正)+ 三项事实实测
- **用户纠正**:「素材库不叫扩容,是叫切换,之前技能中的素材切换到 WeKnora 对应素材库」→ 采纳。定性 = **素材载体切换**(本地 md 素材 → WeKnora 容器),非两库并存。
- ⭐ **支撑该定性的实测事实(本轮新查,极重要)**:
- `references/素材库/` 共 10 个文件 / 546 行,**真实素材条目合计仅 21 条**;
- **7 个通用库中 6 个是空壳**(`03_生活仪式库`/`05_装修布局库`/`06_生活服务库`/`07_穿搭库`/`08_妆容库`/`11_造型库`)——文件内只有 `## 字段结构` 代码块 + `<!-- 在此添加条目 -->` 注释 + 「最低要求:每个账号 ≥ 10/15 个」的空承诺,**零条素材**;
- 唯一有实素材的是 **01 美食库 4 文件 = 21 条菜品**(中式家常菜 8 / 仪式感美食 5 / 煲汤类 5 / 深夜宵夜 3);
- 对比:WeKnora 240 条。→ 本地 md 素材库**从未真正建成过**,故"切换"成本极低(仅 21 条要迁)。
- ⚠️ 连带问题:`references/索引_知识素材库.md` 对 03/05/06/07/08/11 的描述("安睡/做饭/按摩选型"「穿搭方案选型」等)**承诺了不存在的内容**——把"字段结构模板"写成了"素材库",切换时须一并修正。
- **切换的关键设计约束(本轮新增判断)**:
1. **md 素材文件不能删** —— WeKnora 是**开发机本地 Docker**,用户环境没有 → 无 md 则用户环境零素材。定位:**md = 权威源 + 降级源,WeKnora = 检索运行时副本**;降级 = 静默回退读 md + 四维标签筛条。
2. **切换范围**:分块定义/模板/标签闭集 = 规格 → **留文件**(规则类不进检索层);实素材条目 → 切 WeKnora;6 个空壳库的"字段结构"并入 `分块定义/` 后原文件退役。
3. **能力置换(必须接受)**:失去四维标签**字段精确筛选**(FAQ 纯向量、CustomMetadata 不参与过滤,实测),换来素材 21 → 240 条。净收益为正。
4. **账号隔离是硬边界**:FAQ 无 metadata 过滤 → 无法按账号隔离 → **04 对话库(账号专属)不切换**,保持文件形态按账号存,否则多账号串号。
5. **前置成本**:进 WeKnora 的载体素材必须补「标准问+相似问」(FAQ 召回唯一杠杆)→ 21 条 × 5-6 问法 ≈ 120 条问法,复用 `2_import_batch.py`。
- 产物:`极致事件素材接入创作流程方案_V1.1_20260924.md`(V1.0 已加"被取代"标注保留沿革)。**技能文件仍未改动**,待授权。
- 六项待办顺序(V1.1 §六):补 21 条问答对入库 → 清 15 条泛化磁铁卡 + 6 条标签污染 → 改技能文件 10 项 → 卡片补「方法归属」→ 变更日志。
## 13:0x · 技能接入 WeKnora 的具体实现(实测定稿)
- ⭐ **决定性发现:走 MCP 工具,不写脚本**。`weknora` MCP 已配在 `D:\.workbuddy\mcp.json`(stdio + `weknora-mcp-server.exe`,env 指向 `http://localhost:31607/api/v1` + Key)。**实测 `mcp__weknora__hybrid_search` 可直接召回 FAQ 库条目**:`kb_id` 传**库名**「MCN极致事件素材库」自动解析;命中 `28325-3`,`score=0.6058205716953738` —— 与 REST `/faq/search` **同 query 同分**(两条路径等价)。
- **两条路径分工**:MCP = 创作端(会话内,S7 每视频 1-3 次);REST `/faq/search` = 生产端(`tools/weknora-ingest/*.py` 批量导入+终验,需 unset 代理、导入通道独占)。
- **三个必须写进技能的坑(实测)**:
1. **零命中不是错误**:返回 `{"data": null, "success": true}` → 判据是 `success=true 且 data=null`,不得判为调用失败,不重试不报错,走降级。
2. **同一张卡内容返回三份**(`content` / `chunk_metadata.answers[0]` / `matched_content`)→ 创作端**只读 `chunk_metadata.answers[0]`**,其余为噪声。
3. **`chat` 不能替代 `hybrid_search`**:`chat` 是 RAG+LLM 总结,会把卡「摘要化」,而卡的价值恰在不可概括的细节(原话/微反应/铺垫量级/镜头语言)→ S7 用 `hybrid_search` 取原文,**禁用 chat/agent_chat**。
- **参数**:`hybrid_search` 默认 `vector_threshold=0.5`(恰好合规,仍应显式传)、`match_count=5` → **建议传 3**;`keyword_threshold` 对 FAQ 库**无效**(FAQ 恒纯向量召回),不传。
- **上下文成本控制(实测推导)**:单条卡约 3.5-4KB(因三份重复),`match_count=5` 单次≈18KB≈6K tokens;5 节点全检 ≈30K tokens → 三条规则:① `match_count=3`(单次≈3.5K tokens);② **按需检索**(只检"想不出桥段的节点",通常一视频 1-3 次);③ 串行、读后即弃,不堆积。
- **降级矩阵(P0)**:MCP 未挂载 / 服务不可用(用户环境无 Docker)/ 库不存在 / 零命中 → **静默回退读 `references/素材库/*.md`**;零命中退化为「仅用类型层子类指引」,不编造素材。技能文案须写成**能力探测式**(先试→失败则降级),不假定可用也不假定不可用。
- **召回机制澄清(补充)**:`hybrid_search` 名字含 keyword,但 FAQ 库 `matched_content` 说明命中的是「标准问+相似问+答案」全文,`match_type=0` → 关键词不参与,仍是**纯向量**。
- 产物:`技能接入WeKnora实施规范_V1.0_20260924.md` —— 含**可直接落地的新建文件全文草稿** `references/接口调用/WeKnora_极致事件检索.md`(5 节:调用/镜像问法/返回判据/降级/成本控制)+ 各技能文件改动落点表(SKILL.md 两处、S7 四处、`{material_content}` 定死结构)+ 环境矩阵。
- 落地前 3 项待补测:① 载体类 21 条菜品与事件卡是否互挤召回;② `match_count=3` 对小众赛道(亲子 3 条/沉浸 0 条)是否够;③ 真实 S7 场景零命中率。
- 技能文件仍未改动,待授权。
## 14:xx · 执行落地:素材层切换 WeKnora + 方法层接线 ✅(用户授权「按照方案执行」)
- **新建**:`references/接口调用/WeKnora_极致事件检索.md` —— 调用契约权威源,8 节(定位 / 调用参数 / 镜像式五要素问法 / 返回判据三坑 / 复筛转译 / 降级矩阵 / 成本控制 / 实测依据 / 与其他接口分工)。`kb_id` 用库名、`match_count=3`、`vector_threshold=0.5` 显式、不传 `keyword_threshold`、零命中判据 `success==true 且 data==null`、只读 `chunk_metadata.answers[0]`、禁 `chat`/`agent_chat`。
- **S7 核心改造**(`创作流程/7_生成短视频大纲.md`,9 处):布位表**新增「候选创作方法」列**(4→5 列)打通方法层 → 新增「极致触点素材检索」按需环节(已有桥段的节点跳过,通常一视频 1–3 次)→ `{material_content}` 注入格式定死 → 新增**极致触点机制自检**(L1 节点须写得出 `[期待A]—被X打破→[结果B]`,写不出降级为普通情节)→ 输入章节素材库改**双层源**(主源 WeKnora / 降级 md 文件,md 永不删除)→ System Prompt 与禁止行为同步(禁跳方法列 / 禁搬卡原文 / 禁零命中编造)。
- **方法层接线**:`知识库/05_极致事件/` 6 个方法文件各补「素材供给」块(极致标签 / 定库检索入口 / 问法「② 打破方式」填法),治「方法层在创作流程中 0 调用」。
- **配套**:SKILL.md(MCP 依赖节 + WeKnora 检索层 + S7 小节调用链 + frontmatter `updated_at`);`索引_知识素材库.md`(素材库章节改双层源 + 03/05/06/07/08/11 逐条标注「仅含字段结构模板,尚无实素材条目」+ 新增「接口调用」章节);S9 输入增 `{material_cards}` + 新增「台词毛边三档参考」(原话/微反应/意外);S11 类1「爆点贯穿」升级为**爆点溯源 4 判据**(次数/可溯源/落差三件套/转译合规),八类35项清单同步。
- ⚠️ **踩坑(本轮)**:6 个方法文件写在 `references/知识库/05_极致事件/`(两层深),「素材供给」块里我写了 `../接口调用/WeKnora_极致事件检索.md` —— **层数算错**(`../` 只退到 `知识库/`)。阅 `references/规则/路径引用规范.md` 后确认:技能内既有惯例是**省略 `references/` 前缀写成 `接口调用/xxx.md`**(S7、索引、变更日志一致),故统一改为 `接口调用/WeKnora_极致事件检索.md`。**教训:跨层级引用前先 grep 同侪写法对齐惯例,别自己推层数**。
- **复查(全仓)**:`../接口调用/WeKnora` = 0;敏感串(`sk-` / `31607` / `e6772e41`)= 0;盘符绝对路径 = 0;「编排层」旧表述仅剩 2 处且均在第三方整包 `nuwa-skill-main` 内(规范明示豁免);6 个方法文件「素材供给」引用写法完全一致。
- ✅ **junction 已重建**(14:46,用户授权):`~/.workbuddy/skills/短视频工作台` → `D:\AI技能\mcn-short-video\project\短视频脚本创作\V1.0`(children=7,SKILL.md 可读)。
- 做法沉淀:**写临时 UTF-8 js 文件**(路径硬编码在文件内,不走 argv)→ `node fs.symlinkSync(target, link, 'junction')` → 用完即删。**避开两个坑**:① PowerShell 沙箱报 `cmd decisionRecord missing actual resource subject` 直接不可用;② `node -e "…中文路径…"` 走 argv 有编码风险。
- ✅ **git 已提交**:`6e4ce94`(20 files changed / 1701 insertions(+) / 67 deletions(-)),仅含本次范围(技能 14 + 仓库根文档 5 + 记忆 1)。**未 push**。工作区仍有 **137 个**其他工作线未提交改动(mcn-work-shop / 03_框架节奏 / 04_爆款开场 等),未动。
- **方案 §六 未执行项(本次范围外,待另行授权)**:6 个空壳库字段结构并入 `分块定义/` 后原文件退役;21 条载体素材补问答对入库;清 15 条泛化磁铁卡 + 6 条标签污染;240 条卡补「方法归属」字段。
## 16:2x · 俊希视频列表刷新(mcn-dou-analysis 功能二)✅
- **产出**:桌面 `MCNSkill项目/俊希/短视频表格.xlsx` 重写为 **138 条**(原 136 条全部覆盖、零丢失 + **新增 2 条**:09-19「70元做酸辣菜」2.9万赞、09-07「开学前一天400块做大餐」11.6万赞);13 列标准格式(序号/视频ID/标题/地址/点赞/点赞显示/评论/分享/收藏/播放/时长/发布时间/标签),按「点赞+分享」降序。字段零缺失(createTime / duration / desc 全 138/138)。原表已备份 → `mcn-dou-analysis/tmp/_backup_短视频表格_20260831.xlsx`。
- **账号表刷新**(`达人账号表.xlsx` 俊希行,数据源 = 页面 Fiber `userInfo` 实时值):粉丝 **281.0万**(原 281.9万)、获赞 **3694.4万**(原 3658.9万)、关注 11、作品 **138**(原 136)、更新时间 2026-09-24。
- **抓取路径**:9333 CDP(browser-harness)→ 搜索页 `JJX0827?type=user` → 卡片坐标点击进主页(守规范:不直连 `/user/` 地址)→ Fiber `defaultDataList` 提取 → 滚动 3 轮(54 → 90 → **138**)。全程守 5.6 浏览器锁(工作台目录 `.browser-lock`)并已释放;**未关闭用户 Chrome**(守 5.7)。
- **三个坑**(已写入 `失误与规避记录.md` **#020**):① `browser-harness.exe` 入口失效(exit=1 零输出)→ 必须改 **venv python `-m browser_harness.run`** + `PYTHONPATH=src`(`python run.py` 会相对导入失败);② **独立调用之间 current tab 漂移回列表第一个** → 每次先 `switch_tab(list_tabs()` 筛出的 target_id`)`,截图差点截到用户页面;③ 规范里的滚动容器 **`.route-sc` 实测已不存在** → 实际是 `[class*="route-scroll-container"]`。
- 附带发现:`js()` 返回值反序列化为 Python 对象,可直接回传 138 条×10 字段并本地写文件,**不必走 stdout**(避开截断坑)。
- ⚠️ **待确认(技能规范待修,本次未动技能文件)**:`mcn-dou-analysis/references/浏览器搜索抖音账号操作规范.md` ①「滚动容器与加载技巧」写死 `.route-sc`(已失效);② 5.x「调用方式」未说明本机 `.exe` 失效需走 venv `-m`。建议修,待授权。
## 极致事件卡片批量生产 · 批次 16(23:10–23:24)
- 处理 5 条:`27102`(海杰 骑行去新疆 257s)/ `21777`(周小闹 退团购券 139s)/ `26534`(李炮儿 荒野求生 316s)/ `20344`(周小闹 客人自己拿酒 131s)/ `20863`(二孬别闹 反向吵架 75s)→ 15 张卡,导入 15/15,终验 15/15 ✅,库内 240→**255 条**。
- 产物:`tools/weknora-ingest/batches/batch_0016.md` + `batch_0016.spec.json`;RUNBOOK 追加批次 16 记录。
- 新增 3 条判据(已写 RUNBOOK):「反常识·被动方反客为主型」「反常识·美德被计价型(坦白从严 9347 元)」「视觉冲击·数量排布替代说明型(洗手台一整排空瓶)」。
- 主标签分布:反常识 5 / 视觉冲击 3 / 反差 3 / 价值观冲击 2 / 细节专业 1 / 自嘲反差 1,无新建标签。
- 下一批(第 17 批)单次任务已建:2026-09-24 23:29。
## 极致事件卡片批量生产 · 批次 17(23:29–23:41)
- 处理 5 条:`30075`(李炮儿 一天五份工 335s)/ `28282`(脱缰凯 校园违纪通报 249s)/ `36741`(周小闹 饭店消杀回扣 136s)/ `24462`(竹子买车 找婆婆借2块钱 591s)/ `31545`(猫meme 传承 41s)→ 15 张卡,导入 15/15,终验 15/15 ✅(0.76–0.85),库内 255→**270 条**。
- 产物:`tools/weknora-ingest/batches/batch_0017.md` + `batch_0017.spec.json`;RUNBOOK 追加批次 17 记录与 4 条新判据。
- 新判据:「反常识·勤奋反向计价型(把重量当金额收)」「反差·生理不可协商型(扛床垫行、刷马桶崩)」「视觉冲击·关系实物化(满车空瓶倾泻 / 假人残肢)」「591s 超长纪实与 41s 极短猫meme 均只拆 3 卡」。
- 主标签分布:反差 5 / 反常识 4 / 价值观冲击 3 / 视觉冲击 2 / 自嘲反差 1,无新建标签。
- 下一批(第 18 批)单次任务已建:2026-09-24 23:46。
## 极致事件卡片批量生产 · 批次 18(23:46–23:57,无人值守自动任务)
- 处理 5 条:`31760`(脱缰凯 魏老师保卫班级荣誉 319s)/ `26469`(侯绿萝 老钱班30 227s)/ `33436`(周小闹 菜品备注 136s)/ `17507`(段俊 晚安 悬浮键盘 36s)/ `37363`(隆隆隆野 多语种检票员 182s)→ 15 张卡,导入 15/15,终验 15/15 ✅(0.76–0.85),库内 270→**285 条**。
- 产物:`tools/weknora-ingest/batches/batch_0018.md` + `batch_0018.spec.json`;RUNBOOK 追加批次 18 记录 + 3 条新判据,并更新「已用标签」清单。
- 新建标签「感官沉浸」(12 维闭集第 9 个已用标签);主标签分布:反差 4 / 反常识 3 / 价值观冲击 2 / 视觉冲击 2 / 品质对比 1 / 感官沉浸 1 / 细节专业 1 / 自嘲反差 1。
- 新判据:① 反常识·自证陷阱掀桌型(31760-2:「你问心无愧为什么不敢重考」→ 拒绝进入游戏,区别于批次 10 的"美德被计价");② 品质对比·预告式翻车(33436-2:「少辣就是不好吃」先声明,最后被自家服务员干呕兑现);③ 细节专业·一句问候四步闭环+收得住(37363-2:国籍→母语→发音纠正→夸奖,够用即止)。
- 36s 极短才艺视频拆 3 卡成立(17507:召唤奇观/沉浸弹奏+路人反应/停手一指抽奖),判据是三卡打破对象分别为物件/旁观者/观众身份。
- 「临时 py 按 md 顺序生成 spec」第 10 次一次通过(fences=15、mismatch 空集)。
- 下一批(第 19 批)单次任务已建:2026-09-25 00:02。