Files
mcn-short-video/.workbuddy/memory/2026-09-10.md
T
maogeigei 0165144292 09-10 工作台:配置收敛、复盘字段契约修复、原创选题分镜支持、榜单期号区间显示
配置收敛:
- 端口/DB名/产出根/榜单目录单源化到 mcn-work-shop/config.json,代码层统一经 load-config.js 读取
- 新增 get-port.js 供 start.bat 读端口(bat 内嵌 node -e 会被 cmd 截断,读到的是兜底值)
- start.bat 修复失效的 managed node 路径(原写死 22.22.2 已不存在),改为遍历 versions 自动探测

复盘诊断页(真 bug 修复):
- 问题清单严重度全部显示成绿色 + 修改建议不显示:模型输出 {sev:'high',fix} 与前端读取 {severity:'高',suggestion} 字段名与取值均不匹配
- 前端新增 normIssue 归一化,兼容 sev/severity/level 与中英取值,并回补所属维度显示
- 在 submit-review-tasks 与诊断/复盘 prompt 中固化 issues_json 字段契约,从源头防 schema 漂移

分镜提示词:
- 原创选题(video_id 为空)原本无生成入口(分镜按 video_id 查询)
- listStoryboards 支持按 rewrite_id 查询,前端放开入口、切版本重查,并补落库指令(此前入库靠模型自由发挥)

榜单展示:
- 期号改为显示区间「08/31 ~ 09/06」,避免被误读为单日(期号=该周周一)
- 后端新增 collectRanges,从落盘文件读真实 dateStart/dateEnd 随 API 返回(日榜 start=end 不显区间)

其他:
- 清理 dsh 环境废弃后的历史叙述类废话(16 文件约 18 处),文末变更记录区保留
- 新增 docs/工作台UI规范.md(设计 token / 布局 / 8 页面路由 / 12 类组件 / 9 条已知坑)
2026-09-10 18:28:42 +08:00

24 KiB
Raw Blame History

2026-09-10

打开工作台 + 仓库路径迁移发现

  • 启动 MCN工作台:D:\AI技能\mcn-short-video\project\短视频脚本创作\V1.0\mcn-work-shop\server.js 8900 → http://127.0.0.1:8900 返回 200,正常。
  • ★仓库本地路径已变更:D:\AgentSkill\mcn-video-script → D:\AI技能\mcn-short-video(D:\AgentSkill 已不存在)。
  • 技能软链失效并已修复:C:\Users\maidou\.workbuddy\skills\短视频工作台 原 junction → 失效旧路径 D:\AgentSkill\mcn-video-script\project\短视频脚本创作\V1.0(文件系统残留、目标不存在)。
    • 修法:node fs.unlinkSync 删旧链 → PowerShell New-Item -ItemType Junction -Path <link> -Target "D:\AI技能\mcn-short-video\project\短视频脚本创作\V1.0"。
    • 验证:isSymbolicLink=true、children=7、SKILL.md 存在。
  • 待办(未执行,等用户确认):仓库内 30+ 文件仍写死 D:\AgentSkill\... 旧路径(含 V1.0/SKILL.md、references-add/路径配置.md、V1.0/references/规则/路径引用规范.md、Lite1.0、各 subskills、mcn-work-shop/server.js、browser-harness venv 配置等),需做全量路径迁移(注意豁免三类:禁止性规则示例行、变更记录历史行、references-add/路径配置.md)。

