- 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
26 KiB
26 KiB
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删旧链 → PowerShellNew-Item -ItemType Junction -Path <link> -Target "D:\AI技能\mcn-short-video\project\短视频脚本创作\V1.0"。 - 验证:isSymbolicLink=true、children=7、SKILL.md 存在。
- 修法:node
- 待办(未执行,等用户确认):仓库内 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 个.cjsprompt 内 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/浏览器搜索抖音账号操作规范.md5.6 节 8 处盘符硬编码 → 相对.browser-lock(会话 cwd 即工作台目录)。 - 残留核对:
AgentSkill仅剩 13 处,全为豁免三类;mcn-video-script1 处、MCNVideo AI3 处均属历史文本。当前规则行零残留。 - 验证: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.cjsprompt 里写死的 DB 绝对路径AgentSkillmcn-workshopmcn-plugin.db(09-01 18:31)← 对应旧cwd+mcn-plugin.dbmcn-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
--checkOK;fetch_week_ranks.pypy_compileOK;工作台重启 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.js200、含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,曾误判为故障)
- 色彩:10 个
榜单更新「周不全」问题诊断(未修复,待用户确认)
- 用户现象:点「更新榜单」后,周榜数据期不全(相关周缺)。
- ★真相:本次更新本身是成功的——会话
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-labelmin-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}:sevvsseverity→ 读不到 → 兜底绿色(故全绿)"high"vs'高'→ 取值语言也不同fixvssuggestion→ 修改建议同样读不到、没显示(连带 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/英文值),让已有脏数据也能正确显色与显示建议。
★已按上述方案实施并推送(commit 0165144)
- 问题①前端兼容(
data-pages.js,diagScoreColor之后):新增normIssue()(pick 优先级 severity>sev>level>严重度;正则映射 高/high/h/p0/严重→高、中/mid/medium/m/p1→中、其余→低;issue/desc/text、suggestion/fix/suggest、dim/dimension、loc/position 多字段兜底)+issueLevelColor()+issueRowHtml()(渲染 严重度[色]+[维度]+问题+→建议)。三处issues.map(...)(原 2046/2108/2201)统一替换为issues.map(issueRowHtml)。.issue-row加flex-wrap: wrap防长文本挤压。 - 问题①prompt 固化:
submit-review-tasks.cjs的issues_json项改为带完整示例与禁用说明(禁止英文取值、禁止 sev/level 字段名);data-pages.js新增模块级常量REVIEW_ISSUE_RULE,拼进两组 fireReview prompt(2012/2014 与 2191/2193,共 4 处,已用 replace_all)。 - 问题②原创选题分镜:
dsh-data.js listStoryboards(videoId, rewriteId)—— rewriteId>0 且 videoId 不>0 时按rewrite_id查;server.js改为listStoryboards(qInt('videoId',0), qInt('rewriteId',0));前端新增sbQueryOf/fetchSb,storyboards改let,patchSide中 vid<=0 时按c.id重查(切版本正确);生成入口去掉vid>0限制;fireGenSb补落库指令(video_id / rewrite_id / script_text / status='done',表在会话 cwd 下 mcn-plugin.db)。 - 验证:4 文件
--check通过;归一化 6 组用例全对({sev:'high'}→高/红、{severity:'中'}→中/黄、空→低兜底);重启 HTTP 200;/api/dsh/storyboards?rewriteId=38返回 0 条(原创选题暂无分镜,接口已通)。版本号 → style.css20260910c、data-pages.js20260910d。 - 同步:commit
0165144(58 文件 +895/−263),push 到 origin/main(a69f930..0165144)。未跟踪且未纳入:flova_chat_raw.txt、flova短剧创作界面分析_20260907.md、mcn-work-shop/.workbuddy/、tools/(非本次改动或运行产物)。 - 验证: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/规则里再讲"何时废弃、曾有几个环境"对当前执行毫无价值。 - ★分类处置原则(可复用):
- prompt / 规则正文里的历史叙述 → 全删(模型与执行者只需要"现在怎么做")
- 代码注释里描述变更动作(如"09-10 去掉 dsh 分支:…")→ 删,只留定稿日期
- "无 dsh 分支"这类陈述不存在的东西 → 删(陈述一个不存在的事物=噪音)
- 文末「变更记录」历史区 / 变更日志.md → 保留(append-only 归档,是正常文档元数据,不是噪音)
- 禁止性护栏(如"不要再按 .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 部署环境"无关),不可动。