Files
mcn-short-video/.workbuddy/memory/MEMORY.md
T
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

123 lines
17 KiB
Markdown
Raw 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.
# MCN 短视频项目长期记忆(v4 · 2026-10-08 去重精简)
> 原则:**只放「索引 + 红线 + 踩坑」**。凡文件里可查的(SKILL.md / references / RUNBOOK / 工作台 docs)只留指针,不抄内容。历史流水已清。
## 0. 权威源指针
| 主题 | 权威文件 |
|:--|:--|
| 技能全部口径 | `<仓库>/project/短视频脚本创作/V1.0/`(SKILL.md + references + references-add) |
| 路径 / 环境 | `references-add/路径配置.md` |
| 留人密度 | `知识库/03_框架节奏/04_节奏控时叙事套路.md` §1.3 三级留人点体系 |
| 12 维标签 / 镜头 / 画面风格 | `素材库/分块定义/00_通用维度_分块定义.md` |
| 事件卡 10 字段模板 | `素材库/分块定义/00_模板-各库分块模板.md` §极致事件 |
| 赛道词表 | `知识库/标签库/赛道标签.md`(S01–S27 × 8 叙事形态 × 三级垂类) |
| 卡片批量生产 / 回炉 | `tools/weknora-ingest/RUNBOOK.md`(§2.4 召回 / §2.5 回炉 SOP / §2.6 触发率) |
| 工作台 UI | `mcn-workshop/docs/工作台视觉交互规范.md` |
| 工作台 AI 通路 | `mcn-workshop/docs/AI链路-本地CLI接入.md` |
| 技能侧 WeKnora 调用 | 技能 `references/接口调用/WeKnora_极致事件检索.md` |
## 1. 仓库与环境
- 本地 `D:\AI技能\mcn-short-video`;远程 `[email protected]:maogeigei/mcn-short-video.git`。
- 技能软链 `~/.workbuddy/skills/短视频工作台` = junction → `project\短视频脚本创作\V1.0\`;失效判据 children=0 → node `unlinkSync` + PowerShell `New-Item -ItemType Junction`。
- 环境判定(禁写死盘符):路径含 `.dsh` → dsh(**只读**);否则 `git rev-parse --show-toplevel` 成功=开发机 / 失败=用户环境。
- 产物落盘:桌面 `MCNSkill项目/{账号}/`。
- 版本:**只改 V1.0**;Lite1.0(无 subskills)默认不动;变更流程 = 方案→确认→执行→同步副本。
## 2. 子技能要点
### 2.1 MCN工作台(Web)`V1.0/mcn-workshop/`
- 零依赖 Node,端口 8900。任务 `POST /api/run`(写宿主 automation,once + `now+5s`)→ 轮询 `/api/run/status`;**创作/改写 prompt 必带 `SKILL_HINT_CREATE` 前缀**。配置单源 `config.json`;`.cjs` 无扩展 require → MODULE_NOT_FOUND(配置模块用 `.js`);静态资源根映射,`/public/xxx` 必 404。
- **AI 通路(09-29 起)**:`ai.backend` = `cli`(本地 CodeBuddy CLI,stdio 无端口)|`dify`(旧链路兜底)。**细节全在 §0 权威文档,改动前必读**。四条硬红线:
- 🔴 **凭据**:`config.json` 是 git 跟踪文件 → key 只放 `%USERPROFILE%\.workbuddy\mcn-workshop\ai-cli.json`(仓库外,不被技能同步复制)。
- 🔴 **`SERVER__PORT` 必须删** —— CLI(含 `-p` 模式)内部起 HTTP server,继承宿主端口即 `EADDRINUSE` **静默卡死**,且 HTTP 层(health/info/sessions)看起来完全正常。**最容易误判的坑**。
- 🔴 **两段流程模型来源不同**:`/api/ai/clarify`(需求打磨)走**本地 CLI**(`ai.cli.model`);`/api/run`(提交创作)走**宿主调度器**,模型取 `sessions` 表最近活跃**手动会话**的 `model`(兜底 `auto`)⇒ **改 `ai.cli.model` 不影响创作任务模型**。
- 🔴 **`custom:` 模型按租户开通**:本机 Key 租户**无 doubao**(500 / `service info not found`);`custom-model-*` 真名从 `%TEMP%\mcn-cli-home\logs\**\*.log` 的 `requestModelId`/`requestModelName` 配对提取(问模型「你是谁」不可靠)。
- 其余备忘:性能三杠杆 `--tools "WebSearch,WebFetch"`(prompt -78%)/ `--effort low`(首字 61.7s→19.7s)/ 换模型;⚠️ `[INIT tools]` 是**注册表全量**,判生效看 `usage.input_tokens`;`/api/ai/topics` 是**死代码**;SSE 协议 `{delta}/{replace}/{error}/[DONE]`,cli 与 dify 一致(前端零改动)。
### 2.2 其他子技能
- **mcn-dou-analysis**:达人表 15 列、TOP6、≥60 条停、29 赛道枚举、浏览器 9223 + 标签页复用、**身份标识禁从 DB 回填**;产物 `POST /api/import/account` 幂等写 `mcn-plugin.db`。
- **mcn-data-insight**:11 个红狐子技能,榜单即查即缓存。红狐周期 code=3203 → 账号周榜最新可用期恒为**上一周**(非 bug)。
- **mcn-video-prompt**:F1 反推图/F2 反推视频/F3 生图/F4 分镜;格式优先级 = 用户格式 > 默认 6 层;llm-wiki 必须下沉读原始条目。
- 提示词评价口径:`D:\AI技能\powerbi-work-space\提示词评价维度.md` V1.2(**仅适用于视频提示词**)。
## 3. 创作红线
- 三态:⚡自动(静默只落最终物)/🤝共创(+确认门)/🛠开发(+全落盘);产物链 05→06→07 禁跳步;硬编码禁止(P0)。
- 脚本必须走 S1-S11,禁会话内直写;开场钩子 3-7s,硬上限 10s。
- **留人点**:L1 极致触点 15-20s / L2 留人点 **每 10 秒 ≥1** / L3 增量点 3-5s。判据 = 观众产生明确「为什么」(抛问题/打破预期/说到自己/给承诺,≥1 种);纯陈述/纯动作/重复前文不算。自检 = ⌈时长÷10⌉。**禁止混层**,类型名沿用五类机制,**禁自造枚举**。
- **三层定位**:素材库=存素材/极致事件=素材的内容层属性/知识库=讲方法。**事件卡模板与条目落在素材库侧**,`知识库/05_极致事件/` 只放类型层与判据。
- **事件卡 10 字段(顺序固定)**:`极致内容 → 内容含义 → 极致触点 → 事件标签 → 极致类型 → 创作手法 → 镜头语言 → 画面风格 → 复用场景 → 适用场景`。卡片头 `> 所属库:{NN 库名 | 横切未定}` 不占字段位。
- 三易混字段:**极致内容**=画面内容+氛围+质感(客观可拍);**内容含义**=`[期待A]—被X打破→[结果B]`;**极致触点**=**效果侧两项:用户心理 / 共鸣**(机制词归标签/类型,效果词不复用标签词)。
- **事件标签 ≥2 值,主标签后缀「(主)」**;「事件标签」≠ 8 库「极致标签」。创作手法含**铺垫量级 短≤3s / 中 3-10s / 长>10s**;翻车样本同等入库。**极致触点 ≠ 留人点**。
- **复用场景 ≠ 适用场景**:适用场景=原生在哪被调用(从哪来);复用场景=事件结构能搬到哪(到哪去),取值 `{赛道·叙事形态·段落}`,**禁自造赛道名**。
- **素材条目形态铁律**:`### {名称}` + `- **字段**:值` 平铺列表;**禁写成多节表格报告**。
- 解析逆向:以 `analysis` 场次表为准(±1-2s 偏移);`极限维度` 是**上游自造词,禁直录**,三步归一:剥落差→类型层→落 12 维。
## 4. 检索层:WeKnora + 卡片流水线
- 容器:`MCN极致事件素材库`(FAQ 型,`e6772e41-7b72-499d-b46c-e5ca7c9d1740`,`127.0.0.1:31607`,key 见 `D:\.workbuddy\mcp.json`)。**执行前必读 RUNBOOK**。
- ⛔ **接口四铁律**:① 只走 `POST /faq/entries` 批量通道(单条 `/faq/entry` 建的检索不到);② 改相似问必须 DELETE + 重导;③ 检索必显式 `vector_threshold: 0.5`(默认 0.7);④ dry_run 异步且占通道,须轮询 completed。
- ⛔⛔ **检索参数名铁律**:数量参数 = **`match_count`**;写 `top_k`/`limit`/`size`/`count`/`k` 会**静默忽略并恒返回 10 条**(不报错)。`vector_threshold` **必须显式传**(省略 → 返回 0 条)。阈值只事后过滤,**不能提升质量**;分数间隔**不可判优**(top1~top10 首尾仅差 0.047)→ 靠**人工复筛落差结构同构性**。
- ⛔ **删 FAQ 条目**:`DELETE /knowledge-bases/{KB}/faq/entries` + body `{"ids":[int64,...]}`;`DELETE /faq/entries/{id}` 是 404。
- ⛔ **FAQ 列表分页抖动**:`page_size=100` 页边界会重复。解法 = 先 `page_size=1` 拿 `total` → 再 `page_size={total}` 一次拉全。
- 其他:FAQ 检索恒为纯向量;条目**单标签**;`CustomMetadata` 不参与过滤;`auto_tag` 必须关。素材卡走 FAQ 型(文档型封顶 9/11)。**规则类文本不进检索层**。
- ⛔ **卡片写入四条铁律**:① 读 **`tag`(单值字符串)不是 `tags` 数组**;② `事件标签` 行**必须写 12 维闭集标签**,禁自造事件名当主标签 → 写完必跑 `5_tag_coverage.py`;③ `spec.json` 的 `card` **禁带 `### ` 前缀**;④ 卡片正文**必须包 ` ```text ` 围栏**。
- **稳定写法(连续 24+ 批一次通过)**:临时 py 从 md 正则提 `###` 标题 → zip 手写 tag/std/sim/neg → 比对 mismatch=0 → 用完删脚本;md 每卡独占一个 ` ```text ` 围栏。
- ⚠️ **`3_done_batch.py` 跨会话中转丢失**:中途被打断 → 登记空、`ids:[]`。处理 = 手动补登 + 同步 `done`。**续跑先核对末条**。
- 已用 12 标签:反差 / 反常识 / 视觉冲击 / 预见式服务 / 价值观冲击 / 品质对比 / 细节专业 / 自嘲反差 / 感官沉浸 / 氛围沉浸 / 食材极致 / 难度极限。
### 4.1 补采自动化与标签治理
- 自动化 `MCN极致事件素材库·定向补采(每小时3批·暂存模式)`,id `c4d5eae8-e2ff-427a-99aa-d027d354bc19`,`FREQ=HOURLY;INTERVAL=1`,ACTIVE。**rrule 不支持分钟级** → 单次触发连跑 3 批。
- 脚本:`4_sensory_candidates`(感官候选)/`5_tag_coverage`(12 标签体检)/`6_target_candidates`(定向筛,含 `NEGMAP`)/`7_dispatch_next`(**调度器**:算缺口+取批命令+SKIP/PRIORITY)。取批三入口:主队列/`--sensory`/`--target <标签> N`。
- **目标「每标签 ≥100 条」**:**严格主角判据** + **食材优先** + **难度极限暂不处理**。缺口跑 `7_dispatch_next.py`,**勿写死**。
- ⭐ **「食材极致」严格主角判据 3 条**:① 部位知识型 ② 验鲜解剖全流程型 ③ 形态重组型。
- ⭐⭐ **暂存模式(防返工关键机制)**:补采只产 `batches/pending_import/{batch_00NN.md,.spec.json,.meta.json}`,**禁跑 `2_import_batch.py`/`3_done_batch.py`、禁改 `state.json`**。统一入库 = **`13_import_pending.py --dry|--run|--sync`**。**安全结论**:回炉删除按 `polish_plan.json` 冻结的 526 id → 新采卡不会被误删;唯一真风险 = 重跑 `9_polish_plan.py`(已禁)。
### 4.2 卡片回炉 + v3 SOP(细节 → RUNBOOK §2.5)
- 链路 `8_backup_all` → `9_polish_plan` → `10_polish_batch payload|apply <n>` → 删旧 + 重导 → `11_diff_report`。
- **字段契约**:可润色 6(极致内容/内容含义/极致触点/创作手法/镜头语言/画面风格)/**锁定 4**(事件标签/极致类型/复用场景/适用场景)/可改写问法 3 组。
- **三重校验**:① 字段集合一致 ② 骨架完整 ③ 行数不变。任一失败 → 该卡退回。
- ⭐ **v2「吸引力优先」**:判据 = **内容是否更短视频化**;三改动 = 台词前置/破折号拍点/动词升级。⭐ **宽约束**(严约束改动率仅 1% / 宽 46%)。
- ⭐ **v3 问法增厚**:`std` 保留骨架补画面、`sim` 条数严格相等、`neg` 保持负例属性。**绝对边界 = 搬运原文已有信息**(每个信息点须能在该卡 6 个可润色字段 + 事件标签找到出处)。
- 🔴 **暂存批 v3 链路**:`build-pending <n>` → 喂 `PROMPT_polish_v3.md` + 载荷 → 存 `out/polish_result/pending_00NN.json` → `apply-pending <n>`;**`apply-pending` 必须同一次执行内跑完**(曾漏跑,续跑须先补,批次 48 实测)。
- 其他:`validate()` 返 5 元组 `(ok,reasons,cleaned,q,autofix)`,std 前缀不符走 autofix(剥离、不退回);`fiction_check` 弯/直引号须归一化,只告警不拦截;工具 `11_diff_report`/`12_attractiveness`/`14_form_audit`/`15_sensory_recall`/`16-18*_question_*`。
### 4.3 技能侧 WeKnora 调用(权威源 = 技能 `references/接口调用/WeKnora_极致事件检索.md`)
- 🔴 **素材召回触发率 ≈ 0(端到端实测 ×2 路径)**;**用户口径(优先)**:架构 = 「**流程不主动召回素材,知识库按需被取**」= 设计意图,**不改**。`hybrid_search` 0 次 ≠ bug。判据仅两条:① 模型**真能写出桥段** → 跳过 = ✅;② **写不出却仍不检索** = ❌。
- ⭐ **素材库两个作用位**:① 给事件「填空」(S7 写不出桥段时取机制样本)② 给台词「润色」(S9 取原话/微反应/意外)。**同一链上下游**:S7 触发≈0 → S9 `{material_cards}` 恒空 → ② 退化;**∴ ② 失效是 ① 的直接后果**(修①即自动恢复)。文件位:`7_生成短视频大纲.md` §极致触点素材检索;`9_生成短视频脚本.md` L12 + L101-113。
- **结论**:不动架构;解「按需判据太软」→ 推荐 **C1 换外部可验证判据**("通用 vs 专属"可验证)。⛔ 作废「删跳过条款 → 默认必检」。
- ✅ **确定有效**:参数纠正(`match_count` 省 69% 上下文;`vector_threshold` 必显式传)。⚠️ **收益有限**:问法改写(反查法 R@1 34/35→35/35,**差异在噪声内**;⛔ 禁宣称"召回率 97%→100%")。🔴 **真实瓶颈 = 素材覆盖**(3/5 真实节点零命中)。
- 🔬 **验证方法论铁律**:测检索优化 → ⛔ 禁用「凭空需求」法;✅ 必用**「反查法」**。⚠️ 信息保真审计口径 = **角色台词零丢失 + 数字零丢失 + 可拍动作/物品全在**。
- 杂项:会话记录 `D:/.workbuddy/projects/<cwd转义名>/<sessionId>.jsonl`;工具 `20_trace_recall.py`;工作台「提交创作」两段式(`#reqCreate` 弹确认,真提交在 `button[data-ok]`)。
## 5. 麦芽平台采集(脚本在 `tools/`)
- ⭐ **接口直取,禁 DOM 翻页**:`GET /api/scriptwriting/shortVideo/hot?pageNum&pageSize&sortType&startLikeNum`(pageSize=50 最快)。
- 两坑:① 页面「点赞量筛选」整体排除 `uploadType=1`(人工上传占 18.5%)→ 拉无门槛全集后本地过滤;② 日期取 `publishTime || uploadTime`。
- 近 3 个月 3531 条 → ≥20w 命中 **2202 条**(剧情 1194 / 生活vlog 971)。
- ⛔ **清单交付格式红线**:用户口中的「表格」= **Excel(.xlsx)**,主交付 3 页 + csv 配套;**写 .md 属过度交付**。
- **麦芽 MCP**(`myai-mcp-production`):登录态会过期(`auth_status` → `feishu_login`);`short_video_detail(id)` 返回 `content` + `analysis`。
## 6. 工作方式红线
- 治本:从根因修机制;禁补数据/临时绕过;锚点禁写死盘符。
- 盘点前先确认扫描范围;下「违规」结论前必先读规范分类。
- 术语治理:先**内容级比对**。批量替换禁吞沿革句,**沿革句写入后不得再跑替换脚本**(已踩 3 次)。改后整仓 grep 复查,临时脚本用完即删。
- 改静态资源后**整页重载**再验;同一文件多次 Edit 必须串行;逐条修复(读→改→验)。
- git:2h push 一次;push 前 fetch;杀 node 用 PowerShell `Stop-Process`;`git rm -r` 中断会留 index.lock。
- 三层沉淀:治本(技能文件)→ 失误(`失误与规避记录.md`,append-only)→ 记忆。
## 7. 本机工具链坑(通用项见用户级 MEMORY)
- **产 `.xlsx` / 需 requests-openpyxl → 一律 `D:/miniconda3/python.exe`**(托管 venv 装不上包)。
- shell 前先 `unset HTTP_PROXY HTTPS_PROXY ALL_PROXY ...` + `export no_proxy=127.0.0.1,localhost`,否则 localhost 502;curl 另加 `--noproxy '*'`。
- **PowerShell stdout 被吞** → `Out-File` 到临时文件再 Read。**删非 ASCII 文件必须 Node `fs.unlinkSync`**。
- 后台服务会被系统回收 → 让用户双击 `start.bat`。**Chrome 不主动关闭**。
- 浏览器调试(端口 9333):必须 `run_in_background: true` 长驻 chrome;browser-harness 用 `BU_CDP_URL=http://127.0.0.1:9333` + venv python;**禁用 `env -u` 前缀**。
- ChatGPT 投材料(`tools/chatgpt_ask.py`):**长材料走附件上传**;完成判定 = 无 stop 按钮且文本连续 4 次不变。
## 8. 工作台 UI 定稿要点
> 完整铁律查 **`mcn-workshop/docs/工作台视觉交互规范.md`**(权威源)。
- 榜单四榜末列恒「功能」= `inDb ? 查看 : 关注`;热门榜与点赞榜字段体系不同 → 跨榜逻辑双向回退。
- 选题列表由 `rewrite_id` 驱动:点标题=详情;「查看脚本」=`openScriptModal({rewriteId})`;「编辑继续」=带 id UPDATE;「复制」=不带 id 新增。
## 9. 历史时间线(压缩)
- 08 月:素材库扁平化 8 类型;赛道 8→27;三态创作;Lite1.0;`.dsh` 只读;工作台立项。
- 09-10 仓库迁移 + 环境判定|09-14 全量技能审计(P0=0/P1=8/P2=7)|09-16 工作台 AI 创作改版 + UI 规范定稿|09-21~22 极致事件定义与三层定位裁决、事件卡 10 字段定稿|09-23 WeKnora 检索层建成 + 留人点三级体系定稿|09-23~24 卡片流水线化|09-28 定向补采自动化 + 卡片回炉(v2/v3)+ 补采切暂存模式 + 检索参数名纠正。
- 09-29 AI 通路改 `cli`(本地 CodeBuddy CLI)→ 端到端跑通(status/probe/clarify/run),模型 `deepseek-v4.1-flash`;权威文档 `docs/AI链路-本地CLI接入.md`。