路径治本:环境判定锚点重构为「仓库特征判定」+ 全树写死路径清理

  • 先分类再动手:全树扫描命中 77 处 AgentSkill,分三类——A 环境判定锚点 37 处(规范明确豁免)、B 真实读写路径 8 处(真违规)、C 历史/审计文本 8 处(豁免)。用户确认方案后执行。
  • 新判据(v2 · 两步):① 技能路径含 .dsh 路径段 → dsh 部署环境;② 不含 .dsh → git -C {技能目录} rev-parse --show-toplevel 返回仓库根 = 开发机,失败 = 用户环境(无 git 兜底向上找 .git)。必须 .dsh 先判(~/.dsh 自身是 git 仓库)。产出根目录三环境结果不变。
  • 实测验证:从软链 C:\Users\maidou\.workbuddy\skills\短视频工作台 执行 git rev-parse --show-toplevel → D:/AI技能/mcn-short-video,正确识别开发机。
  • 改动 21 文件:规范层(references/规则/路径引用规范.md + 4 份 subskills 副本 + 4 份 路径配置.md + README);判定节(dou-analysis / mcn-video-prompt 的 SKILL.md 与 references(-add));MCP 规范 2 份;Lite1.0(SKILL.md + 路径配置 + README)。
  • B 类修复:server.js 新增 BROWSER_LOCK_FILE = path.join(ROOT,'.browser-lock') / SESSION_CWD = ROOT;SESSION_CWD_PATTERN 由 '%mcn-workshop%' 放宽为 '%mcn-work%'(兼容历史+新建会话);2 个 .cjs prompt 内 DB 路径改用既有 DB 常量;V1.0/SKILL.md 运行时 cwds 改 <工作台目录>。
  • ★Lite1.0 结构事实:Lite1.0/ 下无 subskills/(实测),未内置 mcn-dou-analysis。原 SKILL.md 依赖段落既写死 D:\AgentSkill\mcn-dou-analysis 又未同步 09-02 结构变更 → 改为「未内置 + 需用请改用 V1.0,或先同步进 subskills 后按相对路径调用」。
  • BROWSER_LOCK 契约同步:dou-analysis references/浏览器搜索抖音账号操作规范.md 5.6 节 8 处盘符硬编码 → 相对 .browser-lock(会话 cwd 即工作台目录)。
  • 残留核对:AgentSkill 仅剩 13 处,全为豁免三类;mcn-video-script 1 处、MCNVideo AI 3 处均属历史文本。当前规则行零残留。
  • 验证:3 个 JS --check 通过;工作台重启后 8900 单实例监听、HTTP 200。
  • 沉淀:V1.0 SKILL.md frontmatter(updated_at 09-10 + last_change)、references-add/变更日志.md、失误与规避记录.md #017。
  • ★B 类违规的实锤后果(取证):D:\AI技能\mcn-workshop\ 下发现 3 个 0 字节垃圾文件,文件名是被剥掉反斜杠的完整路径:
    • AgentSkillmcn-video-scriptproject短视频脚本创作V1.0mcn-work-shopmcn-plugin.db(09-01 16:24)← 对应 build-create-prompts.cjs / submit-review-tasks.cjs prompt 里写死的 DB 绝对路径
    • AgentSkillmcn-workshopmcn-plugin.db(09-01 18:31)← 对应旧 cwd + mcn-plugin.db
    • mcn-plugin.db(09-01 12:26) 真实 DB 为 mcn-work-shop/mcn-plugin.db(4.2 MB,09-07 16:29)。→ 证明写死路径曾导致 AI 会话落库写偏(0 字节文件),与失误记录 #015「0 字节误建文件」同类。未删除,待用户确认。
  • 未处理/待确认:① D:\AI技能\mcn-workshop\ 3 个 0 字节垃圾文件是否清理(该目录还有 outputs/ 09-01~09-04 产物,勿整体删);② D:\AgentSkill 整目录已不存在,用户级 MEMORY.md 里 ThirdPartySkills / AgentPlatform 两个仓库的本地路径也一并失效(maxdepth 3 未搜到迁移后位置)。

