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 条已知坑)
This commit is contained in:
maogeigei committed 2026-09-10 18:28:42 +08:00
1 parent 3926d742fd
commit 0165144292
58 files changed
+895 -263

No files matched your search

@@ -499,11 +499,11 @@ F4 输出 = 主题 + 导演阐述 + 完整提示词(代码块包裹)。多
### 二、过程产物目录(产出落盘位置)
> **⛔ 产出路径唯一权威:`references-add/路径配置.md`**。执行分镜创作前必须先读该文件;用户自定义路径优先。默认路径按运行环境判定(两步:第一步查本机 `D:\AgentSkill` 是否存在——**无 = ③用户环境**(技能无论装在哪、什么路径);有 → 第二步看技能自身路径——**在 `D:\AgentSkill\` 下 = ①开发机**、**含 `.dsh` = ②dsh 环境**):dsh 环境**优先操作主工作区** `D:\dshworkspace\创作任务\`(与脚本创作技能同根同构),无主工作区时并入用户环境;开发机/用户环境为**用户桌面 `MCNSkill项目/`**(**账号层直挂**:`{账号名}/提示词{编号}/`,与脚本创作「脚本{编号}」同构,Windows/macOS 自动适配)。按账号名/提示词编号建子目录(编号默认继承上游脚本编号)。
> **⛔ 产出路径唯一权威:`references-add/路径配置.md`**。执行分镜创作前必须先读该文件;用户自定义路径优先。默认路径按运行环境判定(一步 · **仓库特征判定**:看技能是否处于源技能 git 检出内(`git -C {技能目录} rev-parse --show-toplevel` 返回仓库根)——**在 = ①开发机**、**不在 = ②用户环境**(技能无论装在哪、什么路径)):开发机与用户环境**同构**,均为**用户桌面 `MCNSkill项目/`**(**账号层直挂**:`{账号名}/提示词{编号}/`,与脚本创作「脚本{编号}」同构,Windows/macOS 自动适配)。**09-10 起无 dsh 环境**(`~/.dsh/skills/` 与 `D:\dshworkspace` 均不存在),不再有 dsh 分支。按账号名/提示词编号建子目录(编号默认继承上游脚本编号)。
```
D:\dshworkspace\创作任务\ ← dsh 环境优先根目录(主工作区「创作任务」,与脚本创作同根;无主工作区时并入用户环境)
└── {账号名}/ ← 对应账号(从上游脚本创作上下文继承,来自 references-add/路径配置.md;开发机/用户环境为 桌面 MCNSkill项目/{账号名}/,账号层直挂)
桌面 MCNSkill项目/ ← 唯一产出根目录(开发机/用户环境同构,Windows/macOS 自动适配)
└── {账号名}/ ← 对应账号(从上游脚本创作上下文继承,来自 references-add/路径配置.md;账号层直挂)
└── 提示词{编号}/ ← 与「脚本{编号}」平级(编号默认继承上游脚本编号)
├── 00_剧本分析.md ← Step 1 剧本分析(5维度)
├── 01_需求分析与路径.md ← Step 2-3 需求分析+路径分流
@@ -528,13 +528,12 @@ D:\dshworkspace\创作任务\ ← dsh 环境优先根目录(主
### 部署环境检测
根据**两步判定模型**判断当前环境(第一步查本机 `D:\AgentSkill` 是否存在;有 → 第二步看技能自身路径):
根据**一步判定模型(仓库特征判定)**判断当前环境(看技能是否处于源技能 git 检出内):
| 环境 | 判定条件 | 增量机制 | 新增内容写入位置 |
|:---:|:---|:---|:---|
| **①开发机** | 本机有 `D:\AgentSkill` 且技能路径在 `D:\AgentSkill\` 下 | 不启用 references-add/ | 直接写入 `references/` 对应子目录 |
| **②dsh 部署环境** | 本机有 `D:\AgentSkill` 且技能路径含 `.dsh` | 启用 references-add/ | 写入 `references-add/` 对应子目录,不修改 `references/` |
| **③用户环境** | 本机无 `D:\AgentSkill`(技能无论装在哪、什么路径,如 `~/.workbuddy/skills/...`) | 启用 references-add/ | 写入 `references-add/` 对应子目录,不修改 `references/` |
| **①开发机** | 技能处于源技能 git 检出内(`git -C {技能目录} rev-parse --show-toplevel` 返回仓库根) | 不启用 references-add/ | 直接写入 `references/` 对应子目录 |
| **②用户环境** | 技能不在任何 git 检出内(技能无论装在哪、什么路径,如 `~/.workbuddy/skills/...`) | 启用 references-add/ | 写入 `references-add/` 对应子目录,不修改 `references/` |
### 冲突检测与修复
@@ -7,7 +7,7 @@
```
references-add/
├── README.md ← 本文件
├── 路径配置.md ← 产出路径唯一权威(dsh 环境优先 `D:\dshworkspace\创作任务\`、无主工作区时并入用户环境;开发机/用户环境 桌面 MCNSkill项目/{账号名}/提示词{编号}/ 账号层直挂,运行时必读)
├── 路径配置.md ← 产出路径唯一权威(开发机/用户环境同构:桌面 MCNSkill项目/{账号名}/提示词{编号}/ 账号层直挂。运行时必读)
├── 制作流程/ ← 新增/变更的制作流程文件
├── 接口调用/ ← 新增的 API 接口文档与平台规范
└── 知识库/ ← 新增知识(15 维度,与 references/ 结构对应)
@@ -38,13 +38,12 @@ references-add/
### 部署环境检测
根据**两步判定模型**判断当前环境(第一步查本机 `D:\AgentSkill` 是否存在;有 → 第二步看技能自身路径):
根据**一步判定模型(仓库特征判定)**判断当前环境(看技能是否处于源技能 git 检出内):
| 环境 | 判定条件 | 增量机制 | 新增内容写入位置 |
|:---:|:---|:---|:---|
| **①开发机** | 本机有 `D:\AgentSkill` 且技能路径在 `D:\AgentSkill\` 下 | 不启用 references-add/ | `references/` 对应子目录 |
| **②dsh 部署环境** | 本机有 `D:\AgentSkill` 且技能路径含 `.dsh` | 启用 references-add/(本目录) | `references-add/` 对应子目录 |
| **③用户环境** | 本机无 `D:\AgentSkill`(技能无论装在哪、什么路径) | 启用 references-add/(本目录) | `references-add/` 对应子目录 |
| **①开发机** | 技能处于源技能 git 检出内(`git -C {技能目录} rev-parse --show-toplevel` 返回仓库根) | 不启用 references-add/ | `references/` 对应子目录 |
| **②用户环境** | 技能不在任何 git 检出内(技能无论装在哪、什么路径) | 启用 references-add/(本目录) | `references-add/` 对应子目录 |
### 冲突检测与修复
@@ -81,7 +80,7 @@ references-add/
## 运行时加载规则
**仅非开发机环境生效**(②dsh 部署环境/③用户环境,即本机无 `D:\AgentSkill` 或技能路径含 `.dsh` 时)。同时加载 `references/` 和 `references-add/` 的内容,两者冲突时**以 references-add/ 为主**:
**仅非开发机环境生效**(②用户环境,即技能不在任何 git 检出内时)。同时加载 `references/` 和 `references-add/` 的内容,两者冲突时**以 references-add/ 为主**:
| 维度 | 加载规则 |
|:---|:---|
@@ -5,13 +5,12 @@
## 一、默认路径(用户未自定义时生效)
**先判定运行环境(两步:第一步查本机 `D:\AgentSkill` 是否存在——无 = 用户环境;有 → 第二步看技能自身路径),再按运行系统解析桌面路径:**
**先判定运行环境(一步 · 仓库特征判定:看技能是否处于源技能 git 检出内),再按运行系统解析桌面路径:**
| 判定步骤 | 条件 | 环境 | 默认产出根目录 |
| 判定 | 条件 | 环境 | 默认产出根目录 |
|:---|:---|:---|:---|
| 第一步 | 本机**无** `D:\AgentSkill`(源技能仓库目录,只存在于开发机) | ③ 用户环境(技能无论装在哪、什么路径) | 用户桌面 `MCNSkill项目/`(**账号层直挂**:`{账号名}/提示词{编号}/`,与脚本创作「脚本{编号}」同构) |
| 第二步 | 本机有 `D:\AgentSkill`,且技能路径在 `D:\AgentSkill\` 下 | ① 开发机(源技能) | 用户桌面 `MCNSkill项目/`(**账号层直挂**:`{账号名}/提示词{编号}/`,与脚本创作「脚本{编号}」同构) |
| 第二步 | 本机有 `D:\AgentSkill`,且技能路径含 `.dsh`(如 `C:\Users\{用户名}\.dsh\skills\storyboard-prompt`) | ② dsh 部署环境 | **优先** `D:\dshworkspace\创作任务\`(主工作区「创作任务」目录);无主工作区时并入用户环境 → 桌面 `MCNSkill项目/` |
| 一步判定 | 技能**处于源技能 git 检出内**(`git -C {技能目录} rev-parse --show-toplevel` 返回仓库根) | ① 开发机(源技能) | 用户桌面 `MCNSkill项目/`(**账号层直挂**:`{账号名}/提示词{编号}/`,与脚本创作「脚本{编号}」同构) |
| 一步判定 | 技能**不在任何 git 检出内**(技能无论装在哪、什么路径) | ② 用户环境 | 用户桌面 `MCNSkill项目/`(**账号层直挂**:`{账号名}/提示词{编号}/`,与脚本创作「脚本{编号}」同构) |
桌面路径按运行系统自动解析:
@@ -21,7 +20,8 @@
| macOS | `~/Desktop/`(即 `/Users/{用户名}/Desktop/`) |
**AI 执行规则:**
1. 先按两步判定运行环境——第一步查本机 `D:\AgentSkill` 是否存在(**无 = ③用户环境**,技能无论装在哪、什么路径);有 → 第二步看技能自身路径(**在 `D:\AgentSkill\` 下 = ①开发机**;**含 `.dsh` = ②dsh 环境**)。再按上表确定产出根目录(dsh 环境 → **优先操作** `D:\dshworkspace\创作任务\`,主工作区 `D:\dshworkspace` 存在即用(「创作任务」子目录不存在则创建);无主工作区时并入用户环境 → 桌面 `MCNSkill项目/`;开发机/用户环境 → 桌面 `MCNSkill项目/`,**账号层直挂**(`{账号名}/提示词{编号}/`,与脚本创作同构))
1. 先按一步判定运行环境(**仓库特征判定**)——看技能是否处于源技能 git 检出内(`git -C "{技能目录}" rev-parse --show-toplevel` 返回仓库根 = **①开发机**,命令失败 = **②用户环境**;无 git 环境时兜底为从技能目录向上逐级查找 `.git`)。再按上表确定产出根目录(开发机/用户环境**同构** → 桌面 `MCNSkill项目/`,**账号层直挂**(`{账号名}/提示词{编号}/`,与脚本创作同构))
- ⚠️ 禁止按 `.dsh` 路径段或 `D:\dshworkspace` 做任何分支判断(该部署环境已不存在)
2. 再判断当前运行系统(Windows / macOS),拼接桌面路径
3. 目录不存在则自动创建
4. 产出结构:`{产出根目录}/{账号名}/提示词{编号}/…`(内部文件结构不变,仅根目录可变)
@@ -31,9 +31,9 @@
**产出结构示例(6步流程产物):**
```
D:\dshworkspace\创作任务\ ← dsh 环境优先根目录(主工作区「创作任务」,与脚本创作同根;无主工作区时并入用户环境)
桌面 MCNSkill项目/ ← 唯一产出根目录(开发机 / 用户环境同构;Windows/macOS 自动适配)
└── {账号名}/ ← 对应账号(从上游脚本创作上下文继承,与脚本创作同口径)
└── 提示词{编号}/ ← 与「脚本{编号}」平级(编号默认继承上游脚本编号;开发机/用户环境为 桌面 MCNSkill项目/{账号名}/提示词{编号}/,账号层直挂)
└── 提示词{编号}/ ← 与「脚本{编号}」平级(编号默认继承上游脚本编号)
├── 00_剧本分析.md ← Step 1 剧本分析(5维度)
├── 01_需求分析与路径.md ← Step 2-3
├── 02_段1提示词.md ← Step 4(多段时 02/03/04… 递增)
@@ -58,7 +58,7 @@ D:\dshworkspace\创作任务\ ← dsh 环境优先根目录(主
## 三、解析规则(优先级从高到低)
1. 本文件「用户自定义路径」记录 → 用自定义路径(最新一条生效)
2. 本文件默认路径 → 先按两步判定运行环境(第一步查本机 `D:\AgentSkill` 是否存在:无 = ③用户环境;有 → 第二步看技能路径:在 `D:\AgentSkill\` 下 = ①开发机、含 `.dsh` = ②dsh 环境),再按上表确定产出根目录(dsh 环境 → 优先 `D:\dshworkspace\创作任务\`、无主工作区时并入用户环境 → 桌面 `MCNSkill项目/`;开发机/用户环境 → 桌面 `MCNSkill项目/`,**账号层直挂** `{账号名}/提示词{编号}/`),再按系统拼接桌面路径
2. 本文件默认路径 → 先按一步判定运行环境(看技能是否处于源技能 git 检出内:在 = ①开发机、不在 = ②用户环境),再按上表确定产出根目录(开发机/用户环境**同构** → 桌面 `MCNSkill项目/`,**账号层直挂** `{账号名}/提示词{编号}/`),再按系统拼接桌面路径
3. 路径含 `~` 时自动展开为用户主目录
4. 路径含 `{用户名}` 时替换为当前系统用户名
5. 目录不存在时自动创建
@@ -73,3 +73,5 @@ D:\dshworkspace\创作任务\ ← dsh 环境优先根目录(主
- 2026-08-26(第四次修订,与脚本创作两级规则对齐):dsh 部署环境改为**优先操作** `D:\dshworkspace\创作任务\`(主工作区「创作任务」目录,与脚本创作技能同根;用户指定:"dsh 环境下 分镜提示词也应该在 工作区 D:\dshworkspace\创作任务\{账号名}\提示词{编号}");主工作区不存在时兜底桌面 `DSHSkill项目/`。产出结构由 `{账号名}/{视频标题}/` 改为 `{账号名}/提示词{编号}/`——与脚本创作「脚本{编号}」平级,编号默认继承上游脚本编号,独立使用时按已有最大值递增。
- 2026-08-26(第五次修订,环境判定模型修正):判定锚点由「技能路径是否含 `.dsh`」单一判断改为**两步判定**——第一步查本机 `D:\AgentSkill` 是否存在(**无 = ③用户环境**,技能无论装在哪、什么路径);有 → 第二步看技能路径(**在 `D:\AgentSkill\` 下 = ①开发机**;**含 `.dsh` = ②dsh 环境**)。修复用户环境技能装在非 `.dsh` 路径(如 `~/.workbuddy/skills/`)时被误判为开发机、可能错误直接编辑 `references/` 的漏洞(用户指定:用户环境判定锚点是「本机没有 D:\AgentSkill」,与技能装在什么路径无关)。
- 2026-08-26(第六次修订,产出结构定稿):①开发机与③用户环境产出根目录由 `桌面 MCNSkill项目/分镜提示词/` 改为 `桌面 MCNSkill项目/`(**账号层直挂**:`{账号名}/提示词{编号}/`,去掉「分镜提示词」技能文件夹层,与脚本创作「脚本{编号}」同构;用户指定:"定稿产出结构:桌面\MCNSkill项目\{账号名}\{脚本文件夹}\(①开发机与③用户环境同构,账号层直挂);② dsh 部署环境不变 D:\dshworkspace\创作任务\{账号名}\脚本{编号}\")。dsh 环境产出不变。
- 2026-09-10(第七次修订,判定锚点重构 v2 · 仓库特征判定):环境判定锚点由「本机是否存在 `D:\AgentSkill`」改为**仓库特征判定**——第一步查技能路径是否含 `.dsh` 路径段(含 = dsh 部署环境),第二步用 `git -C {技能目录} rev-parse --show-toplevel` 判断技能是否处于源技能 git 检出内(在 = 开发机,不在 = 用户环境;无 git 时兜底为向上逐级查找 `.git`)。产出根目录三环境结果**完全不变**,仅判定依据改变。**根因**:仓库本地路径迁移导致写死盘符锚点失效 → 开发机被误判为「用户环境」,会重演第五次修订修复过的「误直接编辑 `references/`」漏洞。(用户确认:"改为仓库特征判定";与脚本创作技能同源定稿)
- 2026-09-10(第八次修订,环境模型精简 v3 · 三环境 → 两环境):**dsh 部署环境整体废弃**(用户确认:"第一步 技能路径含 .dsh 路径段 ② dsh 部署环境 没有这个环境了")。实测依据:`~/.dsh/skills/` 不存在、`~/.dsh/mcn-plugin.db` 不存在、`~/.dsh` 下仅剩 `profiles/`、`D:\dshworkspace` 整个目录不存在。故删除 `.dsh` 判定步骤与 `D:\dshworkspace\创作任务\` 产出路径,判定简化为**一步**。剩余两环境产出本就同构(桌面 `MCNSkill项目/{账号名}/提示词{编号}/`),产出结果不变。(与脚本创作技能同源定稿)
@@ -62,13 +62,12 @@ references/
### 部署环境检测
根据**两步判定模型**判断当前环境(第一步查本机 `D:\AgentSkill` 是否存在;有 → 第二步看技能自身路径):
根据**一步判定模型(仓库特征判定)**判断当前环境(看技能是否处于源技能 git 检出内):
| 环境 | 判定条件 | references/ 权限 | 新增内容写入位置 |
|:---:|:---|:---|:---|
| **①开发机** | 本机有 `D:\AgentSkill` 且技能路径在 `D:\AgentSkill\` 下 | 可直接编辑 | `references/` 对应子目录 |
| **②dsh 部署环境** | 本机有 `D:\AgentSkill` 且技能路径含 `.dsh` | 只读 | `references-add/` 对应子目录 |
| **③用户环境** | 本机无 `D:\AgentSkill`(技能无论装在哪、什么路径) | 只读 | `references-add/` 对应子目录 |
| **①开发机** | 技能处于源技能 git 检出内(`git -C {技能目录} rev-parse --show-toplevel` 返回仓库根) | 可直接编辑 | `references/` 对应子目录 |
| **②用户环境** | 技能不在任何 git 检出内(技能无论装在哪、什么路径) | 只读 | `references-add/` 对应子目录 |
### 冲突检测与运行时优先级
@@ -1,6 +1,6 @@
# 路径引用规范(相对路径铁律,P0)
> 适用:本技能树(主技能 + references/references-add + scripts + 全部 subskills 及嵌套 subskills)。技能会被部署到 **开发机 / dsh 环境 / 用户环境** 三种机器,**绝对路径随机器变化必然失效**,故技能内一切文件引用一律使用**相对路径**。
> 适用:本技能树(主技能 + references/references-add + scripts + 全部 subskills 及嵌套 subskills)。技能会被部署到 **开发机 / 用户环境** 两种机器,**绝对路径随机器变化必然失效**,故技能内一切文件引用一律使用**相对路径**。
## 一、铁律(3 条)
@@ -18,12 +18,12 @@
| `__file__` 动态推导 | `BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` | 脚本定位技能根,跨环境可迁移 |
| 环境变量 | `os.getenv("REDFOX_API_KEY")`、`MCN_RANKING_DIR` | 值由外部注入 |
| URL | `https://github.com/...` | 外部资源 |
| 环境判别锚点 | 「本机是否存在 `D:\AgentSkill`」「技能路径是否含 `.dsh`」 | 仅作**是否存在/是否包含**的判定条件,**禁止**将其作为实际读写路径 |
| 动态产出目录占位 | 桌面 `MCNSkill项目/{账号名}/`、`D:\dshworkspace\创作任务\` | 由各技能 `references(-add)/路径配置.md` 运行时判定,允许出现于规则文档 |
| 环境判别锚点 | 「技能目录是否处于 git 检出内」 | 仅作**是否存在**的判定条件,**禁止**将其作为实际读写路径;锚点必须用**仓库特征**(git 检出),禁止用写死盘符 |
| 动态产出目录占位 | 桌面 `MCNSkill项目/{账号名}/` | 由各技能 `references(-add)/路径配置.md` 运行时判定,允许出现于规则文档 |
## 三、禁令项(这些绝对禁止)
- **Windows 盘符绝对路径**:`C:\Users\maidou\...`、`D:\AgentSkill\...`(含正反斜杠两种写法)——除「环境判别锚点/路径配置规则表」语境外的任何引用位置。
- **Windows 盘符绝对路径**:`C:\Users\maidou\...`、`D:\MyRepo\...`(含正反斜杠两种写法)——除「环境判别锚点/路径配置规则表」语境外的任何引用位置。
- **Unix 绝对路径**:`/Users/maidou/...`、`/home/...`、`/tmp/...`(shebang `#!/usr/bin/env python3` 除外)。
- **越级引用**:`../../..` 跳出技能根指向包外文件。
- **引用技能包外文档**:md 链接指向不存在于包内的本地文件(如仓库根的维护文档)——部署环境无此文件即断链。
@@ -34,7 +34,7 @@
| 场景 | 说明 |
|------|------|
| 仅开发机工具 | 不随技能分发的目录(如 `mcn-work-shop/`),内部可保留开发机路径 |
| 环境判别/路径配置文档 | `路径配置.md`、SKILL.md 环境判定节——锚点 `D:\AgentSkill`、`.dsh`、`D:\dshworkspace\...` 是**规则内容**不是引用,保留 |
| 环境判别/路径配置文档 | `路径配置.md`、SKILL.md 环境判定节——锚点 git 检出特征是**规则内容**不是引用,保留 |
| 示例/教学文本 | `C:/Videos/demo.mp4`、`C:/path/to/file` 等明确示例(`path/to`、`demo` 字样) |
| 历史日志 | `.workbuddy/memory/` 既有日志保留原样,不改写历史 |
| 第三方整包 | 整包拷贝的第三方技能(如 browser-harness/lieflat-charts/参考skills/)内部自带约定不重写;但**本技能对它们的引用**仍须相对路径 |