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

257 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.
# 雅文内容创造工作台 · 设计文档 v3(开放画布版)
> 日期:2026-08-25 | 状态:方案确认稿 | 技术路线:FastAPI + SQLite + React(React Flow 画布)
> v2 → v3 变更:① **Agent 关系画布**(可视化编排:改顺序/单独启停/任意连线,不再有固定流水线)② **内容类型标签体系**(心法/案例/技法/功法/产品销售/画面/场景/收尾/钩子…同类内容可生成多个)③ **多知识库隔离挂接**(知识库随便建、每个 Agent 自己配挂哪些库、库与库隔离)
---
## 1. 项目概述
一个**开放的多 Agent 内容工厂**(浏览器访问的独立 Web 工作台):
- 你建 Agent(数量不限)→ 在**画布**上把 Agent 连成关系图 → 给每个 Agent 配规则、配知识库、随时启停
- 每次生产:给主控主题/导图 → 主控拆解成"内容段"(每段一个内容类型)→ 按画布关系派发执行 → 每段过质检 → 人工审查 → 组合交付
- **一切都是可改的**:画布关系可改、顺序可改、单个 Agent 可停用、规则可改、知识库挂接可改、内容数量(几个心法几个技法)由导图说了算
- 记忆沉淀必须你确认;段间靠锚点卡对齐;组合 Agent 做一致性总检
## 2. 需求 → 设计对策(v3 完整版)
| # | 你的要求 | 设计对策 | 状态 |
|---|---|---|---|
| 1 | Agent 可随便添加、数量不限 | Agent 注册中心 + 画布拖入 | v3:画布化 |
| 2 | 每个 Agent 可设置规则 | 每个 Agent 一个 rules.md,可视化编辑+版本回滚 | ✅ |
| 3 | 上下文隔离 | 只传结构化契约:任务切片 + 上游锚点卡 | ✅ |
| 4 | **知识库分开、可建多个** | 知识库管理页:随便建库、导素材、独立索引 | 🆕 |
| 5 | **每个 Agent 设置获取哪个知识库** | Agent 配置里勾选挂接库(多选),只查挂接的库 | 🆕 |
| 6 | **知识库也是隔离的** | 每库独立命名空间,Agent 只能检索被挂接的库 | 🆕 |
| 7 | **Agent 关系画布** | React Flow 画布:节点=Agent、连线=依赖,拖拽编排 | 🆕 |
| 8 | **可修改内容生成顺序** | 画布连线/节点顺序即生成顺序,随时改 | 🆕 |
| 9 | **单独停用一个 Agent** | 节点上启停开关,停用则该节点不执行(下游读锚点卡时自动跳过) | 🆕 |
| 10 | **生成多个心法、多个技法** | 内容类型标签体系:导图拆几个同类段就生成几个,画布可放多个同类 Agent 节点 | 🆕 |
| 11 | Agent 内容基本类型 | 预置标签:心法/案例/技法/功法/产品销售/画面/场景/收尾/钩子(+开场/互动),可自定义新增 | 🆕 |
| 12 | 哪里不对改哪里 | 打回粒度=段;三种修改路径 | ✅ |
| 13 | 每件产物过质检 | 4 道质检闸(可配置挂哪些) | ✅ |
| 14 | 质检过还要人工审查 | 审查台硬关卡 | ✅ |
| 15 | 组合成直播文稿 | 组合 Agent:拼装+一致性总检+六色 docx | ✅ |
| 16 | 自主学习、越用越懂 | 每 Agent 独立记忆库(L1-L4) | ✅ |
| 17 | 沉淀先人工确认 | 记忆待确认池 | ✅ |
## 3. 核心概念(v3 三大件)
### 3.1 内容类型标签(Content Tags)
Agent 与任务段的共同语言。**预置 11 个标签**(你列的 9 个 + 开场 + 互动),可随时自定义新增:
```
开场 · 心法 · 案例 · 技法 · 功法 · 产品销售 · 画面 · 场景 · 收尾 · 钩子 · 互动
```
- **任务侧**:主控解析导图时,每个导图节点标一个内容类型 → 成为"内容段"。导图里有 3 个技法块就拆 3 个技法段(同类多个,天然支持)
- **Agent 侧**:每个 Agent 声明自己擅长哪些标签(多选)。一个 Agent 可以"场景+画面+产品销售"多标签
- **派单**:内容段 → 找"标签匹配 + 启用中"的 Agent 节点执行
### 3.2 Agent 关系画布(Canvas)
```
┌─ 画布(浏览器,React Flow)──────────────────────────────────────┐
│ │
│ [主控Agent] │
│ │ 派发任务单 │
│ ▼ │
│ [开场Agent ●]─────────▶[心法Agent ●]───▶[技法Agent1 ●]─┐ │
│ │ │ │ │ │
│ │ ▼ ▼ ▼ │
│ │ [案例Agent ●] [功法Agent ●] [技法Agent2]│
│ │ │ │ │ │
│ │ ▼ ▼ ▼ │
│ │ [产品销售Agent ●]──[画面Agent ●]─[场景Agent●]│
│ │ │ │
│ │ ▼ │
│ │ [收尾Agent ●] │
│ │ │ │
│ │ ▼ │
│ │ [钩子Agent ●] │
│ └────────────────────────────────────────────────────────────┘
│ ●=启用 ○=停用(灰显,不执行) 箭头=锚点卡流向(下游读上游) │
└───────────────────────────────────────────────────────────────────┘
```
**画布能力**:
| 操作 | 说明 |
|---|---|
| 拖入 Agent | 从注册中心拖任意 Agent 上画布(同一 Agent 可放多个节点=同类型并行/串行多段) |
| 连线 | 从 A 拉到 B = B 读 A 的锚点卡;不连 = 完全隔离 |
| 改顺序 | 拖节点、改连线,生成顺序即图顺序(拓扑排序) |
| 单独停用 | 节点上开关:停用=该节点不执行,下游读锚点卡时自动跳过(如停用"产品销售",全文就 0 产品) |
| 分支并行 | 一个节点连多个下游 = 并行;串成链 = 串行 |
| 模板保存 | 画布存成模板(如"完整场"、"纯心法场"、"无产品场"),一键复用 |
| 版本快照 | 任务开工时固化画布快照,之后改画布不影响已跑任务 |
### 3.3 多知识库隔离挂接(Knowledge Bases)
```
┌─ 知识库管理页 ──────────────────────────────────────────────┐
│ [+ 新建知识库] 每个库=独立命名空间+独立索引 │
│ ├─ 📚 风格档案库 (种子:数字雅文档案/范稿/定稿基准) │
│ ├─ 📚 训练营框架库 (种子:七天导图/28天重排版) │
│ ├─ 📚 直播原文库 (种子:73场SRT,可增量导入) │
│ ├─ 📚 备稿库 (种子:99篇docx) │
│ ├─ 📚 产品知识库 (种子:观品chunks.jsonl) │
│ ├─ 📚 质检规则库 (种子:审查五类清单/词清单) │
│ └─ 📚 你建的库:如"青蛇白蛇素材库"(拖文件进去自动索引) │
└─────────────────────────────────────────────────────────────┘
每个 Agent 的配置里:
[知识库挂接(多选)]
☑ 风格档案库 ☑ 产品知识库
☐ 直播原文库 ☐ 备稿库 …
隔离规则:
· Agent 检索时只能命中被挂接的库,挂接外的一律不可见
· 知识库之间互不可见(库A的内容不会出现在库B的检索结果)
· 挂接可随时改,改完立即生效(不影响已跑任务)
```
## 4. 系统架构总览(v3)
```
┌─────────────────── 你(浏览器访问工作台) ─────────────────────┐
│ 任务看板 · Agent注册中心 · 关系画布 · 知识库管理 · 审查台 · 记忆 │
└──────┬───────────────────────────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────────────┐
│ Agent 注册中心(可自建,数量不限) │
│ Agent = { 名称/描述/类型(生产|质检|服务) │
│ |内容标签(心法|案例|技法|功法|产品销售|画面|场景|收尾|钩子…) │
│ |知识库挂接(多选) | rules.md(版本历史) | 独立记忆库 } │
└──────────────────────────┬────────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────────────┐
│ Agent 关系画布(编排层:顺序/依赖/启停,模板化,任务快照) │
│ 主控Agent:导图→任务单(内容段+时间轴+产品节点) → 按画布派发 │
└──────┬─────────────────────────────────────────────────────────┘
▼ 按画布拓扑分波次执行(每段=一个内容类型,同类可多个)
┌───────────────────────────────────────────────────────────────┐
│ [生产Agent节点](独立会话/记忆/只读挂接知识库) │
│ │ 产出:段内容 + 锚点卡 │
│ ▼ │
│ 4道质检闸(挂哪些质检Agent可配)→ 报告逐条对证正文+锚点卡 │
│ ▼ 全过 │
│ 人工审查台(✅/🔁打回→记忆待确认池/✏️直接改) │
│ ▼ 全部确认 │
│ 组合Agent:拼装 → 一致性总检(5项) → 打回/缝合标记 → 六色docx │
└───────────────────────────────────────────────────────────────┘
```
## 5. 预置 Agent 清单(种子,全部可改可删可复制)
| Agent | 类型 | 内容标签 | 默认知识库挂接 |
|---|---|---|---|
| 主控 Agent | 编排 | — | 全部(解析导图) |
| 开场段 Agent | 生产 | 开场 | 风格档案库 |
| 心法段 Agent | 生产 | 心法 | 风格档案库+训练营框架库 |
| 案例段 Agent | 生产 | 案例 | 直播原文库+备稿库 |
| 技法段 Agent | 生产 | 技法 | 风格档案库+直播原文库 |
| 功法段 Agent | 生产 | 功法 | 风格档案库 |
| 产品销售 Agent | 生产 | 产品销售 | 产品知识库+备稿库 |
| 画面段 Agent | 生产 | 画面 | 风格档案库 |
| 场景段 Agent | 生产 | 场景 | 风格档案库+直播原文库 |
| 收尾段 Agent | 生产 | 收尾 | 风格档案库 |
| 钩子段 Agent | 生产 | 钩子 | 训练营框架库(次日真实框架) |
| 互动标记 Agent | 生产 | 互动 | 质检规则库 |
| 结构质检 | 质检 | — | 质检规则库 |
| 内容质检 | 质检 | — | 质检规则库+产品知识库 |
| 风格尺度质检 | 质检 | — | 质检规则库(词清单) |
| 跨稿质检 | 质检 | — | 备稿库+训练营框架库 |
| 产品顾问 | 服务 | — | 产品知识库 |
| 风格顾问 | 服务 | — | 风格档案库 |
> 默认画布(完整场):开场→心法→(案例∥技法∥功法)→(产品销售∥画面∥场景)→收尾→钩子。你可以改成任何形状。
## 6. 主控 Agent 拆解逻辑(v3)
1. 读导图/主题 → 逐节点转录(读不准的词 → 待确认清单问你)
2. 每个导图节点 → 内容段:`{段id, 标题, 内容标签, 时间范围, 产品节点?, 导图原文}`
3. 同类多段:导图几个技法块就几个技法段(不合并)
4. 生成任务单 → 按画布匹配:每段找"标签匹配+启用"的节点 Agent
5. 按画布拓扑分波次派发 → 跟踪每段状态(待派/生成中/质检中/待审查/通过/打回)
6. 全段通过 → 交组合 Agent
## 7. 数据模型(v3 核心表)
```sql
agents -- Agent 注册中心
id, name, type(production|qc|service), status(active|disabled),
content_tags(json:["心法","技法"]), -- 内容类型标签(生产Agent)
rules_version, memory_namespace, version_history(json)
knowledge_bases -- 知识库(可建多个)
id, name, desc, source_dir, index_status, created_at
agent_kb_bindings -- Agent↔知识库 多对多(挂接配置)
agent_id, kb_id, enabled
canvases -- 关系画布(模板)
id, name, nodes(json:[{node_id, agent_id, enabled, x, y}]),
edges(json:[{from_node, to_node, type:required|optional}])
campaigns -- 生产任务
id, date_id, canvas_snapshot(json), task_spec(json),
mindmap_ref, status, wave_state
segments -- 内容段(每段一个内容类型,同类可多个)
id, campaign_id, node_id, agent_id, content_tag,
anchor_card(json), artifact_path,
status(pending|running|qc|human_review|approved|rework), version
qc_reports -- 质检报告
id, segment_id, gate, checks(json), verdict
pending_memories -- 记忆待确认池
id, target_agent_id, type(L2|L3|L4), content, source_ref,
status(pending|approved|rejected|blocked)
memories -- 已确认记忆(per-agent 命名空间)
id, agent_id, layer, content, source_ref, created_at, status
artifacts -- 组合产物
id, campaign_id, docx_path, compose_report(json), final_status
```
## 8. 技术选型(v3)
| 层 | 选型 | 说明 |
|---|---|---|
| 后端 | FastAPI (Python 3.14) | 异步并行调 Agent |
| 数据库 | SQLite + SQLModel | 单机零运维 |
| **画布** | **React Flow(MIT 免费)** | 拖拽节点/连线/启停开关,业界标准画布库 |
| 前端 | React + Vite + Tailwind | 看板/画布/编辑器 |
| Agent 引擎 | DeepSeek API(可配多 provider) | 复用你的密钥 |
| 知识库 | 每库一个 SQLite FTS5 索引 + 文件目录 | 导入 md/docx/srt/txt/json,增量重建索引 |
| 产物 | 文件系统 + 元数据 | docx 引擎复用六色标记逻辑 |
## 9. 里程碑(2 周,画布是重点)
| 阶段 | 内容 | 验收 |
|---|---|---|
| **M1(1-2天)** 骨架 | 后端骨架+数据表、知识库管理(建库+导入+检索)、Agent 注册中心(新建/规则/标签/挂接)、任务创建、主控拆解→顺序派发、3 个种子 Agent、结构质检 1 道、审查台基础、组合(简单拼接+docx) | 真实导图跑通全链路 |
| **M2(3-6天)** 画布 | React Flow 画布(拖节点/连线/启停/模板/快照)、波次调度(拓扑排序)、锚点卡机制、全部种子 Agent、4 道质检 | 画布改顺序/停用一个 Agent 后重跑生效;段间锚点卡对齐 |
| **M3(7-10天)** 记忆+组合 | 待确认池、L1-L4 记忆、组合一致性总检+缝合标记+组合报告、知识库增量导入、多段同类(3 技法并行) | 打回意见进池确认后注入;组合器抓到真实矛盾并打回;同类多段并行跑通 |
| **M4(11-14天)** 打磨 | 导图 OCR 接入、多天连续、跨稿对账自动化、画布体验打磨、模板库 | 连续 3 天稿、跨稿 0 漏项 |
## 10. 风险与红线
1. 导图读不准的词必须列待确认清单问你(不变)
2. 记忆只沉淀"怎么讲"不沉淀"讲什么";且写入需你确认(不变)
3. 质检报告逐条对证正文+锚点卡(防表面功夫)
4. 组合器只拼装+总检+缝合标记,永不擅自改内容
5. **画布快照**:任务开工后画布改动不影响已跑任务(避免跑一半乱了)
6. **停用下游的连锁**:停用"产品销售"节点时,产品顾问/质检的产品检查自动跳过,组合报告注明"本场 0 产品"
7. 知识库导入规模:SRT/docx 批量导入做后台任务+进度条;单库索引重建可后台跑
8. 合规底线与防拒审信封(只进后台不进正文)
---
**待你确认(1 个问题)**:
- 预置 11 个内容标签(开场/心法/案例/技法/功法/产品销售/画面/场景/收尾/钩子/互动)够用吗?还要加哪些?(比如"答疑/弹幕互动"要不要独立标签?)