dsh 部署环境废弃:三环境 → 两环境(判定简化为一步)

  • 触发:用户纠正「第一步 技能路径含 .dsh 路径段 ② dsh 部署环境 —— 没有这个环境了」。实测:~/.dsh/skills/ 不存在、~/.dsh/mcn-plugin.db 不存在、~/.dsh 仅剩 profiles/、D:\dshworkspace 整个目录不存在。
  • 判据 v3(一步):删 .dsh 路径段判定步骤,仅保留 git -C {技能目录} rev-parse --show-toplevel = 仓库根=开发机 / 失败=用户环境(无 git 兜底向上找 .git)。三环境 → 两环境。产出结果不变(两环境本就同构桌面 MCNSkill项目/)。
  • 改动范围(20+ 文件,续 v2):
    • 判定层:4 份 路径配置.md(V1.0/Lite1.0 + dou-analysis + video-prompt)
    • SKILL 层:V1.0/Lite1.0/dou-analysis/video-prompt/data-insight 的 SKILL.md
    • 标准库:5 份 路径引用规范.md(三种机器→两种机器)+ 创作流程规范 + 11_脚本检查和诊断 + 4_账号设定解析和确认 + MCP_工具调用规范 + 自动化任务清理规范
    • 数据源层:fetch_week_ranks.py(删 .dsh 分支代码)、dsh-data.js(删 isDshDeploy 分支)、data-pages.js、douyin-{rise-ranking,weekly-surge,content-surge,daily-hot}/SKILL.md、抖音数据规则.md
    • 账号分析层:账号数据分析方法 + feature/01,03,04,06 + 铁律避坑规则/账号信息获取执行避坑 + 浏览器搜索抖音账号操作规范(159/175)
    • README:references-add/README + dou-analysis/video-prompt 的 references(-add)/README
  • 清理「dsh 原库」过时描述:dou-analysis SKILL.md 52 行 + 铁律避坑 32/34 行 + feature/01 16 行 + dsh-data.js 13 行注释(dsh 原库已下线,工作台 DB 唯一读写副本)。
  • 残留核对:全树扫描 .dsh/dshworkspace/dsh 部署/dsh 环境/dsh_MCNProject/②dsh/③用户环境 —— 当前有效规则零残留,剩余全为豁免(变更记录历史行 +「09-10 起 dsh 环境已废弃」说明 + 路径引用规范用户级路径示例 {主目录}/.dsh/...)。
  • 验证:dsh-data.js --check OK;fetch_week_ranks.py py_compile OK;工作台重启 HTTP 200。
  • 沉淀:变更日志新增 09-10 dsh 废弃条目;V1.0 SKILL.md frontmatter last_change 更新。
  • 踩坑:并行 Edit 同一文件(浏览器搜索抖音账号操作规范.md 159/175 行)发生写竞态,175 行修改丢失 → 串行补做。教训同 #016「同文件多处修改必须串行」。

工作台配置收敛:端口/DB/目录单源化(config.json + load-config.js)

  • 触发:用户问「这些设定能否用配置,所有文件和脚本都引用,避免有调整时到处修改」。确认:只收敛代码层 + config.json 放 mcn-work-shop 内。
  • 新增:mcn-work-shop/config.json(port/dbName/outputRoot/businessDataDir/extraRoots)+ mcn-work-shop/load-config.js(读取唯一入口 + 默认值唯一来源)。
  • 改动:
    • server.js:CFG = loadConfig();PORT_BASE = argv[2] || CFG.port(argv 仍优先);DEFAULT_ROOT 用 CFG.outputRoot;DB 用 CFG.dbName;saveConfig 合并写盘保留其它字段;错误提示 dbName 动态化。
    • dsh-data.js:删本地 loadCfg,DSH_DB / 榜单目录改 CFG。
    • 4 个辅助 .cjs(build-create-prompts / submit-review-tasks / poll-create-tasks / poll-review-tasks):DB / API 端口 / prompt 内 dbName 字面量 → CFG 动态。
    • public/data-pages.js:新增 const BASE = location.origin,SKILL_HINT_VIDEO_PARSE / SKILL_HINT_ANALYZE / saveHintOf 里 3 处 http://localhost:8900 改 BASE(前端读不到 server 端 config.json,用 location.origin 让回调端口自动跟随当前访问地址)。
    • start.bat:端口用 for /f + load-config 读 config.json,不再写死 8900。
  • ★踩坑(重要):load-config.cjs 用 .cjs 扩展名时 require('./load-config') 无扩展名解析 MODULE_NOT_FOUND(Node 不把 .cjs 当无扩展 require 目标)→ 改名 load-config.js(无 package.json,默认 CommonJS)即自动生效。node --check 只查语法不执行 require,此坑运行时才暴露。
  • 验证:8 文件 --check 全通过;loadConfig() 正确读回全字段;工作台重启 HTTP 200(端口/产出根均从 config 读)。
  • 沉淀:变更日志新增配置收敛条目;V1.0 SKILL.md frontmatter last_change 更新。

