Files
yawan-workbench/设计文档v4.md
T

298 lines
19 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.
# 雅文内容创造工作台 · 设计文档 v4(开放画布 + RAG 知识库)
> 日期:2026-08-25 | 状态:方案确认稿 | 技术路线:FastAPI + SQLite + React(React Flow) + **RAG 知识库**
> v3 → v4 变更:① **内容标签扩充至 26 个**(6 大类,可自定义)② **知识库升级为 RAG 架构**:导入→解析→分块→向量化→语义检索→引用溯源,不再用纯关键词检索
---
## 1. 项目概述
开放的多 Agent 内容工厂(浏览器访问的独立 Web 工作台):
- 你建 Agent(不限数量)→ 画布连线编排(顺序/依赖/单独启停)→ 每个 Agent 配规则、配**RAG 知识库挂接**
- 每次生产:给主控主题/导图 → 拆解成内容段(每段一个内容标签,同类可多个)→ 按画布派发 → 质检 → 人工审查 → 组合交付(六色 docx)
- **知识库 = RAG 建库**:素材拖进去,系统自动解析、分块、向量化,Agent 用语义检索取料,答案带引用溯源
- 记忆沉淀必须你确认;段间靠锚点卡对齐;组合 Agent 做一致性总检
- **每个 Agent 可独立选择模型**:主控/生产/质检/组合各配各的模型,画布节点上可见可换,任务成本按 Agent 记账
## 2. 内容标签体系(扩充版:26 个预置,6 大类)
主控拆导图时给每个节点标一个标签;Agent 声明擅长标签;标签可自定义新增。★=高频核心。
### 结构类(5)
| 标签 | 定义 | 典型用法 |
|---|---|---|
| ★ 开场 | 扎心暖场/承诺钩子/开场降档 | 案例/悬念 30 秒入题,第一件产品尽量前置 |
| 转场 | 段间衔接(话题自然滑入,禁报幕) | 组合器优先处理;也可由互动标记 Agent 预埋 |
| ★ 收尾 | 信念收尾:最后 30 秒纯信念不卖货 | "所有的性感都不是天生的…"三段式金句 |
| ★ 钩子 | 收口钩子=导图次日真实框架 | 技法名与导图一致,不写死待确认道具 |
| 预告 | 中途预告/下一场承诺 | 只留一个带日期的承诺,其余"回头安排" |
### 内容类(8)
| 标签 | 定义 | 典型用法 |
|---|---|---|
| ★ 心法 | 认知/心态/信念升级 | 概念有画面、论证有对照;金句只点缀不作产品引入 |
| ★ 痛点 | 焦虑唤醒/扎心一刀/痛点直击 | "你干开门,门都没上润滑你硬推,不哭才怪" |
| ★ 动机铺垫 | 讲解前先讲"为什么要听"(1-2 句动机+原理) | 每个知识点/技法前的"为什么"铺垫,压缩时不删 |
| ★ 案例 | 学员案例/姐妹故事 | 一人分饰两角、具体到细节 |
| 见证 | 产品见证/逆袭故事 | 卖货时的真实感来源(与案例区分开) |
| 冷知识 | 身体冷知识/科学证据 | 射精阈值/前列腺位置/括约肌无天然润滑…必须准确 |
| ★ 金句 | 金句收口/三段式金句 | 扎心话术收口干脆 |
| 共鸣 | 情感共鸣/温柔引导型低声区 | 全稿低谷段,气息写、放慢、压低声 |
### 技法类(4)
| 标签 | 定义 | 典型用法 |
|---|---|---|
| ★ 技法 | 外显手法:手活/口活/体位/步骤骨架 | 第一步…第二步…第三步+画面点,不展开细节 |
| ★ 功法 | 内功练习:凯格尔/缩阴功/八爪鱼收紧术类 | 可跟练、有作业(今晚洗澡从第一个摸到第五个) |
| ★ 跟练 | 现场跟练口令+互动指令 | "吸气收紧、呼气放松→公屏打'咬'" |
| 安全提示 | SM/技法安全提示 | 低温蜡烛、拍肉厚处、安全词定义(玫瑰) |
### 产品类(3)
| 标签 | 定义 | 典型用法 |
|---|---|---|
| ★ 产品销售 | 完整销售话术(痛点→价值→价格锚定→限量) | 一产品一概念不混谈;产品随动作进场 |
| ★ 产品体验 | 产品体验感写作(拿起→第一下→扩散→伴侣反应→欲望结果) | 掌心揉热粉嫩油贴锁骨窝停三秒… |
| 产品回指 | 后段产品回指("老师前面那瓶油") | 不二次完整销售 |
### 表现类(5)
| 标签 | 定义 | 典型用法 |
|---|---|---|
| ★ 画面 | 画面感描写(色情小说档画面链) | 动作/对话/快感写到底;腿心/热意/颤/烫 |
| ★ 场景 | 场景演绎:角色扮演/SM红房/水元素 | 环境/衣着/光线/气味/心理/动作过程 |
| 情绪 | 情绪低谷/峰值铺垫/三连跳板 | 拍桌→"我只说一遍"→停顿三秒→开讲 |
| 氛围 | 仪式感氛围(音乐/灯光/道具/舞美) | 灰字表演标记落实,不进正文说教 |
| 互动 | 公屏互动(扣字/选择题/等弹幕) | "选择题→等弹幕→统计转折"真互动 |
### 辅助类(4)
| 标签 | 定义 | 典型用法 |
|---|---|---|
| 答疑 | 弹幕答疑/常见问题 | 从原文库检索真实答疑话术 |
| 双主播 | 男女主播互动 | 一唱一和、插科打诨 |
| 毛边 | 直播毛边(自嘲/断句/笑场/闲聊) | 真人感低谷 |
| 仪式 | 开营仪式/七天巡礼(引流课) | 无产品节点=0产品0红色 |
> 标签是开放体系:新建 Agent 时可自定义新标签;主控拆导图时如遇未知类型,列出来让你定标签。
### 2.1 标签管理(开放:随时自己添加)
| 操作 | 说明 |
|---|---|
| 新建标签 | 工作台【标签管理】页一键添加:名称+所属大类+一句话定义+典型用法;立即出现在 Agent 配置和主控拆解的选项里 |
| 编辑/停用 | 改名/改定义/停用(停用后不再出现在选项里,历史任务数据保留) |
| 分组 | 预置 6 大类可调整,也可自建新大类 |
| 未知标签兜底 | 主控拆导图遇到不认识的内容块 → 列入待确认清单让你定标签(定一个立即生效,或归入"待分类") |
| 数据一致性 | 标签改名/删除时,历史任务的段标签显示旧名(快照),不影响历史数据 |
## 3. Agent 关系画布(同 v3,不变)
节点=Agent(启停开关/知识库挂接显示/**模型标识**)、连线=锚点卡流向、顺序=图拓扑、模板保存、任务快照。同一 Agent 可放多个节点(同类多段并行)。
## 4. 模型管理(每个 Agent 可选不同模型)🆕
### 4.1 模型注册(工作台设置页)
| 项 | 说明 |
|---|---|
| Provider 管理 | 添加任意 OpenAI 兼容 API:DeepSeek / 硅基流动 / 智谱 / Kimi / 通义 / 本地 Ollama…各配 base_url + API key + 模型列表,可同时挂多个 |
| 全局默认模型 | 未单独配置的 Agent 用全局默认(初始=DeepSeek deepseek-chat,你的密钥) |
| 连通性测试 | 设置页一键测试每个 provider:延迟、速度、可用模型刷新 |
### 4.2 每个 Agent 一个模型选择
- Agent 配置里【模型】下拉:从已注册模型里选,或"跟随全局默认"
- 画布节点显示模型标识(如 🟦DeepSeek / 🟩GLM / 🟧Kimi),点开可快速切换
- 同类型多节点(两个技法 Agent)可各用不同模型并行 → 现场对比文风,选出最像的
- 任务快照固化模型选择:任务开工后改模型不影响已跑任务
### 4.3 推荐分工(初始建议,全部可改)
| 角色 | 推荐模型倾向 | 理由 |
|---|---|---|
| 主控 Agent | 强推理(DeepSeek-R1 类) | 导图解析/任务拆解/波次调度要准 |
| 生产 Agent | 文风强、上下文长 | 心法/画面/场景类吃文风,按实际试跑选 |
| 质检 Agent | 强推理+规则执行 | 五类审查要严格逐条对证 |
| 组合 Agent | 长上下文(128K+) | 拼装全文+一致性总检要读全稿 |
### 4.4 成本与日志
- 任务页按 Agent 记录每次调用的模型 / 输入输出 token / 费用
- 同一内容段换模型重跑的成本和效果可对比(A/B 看板)
## 5. RAG 知识库子系统(🆕 v4 核心)
### 5.1 建库管道(导入即建,全自动)
```
素材文件(docx/srt/md/txt/json/导图)
│ ① 导入(拖拽上传,后台任务+进度条)
▼
② 格式解析:docx 提取正文|srt 去时间戳合并字幕|md/txt 直读|json 按结构抽取
▼
③ 清洗:去 BOM/空行/提词备注/表演标记归一;SRT 断句合并成完整语段
▼
④ 分块 Chunking:标题感知 + 语义边界(按段落/章节切),块大小 400-600 字,
相邻块重叠 15%(保上下文连续);每块带元数据 {库id, 文件, 章节, 序号}
▼
⑤ 向量化 Embedding:本地 BGE-M3 模型(中文强/多语种,离线可用)
▼
⑥ 入库:ChromaDB(嵌入式向量库,collection=知识库,天然隔离)
▼
⑦ 索引完成 → 检索测试页可即时验证命中质量
```
### 5.2 检索(Agent 取料时)
```
Agent 生成请求
│ query 构造:任务切片 + 上游锚点卡 + Agent 规则里的检索意图
▼
混合检索(只在挂接的 collection 内查)
├─ 向量检索:语义相似度 top-k(k=8,默认可配)
└─ 关键词检索:BM25 精确命中 top-k(补专有名词:技法名/产品名/暗语)
▼
合并去重 → 可选重排(cross-encoder 或 LLM rerank,v4 后置开关)
▼
引用溯源:每条命中带 {库, 文件, 章节, 原文块, 相似度}
→ 注入 Agent 上下文(后台可见来源标注,正文永远不出现"知识库里说")
```
### 5.3 隔离与挂接
- **每库一个 ChromaDB collection + 独立元数据命名空间**:库与库物理隔离,检索互不可见
- Agent 挂接(多选)决定它检索哪些 collection;挂接外的一律查不到
- 删除/更新文件:增量重分块重向量化,不影响其他文件
### 5.4 引用溯源防"表面功夫"
- Agent 产出的每条事实/案例/产品说法,后台记录引用来源(哪个库哪个块)
- **质检 Agent 可一键核对**:选中一句 → 看它的引用 → 与知识库原文对证(防编造、防"报告≠事实")
- 检索测试页:你输入一句 query,看命中的原文块质量,随时检验库建得好不好
### 5.5 预置种子库(6 个,可增)
| 库 | 素材来源 | 分块要点 |
|---|---|---|
| 风格档案库 | 数字雅文档案/范稿/day1定稿基准/文本层铁律 | 规则型文档按章节分块 |
| 训练营框架库 | 七天导图/28天重排版/历史任务单 | 按天/按节点分块 |
| 直播原文库 | 73 场 SRT(573 万字) | 按场次→段落分块 |
| 备稿库 | 99 篇 docx(150 万字) | 按稿→标题分块 |
| 产品知识库 | 观品 chunks.jsonl | 按产品分块(content 去空格) |
| 质检规则库 | 五类审查清单/词清单/铁律 | 按检查项分块 |
### 5.6 技术选型(RAG 部分)
| 组件 | 选型 | 理由 |
|---|---|---|
| 向量库 | ChromaDB(嵌入式) | 零运维、Python 原生、collection 隔离、metadata 过滤、Windows 免编译 |
| Embedding | 本地 BGE-M3(sentence-transformers) | 中文语义强、离线可用(素材涉敏不外发)、768 维 |
| 备选 Embedding | 硅基流动/智谱 embedding API | 若嫌本地模型占内存(约 1-2GB) |
| 分块 | 自研解析器(python-docx/正则)+ 标题感知切分 | SRT/docx 格式各有专门处理 |
| 重排(可选) | cross-encoder 或 LLM rerank | 命中质量不足时开启 |
| 模型管理 | OpenAI 兼容多 Provider 注册 + 每 Agent 选模型 | DeepSeek/硅基/智谱/Kimi/Ollama 并存,按 Agent 切换 |
| 规模预估 | 700 万字 ≈ 1.4 万块 × 768 维 | ChromaDB 无压力 |
## 6. 失败处理与人工介入(生成不出来 → 必提醒人工)🆕
### 6.1 失败分类与自动重试策略
| 失败类型 | 例子 | 策略 |
|---|---|---|
| 瞬时错误 | API 超时 / 429 限流 / 连接中断 | 自动重试 2 次(指数退避),可配置 |
| 内容拒绝 | 模型拒审:"抱歉,我无法生成…"(检测拒绝特征词) | 自动换措辞重试 1 次;仍拒绝 → **转人工**(不无限自动折腾) |
| 空输出/截断 | 输出为空 / 中途截断 / 结构解析失败 | 重试 1 次;仍失败 → 转人工 |
| 模型/Key 错误 | key 失效 / 模型不存在 / 余额不足 | **直接转人工**(重试无意义) |
| RAG 失败 | 检索接口报错 | 重试 1 次 → 转人工;无命中不算失败,但标"低置信"提示 |
**原则:重试只覆盖瞬时问题;凡是"重试解决不了"的失败,一律转人工,绝不静默跳过、绝不假装成功。**
### 6.2 失败提醒与人工介入台
- 节点状态变 **🔴 失败**,任务看板红标 + 通知中心提醒(待处理失败数)
- 点击进入【失败处理面板】,能看到:
- 哪个 Agent / 哪个节点 / 用的哪个模型 / 失败类型与错误原文
- 重试次数与调用日志(时间/模型/token/耗时)
- 失败时的输入上下文(任务切片 + 上游锚点卡 + 规则摘要)
- 人工修复动作(按钮式):
- 🔁 重试
- 🔄 换模型重跑(该 Agent 换另一个已注册模型)
- 📝 改规则重跑(打开 rules.md 编辑 → 保存即重跑)
- ✂️ 调整任务切片重跑(如导图段描述触发拒审,改写描述)
- ⏭️ 跳过该段(组合时注明"本场缺段")
- ⏸️ 停用该节点
- **修复后记录原因**:人工在面板填一句"为什么失败/怎么修好的" → 生成记忆建议 → 进待确认池 → 确认后沉淀进该 Agent 记忆(如"该模型对 XX 内容拒审,换 YY 模型可过")
- 失败不阻塞其他段:一段失败时其他段照常跑,但任务整体保持"⚠️ 有待处理失败"状态,直到人工处理完
## 7. 状态可视化(每个 Agent 工作状态清晰可见)🆕
### 7.1 节点状态机(画布/看板统一)
```
待派发(灰) → 生成中(蓝,显示模型+已耗时) → 质检中(黄,显示第几道)
→ 待人工审查(紫) → 已通过(绿)
→ 打回重做(橙,显示第几轮)
→ ⚠️ 失败(红,点击看原因)
→ 停用(暗) / 跳过(灰斜线,上游停用导致)
```
### 7.2 三处可见
| 位置 | 显示什么 |
|---|---|
| 画布节点 | 实时状态色 + 模型标识 + 当前轮次;点开=详情抽屉 |
| 任务看板 | 每段一行:状态徽章/模型/耗时/轮次/成本;失败红标置顶 |
| 详情抽屉 | 调用日志流(每次 LLM 调用:时间/模型/token/耗时/错误)、质检报告、锚点卡、产物全文、当前输入上下文 |
### 7.3 配套
- **运行日志流**:任务执行时实时滚动(谁在跑/谁在等/谁失败了),可暂停过滤
- **通知中心**:失败提醒 / 待确认清单 / 记忆待确认 / 待分类标签,统一小红点
- **成本面板**:按 Agent × 模型统计 token 与费用
- 状态全部落库(llm_calls 调用日志表 + segments 状态字段),历史可回看
## 8. 系统架构总览(v4)
```
┌─────────────── 你(浏览器) ───────────────────────────────┐
│ 任务看板 · Agent注册中心 · 关系画布 · 知识库管理(RAG) · 审查台 · 记忆 │
└──────┬─────────────────────────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────────┐
│ Agent 注册中心:{类型|内容标签(26选多)|知识库挂接(多选)| │
│ 模型选择 | rules.md(版本) | 独立记忆库} │
└──────────────┬────────────────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────────┐
│ Agent 关系画布:节点=Agent(启停) 边=锚点卡流向 模板/快照 │
└──────────────┬────────────────────────────────────────────┘
▼ 按拓扑分波次
┌──────────────┴────────────────────────────────────────────┐
│ [生产Agent] ⇄ RAG检索(只查挂接库,带引用溯源) │
│ 产出:段内容+锚点卡 │
│ → 4道质检(报告对证正文+锚点卡+引用) → 人工审查(硬关卡) │
│ → 组合Agent(拼装+一致性总检+缝合标记) → 六色docx │
└───────────────────────────────────────────────────────────┘
```
## 9. 里程碑(v4 更新)
| 阶段 | 内容 | 验收 |
|---|---|---|
| **M1(1-3天)** 骨架+知识库管道 | 后端骨架+数据表、Agent 注册中心、**标签管理页**(新建/停用/分组,随时自加)、**模型管理(多 Provider 注册+每 Agent 选模型)**、**状态与失败机制**(节点状态机+调用日志表+失败转人工+通知中心)、**RAG 管道(导入→解析→分块→BGE-M3 向量化→ChromaDB 入库→检索测试页)**、种子库导入(产品库 chunks.jsonl + 风格档案先行)、主控拆解→顺序派发、3 个种子 Agent、结构质检、审查台基础、组合(拼接+docx) | 导图跑通全链路;检索测试页验证产品库/风格库命中质量;两个生产 Agent 用不同模型各跑一段对比文风;你亲手加一个新标签并立刻能用;**故意填错 key 制造一次失败 → 看板红标+通知提醒 → 修复重跑成功** |
| **M2(4-7天)** 画布 | React Flow 画布(拖节点/连线/启停/模板/快照)、波次调度、锚点卡机制、全部种子 Agent、4 道质检 | 画布改序/停用生效;锚点卡对齐;SRT 原文库导入完成 |
| **M3(8-11天)** 记忆+引用 | 待确认池、L1-L4 记忆、组合一致性总检+组合报告、**引用溯源核对(质检一键对证)**、备稿库导入、同类多段并行 | 打回意见确认后注入;组合器抓真实矛盾;引用核对 1 次实操 |
| **M4(12-14天)** 打磨 | 导图 OCR、多天连续、跨稿对账自动化、rerank 开关、画布体验、模板库 | 连续 3 天稿、跨稿 0 漏项 |
## 10. 风险与红线(v4 增量)
1. **Embedding 隐私**:素材涉敏(成人内容),默认本地 BGE-M3 离线向量化,数据不出本机;用 API embedding 是显式可选
2. **分块质量**:SRT 字幕断句合并是关键(按时间戳间隙+语义完整句切),分块错误会在检索测试页暴露,可手动调整块大小参数
3. **引用防编造**:Agent 引用必须带来源块,质检核对;查无来源的"事实"= FAIL
4. **失败不静默**:任何"重试解决不了"的失败必须转人工提醒,绝不自动跳过/假装成功;人工修复原因沉淀进记忆(防同类失败反复)
5. 其余红线不变:导图待确认清单、口径不沉淀、质检报告对证正文、组合器不擅改内容、画布快照、停用连锁
---
**待确认(1 个问题)**:
- 26 个预置标签里,★核心 13 个之外的可选标签(转场/预告/见证/冷知识/共鸣/安全提示/产品回指/情绪/氛围/答疑/双主播/毛边/仪式)需要保留哪些?还是全部预置(可以停用不显示)?