Files
mcn-short-video/技能审计报告_V1.0_20260914.md
maogeigei f77735b206 工作台:目录改名 mcn-workshop + 任务进度可见 + 会话归属配置化
1. 目录 mcn-work-shop -> mcn-workshop(空间分组名取会话 cwd 的目录名,只改字符串无效,必须真改名)
2. 全仓替换 mcn-work-shop -> mcn-workshop:37 文件 121 处;历史日志按沿革句规矩保留当时目录名
3. 任务进度可见:/api/run/status 产出 已运行时长/工具调用/最近动作/停滞判定(读会话日志尾部),前端新增右下角常驻面板,四处任务入口接入
4. 会话归属目录配置化:新增 config.sessionCwd(留空=工作台自身目录),现指向 D://AI技能//mcn-workshop,使任务显示为命名分组而非「未分组任务」
5. 修前端轮询静默缺陷:连续 3 次查询失败即提示服务断开(原逻辑静默空转到 15 分钟超时,用户零感知)
2026-10-08 13:09:06 +08:00

149 lines
17 KiB
Markdown
Raw Permalink 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.
# 技能审计报告 · 短视频工作台 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 任务入口契约这一条链路)