配置收敛后功能验证 + start.bat 修复

  • 实测功能正常:重启后逐个探测依赖 config 的接口——/api/roots 返回 defaultRoot=C:\Users\maidou\Desktop\MCNSkill项目(CFG.outputRoot 生效)、/api/dsh/stats(accounts 7 / analyses 12 / rewrites 27 / reviews 11,CFG.dbName 生效)、/api/dsh/accounts、/api/dsh/rewrites、/api/dsh/ranking(250 条榜单,CFG.businessDataDir 生效)全部 200 且数据正确。前端 index.html 引用 5 个静态资源(echarts/app.js/help-guide.js/data-pages.js/style.css)5/5 可用;/data-pages.js 200、含 const BASE = location.origin、无 localhost:8900 残留。★静态资源是根映射 /data-pages.js,不是 /public/data-pages.js(后者 404,曾误判为故障)。
  • ★start.bat 既有 bug(非本次引入,顺手修复):写死的 managed node 路径 ...\versions\22.22.2\node.exe 已不存在(实际 22.22.2-3)→ 原逻辑静默回退系统 node。改为 for /d 遍历 %USERPROFILE%\.workbuddy\binaries\node\versions\* 自动探测,版本升级免改脚本。
  • ★bat 内嵌 JS 的坑:for /f ... in (node -e "console.log(require('./load-config')...)") 被 cmd 解析截断报错(引号/括号/单引号嵌套)→ 端口读到的是兜底值而非真实值(表面 8900 看着对,实则没读 config)。改为独立脚本 get-port.js(console.log(require('./load-config').loadConfig().port)),bat 只执行简单命令 "%NODE_EXE%" get-port.js。
  • 实证方法:临时把 config.json port 改 8905 → start.bat 输出 PORT=8905(证明真读 config,非兜底)→ 改回 8900。区分技巧:测试脚本里把兜底值写成 FALLBACK8900,输出 8900 才说明是真读。
  • 踩坑(工具层):用 node -e 生成 .bat 时,路径里的 \n(如 \binaries\node)被 JS 当换行转义,生成坏 bat 报「命令语法不正确」。生成 bat 要用 Write 工具写后,再用 node 把 LF 统一转 CRLF(t.replace(/\r?\n/g,'\r\n'))——cmd 对 LF 换行解析异常。

