440 lines
12 KiB
Markdown
440 lines
12 KiB
Markdown
# Creative Studio
|
||
|
||
> 基于 **Agent + Skill 架构** 的 AI 剧集创作平台
|
||
>
|
||
> 集成智谱 AI GLM-4.7 模型,提供完整的自动化剧集创作解决方案
|
||
|
||
## 项目概述
|
||
|
||
Creative Studio 是一个创新的 AI 内容创作平台,通过 **可配置的 Skill(技能)** 指导 AI Agent 进行剧集创作。
|
||
|
||
### 核心特性
|
||
|
||
| 特性 | 说明 |
|
||
|-----|------|
|
||
| **Agent + Skill 架构** | 固定的 Agent 工作流 + 可配置的 Skill 行为指导 |
|
||
| **参考文件支持** | Skill 可关联参考文件(MD/TXT/JSON/YAML),融入 LLM 上下文 |
|
||
| **全局上下文管理** | 世界观、人物小传、场景设定等全局配置 |
|
||
| **记忆系统** | 事件时间线、伏笔追踪、人物状态变化记录 |
|
||
| **多集一致性** | 自动维护多集内容的一致性 |
|
||
| **审核系统** | 多维度质量审核和自动修复建议 |
|
||
| **内容管理** | Markdown 渲染预览、编辑、导出(MD/TXT/PDF/DOCX) |
|
||
|
||
### 技术栈
|
||
|
||
```
|
||
后端: FastAPI + GLM-4.7 + MongoDB + Redis
|
||
前端: React 18 + TypeScript + Ant Design + Vite + react-markdown + react-syntax-highlighter
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 前置要求
|
||
|
||
- Python 3.11+
|
||
- Node.js 18+
|
||
- MongoDB 7.0+ (可选,默认使用内存存储)
|
||
- Redis 7.0+ (可选,用于 Celery 任务队列)
|
||
- 智谱 AI API Key
|
||
|
||
### 1. 克隆项目
|
||
|
||
```bash
|
||
git clone <repository-url>
|
||
cd creative_studio
|
||
```
|
||
|
||
### 2. 配置后端
|
||
|
||
```bash
|
||
cd backend
|
||
|
||
# (推荐) 创建虚拟环境
|
||
python -m venv venv
|
||
|
||
# 激活虚拟环境
|
||
# Windows:
|
||
venv\Scripts\activate
|
||
# Linux/Mac:
|
||
source venv/bin/activate
|
||
|
||
# 安装依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 配置环境变量
|
||
# Windows:
|
||
copy .env.example .env
|
||
# Linux/Mac:
|
||
cp .env.example .env
|
||
|
||
# 编辑 .env 文件,必须配置以下内容:
|
||
# - ZAI_API_KEY: 你的智谱 AI API Key (必填)
|
||
# - SECRET_KEY: 随机生成的密钥 (必填)
|
||
# 其他配置可以使用默认值
|
||
|
||
# 启动后端服务
|
||
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||
```
|
||
|
||
后端服务将运行在 `http://localhost:8000`
|
||
|
||
API 文档: `http://localhost:8000/docs`
|
||
|
||
健康检查: `http://localhost:8000/health`
|
||
|
||
### 3. 配置前端
|
||
|
||
```bash
|
||
cd frontend
|
||
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 启动开发服务器
|
||
npm run dev
|
||
```
|
||
|
||
前端服务将运行在 `http://localhost:5173`
|
||
|
||
### 常见问题排查
|
||
|
||
#### 后端启动失败
|
||
|
||
1. **ModuleNotFoundError**: 确保在虚拟环境中安装了所有依赖
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
2. **编码错误 (Windows)**: 日志中的 emoji 显示警告不影响功能,如需修复请设置终端编码为 UTF-8
|
||
|
||
3. **环境变量错误**: 确保 `.env` 文件存在且包含必填项 (`ZAI_API_KEY`, `SECRET_KEY`)
|
||
|
||
#### 前端启动失败
|
||
|
||
1. **端口占用**: 如果 5173 端口被占用,Vite 会自动选择其他端口
|
||
2. **依赖安装失败**: 尝试删除 `node_modules` 后重新安装
|
||
```bash
|
||
rm -rf node_modules # Linux/Mac
|
||
rmdir /s node_modules # Windows
|
||
npm install
|
||
```
|
||
|
||
#### 数据库连接失败
|
||
|
||
如果没有安装 MongoDB 或 Redis,应用仍可正常运行,将使用内存存储。生产环境建议配置数据库。
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
creative_studio/
|
||
├── backend/ # FastAPI 后端
|
||
│ ├── app/
|
||
│ │ ├── main.py # 应用入口
|
||
│ │ ├── config.py # 配置管理
|
||
│ │ ├── api/v1/ # API 路由
|
||
│ │ │ ├── skills.py # Skill 管理 API
|
||
│ │ │ ├── projects.py # 项目管理 API
|
||
│ │ │ ├── episodes.py # 剧集内容 API
|
||
│ │ │ ├── uploads.py # 文件上传 API
|
||
│ │ │ └── agents.py # Agent 管理 API
|
||
│ │ ├── core/
|
||
│ │ │ ├── llm/ # GLM-4.7 客户端(支持参考文件)
|
||
│ │ │ ├── skills/ # Skill 管理器(支持 skill-creator 脚本)
|
||
│ │ │ ├── agents/ # Agent 执行引擎
|
||
│ │ │ ├── memory/ # 记忆系统
|
||
│ │ │ └── review/ # 审核系统
|
||
│ │ ├── models/ # 数据模型
|
||
│ │ └── utils/ # 工具函数
|
||
│ ├── skills_storage/ # Skill 文件存储
|
||
│ │ ├── builtin_skills/ # 内置 Skills(平台维护)
|
||
│ │ │ └── skill-creator/ # Skill 创建工具(用于创建新 Skills)
|
||
│ │ └── user_skills/ # 用户 Skills
|
||
│ │ ├── consistency_checker/
|
||
│ │ └── dialogue_writer_ancient/
|
||
│ └── requirements.txt
|
||
│
|
||
├── frontend/ # React 前端
|
||
│ ├── src/
|
||
│ │ ├── pages/ # 页面组件
|
||
│ │ │ ├── SkillManagement.tsx
|
||
│ │ │ ├── ProjectWorkspace.tsx
|
||
│ │ │ ├── ExecutionMonitor.tsx
|
||
│ │ │ └── MemorySystem.tsx
|
||
│ │ ├── components/ # 通用组件
|
||
│ │ │ ├── MarkdownRenderer.tsx # Markdown 渲染组件
|
||
│ │ │ ├── ContentEditor.tsx # 内容编辑器
|
||
│ │ │ └── SkillCreateWizard.tsx # Skill 创建向导
|
||
│ │ ├── stores/ # Zustand 状态管理
|
||
│ │ └── services/ # API 服务
|
||
│ │ ├── episodeContentService.ts
|
||
│ │ ├── uploadService.ts
|
||
│ │ └── skillService.ts
|
||
│ └── package.json
|
||
│
|
||
├── docs/ # 详细文档
|
||
│ ├── ARCHITECTURE.md # 技术架构详解
|
||
│ └── API.md # API 接口文档
|
||
│
|
||
├── creative-studio-platform.md # 原始产品规格文档(参考)
|
||
└── README.md # 本文件
|
||
```
|
||
|
||
## 核心概念
|
||
|
||
### Agent
|
||
|
||
Agent 是**固定的工作流框架**,由平台维护,用户不可编辑。
|
||
|
||
**剧集创作 Agent 工作流**:
|
||
1. 结构分析 - 分析场景构成、关键事件
|
||
2. 大纲生成 - 生成本集大纲
|
||
3. 对话创作 - 使用 Skill 创作剧本(支持参考文件)
|
||
4. 一致性审核 - 检查一致性并更新记忆
|
||
5. 记忆更新 - 提取事件、伏笔、人物状态
|
||
|
||
### Skill
|
||
|
||
Skill 是**可配置的创作能力单元**,通过行为指导影响 LLM 的输出。
|
||
|
||
**Skill 特性**:
|
||
- **行为指导**:指导 LLM 的输出风格和质量
|
||
- **参考文件**:可上传 MD/TXT/JSON/YAML 文件作为参考
|
||
- **Agent-Skill 生命周期**:注册 → 路由 → 执行 → 反馈
|
||
- **skill-creator 标准**:使用 YAML frontmatter 和标准化目录结构
|
||
|
||
**示例 Skill**:
|
||
|
||
```markdown
|
||
---
|
||
name: dialogue-writer-ancient
|
||
description: Expert ancient-style dialogue writer for period dramas. Use this skill when creating character dialogue that must match historical settings.
|
||
---
|
||
|
||
## 行为指导
|
||
|
||
你创作对话时必须遵循以下规则:
|
||
|
||
1. 使用半文半白的表达,如"何故"、"罢了"、"莫要"
|
||
2. 皇室说话威严少语,武将直率简短,文官婉转
|
||
3. 愤怒时用动作表达,不要直接说"我很生气"
|
||
4. 重要对话一句不超过 15 字
|
||
```
|
||
|
||
### 参考文件
|
||
|
||
Skill 可以关联参考文件,文件内容会被自动融入 LLM 上下文:
|
||
|
||
- **支持的格式**:MD, TXT, JSON, YAML
|
||
- **文件大小限制**:100KB(默认)
|
||
- **融入方式**:格式化后注入到系统提示词中
|
||
|
||
### 全局上下文
|
||
|
||
项目级共享设定:
|
||
|
||
- **世界观设定**: 背景世界描述
|
||
- **人物小传**: 角色设定、性格、说话风格
|
||
- **场景设定**: 常驻场景描述
|
||
- **整体大纲**: 故事线、转折点
|
||
|
||
### 记忆系统
|
||
|
||
自动维护一致性:
|
||
|
||
- **事件时间线**: 已发生的关键事件
|
||
- **伏笔追踪**: 新增伏笔、待收线问题
|
||
- **人物状态**: 各人物状态的历史变化
|
||
|
||
### 审核系统
|
||
|
||
多维度质量检查:
|
||
|
||
- **人物一致性**: 角色行为是否与设定一致
|
||
- **剧情逻辑**: 故事逻辑是否连贯
|
||
- **对话质量**: 对话是否自然流畅
|
||
|
||
## API 使用示例
|
||
|
||
### 列出所有 Skills
|
||
|
||
```bash
|
||
curl http://localhost:8000/api/v1/skills
|
||
```
|
||
|
||
### 获取 Skill 及其参考文件
|
||
|
||
```bash
|
||
curl http://localhost:8000/api/v1/skills/dialogue-writer-ancient/with-references
|
||
```
|
||
|
||
### 测试 Skill
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8000/api/v1/skills/dialogue-writer-ancient/test \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"test_input": "请帮我创作一段古风对话",
|
||
"temperature": 0.7
|
||
}'
|
||
```
|
||
|
||
### 创建项目
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8000/api/v1/projects \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"name": "我的古风剧集",
|
||
"totalEpisodes": 30,
|
||
"globalContext": {
|
||
"worldSetting": "架空朝代天启朝...",
|
||
"characterProfiles": {...}
|
||
}
|
||
}'
|
||
```
|
||
|
||
### 执行剧集创作
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8000/api/v1/projects/{project_id}/execute \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"episode_number": 1
|
||
}'
|
||
```
|
||
|
||
## 主要功能
|
||
|
||
### Skill 管理
|
||
|
||
- 查看 Skill 列表(内置 + 用户自定义)
|
||
- 使用 skill-creator 向导创建 Skill
|
||
- 上传参考文件(MD/TXT/JSON/YAML)
|
||
- 测试 Skill 效果
|
||
- 编辑 Skill 内容和配置
|
||
|
||
### 项目管理
|
||
|
||
- 创建和管理剧集项目
|
||
- 配置全局上下文
|
||
- 选择使用的 Skills
|
||
- 查看项目进度和统计
|
||
|
||
### 剧集创作
|
||
|
||
- 单集创作
|
||
- 批量创作
|
||
- 实时进度监控
|
||
- 自动保存到数据库
|
||
|
||
### 内容管理
|
||
|
||
- **Markdown 渲染预览**:使用 react-markdown + react-syntax-highlighter
|
||
- **在线编辑**:直接编辑剧集内容
|
||
- **质量审核**:通过/拒绝、添加审核意见
|
||
- **导出功能**:支持 MD/TXT/PDF/DOCX 格式
|
||
|
||
### 记忆系统
|
||
|
||
- 事件时间线查看
|
||
- 伏笔追踪和管理
|
||
- 人物状态变化记录
|
||
|
||
## 开发路线图
|
||
|
||
### Phase 1: 基础设施 ✅
|
||
- [x] FastAPI 框架搭建
|
||
- [x] GLM-4.7 客户端封装
|
||
- [x] Skill 管理系统
|
||
- [x] 前端框架搭建
|
||
|
||
### Phase 2: 核心功能 ✅
|
||
- [x] Agent 执行引擎
|
||
- [x] 项目管理系统
|
||
- [x] 记忆系统
|
||
- [x] 前端核心页面
|
||
- [x] Markdown 渲染预览
|
||
- [x] 参考文件 LLM 融入
|
||
|
||
### Phase 3: 高级功能 ⚠️
|
||
- [x] 内容 CRUD API
|
||
- [x] 导出功能(基础)
|
||
- [ ] 三种执行模式完善
|
||
- [ ] Skill Marketplace
|
||
- [ ] PDF/DOCX 导出完善
|
||
|
||
### Phase 4: 优化完善 📝
|
||
- [ ] UI/UX 优化
|
||
- [ ] 测试覆盖
|
||
- [ ] 部署方案
|
||
- [ ] 文档完善
|
||
|
||
## 文档导航
|
||
|
||
- **[API 文档](docs/API.md)** - 完整的 REST API 接口文档
|
||
- **[架构文档](docs/ARCHITECTURE.md)** - 技术架构详细说明
|
||
- **[原始产品规格](creative-studio-platform.md)** - 原始产品规格文档(参考)
|
||
|
||
## 常见问题
|
||
|
||
### 如何获取智谱 AI API Key?
|
||
|
||
访问 [智谱AI开放平台](https://open.bigmodel.cn/usercenter/apikeys) 创建 API Key。
|
||
|
||
### 支持哪些模型?
|
||
|
||
- `glm-4-flash` - 快速响应模型(推荐)
|
||
- `glm-4-plus` - 高质量模型
|
||
- `glm-4-0520` - 稳定版本
|
||
|
||
### Skill 的参考文件是如何工作的?
|
||
|
||
参考文件会被 SkillManager 加载,格式化后融入 GLM 客户端的系统提示词中,使 LLM 能够参考这些内容进行创作。
|
||
|
||
### 如何创建新的 Skill?
|
||
|
||
**方法一:使用前端向导(推荐)**
|
||
1. 进入 Skill 管理页面
|
||
2. 点击"创建新 Skill"
|
||
3. 按照向导步骤填写信息、上传参考文件
|
||
4. 预览并保存
|
||
|
||
**方法二:使用 skill-creator 脚本**
|
||
```bash
|
||
# 初始化 Skill 模板
|
||
cd backend/skills_storage/builtin_skills/skill-creator/scripts
|
||
python init_skill.py my-skill --path ../../../user_skills/
|
||
|
||
# 编辑 SKILL.md 文件
|
||
# 添加参考文件到 references/ 目录
|
||
|
||
# 验证 Skill
|
||
python quick_validate.py ../../../user_skills/my-skill
|
||
|
||
# 打包 Skill(可选)
|
||
python package_skill.py ../../../user_skills/my-skill
|
||
```
|
||
|
||
**方法三:手动创建**
|
||
1. 在 `backend/skills_storage/user_skills/` 下创建目录
|
||
2. 创建 `SKILL.md` 文件,包含 YAML frontmatter:
|
||
```markdown
|
||
---
|
||
name: my-skill
|
||
description: 简短描述此 Skill 的用途
|
||
---
|
||
|
||
## 行为指导
|
||
你的行为指导...
|
||
```
|
||
3. 可选:添加 `references/` 目录存放参考文件
|
||
4. 重启后端服务自动加载
|
||
|
||
## 许可证
|
||
|
||
MIT License
|
||
|
||
---
|
||
|
||
**Creative Studio** - 让 AI 创作更简单、更可控
|