docs(skill): 固化AI任务入口技能契约机制(09-02三入口修复后收尾)
- SKILL.md 工作台章节新增第7条「AI 任务入口技能契约(P0)」:所有 AI 会话任务入口须遵守 功能入口×技能调用契约(prompt=技能前缀常量 SKILL_HINT_{CREATE,EXTRACT,STORYBOARD,REVIEW,ACCOUNT}+业务正文+skills 参数级挂载);新增/修改入口前先读契约文档,防裸 prompt 跳步/技能声明混入业务串/BROWSER_HINT 误注入;原第7/8条顺延8/9
- 关键规则「〇执行方式判定」表格后补契约引用行
- docs/AI会话任务输入输出对照.md 全面升级:新增「功能入口×技能调用契约总表」(8入口的按钮/label/skills/前缀常量/prompt边界/代码位置)+★新增入口检查清单7项+复盘动态分支说明;prompt 模板统一为「前缀常量+正文」分层结构
- frontmatter last_change 更新;用户环境 junction 同 inode 自动同步
This commit is contained in:
1 parent
b9cb96a74b
commit
e919fc562b
2 files changed
+53
-26
No files matched your search
@@ -1,27 +1,32 @@
|
||||
# MCN 工作台 · AI 会话任务输入输出对照
|
||||
|
||||
> 更新:2026-09-01 | 范围:工作台所有触发 AI 会话任务(/api/run → 左侧会话栏后台会话)的功能入口
|
||||
> 更新:2026-09-02 | 范围:工作台所有触发 AI 会话任务(/api/run → 左侧会话栏后台会话)的功能入口
|
||||
> 统一规则(用户定):**创作类任务 prompt 一律「账号设定(人设卡)在前,选题信息在后」**;无人设时以「该账号暂无账号设定,请先提取」提示占位(同样前置)。
|
||||
> **★prompt 与技能边界分离(09-02 定版)**:任务 prompt = **固定技能声明前缀常量**(加载 Skill + 模式 + 边界规则,与业务正文解耦)+ **业务正文**(人设/选题/需求)。前缀常量在 data-pages.js / app.js 顶部与 SKILL_HINT_CREATE 同层管理,禁止把技能声明写进业务字符串、禁止各技能声明互相污染/误触发。
|
||||
|
||||
## 触发链路(所有入口共用)
|
||||
|
||||
按钮点击 → 确认弹窗(confirmRun / confirmAiScript / confirmSaveAccount)→ `executeTask()` → `POST /api/run`(server.js 写 automations 表,scheduledAt=now+5s + next_run_at=now+5000)→ 客户端调度器拾取 → 左侧会话栏「mcn-workshop」空间后台会话执行 → 轮询 `/api/run/status`(done/error/review)→ 完成刷新页面。
|
||||
按钮点击 → 确认弹窗(confirmRun / confirmAiScript / confirmSaveAccount)→ `executeTask()` → `POST /api/run`(server.js 写 automations 表,scheduledAt=now+5s + next_run_at=now+5000,`skills` 数组→`skills_json` 参数级技能挂载)→ 客户端调度器拾取 → 左侧会话栏「mcn-workshop」空间后台会话执行 → 轮询 `/api/run/status`(done/error/review)→ 完成刷新页面。
|
||||
|
||||
## 功能对照表
|
||||
## 功能入口 × 技能调用契约总表
|
||||
|
||||
| # | 功能入口 | 按钮 | 任务名(label) | 输入(prompt 注入) | 输出 | 代码位置 |
|
||||
|---|---------|------|--------------|--------------------|------|---------|
|
||||
| 1 | 账号列表(#/accounts) | AI创作 | 创作指令 | 账号名 + 【账号设定(人设卡)】(完整、剔非创作章节) + 选题方向(手输 或 AI 结合人设生成) | 全新故事脚本 | confirmAiScript |
|
||||
| 2 | 账号详情(#/account/:id)视频列表 | AI创作 | 创作指令 | 账号名 + 【账号设定(人设卡)】+ 视频选题块(有「# 选题」段→直接用;无→【视频解析内容(供提炼选题)】+ 提炼指令)或 未解析→先解析再创作 | 全新故事脚本 | renderAccountDetail data-rewrite |
|
||||
| 3 | AI写脚本(#/rewrites)视频列表 | AI创作 | 创作指令 | 同 2(按 accountId 拉人设,带 video_url) | 全新故事脚本 | renderRewrites data-rewrite |
|
||||
| 4 | 账号详情(#/account/:id) | 提炼账号设定 | 提炼指令 | 账号名 | 人设卡(12段账号设定) | renderAccountDetail data-extract |
|
||||
| 5 | 脚本对比弹窗(AI脚本 vs 源脚本) | 生成分镜 / 重新生成 | 分镜指令 | 视频标题 + AI脚本(该条 AI 创作的故事脚本) | AI 分镜提示词(按分镜技能) | openRewriteCompare fireGenSb |
|
||||
| 6 | AI脚本诊断(#/reviews) | 复盘 | 复盘指令 | 该条 AI 脚本(后台按 mcn-script-review 技能执行) | 评分式复盘报告(AI/源/对比三模式) | renderReviews data-review-row |
|
||||
| 7 | 周榜(#/ranking / 首页) | 分析 / 关注 | 保存指令 | 账号名 + 主页 URL | 账号信息 + 视频列表入库 | confirmSaveAccount |
|
||||
| 8 | 账号列表(#/accounts) | 添加 | 添加指令 | 账号名称 + 账号地址(可选) | 网页采集账号信息 + 视频列表入库 | openImportAccounts |
|
||||
| # | 功能入口 | 按钮 | label | 技能(skills_json) | 前缀常量 | prompt 边界要点 | 代码位置 |
|
||||
|---|---------|------|-------|------------------|---------|----------------|---------|
|
||||
| 1 | 账号列表(#/accounts)弹窗 | AI创作 | 创作指令 | `['短视频脚本创作']` | `SKILL_HINT_CREATE` | 完整人设卡(剔非创作章节)+选题方向;未解析先解析再创作 | data-pages.js confirmAiScript ~L386 |
|
||||
| 2 | 账号详情(#/account/:id)视频列表 | AI创作 | 创作指令 | `['短视频脚本创作']` | `SKILL_HINT_CREATE` | 人设卡+视频选题块(topic/content/未解析三分支) | data-pages.js renderAccountDetail ~L720 |
|
||||
| 3 | AI写脚本(#/rewrites)视频列表 | AI创作 | 创作指令 | `['短视频脚本创作']` | `SKILL_HINT_CREATE` | 同 2 | data-pages.js renderRewrites ~L929 |
|
||||
| 4 | 账号详情(#/account/:id) | 提炼账号设定 | 提炼指令 | `['mcn-dou-analysis']` | `SKILL_HINT_EXTRACT` | 功能三提炼;仅基于库中已有解析数据,**禁数据抓取字样**(防 BROWSER_HINT 误注入) | data-pages.js ~L732 |
|
||||
| 5 | 脚本对比弹窗 | 生成分镜 / 重新生成 | 分镜指令 | `['短视频分镜脚本']` | `SKILL_HINT_STORYBOARD` | F4 生成分镜;只产出分镜提示词不改写脚本 | data-pages.js openRewriteCompare fireGenSb ~L1007 |
|
||||
| 6 | AI脚本诊断(#/reviews) | 复盘 / 更新 | 复盘指令 | `['脚本复盘']` | `SKILL_HINT_REVIEW` | 独立会话一脚本一上下文;按有无源脚本动态分支(三模式 vs 独立10维) | data-pages.js startReview ~L1130 |
|
||||
| 7 | 周榜(#/ranking / 首页) | 分析 / 关注 | 保存指令 | `['mcn-dou-analysis']` | `SKILL_HINT_ACCOUNT` | 浏览器流程:账号信息+视频列表入库 | app.js confirmSaveAccount |
|
||||
| 8 | 账号列表(#/accounts) | 添加 | 添加指令 | `['mcn-dou-analysis']` | `SKILL_HINT_ACCOUNT` | 浏览器流程:网页采集账号信息+视频列表入库 | app.js openImportAccounts |
|
||||
|
||||
> 红线提示:入口 7/8 走 mcn-dou-analysis 浏览器抓取流程(会被 server.js BROWSER_HINT 正则命中自动追加互斥锁),入口 4(提炼)**刻意规避**抓取字样——新增/修改入口 prompt 时须核对 `server.js` L516 BROWSER_HINT 正则(匹配 `账号信息|视频列表|保存并分析|采集|导入账号|网页采集|浏览器`),避免提炼/复盘等非抓取任务被误注入浏览器锁约束。
|
||||
|
||||
## 各功能 prompt 结构与顺序
|
||||
|
||||
> 所有 prompt 均以对应前缀常量开头(如 `${SKILL_HINT_CREATE}\n`),下方省略前缀只展示业务正文结构。
|
||||
|
||||
### 1/2/3 创作类(账号设定前 → 选题后)
|
||||
|
||||
**已解析 + 有「# 选题」段**(mode=topic):
|
||||
@@ -64,40 +69,60 @@
|
||||
请贴合上述账号设定(人设与内容规则)创作。
|
||||
```
|
||||
|
||||
### 4 提炼账号设定
|
||||
### 4 提炼账号设定(SKILL_HINT_EXTRACT + 正文)
|
||||
```
|
||||
请为达人「{name}」提炼账号设定(生成人设卡)。
|
||||
```
|
||||
> 前缀已约束:功能三流程、先判账号类型、基于库中已有 MCP 解析数据、人设卡 12 段、禁生成/改写脚本、不含商业变现、不执行数据抓取。
|
||||
|
||||
### 5 生成分镜(转换类,无账号设定/选题概念)
|
||||
### 5 生成分镜(SKILL_HINT_STORYBOARD + 正文,转换类)
|
||||
```
|
||||
请将视频《{title}》的 AI 脚本{重新}展开成 AI 分镜提示词(按分镜技能生成镜头级描述)。
|
||||
请将视频《{title}》的 AI 脚本{重新}展开成 AI 分镜提示词(F4 生成分镜,镜头级描述)。
|
||||
```
|
||||
> 前缀已约束:短视频分镜脚本技能 F4 流程与格式(时间戳分段/实体绑定/6 层结构),只产出分镜提示词不改写脚本。
|
||||
|
||||
### 6 复盘评分(诊断类,由技能定义输入输出)
|
||||
```
|
||||
请对这条 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式),按 mcn-script-review(脚本复盘)技能执行。
|
||||
### 6 复盘评分(SKILL_HINT_REVIEW + 正文,诊断类,由技能定义输入输出)
|
||||
```
|
||||
# 有源脚本(三模式)
|
||||
请对这条 AI 脚本做复盘评分(AI脚本 / 原视频脚本 / 对比分析三种模式)。
|
||||
|
||||
### 7 保存并分析账号
|
||||
# 无源脚本(独立分析·10 维评分制;video_id=0 或无 source 时)
|
||||
请对这条 AI 脚本做质量复盘评分(独立分析模式·10 维评分制)。该脚本无原视频脚本,只评 AI 脚本本身,不做源脚本复盘、不做对比分析。
|
||||
```
|
||||
> 前缀已约束:工作台复盘任务执行方式(独立会话/一脚本一上下文)+ 技能边界(只分析建议不改脚本不触发创作)。
|
||||
|
||||
### 7 保存并分析账号(SKILL_HINT_ACCOUNT + 正文)
|
||||
```
|
||||
请帮我把抖音账号「{name}」保存并分析(账号信息 + 视频列表):{url}
|
||||
```
|
||||
|
||||
### 8 添加账号
|
||||
### 8 添加账号(SKILL_HINT_ACCOUNT + 正文)
|
||||
```
|
||||
请帮我把抖音账号 {账号名称「x」, 账号地址「y」} 添加:通过抖音网页获取账号信息与视频列表,写入账号列表并保存到本地
|
||||
```
|
||||
|
||||
## 关键细节
|
||||
|
||||
- **前缀常量定义位置**:data-pages.js 顶部 L7-16(SKILL_HINT_CREATE/EXTRACT/STORYBOARD/REVIEW)、app.js 顶部 L27(SKILL_HINT_ACCOUNT)。所有入口 prompt 必须带对应前缀,`executeTask/confirmRun` 必须传 `skills` 数组(参数级技能挂载→skills_json)。
|
||||
- **人设卡注入**:完整拼入(不截断),仅通过 `personaForCreate()` 剔除「## 十一、当前需解决的问题」及之后章节(分析师视角内容非创作素材);三处创作入口统一。
|
||||
- **视频选题提取**:`extractVideoTopic(content)` 取解析 content 的「# 选题」段(到下一个 `\n# ` 标题止);无该段(老脚本为分镜头表格式)→ `buildTopicBlock` mode=content 携带全文 + 提炼指令,AI 先提炼选题再创作。
|
||||
- **按钮命名**:全部统一「AI创作」(2026-09-01),弹窗标题同;「提炼账号设定」「生成分镜」「复盘」「分析/关注」「添加」为各自独立任务。
|
||||
- **未解析分支**:带 video_url 时 prompt 内嵌「视频地址:{url}」;账号列表视频(#/rewrites)用 r.url,账号详情视频列表用 r.aweme 拼 https://www.douyin.com/video/{aweme}(历史遗留,建议统一为 video_url)。
|
||||
- **复盘动态分支**:点击复盘/更新按钮时 async 查 `/api/dsh/video-script?videoId=N` 判 source 非空 → 有源=三模式文案;无源(含 video_id=0)改独立分析文案;查询失败保守按有源(不误砍);`dataset.lock` 防 await 窗口期连点。
|
||||
- **已有数据处理**:AI 会话任务执行时若库中/产出目录已有该账号数据(人设卡/视频解析/分析报告),技能侧按**复用优先 + 询问更新**处理,实时数据(账号信息/视频列表)仍必须重新获取(红线禁回填);「已有」须校验内容质量(存在≠有效)。完整决策表见 `{分析技能}/references/铁律避坑规则/已有数据处理规则.md`(2026-09-01 新增)。
|
||||
|
||||
## ★新增 AI 入口检查清单(09-02 固化,防跳步/防裸 prompt 回归)
|
||||
|
||||
工作台新增任何触发 AI 会话任务的按钮/入口时,逐条核对:
|
||||
|
||||
1. [ ] **前缀常量**:prompt 以对应技能前缀常量开头(创作=CREATE、提炼=EXTRACT、分镜=STORYBOARD、复盘=REVIEW、账号抓取=ACCOUNT),禁止裸业务文本
|
||||
2. [ ] **skills 参数**:executeTask/confirmRun 传入对应 `skills: ['技能名']`(技能名=SKILL.md frontmatter name)
|
||||
3. [ ] **prompt/业务边界分离**:技能声明只在前缀内,业务正文(人设/选题/需求)不夹带技能指令;desc 仅用户可见摘要
|
||||
4. [ ] **BROWSER_HINT 规避**:非浏览器抓取类任务(提炼/复盘/创作)的 prompt 不得含 server.js 正则命中词(账号信息|视频列表|保存并分析|采集|导入账号|网页采集|浏览器)
|
||||
5. [ ] **顺序规范**:创作类「账号设定前、选题后」;复盘类一脚本一上下文不混审
|
||||
6. [ ] **模式语义**:创作类带 ⚡自动模式声明(S1-S11 完整流程禁跳步直出 S9)
|
||||
7. [ ] **验证**:改完 `node --check` + 重开页面(带 `?v=` 版本参数),对照本表核对该入口的 prompt/label/skills
|
||||
|
||||
## 验证
|
||||
|
||||
- 脚本:`cdp-verify-aicreate.mjs`(hook confirmRun 捕获 prompt,断言账号设定在前、选题在后、无 undefined 泄漏、未解析分支账号信息前置)
|
||||
- 覆盖:①#/rewrites 已解析(topic/content 两模式)②#/rewrites 未解析 ③账号详情已解析
|
||||
- 前缀/BROWSER_HINT 校验:临时脚本逐字匹配 server.js L516 正则核对四前缀不命中(验证后即清,tmp 随同步清理)
|
||||
Reference in new issue
Block a user