Files
mcn-short-video/技能审计报告_V1.0_20260914.md
T

148 lines
17 KiB
Markdown
Raw Normal View History

# 技能审计报告 · 短视频工作台 V1.0
> 审计对象:`project/短视频脚本创作/V1.0/`(主技能 + 6 子技能)
> 审计依据:`技能审计检查清单.md`(15 项 / 六类)
> 审计日期:2026-09-14
> 审计方式:链路层优先 —— 全树机械化交叉验证(相对链接校验 / 硬编码扫描 / 术语与编号分布)+ 权威源逐文件精读(SKILL.md、创作流程规范、概念分层与源头表述规范、索引_知识素材库、创作流程 5/6/7/10、子技能/工作台关键文档)
> 本报告只出结论与方案,**未修改任何技能文件**(遵守「方案与执行分离」P0)
---
## 一、总览
| 等级 | 数量 | 一句话 |
|:---:|:---:|------|
| **P0** | 0 | 未发现产物链断裂、标准库账号名硬编码等红线违规 |
| **P1** | 8 | 1 处上下游断链、1 处契约表漏登记、1 处交付门禁口径相反、1 处旧名+乱码、2 处术语未覆盖改名、1 处 dsh 死分支仍在活规则、1 处 dsh 历史叙述未清 |
| **P2** | 7 | 可选标记/字段名/标题格式/索引文件名/阶段枚举/示例账号名/增量库旧口径 |
### 问题总表
| # | 检查点 | 等级 | 位置 | 问题 |
|:--:|:---:|:---:|------|------|
| 1 | 6 引用链路 | **P1** | `7_生成短视频大纲.md:31` ← `6_生成短视频框架.md:280` | S7 声明"从 S6 场次结构表取模板骨架(模板A/B)",S6 明文模板A/B **非执行指令**、场次表不含模板 → 上游无此字段 |
| 2 | 7 引用路径 | **P1** | `mcn-workshop/docs/AI会话任务输入输出对照.md` + `SKILL.md:81` | 契约表只登记 5 个前缀常量,实际 **8 个入口缺失 2 个**(`SKILL_HINT_ANALYZE`、`SKILL_HINT_VIDEO_PARSE`),与 SKILL.md 第 7 条 P0 冲突 |
| 3 | 8/10 一致性 | **P1** | `创作流程规范.md:97` ←→ `SKILL.md:296-298` | 「八类35项自检」= 交付前强制(规范);承载它的 S11 = 可选(SKILL.md)→ 门禁口径相反 |
| 4 | 8 术语统一 | **P1** | `SKILL.md:223`、`5_生成短视频选题.md:187/229/255/294/411` | 钩子家族 4 种叫法(开场钩子/开篇钩子/钩子预设/钩子策略),违反 09-07 概念分层规范 §三 |
| 5 | 8/9 一致性 | **P1** | `创作流程规范.md:406,408` | 旧技能名「`脚本创作技能/`」残留 + 单独一个乱码字符(`读��最新`) |
| 6 | 7 引用路径 | **P2** | `mcn-data-insight/subskills/douyin-rise-ranking/references/core_workflow.md:127,260,263` | 相对链接层级差一级(`../../SKILL.md` 应为 `../../../`;`scripts/…`、`references/…` 缺 `../`) |
| 7 | 9 字段完整性 | **P1** | `5_生成短视频选题.md:227` | 输出声明漏「开场钩子」「共鸣切入点」(模板与规范都要求) |
| 8 | 14 红线 | **P1** | `mcn-dou-analysis/SKILL.md:160`、`feature/05_解析视频.md:55`、`接口调用/本地接口调用规范.md`、`铁律避坑规则/账号设定执行避坑.md:25` | dsh 环境 09-10 已整套下线,但 dou-analysis 侧 **dsh 接口分支仍作活规则** |
| 9 | 14/15 | **P1** | `SKILL.md:78`、`mcn-dou-analysis/SKILL.md:42`、`references/路径配置.md:15,28`、`浏览器搜索抖音账号操作规范.md:175` | 「dsh 已下线」历史叙述未按 09-10 处置原则清干净(同文件其它位置已清) |
| 10 | 2 编号一致性 | **P2** | `创作流程规范.md:21-22` ←→ `SKILL.md:153,296` | S11 的 🔶 可选标记两文档不一致(规范 ⑪ 未标,SKILL.md 标了) |
| 11 | 5 字段归属 | **P2** | `创作流程规范.md:246/337`、`6_生成短视频框架.md:135`、`10_生成短视频分镜脚本.md:107` | A 格式场次标题要求 `地点·时间`,S6 场次列只给功能定位名;S10 模板又用 `{场次名称}` → 字段来源与命名三处不齐 |
| 12 | 9/10 一致性 | **P2** | `创作流程规范.md:266/275` | B·Vlog 规则行写 `(动作/语气)`,示例行与 S10 都写 `(动作/表情/语气)` → 漏「表情」 |
| 13 | 10 格式不矛盾 | **P2** | `10_生成短视频分镜脚本.md:107/119` ←→ `创作流程规范.md:222` | S10 模板用 `### 场1:{场次名称}(Xs-Xs) 情绪:{情绪值}`,A 格式用加粗 `场1:地点·时间(Xs-Xs) 情绪:{值}` |
| 14 | 15 冗余 | **P2** | `索引_知识素材库.md:65,67` | 索引文件名与实际文件名不一致(`星爷+沈腾` vs `星爷 + 沈腾`;`本山+憨豆` vs `本山 + 憨豆`) |
| 15 | 15 冗余 | **P2** | `索引_知识素材库.md:2` | 阶段枚举「S5→S7→S9→S11」漏 S6、S10(二者均核心依赖知识库) |
| 16 | 14 红线 | **P2** | `帮助文档.md:43` | 触发示例用真实账号名「俊希」,与规范 §六 替换对照表 + 验证 grep 清单自相矛盾 |
| 17 | 15 冗余 | **P2** | `references-add/通用知识/03_Seedance与换皮工具箱.md:33` | 仍把「括号内心独白(字幕)」列为技巧,与「内心独白已降级统一为旁白」定稿冲突 |
---
## 二、逐检查点结论
### 一、流程清晰(检查点 1-3)✅ 基本通过
- **步骤顺序**:SKILL.md 流程总览(L148-154)与 `创作流程规范.md` §一索引表(L10-23)逐条对齐,①→⑪ 顺序无错乱。✅
- **编号连续**:SKILL.md 与规范均覆盖 S1–S11,无跳号;产物链 05→06→07 有明文 P0 铁律(规范 §五 L458-464)。✅
- **无跳步**:自动模式"后台静默 ≠ 跳步"表述清晰(规范 L56、SKILL.md L358)。✅
- ⚠️ 唯一瑕疵:🔶 可选标记两文档不一致 → 见问题 #10(P2)。
### 二、边界清晰(检查点 4-5)✅ 基本通过
职责声明齐全,是本技能做得最好的一块:
| 边界声明 | 位置 | 结论 |
|------|------|:---:|
| S6 只搭情绪骨架、不选结构模板 | `6_生成短视频框架.md:128,280` | ✅ |
| S7 只展开分段、不重做情绪 | `7_生成短视频大纲.md:150,204,219` | ✅ |
| S9 不做任何情绪维度重新规划 | `9_生成短视频脚本.md:3` | ✅ |
| S10 保留 S9 内容、不改台词动作 | `10_生成短视频分镜脚本.md:32,166` | ✅ |
| 情绪设计卡归 S6(曾误标 S7 的历史案例已修) | `7_生成短视频大纲.md:150` | ✅ |
⚠️ 但**字段归属有一处空白** → 问题 #11:A 格式场次标题要求 `地点·时间`,而 S6 场次结构表 8 列里「场次」= 功能定位名(如"钩子场"),「地点·时间」无明确产出环节;S10 模板又改叫 `{场次名称}`。三处命名不齐,建议明确"地点·时间由 S9 从 S6 事件列具象化"并统一字段名。
### 三、引用链路完整(检查点 6-7)
**做对的地方:**
- 素材库引用机制正确:`7_生成短视频大纲.md:15` 明写「知识库 05_极致事件的极致类型映射定库 → 账号适用场景筛条」,符合清单第 7 条"素材库须走知识库 05 间接引用"。✅
- 子技能索引 6 项与实目录、注册名、相对路径全部一致(browser-harness / lieflat-charts / mcn-data-insight / mcn-dou-analysis / mcn-script-review / mcn-video-prompt)。✅
- 相对链接全量校验:100 条相对链接、39 条报错,逐条核对后 **37 条为输出模板占位符误报**(`[标题](workUrl)`、`[账号名](accountLink)`、`[规范](../接口调用/某文件.md)` 等示例写法),真错 3 处。
**真问题:**
- ❌ #1(P1)**S6→S7 断链**:S7 说「从 S6 场次结构表中取对应的模板骨架(三段式参考 S6 模板A,五段式参考 S6 模板B)」,而 S6 第 280 行明确「**模板A/B 仅供知识参考,非执行指令**:结构模板选择由 S7 执行,S6 不选择模板,也不在场次结构表中标注模板类型」。→ 下游假设的上游字段不存在。**建议**:把 S7 L31 改为「从知识库 `03_框架节奏/01_标准爆款结构模板.md` 取骨架(S6 模板A/B 仅为同源参考)」,或删掉对 S6 模板A/B 的指向。
- ❌ #2(P1)**工作台入口契约表漏登记 2 个入口**:契约表 8 行、L127 声明"前缀常量 = CREATE/EXTRACT/STORYBOARD/REVIEW",但 `data-pages.js` 实际还有 `SKILL_HINT_ANALYZE`(L1307 账号数据分析·功能四)与 `SKILL_HINT_VIDEO_PARSE`(L1728 视频解析/刷新·功能五)。SKILL.md 第 7 条(P0)要求"每个入口都必须遵守契约"且"新增/修改入口先读此表"。→ 表本身是漏的,护栏失效。**建议**:补 2 行(含 skills 数组、prompt 边界要点、代码位置),并同步 SKILL.md L81 的常量清单。
- ❌ #6(P2)`douyin-rise-ranking/references/core_workflow.md` 相对链接差一级:`../../SKILL.md`(同级 SKILL.md 用 `../../` 是对的,此文件深一层应为 `../../../`)、`[scripts/douyin_rise_fans.py](scripts/douyin_rise_fans.py)`、`[references/dy-rank-api.md](references/dy-rank-api.md)`(应加 `../`)。
### 四、一致性(检查点 8-12)
- ❌ #4(P1)**钩子家族术语未覆盖改名**:09-07 定稿的《概念分层与源头表述规范》§三要求"对外统一总称只保留一处(**开场钩子**);改名必须一次覆盖全链路(S 文件 + 知识库 + 工作台)"。实际残留:`开篇钩子`(S5 L187 小节标题)、`钩子预设`(SKILL.md L223;S5 L166/L265)、`钩子策略`/`开篇钩子策略`(S5 L229/255/294/411)。只有模板字段(S5 L320+)与规范 L431 用了正确的「开场钩子」。**建议**:以「开场钩子」为唯一总称,S5 小节标题与 3 处「钩子策略」统一,SKILL.md L223 同步。
- ❌ #3(P1)**交付门禁口径相反**:`创作流程规范.md:97`「无论何种模式,脚本交付(Gate-6 / 自动模式生成创作回顾)前**必须**完成八类35项自检;其中前3秒钩子…为一票否决项…**不过禁止生成创作回顾/交付**」;而 `SKILL.md:296-298`「步骤 11 脚本检查和诊断 🔶 可选步骤…S11 是可选质检,**由用户决定是否执行**」。八类35项清单(`知识库/09_脚本诊断/脚本质量自动检查清单_八类35项.md`)正是 S11 的工具。**建议**:明确"八类35项自检 = 交付前强制(可内嵌于 S9 收尾),S11 完整诊断报告 = 可选",并在两处统一表述。
- ❌ #5(P1)**旧技能名 + 乱码**:`创作流程规范.md:406`「相对于技能根目录 `脚本创作技能/`」——09-03 已更名「短视频工作台」,且 SKILL.md L381 记载的旧名是「短视频脚本创作技能」,两处记载的旧名本身也不一致;`创作流程规范.md:408` 有 1 个乱码字符(`AI 直接读��最新文件内容`)。
- ❌ #7(P1)**S5 输出声明漏字段**:`5_生成短视频选题.md:227`「5 个选题方案(每个含:主题 / 切入角度 / 爆款逻辑 / 差异化 / 人设匹配度 / 目标体感)」漏「开场钩子」「共鸣切入点」,而模板(L320+)与规范 L431 都要求。
- ❌ #12(P2)B·Vlog 规则行漏「表情」:规范 L275 `角色名(动作/语气):台词` vs 示例 L266 / S10 B4 `角色名(动作/表情/语气):台词`。
- ❌ #13(P2)S10 与 A 格式的场次标题格式假设不一致(`###` 三级标题 vs 加粗;`{场次名称}` vs `地点·时间`;`{情绪值}` vs `{值}`)。
- ✅ **概念分层(检查点 11)通过**:开场方式(策略层,S5 选)↔ 本场钩子(实现层,S6 场次表列)职责分层清楚,S5 L192 明写"S6 用「本场钩子」五类留人机制将其实现"、S6 L140 明写"场1 的本场钩子把 S5 已选定的开场方式实现出来",无跨文件对照表残留。✅
### 五、红线(检查点 13-14)
- ✅ **产物链完整**:`创作流程规范.md` §五 给出唯一权威落盘表 + 三模式落盘清单,SKILL.md §五 完全对齐。✅
- ✅ **标准库硬编码**:创作流程 / 知识库 / 素材库三区未发现账号名、角色名硬编码;素材库具体物品、产出目录 `MCNSkill项目/` 均属允许项(未误判)。✅
- ❌ #8(P1)**dou-analysis 侧 dsh 死分支未随 09-10 下线**(4 处,均作活规则):
- `mcn-dou-analysis/SKILL.md:160`「① 环境有 MCN 插件接口(dsh)时补录 `account_video_source`…② 工作台环境…」
- `references/feature/05_解析视频.md:55`「若当前环境有 MCN 插件接口(`/mcn/api/video/source/backfill`,…基地址 `$env:DSH_WEB_URL` 或 3081/3080)」
- `references/接口调用/本地接口调用规范.md`(整份文件基于 `DSH_WEB_URL` / 3080 / 3081 基地址判定)
- `references/铁律避坑规则/账号设定执行避坑.md:25`(连带引用上述规范)
→ 执行者可能去调用已不存在的本地接口。**建议**:统一口径为"工作台环境走 `POST /api/import/account`",删除 dsh 分支;`本地接口调用规范.md` 若整体失效则随技能一起下线(或改写为工作台 API 规范)。
- ❌ #9(P1)**「dsh 已下线」历史叙述未清干净**(同文件其它位置已清,属清理不彻底):
- `SKILL.md:78`「**dsh 侧已整套下线(09-10):`~/.dsh/mcn-plugin.db` 与 `D:\dshworkspace` 均不存在**」
- `mcn-dou-analysis/SKILL.md:42`、`references/路径配置.md:15`(正文公告)、`:28`(护栏带"已整套下线(09-10)")、`references/浏览器搜索抖音账号操作规范.md:175`
→ 与 09-10 已采纳的处置原则("历史叙述全删、陈述不存在的事物全删、护栏只留禁止做什么")及 `references-add/路径配置.md:26` 的已清理写法不一致。
- ❌ #16(P2)`帮助文档.md:43` 触发示例含真实账号名「俊希」;规范 §六 替换对照表把"俊希账号"作为**待替换**示例、L515 验证 grep 把 `俊希` 列入检索清单 → 自相矛盾。
### 六、冗余(检查点 15)
- ❌ #14(P2)`索引_知识素材库.md` 两处文件名与实际不符:`抽象化创作体系(星爷+沈腾喜剧手法)` / `错位化-反常化创作体系(本山+憨豆喜剧手法)` vs 实际文件名带空格 `(星爷 + 沈腾喜剧手法)` / `(本山 + 憨豆喜剧手法)` → 按索引定向读取会取不到文件。
- ❌ #15(P2)`索引_知识素材库.md:2` 阶段枚举「S5选题→S7大纲→S9脚本→S11诊断」漏 S6(核心依赖 03_框架节奏 + 07_情绪共鸣)与 S10(核心依赖 10_分镜拍摄)。
- ❌ #17(P2)`references-add/通用知识/03_Seedance与换皮工具箱.md:33` 仍把「括号内心独白(字幕)」列为技巧,与"内心独白已降级、统一用旁白"的定稿口径冲突。(其余 7 处「内心独白」出现在「禁止项 / 开场类型名 / 第三方词库」语境,属豁免,**未误判**。)
- ✅ 未发现"同一概念多处重复定义"的结构性冗余——S9 格式定义已收敛到规范 §三 + 知识库 `03_框架节奏/07`。
---
## 三、机械扫描支撑数据
| 项目 | 结果 |
|------|------|
| 扫描范围 | V1.0 全树 264 个 md(已排除 browser-harness / lieflat-charts / nuwa-skill-main / 参考skills / vendor / tmp 等原样分发目录) |
| 相对链接 | 100 条,报错 39 条 → 经逐条核对:37 条占位符误报、2 类真错(见 #1、#6) |
| 硬编码扫描 | 盘符/废弃环境/旧仓库名/账号名/本地端口/桌面字面量 六类全扫;当前规则行零违规,剩余命中全部落在四类豁免(禁止性示例行、变更记录、路径配置判定表、第三方技能原创文档) |
| 术语分布 | 钩子家族 4 叫法(#4)、内心独白 8 文件 10 处(1 处真冲突 #17)、「框架层」仅 1 文件命中(S6 第一步,S6 内三步定位词完整,**非问题**)、赛道编号 `S01-S27` 曾被正则误判为步骤号(**非问题**) |
| 步骤编号 | S1–S11 在 SKILL.md / 规范 / 11 个步骤文件全链路可追溯,无跳号 |
> 扫描脚本与原始输出(只读产物,可复跑):`tools/_audit_scan.py`、`tools/_audit_scan.txt`
---
## 四、修复方案(待授权,未执行)
建议按"一次改完一个主题、改一处验一处"的节奏分 3 批:
| 批次 | 主题 | 涉及 | 建议动作 |
|:---:|------|------|------|
| A | **口径统一(P1,影响执行)** | #1 #2 #3 #4 #7 | 6 个文件:S7 L31 改指向;契约表补 2 入口 + SKILL.md L81;S11 门禁口径两处统一;钩子术语统一为「开场钩子」;S5 L227 补 2 字段 |
| B | **dsh 残留清理(P1,红线)** | #8 #9 | 5 个文件:dou-analysis SKILL.md / feature 05 / 本地接口调用规范 / 账号设定执行避坑 / 路径配置 + 主 SKILL.md L78;活分支改为工作台 API,历史叙述按 09-10 原则删净 |
| C | **细节对齐(P2)** | #5 #6 #10–#17 | 索引文件名与阶段枚举、规范乱码与旧名、B 格式漏「表情」、S10 标题格式、帮助文档示例账号名、增量库旧口径 |
> 修复完成后按规范 §七执行"逐条读取→逐条修改→逐条验证",并把本轮发现沉淀进 `失误与规避记录.md`(新增条目)与 `references-add/变更日志.md`。
---
## 五、本次未覆盖(诚实声明)
按"链路层优先"口径,以下**未逐字通读**,若需深入请单独立项:
- `references/知识库/` 66 个方法文件的**内容级**审计(本次只做跨文件术语/引用交叉验证)
- `references/素材库/` 10 个库文件的**字段级**审计(15 字段一致性未逐库核对)
- 第三方原样分发子技能内部(browser-harness、lieflat-charts、mcn-video-prompt/参考skills、nuwa-skill-main)——按"上游原包不改"约定跳过
- `mcn-workshop` 前端/后端代码级审计(本次只核了 AI 任务入口契约这一条链路)