工作台 UI 规范文档梳理

  • 产出:mcn-work-shop/docs/工作台UI规范.md(新建)。全部从 style.css(824 行)/app.js/data-pages.js/index.html 提取现状基线,非凭空制定。
  • 结构:技术基线 → 设计语言 → 设计 token → 布局框架 → 页面路由(8 个) → 组件规范(12 类) → 关键交互约定 → 已知坑(9 条) → 迭代流程 → 文件索引。
  • ★关键事实(后续 UI 迭代直接查文档,此处留索引):
    • 色彩:10 个 :root 变量(bg/panel/border/text/dim/primary/primary-soft/accent/danger/shadow)+ 扩展色(表头 #f6f8fa、链接 #4a90e2、主色 hover #2a5fd0、文件类型色 md紫/json红/xlsx绿/txt灰)
    • 圆角阶梯 6/8/10/12/14px;z-index:顶栏 10 / 弹窗遮罩 100 / Toast 200(表头 sticky 为 1)
    • 滚动铁律:html,body{overflow:hidden} + main#view{height:calc(100vh - 55px)}——55px 是实测值(padding20+行高34+边框1),写 54px 底部溢出 1px 触发第二层滚动条
    • 榜单表格必须 table-layout:fixed:auto 布局下 100% 表格富余空间按比例摊薄,min-width 压不住
    • 榜单三 tab 行高必须统一:表格 td 固定 42px(功能列 btn-sm 撑高,其他 tab 本仅 34.7px)、首页预览行 min-height 40px,否则切换整表跳动
    • 两套同名 .tabs/.tab 并存:顶栏胶囊式(L38-45,active 蓝底白字)vs 数据页下划线式(L520-523,active 蓝字+蓝下划线,后者覆盖前者)→ 新增页须确认拿到哪套
    • .modal-mask[hidden] 必须显式 display:none(.modal-mask 是 flex,会覆盖 HTML hidden 属性→弹窗关不掉)
    • 数值列:右对齐 + font-variant-numeric: tabular-nums(不加会导致翻页时数字左右跳)
    • 图标:.ic{vertical-align:-0.18em}(去掉会与文字基线错开);svgIcon() Lucide 24×24 stroke2 + ICON_COLORS 功能色映射
    • 字段对齐用 grid 列轨道共享(R44/R45:每行独立 flex 会被内容长短顶偏;超宽字段如「账号定位」要移出共享网格,否则把轨道撑成等宽 232.5px 大片留白)
    • 静态资源根映射 /data-pages.js(/public/xxx 一律 404,曾误判为故障)

榜单更新「周不全」问题诊断(未修复,待用户确认)

  • 用户现象:点「更新榜单」后,周榜数据期不全(相关周缺)。
  • ★真相:本次更新本身是成功的——会话 624d7a3e(标题「更新榜单数据」,cwd=mcn-work-shop)实际执行 8 次 API、落盘 8 个 JSON:视频热榜/点赞榜各 08-31(2 次,fetch_week_ranks.py --board both)、账号日榜 09-08(1 次,fetch_rank.py --period day)、账号周榜 5 赛道各 08-31(5 次)。无缓存跳过、无失败。
  • 根因(设计缺口,非执行失败):SKILL_HINT_RANKING 的语义是只抓「最新一期」+ 幂等跳过已存在,没有任何回溯补齐缺失期次的逻辑 → 历史缺口永远补不上。
  • 实测期次现状(/api/dsh/ranking 返回的 dates):
    board 日期列表 说明
    week 账号周榜 08-31/08-24/08-17/08-10 4 周完整(历史累积)
    hot 视频热榜 08-31/08-24 缺 08-10、08-17(09-03 才上线该榜)
    likes 点赞榜 08-31/08-24 缺 08-10、08-17
    day 账号日榜 09-08/09-02 缺 09-03~09-07 共 5 天(期间没点更新)
    → 用户切 tab 时看到 week 有 4 周而 hot/likes 只有 2 周,即"没有所有相关周"。
  • 脚本能力是够的(没用上):fetch_week_ranks.py 有 --date(周标号周一)与 --force;fetch_rank.py 有 --date(目标日期)。完全可指定历史期次补齐,但 prompt 里没要求。
  • 补齐成本估算:hot 2 周 + likes 2 周 + day 5 天 = 9 次红狐 API(按次计费,需用户确认)。
  • 附带发现(非 bug,设计如此,易被误认为数据少):dsh-data.js 的 RANK_KEEP=[生活记录,生活vlog,小剧场,亲子,美食,旅行],board!=='week'(即 day/hot/likes)在条目层做白名单过滤→文件 50 条被筛成:hot 28、likes 24、day 仅 10。日榜只剩 10 条最反直觉。修改口径需动 dsh-data.js:490-495。
  • ★★最终结论(红狐官方规则,账号周榜无问题):用户追问「为什么没有 9 月 7 号周榜」。实测 fetch_rank.py --period week --date 2026-09-07 → API 报错 code=3203,红狐返回原文:

    查询结果为空…常见原因:①日期未到更新时间——日榜每日 20:00 后可查昨日、周榜每周一 20:00 后可查上周、月榜每月 1 号后可查上月;②周榜应传该周周一… → 账号周榜(week)最新可用期就是上一周,09-07 周要等 09-14(下周一)20:00 后才出榜。所以 09-10 时最新一期为 08-31 是正确的,此前会话「本周未走完」的解释结论正确(措辞可更精确为"红狐周榜周一 20:00 后才出上周完整榜")。

  • 热榜/点赞榜是另一套 API,口径不同(可滚动):fetch_week_ranks.py --date 2026-09-07 实测能返回完整 50 条(dateStart=09-07/dateEnd=09-13,首条发布 09-07 22:59)。因其为作品榜滚动聚合,未结束的周也有数据;但这是本周至今的滚动值,明天再取会变。
  • 默认统一取上一周是刻意对齐(非 bug):四个榜若 hot/likes 取本周、week 取上周,会出现同期不同期号(热榜 09-07 / 账号榜 08-31)造成困惑。故 last_full_week() 与 _get_smart_offset()=1 统一回退一期,是与账号榜(受 API 硬限制)对齐的结果。
  • 结论:功能本身没问题,是红狐数据规则所致。若用户坚持要热榜"本周滚动值",需接受与账号榜不同期,可单独加(用 --date <本周一>)。
    • 用 fetch_week_ranks.py --board hot --date 2026-09-07(输出到临时目录 D:/tmp/ranktest-0907)→ 成功返回完整 50 条(72.3KB,dateStart=2026-09-07 / dateEnd=2026-09-13,首条发布时间 2026-09-07 22:59:51)。
    • 即红狐 API 对「进行中的本周」照样返回完整 50 条,不是"没出榜"。
    • 真正原因:脚本默认策略主动回退一期——fetch_week_ranks.py 的 last_full_week()(本周一 −7 天)与 fetch_rank.py 的 _get_date_range(offset=1)(注释明写"默认 1(上一期)")。两者都支持抓本周:fetch_week_ranks.py --date <本周一>;fetch_rank.py 关键词映射里 ("本周", 0, ...) 即 offset=0,或 --date 2026-09-07。
  • 待用户决策:是否把默认口径从「上一完整周」改为「本周」。注意本周数据是滚动的(每天都在变,今天抓的 09-07 周榜明天会更新),原设计选上一完整周可能是为归档稳定性。可选:①本周优先(新,滚动)②保留上周为归档 + 额外抓本周标「进行中」③保持现状由用户手动 --date 补。
  • 赛道筛选正常(用户已确认不是问题):RANK_KEEP 白名单过滤符合设计,勿动。

榜单期号显示改为区间(已实施)

  • 诉求:用户理解 08-31 已是最新周后,要求改展示方式——期号 2026-08-31 易被误读成"仅 8/31 单日",实际覆盖 08-31~09-06。
  • 改动:
    • dsh-data.js:新增 collectRanges(board, files)(读落盘文件的 dateStart/dateEnd,按 date 去重取首个文件)→ rankingMeta 与 getRanking 均返回 ranges: {date:{start,end}}(empty 也补 ranges:{})。不前端推算周日,用文件真实区间更准(日榜 start=end)。
    • app.js:新增全局 fmtRankPeriod(date, ranges)(定义在 fmtSize 后,data-pages.js 可直接用——同全局脚本作用域);_rankPreview 加 ranges,首页预览日期标签改用它。
    • data-pages.js:mkState 加 ranges、loadMeta 存 s.ranges、榜单页 toolbar 日期改 fmtRankPeriod 并加 rank-period 类。
    • style.css:.rank-date-label min-width 62→104px(容纳"08-31 ~ 09-06",防切期抖动);新增 .rank-period{min-width:104px;text-align:center;display:inline-block;white-space:nowrap}。
  • 显示结果:周榜「08-31 ~ 09-06」、日榜「09-08」(单日不显区间)、缺 ranges 时兜底原期号。
  • 格式微调(同日):用户偏好斜杠 → mm 增加 .replace(/-/g,'/'),最终显示**「08/31 ~ 09/06」/ 日榜「09/08」**。app.js、style.css 版本号 → 20260910b。

复盘诊断页两个问题定位(未修,待确认)

  • 问题①:叙事逻辑 60 分标黄,但问题清单全绿(真 bug,且连带一个)。
    • 根因=落库字段契约不匹配:submit-review-tasks.cjs 的 prompt 只写 issues_json=问题清单 JSON,未规定 schema → 模型自由发挥。
    • 实测 script_review.id=13(total=60,用户所看)原始 issue: {"sev":"high","dim":"叙事逻辑","loc":"场8…","issue":"时间线矛盾…","fix":"改成…","step":"S7…"}
    • 前端 data-pages.js:2046/2108/2201 读的是 {severity:'高'/'中', issue, suggestion}:
      • sev vs severity → 读不到 → 兜底绿色(故全绿)
      • "high" vs '高' → 取值语言也不同
      • fix vs suggestion → 修改建议同样读不到、没显示(连带 bug,用户尚未提及)
    • 数据佐证:6 条记录里 id=13/11/9/8 的 severity 全空,仅 id=12("低")、id=10("中"2/"低"6) 有中文值 → 模型输出不稳定,schema 必须固化。
    • 评分条颜色是另一套:diagScoreColor = v>=75?'#3a9e6d':v>=60?'#d99a2b':'#d9534f'(60→黄),与 severity 无关,故出现"60分黄+问题全绿"的矛盾观感。
  • 问题②:分镜提示词没有生成按钮(非 bug,设计限制)。
    • 该脚本 rewrite_log.id=38 的 video_id=null(原创选题)。
    • data-pages.js:2290-2295:vid>0 才渲染「生成分镜」按钮;否则显示"该脚本为原创选题(无关联视频),暂不支持分镜提示词"。
    • 后端 dsh-data.js:302 查询 storyboard_log WHERE video_id=? —— 只按 video_id,原创选题查不到。
    • 若要支持:storyboard_log 本身有 rewrite_id 字段,需改后端查询支持 rewriteId + 前端入口放开 + 生成 prompt 改落 rewrite_id。
  • 修复方向(待用户定):①在 submit-review-tasks.cjs(及复盘弹窗 prompt)固化 issues_json schema(建议沿用技能规范中文「高/中/低」+ 字段名 severity/issue/suggestion/dim/loc/step);②前端加字段容错(同时兼容 sev/fix/英文值),让已有脏数据也能正确显色与显示建议。
  • 验证:3 文件 --check 通过;四榜 API 均返回 ranges(week 4 期/hot·likes 2 期/day 2 期,区间正确);版本号 bump style.css+app.js→20260910a、data-pages.js→20260910c;重启 HTTP 200。

清理「dsh 已废弃」类废话(用户指出)

  • 触发:用户指出 SKILL_HINT_RANKING 里「09-10 起 dsh 环境已废弃,无 dsh 分支)」属于废话——环境都没了,prompt/规则里再讲"何时废弃、曾有几个环境"对当前执行毫无价值。
  • ★分类处置原则(可复用):
    1. prompt / 规则正文里的历史叙述 → 全删(模型与执行者只需要"现在怎么做")
    2. 代码注释里描述变更动作(如"09-10 去掉 dsh 分支:…")→ 删,只留定稿日期
    3. "无 dsh 分支"这类陈述不存在的东西 → 删(陈述一个不存在的事物=噪音)
    4. 文末「变更记录」历史区 / 变更日志.md → 保留(append-only 归档,是正常文档元数据,不是噪音)
    5. 禁止性护栏(如"不要再按 .dsh 路径段做分支判断")→ 精简保留:去掉日期与"已下線"经过叙述,只留"禁止做什么"
  • 改动 16 个文件约 18 处:data-pages.js(prompt)、dsh-data.js(注释)、3 份 路径配置.md(V1.0/Lite1.0/video-prompt,删变更公告+"无 dsh 分支"+护栏精简)、V1.0+Lite1.0 的 references-add/README.md、mcn-video-prompt 的 SKILL.md + references/README.md + references-add/README.md、mcn-dou-analysis SKILL.md + references-add/README.md(2)、douyin-weekly-surge SKILL.md、MCP_工具调用规范.md、mcn-data-insight SKILL.md、创作流程规范.md。
  • 验证:dsh-data.js / data-pages.js --check 通过;版本号 bump 至 ?v=20260910b;工作台重启后接口全 200(榜单日期新增 2026-08-31 一期,读取正常);/data-pages.js 字符数 145080→145053(正好少 27 = 删掉那句)。
  • 注意:data-pages.js 里剩余 44 处 dsh 全是 /api/dsh/* 接口路径与代码标识符(工作台 API 命名空间,与"dsh 部署环境"无关),不可动。