This commit is contained in:
2026-04-22 20:14:15 +08:00
parent 0773a0d0ca
commit 0e9c286a57
205 changed files with 25790 additions and 1623 deletions

View File

@@ -0,0 +1,126 @@
# 统一创作品类 Agent 对话框架技术方案
日期:`2026-04-22`
## 1. 目标
把平台内所有“先 Agent 聊天收束锚点,再生成结果页”的创作流程统一到一套前端框架:
1. UI 交互共用一套:标题区、返回、生成结果页按钮、锚点卡片、进度条、操作横幅、聊天气泡、推荐回复、输入框。
2. 对话进度管理共用一套进度归一化、忙碌态判断、SSE `reply_delta / session / error` 解析、操作状态展示。
3. 品类差异只允许落在配置和后端领域逻辑:锚点列表、提示词/占位文案、生成结果页 action、快捷补全/总结话术、结果页与运行态。
## 2. 本轮范围
覆盖当前已接入平台入口的三条创作链:
1. RPG / Custom World Agent 创作。
2. 大鱼吃小鱼 Agent 创作。
3. 拼图 Agent 创作。
本轮不迁移结果页、运行态、发布、资产生成 UI这些仍按各品类自己的页面承载。
## 3. 前端结构
新增目录:
```text
src/components/creation-agent/
├─ CreationAgentWorkspace.tsx
└─ index.ts
src/services/creation-agent/
├─ creationAgentProgress.ts
├─ creationAgentSse.ts
└─ index.ts
```
### 3.1 `CreationAgentWorkspace`
统一组件只接收通用 view model
1. `session`: `CreationAgentSessionView | null`
2. `theme`: 品类主题色与背景 class
3. `primaryAction`: 生成结果页按钮配置
4. `progressActions`: 总结、补全等可选快捷动作
5. `activeOperation`: 可选操作状态
6. `streamingReplyText / isStreamingReply / isBusy / error`
7. `onBack / onSubmitText / onPrimaryAction / onQuickAction`
组件内部只做表现,不读取任何 RPG、Big Fish、Puzzle 专属字段。
### 3.2 会话 view model
各品类工作区负责把自己的 session 映射成:
1. `title`
2. `assistantSummary`
3. `progressPercent`
4. `currentTurn`
5. `anchors: { key, label, value, status }[]`
6. `messages: { id, role, kind, text, createdAt }[]`
7. `recommendedReplies`
因此新增品类时只需要新增 mapper不再复制聊天工作区。
### 3.3 进度管理
`creationAgentProgress.ts` 统一提供:
1. `normalizeCreationAgentProgress(progressPercent)`
2. `isCreationAgentOperationBusy(operation)`
3. `resolveCreationAgentProgressHint(progressPercent, copy?)`
4. `resolveCreationAnchorStatusLabel(status)`
5. `createCreationAgentClientMessageId(prefix)`
### 3.4 SSE 解析
`creationAgentSse.ts` 统一解析现有 SSE 事件:
1. `reply_delta`: 调用 `onUpdate(text)`
2. `session`: 缓存最终 session
3. `error`: 抛出后端错误
4. 流结束后若没有 session抛出品类传入的 incomplete message
各品类 client 只负责打开自己的 URL 和提供类型参数。
## 4. 品类差异边界
### 4.1 RPG / Custom World
保留差异:
1. 8 个 RPG 高杠杆锚点映射。
2. 总结当前设定话术。
3. 补全剩余设定话术。
4. 生成结果页 action`draft_foundation`
### 4.2 大鱼吃小鱼
保留差异:
1. 4 个玩法锚点映射。
2. 输入框占位提示。
3. 生成结果页 action`big_fish_compile_draft`
### 4.3 拼图
保留差异:
1. 拼图视觉/题材锚点映射。
2. 输入框占位提示。
3. 生成结果页 action`compile_puzzle_draft`
## 5. 禁止事项
1. 禁止在统一组件中判断具体品类名称后写分支业务。
2. 禁止把 Big Fish / Puzzle 的状态写入 RPG 命名脚本。
3. 禁止把后端锚点收束、提示词生成或进度裁决搬到前端。
4. 禁止为了统一 UI 改写结果页、运行态或发布流程。
## 6. 验收
1. 三个创作流程的 Agent 聊天区都通过 `CreationAgentWorkspace` 渲染。
2. Big Fish 与 Puzzle 不再各自复制聊天 UI、锚点卡片、输入框和进度条。
3. RPG / Custom World 保留原有“总结当前设定 / 补全剩余设定 / 生成游戏设定草稿”交互。
4. 定向 TypeScript / ESLint / 编码检查通过。