feat: 导出 SproutClaw .sproutclaw 配置

包含 extensions、skills、prompts、settings、auth、models、mcp 等配置。
排除 node_modules、npm 缓存、sessions 等运行时数据。
This commit is contained in:
2026-06-26 15:48:56 +08:00
commit 50edff80f5
13904 changed files with 411646 additions and 0 deletions

View File

@@ -0,0 +1,217 @@
{
"software_name": "StudioAgent",
"business_understanding_required": true,
"source_documents": [
{
"path": "CLAUDE.md",
"size": 8114
},
{
"path": "README.md",
"size": 4527
},
{
"path": "docs/ARCHITECTURE_AND_PLAN.md",
"size": 20046
},
{
"path": "docs/STUDIO_AGENT_PRD.md",
"size": 105148
},
{
"path": "backend/app/llm/prompts/camera.md",
"size": 1035
},
{
"path": "backend/app/llm/prompts/director.md",
"size": 1021
},
{
"path": "backend/app/llm/prompts/editor.md",
"size": 586
},
{
"path": "backend/app/llm/prompts/producer.md",
"size": 2769
},
{
"path": "backend/app/llm/prompts/screenwriter.md",
"size": 1145
},
{
"path": "backend/app/llm/prompts/sound.md",
"size": 637
}
],
"project_evidence_file": "业务理解证据.md",
"product_positioning": "StudioAgent 是面向视频内容创作场景的多智能体 AI 制片平台。用户通过自然语言描述创意、故事或制作目标,系统以 Producer 为中枢协调编剧、导演、摄影、剪辑和音效等专业 Agent辅助完成从创意沟通、方案规划、剧本分解、分镜设计到图像、视频、音频素材生产的制片流程。",
"industry": "数字内容创作 / AI 视频制作 / 智能媒体生产",
"target_users": [
"小说作者、IP 作者等希望把文字内容视觉化的创作者",
"短视频创作者、MCN 或自媒体团队",
"影视从业者、动画预览和概念片制作人员",
"企业市场部、品牌宣传和活动视频制作人员",
"需要统一管理角色、场景、分镜、视频和音频资产的内容团队"
],
"core_value": "StudioAgent 将原本分散在文案、分镜、图像、视频和音频工具中的制作步骤整合到一个对话式工作区中,由多 Agent 按项目状态协作推进,并在关键节点保留用户确认、候选选择和撤回能力,降低非专业用户完成视频创意制作的组织成本。",
"business_features": [
"用户账号注册与登录",
"项目创建与项目列表管理",
"对话式 AI 制片工作区",
"多 Agent 协作状态展示",
"项目资产分类查看",
"候选素材选择与撤回",
"全局素材库管理",
"项目成本与计费信息展示"
],
"business_feature_details": {
"用户账号注册与登录": "系统提供注册、登录和当前用户信息获取入口。用户填写邮箱、密码和昵称后可创建账号,登录后系统保存访问令牌,并把用户带入项目列表页面,后续项目、对话和素材操作均以用户身份为基础。",
"项目创建与项目列表管理": "用户进入“我的项目”页面后可以查看已有项目,并通过“新建项目”填写项目名称和描述。项目创建成功后进入对应工作区,项目列表以卡片方式展示标题、描述、风格和创建日期,便于用户区分不同视频制作任务。",
"对话式 AI 制片工作区": "项目工作区采用左侧对话、右侧资产的双面板结构。用户在对话框中输入想制作的视频内容或修改意见,系统通过流式事件返回 Agent 回复、工具调用和任务结果,让用户在同一界面持续推进创作。",
"多 Agent 协作状态展示": "系统围绕 Producer、Screenwriter、Director、Camera、Editor 和 Sound 六类角色组织制作任务。前端通过 Agent 状态栏展示当前工作中的 Agent 和交接状态,后端以 LangGraph Swarm、会话状态和 handoff 机制支撑不同 Agent 之间的协作。",
"项目资产分类查看": "工作区右侧资产面板按角色、场景、分镜、视频和音频分组展示项目产物。随着创作过程推进,角色设定、场景素材、分镜画面、视频片段和音频内容可以沉淀到项目资产区,用户可在制作过程中查看和管理。",
"候选素材选择与撤回": "项目包含候选抽卡状态管理和后端候选接口设计。图片、场景、分镜等媒体生成结果可以提供多张候选,用户选择满意项后确认持久化,也可以取消候选或撤回到上一版本,便于对视觉结果进行比较和修正。",
"全局素材库管理": "系统提供全局素材库页面和接口骨架,用于管理文件夹、全局角色、场景和音色。用户可在素材库中创建、筛选和复用常用资产,并将全局资产深拷贝到具体项目中,减少重复制作。",
"项目成本与计费信息展示": "工作区底部显示余额、本项目消耗和当前模型,计费页面保留余额与交易记录入口。该功能用于让用户了解 AI 生成过程中的费用状态,并为后续按模型、任务和素材生成量统计成本提供界面基础。"
},
"operation_flow": [
"用户从首页进入系统,选择注册或登录,完成身份认证后进入项目列表。",
"用户在“我的项目”页面查看已有项目,或填写项目名称和描述创建新的视频制作项目。",
"系统打开项目工作区,左侧显示 AI 剧组对话面板,右侧显示项目资产面板,底部展示余额、项目消耗和当前模型。",
"用户在对话输入框描述创意、故事文本、广告目标或局部修改要求Producer 根据项目状态规划下一步制作动作。",
"系统以流式消息展示 Agent 回复、工具调用和 Agent 间交接状态,用户可观察当前由哪个 Agent 处理任务。",
"制作过程中形成的角色、场景、分镜、视频和音频内容进入项目资产面板,用户按分类查看产物。",
"当系统生成多个候选素材时,用户选择满意候选并确认,也可以取消候选或撤回到上一版本。",
"用户可进入全局素材库管理常用角色、场景和音色,并在项目中复用已有资产。",
"用户通过计费页面或工作区底部查看余额和项目消耗,根据成本情况继续生成、调整或暂停制作。"
],
"application_purpose": "本软件用于辅助视频内容创作者以自然语言方式组织 AI 视频制作流程,把创意描述、剧本分析、分镜规划、视觉素材生成、视频片段生成、配音和音效设计等环节纳入统一项目工作区,帮助用户管理制作过程、素材资产和成本信息。",
"main_functions": "软件主要包括用户注册登录、项目创建和管理、对话式 AI 制片、六类 Agent 协作状态展示、项目资产分类查看、候选素材选择与撤回、全局素材库管理、计费与成本信息展示等功能。",
"technical_characteristics": "软件采用前后端分离的 Web 应用架构,前端基于 Next.js、React、TypeScript 和 Tailwind CSS 构建项目列表、对话工作区和资产面板;后端基于 FastAPI、SQLAlchemy、LangGraph Swarm 和 Celery 组织 REST 接口、SSE 流式对话、多 Agent 编排、异步生成任务和数据库持久化;系统预留 PostgreSQL、Redis、多模型 LLM、图像、视频和语音生成服务接入能力并通过候选状态、项目资产和全局素材库支持内容生产结果的管理。",
"software_technical_option": "应用软件",
"software_category": "应用软件",
"manual_sections": [
{
"title": "软件概述",
"intent": "说明 StudioAgent 的用途、面向对象和整体制片流程,让审核员先理解软件解决的视频创作问题。",
"paragraphs": [
"介绍 StudioAgent 是多智能体 AI 视频制片平台,用户通过自然语言发起制作需求。",
"说明系统围绕项目、对话、Agent 协作和素材资产组织视频制作过程。"
],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": false
},
{
"title": "运行环境与进入方式",
"intent": "说明软件作为 Web 系统的访问方式、账号使用方式和基础运行要求。",
"paragraphs": [
"说明用户通过浏览器访问系统首页,选择登录或注册进入。",
"说明项目运行依赖前端页面、后端接口、数据库和缓存服务。"
],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": false
},
{
"title": "账号注册和登录",
"intent": "覆盖当前代码中的注册、登录和用户身份获取流程。",
"paragraphs": [
"说明用户填写邮箱、密码和昵称完成注册。",
"说明用户登录后系统保存登录状态,并跳转到项目列表。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "项目管理",
"intent": "覆盖项目列表、新建项目、进入项目工作区等核心入口。",
"paragraphs": [
"说明用户在项目列表查看已有项目。",
"说明用户填写项目名称和描述创建新项目,并进入该项目的创作工作区。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "AI 制片工作区",
"intent": "重点说明左侧对话、右侧资产和底部状态栏组成的核心业务页面。",
"paragraphs": [
"说明用户在对话框中描述视频创意或修改需求。",
"说明系统以流式消息返回 Producer 和其他 Agent 的处理过程,并在状态栏展示当前 Agent 状态。"
],
"include_feature_overview": true,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "项目资产和候选素材处理",
"intent": "说明角色、场景、分镜、视频、音频等资产分类,以及候选选择、确认、取消和撤回的操作结果。",
"paragraphs": [
"说明项目资产在右侧面板按类型展示。",
"说明生成多项候选素材时,用户可以选择、确认、取消或撤回。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "全局素材库",
"intent": "说明全局角色、场景、音色和文件夹管理入口,以及素材复用到项目的用途。",
"paragraphs": [
"说明用户进入素材库页面查看和筛选不同类型素材。",
"说明全局素材可作为项目制作时的复用资源。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "计费与成本查看",
"intent": "说明工作区底部和计费页面展示余额、项目消耗和模型信息的用途。",
"paragraphs": [
"说明用户可在工作区查看余额、本项目消耗和当前模型。",
"说明计费页面用于后续查看余额和交易记录。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "典型使用流程",
"intent": "把注册登录、创建项目、对话制作、查看资产、选择候选和查看成本串成审核员能理解的完整流程。",
"paragraphs": [
"按真实页面顺序描述从进入系统到完成一次视频制作任务的主要步骤。",
"说明用户在每一步能看到的页面反馈和结果。"
],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": true
},
{
"title": "使用注意事项",
"intent": "说明账号、项目素材、模型服务、费用和网络环境等使用注意点。",
"paragraphs": [
"说明用户需要保持账号登录状态,妥善管理项目素材。",
"说明生成任务依赖外部模型服务和运行环境,费用和耗时会随任务类型变化。"
],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": false
}
],
"model_authored": true,
"external_research_notes": "",
"confirmation_required": true,
"user_confirmed": true,
"confirmation_stage": "business",
"next_action": "请确认 草稿/业务理解.md 中的软件用途、行业、目标用户、核心功能、手册结构和申请口径;确认后运行 confirm_stage.py --stage business。",
"review_notes": [
"请确认模型判断的行业领域、目标用户和主要功能是否符合实际申报口径。",
"请确认操作手册结构是否适合当前项目,而不是套用范本文档。"
],
"confirmation_note": "用户确认业务理解",
"confirmed_at": "2026-04-29T08:57:42+00:00"
}

View File

@@ -0,0 +1,93 @@
# 业务理解
- 软件名称StudioAgent
- 产品定位StudioAgent 是面向视频内容创作场景的多智能体 AI 制片平台。用户通过自然语言描述创意、故事或制作目标,系统以 Producer 为中枢协调编剧、导演、摄影、剪辑和音效等专业 Agent辅助完成从创意沟通、方案规划、剧本分解、分镜设计到图像、视频、音频素材生产的制片流程。
- 面向领域 / 行业:数字内容创作 / AI 视频制作 / 智能媒体生产
- 核心价值StudioAgent 将原本分散在文案、分镜、图像、视频和音频工具中的制作步骤整合到一个对话式工作区中,由多 Agent 按项目状态协作推进,并在关键节点保留用户确认、候选选择和撤回能力,降低非专业用户完成视频创意制作的组织成本。
- 证据文件:`业务理解证据.md`
## 目标用户
- 小说作者、IP 作者等希望把文字内容视觉化的创作者
- 短视频创作者、MCN 或自媒体团队
- 影视从业者、动画预览和概念片制作人员
- 企业市场部、品牌宣传和活动视频制作人员
- 需要统一管理角色、场景、分镜、视频和音频资产的内容团队
## 主要业务功能
- 用户账号注册与登录
- 项目创建与项目列表管理
- 对话式 AI 制片工作区
- 多 Agent 协作状态展示
- 项目资产分类查看
- 候选素材选择与撤回
- 全局素材库管理
- 项目成本与计费信息展示
## 功能说明
- 用户账号注册与登录:系统提供注册、登录和当前用户信息获取入口。用户填写邮箱、密码和昵称后可创建账号,登录后系统保存访问令牌,并把用户带入项目列表页面,后续项目、对话和素材操作均以用户身份为基础。
- 项目创建与项目列表管理:用户进入“我的项目”页面后可以查看已有项目,并通过“新建项目”填写项目名称和描述。项目创建成功后进入对应工作区,项目列表以卡片方式展示标题、描述、风格和创建日期,便于用户区分不同视频制作任务。
- 对话式 AI 制片工作区:项目工作区采用左侧对话、右侧资产的双面板结构。用户在对话框中输入想制作的视频内容或修改意见,系统通过流式事件返回 Agent 回复、工具调用和任务结果,让用户在同一界面持续推进创作。
- 多 Agent 协作状态展示:系统围绕 Producer、Screenwriter、Director、Camera、Editor 和 Sound 六类角色组织制作任务。前端通过 Agent 状态栏展示当前工作中的 Agent 和交接状态,后端以 LangGraph Swarm、会话状态和 handoff 机制支撑不同 Agent 之间的协作。
- 项目资产分类查看:工作区右侧资产面板按角色、场景、分镜、视频和音频分组展示项目产物。随着创作过程推进,角色设定、场景素材、分镜画面、视频片段和音频内容可以沉淀到项目资产区,用户可在制作过程中查看和管理。
- 候选素材选择与撤回:项目包含候选抽卡状态管理和后端候选接口设计。图片、场景、分镜等媒体生成结果可以提供多张候选,用户选择满意项后确认持久化,也可以取消候选或撤回到上一版本,便于对视觉结果进行比较和修正。
- 全局素材库管理:系统提供全局素材库页面和接口骨架,用于管理文件夹、全局角色、场景和音色。用户可在素材库中创建、筛选和复用常用资产,并将全局资产深拷贝到具体项目中,减少重复制作。
- 项目成本与计费信息展示:工作区底部显示余额、本项目消耗和当前模型,计费页面保留余额与交易记录入口。该功能用于让用户了解 AI 生成过程中的费用状态,并为后续按模型、任务和素材生成量统计成本提供界面基础。
## 典型操作流程
1. 用户从首页进入系统,选择注册或登录,完成身份认证后进入项目列表。
2. 用户在“我的项目”页面查看已有项目,或填写项目名称和描述创建新的视频制作项目。
3. 系统打开项目工作区,左侧显示 AI 剧组对话面板,右侧显示项目资产面板,底部展示余额、项目消耗和当前模型。
4. 用户在对话输入框描述创意、故事文本、广告目标或局部修改要求Producer 根据项目状态规划下一步制作动作。
5. 系统以流式消息展示 Agent 回复、工具调用和 Agent 间交接状态,用户可观察当前由哪个 Agent 处理任务。
6. 制作过程中形成的角色、场景、分镜、视频和音频内容进入项目资产面板,用户按分类查看产物。
7. 当系统生成多个候选素材时,用户选择满意候选并确认,也可以取消候选或撤回到上一版本。
8. 用户可进入全局素材库管理常用角色、场景和音色,并在项目中复用已有资产。
9. 用户通过计费页面或工作区底部查看余额和项目消耗,根据成本情况继续生成、调整或暂停制作。
## 操作手册结构建议
1. 软件概述:说明 StudioAgent 的用途、面向对象和整体制片流程,让审核员先理解软件解决的视频创作问题。
2. 运行环境与进入方式:说明软件作为 Web 系统的访问方式、账号使用方式和基础运行要求。
3. 账号注册和登录:覆盖当前代码中的注册、登录和用户身份获取流程。
4. 项目管理:覆盖项目列表、新建项目、进入项目工作区等核心入口。
5. AI 制片工作区:重点说明左侧对话、右侧资产和底部状态栏组成的核心业务页面。
6. 项目资产和候选素材处理:说明角色、场景、分镜、视频、音频等资产分类,以及候选选择、确认、取消和撤回的操作结果。
7. 全局素材库:说明全局角色、场景、音色和文件夹管理入口,以及素材复用到项目的用途。
8. 计费与成本查看:说明工作区底部和计费页面展示余额、项目消耗和模型信息的用途。
9. 典型使用流程:把注册登录、创建项目、对话制作、查看资产、选择候选和查看成本串成审核员能理解的完整流程。
10. 使用注意事项:说明账号、项目素材、模型服务、费用和网络环境等使用注意点。
## 申请表建议口径
- 开发目的:本软件用于辅助视频内容创作者以自然语言方式组织 AI 视频制作流程,把创意描述、剧本分析、分镜规划、视觉素材生成、视频片段生成、配音和音效设计等环节纳入统一项目工作区,帮助用户管理制作过程、素材资产和成本信息。
- 软件的主要功能:软件主要包括用户注册登录、项目创建和管理、对话式 AI 制片、六类 Agent 协作状态展示、项目资产分类查看、候选素材选择与撤回、全局素材库管理、计费与成本信息展示等功能。
- 技术特点:软件采用前后端分离的 Web 应用架构,前端基于 Next.js、React、TypeScript 和 Tailwind CSS 构建项目列表、对话工作区和资产面板;后端基于 FastAPI、SQLAlchemy、LangGraph Swarm 和 Celery 组织 REST 接口、SSE 流式对话、多 Agent 编排、异步生成任务和数据库持久化;系统预留 PostgreSQL、Redis、多模型 LLM、图像、视频和语音生成服务接入能力并通过候选状态、项目资产和全局素材库支持内容生产结果的管理。
- 软件的技术特点选项:应用软件
- 软件分类:应用软件
## 证据来源
- `CLAUDE.md`
- `README.md`
- `docs/ARCHITECTURE_AND_PLAN.md`
- `docs/STUDIO_AGENT_PRD.md`
- `backend/app/llm/prompts/camera.md`
- `backend/app/llm/prompts/director.md`
- `backend/app/llm/prompts/editor.md`
- `backend/app/llm/prompts/producer.md`
- `backend/app/llm/prompts/screenwriter.md`
- `backend/app/llm/prompts/sound.md`
## 待确认
- 请确认模型判断的行业领域、目标用户和主要功能是否符合实际申报口径。
- 请确认操作手册结构是否适合当前项目,而不是套用范本文档。
```text
STOP_FOR_USER
NEXT_ACTION: 请确认 草稿/业务理解.md 中的软件用途、行业、目标用户、核心功能、手册结构和申请口径;确认后运行 confirm_stage.py --stage business。
```

View File

@@ -0,0 +1,165 @@
{
"software_name": "StudioAgent",
"product_positioning": "StudioAgent 是面向视频内容创作场景的多智能体 AI 制片平台。用户通过自然语言描述创意、故事或制作目标,系统以 Producer 为中枢协调编剧、导演、摄影、剪辑和音效等专业 Agent辅助完成从创意沟通、方案规划、剧本分解、分镜设计到图像、视频、音频素材生产的制片流程。",
"industry": "数字内容创作 / AI 视频制作 / 智能媒体生产",
"target_users": [
"小说作者、IP 作者等希望把文字内容视觉化的创作者",
"短视频创作者、MCN 或自媒体团队",
"影视从业者、动画预览和概念片制作人员",
"企业市场部、品牌宣传和活动视频制作人员",
"需要统一管理角色、场景、分镜、视频和音频资产的内容团队"
],
"core_value": "StudioAgent 将原本分散在文案、分镜、图像、视频和音频工具中的制作步骤整合到一个对话式工作区中,由多 Agent 按项目状态协作推进,并在关键节点保留用户确认、候选选择和撤回能力,降低非专业用户完成视频创意制作的组织成本。",
"business_features": [
"用户账号注册与登录",
"项目创建与项目列表管理",
"对话式 AI 制片工作区",
"多 Agent 协作状态展示",
"项目资产分类查看",
"候选素材选择与撤回",
"全局素材库管理",
"项目成本与计费信息展示"
],
"business_feature_details": {
"用户账号注册与登录": "系统提供注册、登录和当前用户信息获取入口。用户填写邮箱、密码和昵称后可创建账号,登录后系统保存访问令牌,并把用户带入项目列表页面,后续项目、对话和素材操作均以用户身份为基础。",
"项目创建与项目列表管理": "用户进入“我的项目”页面后可以查看已有项目,并通过“新建项目”填写项目名称和描述。项目创建成功后进入对应工作区,项目列表以卡片方式展示标题、描述、风格和创建日期,便于用户区分不同视频制作任务。",
"对话式 AI 制片工作区": "项目工作区采用左侧对话、右侧资产的双面板结构。用户在对话框中输入想制作的视频内容或修改意见,系统通过流式事件返回 Agent 回复、工具调用和任务结果,让用户在同一界面持续推进创作。",
"多 Agent 协作状态展示": "系统围绕 Producer、Screenwriter、Director、Camera、Editor 和 Sound 六类角色组织制作任务。前端通过 Agent 状态栏展示当前工作中的 Agent 和交接状态,后端以 LangGraph Swarm、会话状态和 handoff 机制支撑不同 Agent 之间的协作。",
"项目资产分类查看": "工作区右侧资产面板按角色、场景、分镜、视频和音频分组展示项目产物。随着创作过程推进,角色设定、场景素材、分镜画面、视频片段和音频内容可以沉淀到项目资产区,用户可在制作过程中查看和管理。",
"候选素材选择与撤回": "项目包含候选抽卡状态管理和后端候选接口设计。图片、场景、分镜等媒体生成结果可以提供多张候选,用户选择满意项后确认持久化,也可以取消候选或撤回到上一版本,便于对视觉结果进行比较和修正。",
"全局素材库管理": "系统提供全局素材库页面和接口骨架,用于管理文件夹、全局角色、场景和音色。用户可在素材库中创建、筛选和复用常用资产,并将全局资产深拷贝到具体项目中,减少重复制作。",
"项目成本与计费信息展示": "工作区底部显示余额、本项目消耗和当前模型,计费页面保留余额与交易记录入口。该功能用于让用户了解 AI 生成过程中的费用状态,并为后续按模型、任务和素材生成量统计成本提供界面基础。"
},
"operation_flow": [
"用户从首页进入系统,选择注册或登录,完成身份认证后进入项目列表。",
"用户在“我的项目”页面查看已有项目,或填写项目名称和描述创建新的视频制作项目。",
"系统打开项目工作区,左侧显示 AI 剧组对话面板,右侧显示项目资产面板,底部展示余额、项目消耗和当前模型。",
"用户在对话输入框描述创意、故事文本、广告目标或局部修改要求Producer 根据项目状态规划下一步制作动作。",
"系统以流式消息展示 Agent 回复、工具调用和 Agent 间交接状态,用户可观察当前由哪个 Agent 处理任务。",
"制作过程中形成的角色、场景、分镜、视频和音频内容进入项目资产面板,用户按分类查看产物。",
"当系统生成多个候选素材时,用户选择满意候选并确认,也可以取消候选或撤回到上一版本。",
"用户可进入全局素材库管理常用角色、场景和音色,并在项目中复用已有资产。",
"用户通过计费页面或工作区底部查看余额和项目消耗,根据成本情况继续生成、调整或暂停制作。"
],
"application_purpose": "本软件用于辅助视频内容创作者以自然语言方式组织 AI 视频制作流程,把创意描述、剧本分析、分镜规划、视觉素材生成、视频片段生成、配音和音效设计等环节纳入统一项目工作区,帮助用户管理制作过程、素材资产和成本信息。",
"main_functions": "软件主要包括用户注册登录、项目创建和管理、对话式 AI 制片、六类 Agent 协作状态展示、项目资产分类查看、候选素材选择与撤回、全局素材库管理、计费与成本信息展示等功能。",
"technical_characteristics": "软件采用前后端分离的 Web 应用架构,前端基于 Next.js、React、TypeScript 和 Tailwind CSS 构建项目列表、对话工作区和资产面板;后端基于 FastAPI、SQLAlchemy、LangGraph Swarm 和 Celery 组织 REST 接口、SSE 流式对话、多 Agent 编排、异步生成任务和数据库持久化;系统预留 PostgreSQL、Redis、多模型 LLM、图像、视频和语音生成服务接入能力并通过候选状态、项目资产和全局素材库支持内容生产结果的管理。",
"software_technical_option": "应用软件",
"software_category": "应用软件",
"manual_sections": [
{
"title": "软件概述",
"intent": "说明 StudioAgent 的用途、面向对象和整体制片流程,让审核员先理解软件解决的视频创作问题。",
"paragraphs": [
"介绍 StudioAgent 是多智能体 AI 视频制片平台,用户通过自然语言发起制作需求。",
"说明系统围绕项目、对话、Agent 协作和素材资产组织视频制作过程。"
],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": false
},
{
"title": "运行环境与进入方式",
"intent": "说明软件作为 Web 系统的访问方式、账号使用方式和基础运行要求。",
"paragraphs": [
"说明用户通过浏览器访问系统首页,选择登录或注册进入。",
"说明项目运行依赖前端页面、后端接口、数据库和缓存服务。"
],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": false
},
{
"title": "账号注册和登录",
"intent": "覆盖当前代码中的注册、登录和用户身份获取流程。",
"paragraphs": [
"说明用户填写邮箱、密码和昵称完成注册。",
"说明用户登录后系统保存登录状态,并跳转到项目列表。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "项目管理",
"intent": "覆盖项目列表、新建项目、进入项目工作区等核心入口。",
"paragraphs": [
"说明用户在项目列表查看已有项目。",
"说明用户填写项目名称和描述创建新项目,并进入该项目的创作工作区。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "AI 制片工作区",
"intent": "重点说明左侧对话、右侧资产和底部状态栏组成的核心业务页面。",
"paragraphs": [
"说明用户在对话框中描述视频创意或修改需求。",
"说明系统以流式消息返回 Producer 和其他 Agent 的处理过程,并在状态栏展示当前 Agent 状态。"
],
"include_feature_overview": true,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "项目资产和候选素材处理",
"intent": "说明角色、场景、分镜、视频、音频等资产分类,以及候选选择、确认、取消和撤回的操作结果。",
"paragraphs": [
"说明项目资产在右侧面板按类型展示。",
"说明生成多项候选素材时,用户可以选择、确认、取消或撤回。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "全局素材库",
"intent": "说明全局角色、场景、音色和文件夹管理入口,以及素材复用到项目的用途。",
"paragraphs": [
"说明用户进入素材库页面查看和筛选不同类型素材。",
"说明全局素材可作为项目制作时的复用资源。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "计费与成本查看",
"intent": "说明工作区底部和计费页面展示余额、项目消耗和模型信息的用途。",
"paragraphs": [
"说明用户可在工作区查看余额、本项目消耗和当前模型。",
"说明计费页面用于后续查看余额和交易记录。"
],
"include_feature_overview": false,
"include_operation_modules": true,
"include_operation_flow": false
},
{
"title": "典型使用流程",
"intent": "把注册登录、创建项目、对话制作、查看资产、选择候选和查看成本串成审核员能理解的完整流程。",
"paragraphs": [
"按真实页面顺序描述从进入系统到完成一次视频制作任务的主要步骤。",
"说明用户在每一步能看到的页面反馈和结果。"
],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": true
},
{
"title": "使用注意事项",
"intent": "说明账号、项目素材、模型服务、费用和网络环境等使用注意点。",
"paragraphs": [
"说明用户需要保持账号登录状态,妥善管理项目素材。",
"说明生成任务依赖外部模型服务和运行环境,费用和耗时会随任务类型变化。"
],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": false
}
],
"model_review_notes": [
"业务功能来自 README、PRD、前端页面、前端 hooks、后端 API 和架构文档;当前代码存在部分骨架/TODO实现程度应在后续申请表和手册中用项目现有页面和接口证据支撑。",
"操作手册应以普通用户看到的页面和操作结果为中心,避免写成框架、接口或 Agent 实现说明。"
]
}

View File

@@ -0,0 +1,29 @@
{
"software_name": "StudioAgent",
"product_positioning": "",
"industry": "",
"target_users": [],
"core_value": "",
"business_features": [],
"business_feature_details": {},
"operation_flow": [],
"application_purpose": "",
"main_functions": "",
"technical_characteristics": "",
"software_technical_option": "应用软件",
"software_category": "应用软件",
"manual_sections": [
{
"title": "模型自行命名章节",
"intent": "说明该章节为什么适合当前项目。",
"paragraphs": [],
"include_feature_overview": false,
"include_operation_modules": false,
"include_operation_flow": false
}
],
"model_review_notes": [
"不要照抄范本结构;按当前项目业务组织章节。",
"不要用关键词表决定行业和功能;必须能从项目证据或用户补充中解释来源。"
]
}

View File

@@ -0,0 +1,294 @@
{
"software_name": "StudioAgent",
"project_root": "/Users/xxx/Documents/code/Software Copyright/StudioAgent",
"instruction": "本文件只收集证据,不决定行业、功能或手册结构。请由模型阅读这些证据以及必要的项目源码后,另行编写业务理解模型稿。",
"documents": [
{
"path": "CLAUDE.md",
"size": 8114,
"headings": [
"CLAUDE.md",
"Commands",
"Development",
"Database",
"Quality",
"Running single backend test",
"Architecture",
"Backend (`backend/`)",
"Frontend (`frontend/`)",
"SSE Protocol",
"Interaction Modes",
"Key Design Decisions",
"MCP Tools Usage",
"Skills",
"Project Status"
],
"opening": "CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. Commands Development Database Quality Running single backend test Architecture Three-layer system: Frontend (Next.js 15) ←SSE/REST→ Backend (FastAPI + LangGraph) ←Celery→ Workers Backend ( backend/ ) Entry : app/main.py — FastAPI app mounting 7 routers under /api/v1/ (auth, projects, conversations, assets, asset-hub, candidates, billing). Agent System ( app/agents/ ): - graph.py — LangGraph Swarm with 6 agents (Producer, Screenwriter, Director, Camera, Editor, Sound). Star topology : Producer is the hub; all others hand off only back to Producer. Uses create swarm() from langgraph swarm . - state.py — ProductionState TypedDict. Uses dynamic completed steps + available assets (not fixed phase enum). Producer reads state to decide next actions autonomously. - tools/confirm.py —"
},
{
"path": "README.md",
"size": 4527,
"headings": [
"StudioAgent",
"架构",
"技术栈",
"快速开始",
"前置要求",
"安装启动",
"克隆项目",
"复制环境变量文件并填入你的密钥",
"安装依赖",
"启动基础设施PostgreSQL + Redis和开发服务器",
"全容器化启动",
"数据库迁移",
"项目结构",
"核心设计理念",
"开发命令",
"项目状态",
"许可证"
],
"opening": "StudioAgent 多智能体 AI 视频制片平台。用户用自然语言描述创意想法6 个专业 AI Agent 协作完成剧本、分镜、图像、视频和音频的生产——全程支持人机协同控制。 架构 6 个 AI Agent ,通过 LangGraph Swarm 构建星形拓扑: Agent 职责 ------- ------ Producer制片人 中枢节点——规划、协调、自主决策下一步行动 Screenwriter编剧 故事分析、角色提取、分集剧本生成 Director导演 分镜设计、镜头编排、视觉连续性把控 Camera摄影师 图像生成(角色、场景、分镜画面) Editor剪辑师 视频组装、转场、时间线编辑 Sound音效师 对白、语音合成、音效、背景音乐 Producer 是唯一的中枢——所有其他 Agent 完成任务后只能交回 Producer。 技术栈 层级 技术 ------ ------ 前端 Next.js 15、React 19、Tailwind CSS 4、Zustand、TanStack Query、Framer Motion 后端 Python 3.12、FastAPI、LangGraph Swarm、SQLAlchemy 2.0、Celery 数据库 PostgreSQL 16、Redis LLM OpenRouter (Claude)、Google (Gemini)、VolcEngine (豆包) 图像生成 Seedream、Imagen、FLUX 视频生成 Seedance、Veo、Kling 语音生成 Qwen TTS、ElevenLabs 快速开始 前置要求 - Python 3.12+ - Node.js 20+ - Docker & Docker Compose 安装启动 全容器化启动 数据库迁移 项目结构 核心设计理念 - 目标驱动编排 Producer 根据状态自主决策下一步,而非固定流水线 - Agent 驱动中断 :通过 LangGraph interrupt() 实现人机协同,由 Agent 判断何时暂停"
},
{
"path": "docs/ARCHITECTURE_AND_PLAN.md",
"size": 20046,
"headings": [
"StudioAgent — 项目架构与实施计划",
"一、已完成工作",
"1.1 项目架构骨架(已完成)",
"后端Python + FastAPI + LangGraph",
"后端 API 路由7 个模块40+ 端点)",
"后端数据模型SQLAlchemy ORM对应 PRD 第九章 20+ 张表)",
"后端 Agent 系统PRD 第三章核心架构)",
"后端 LLM Provider 层PRD 第七章)",
"后端多模态生成器PRD 第七章 7.2-7.3",
"后端 WorkersCelery 异步任务)",
"前端Next.js 15 + React 19",
"前端页面路由PRD 第十一章 11.2",
"前端组件与 Hooks",
"基础设施",
"二、待实施计划",
"M0: 骨架 — 跑通最小闭环2 周)",
"M1: 双 Agent — Producer + Screenwriter 闭环2 周)",
"M2: 全 Agent — 6 Agent 全部上线3 周)",
"M3: 产品化 — 可用产品3 周)",
"M4: 发布 — 公开 Beta2 周)",
"三、技术风险与缓解PRD 第十五章)",
"四、启动指引",
"1. 安装依赖",
"2. 配置环境变量"
],
"opening": "StudioAgent — 项目架构与实施计划 文档版本 : v1.0 日期 : 2026-03-04 基于 : STUDIO AGENT PRD.md v1.2 --- 一、已完成工作 1.1 项目架构骨架(已完成) 基于 PRD 第十二章目录结构,完整创建了前后端项目骨架。共 90+ 文件 ,覆盖三层架构的所有模块。 后端Python + FastAPI + LangGraph 模块 文件 状态 说明 ------ ------ ------ ------ 项目配置 pyproject.toml ✅ 完成 Python 3.12,含 FastAPI/LangGraph/SQLAlchemy/Celery 等全部依赖 应用入口 app/main.py ✅ 完成 FastAPI 应用CORS 配置7 个路由模块挂载,健康检查端点 配置管理 app/config.py ✅ 完成 Pydantic Settings全部环境变量定义DB/Redis/LLM/媒体生成/存储) 依赖注入 app/deps.py ✅ 完成 数据库 session 依赖,带事务管理 数据库 app/db/session.py ✅ 完成 AsyncEngine + AsyncSessionFactory Alembic alembic.ini ✅ 骨架 配置文件就位,待创建 env.py 和初始迁移 Celery celery app.py ✅ 完成 4 个队列image/video/voice/text按类型路由 后端 API 路由7 个模块40+ 端点) 路由模块 文件 端点数 状态 --------- ------ -------- ------ 认证 api/auth.py 3 ✅ 骨架register/login/me 项目 api/projects.py 5 ✅ 骨架CRUD + 软删除) 对话 api/conversations.py 8 ✅ 骨架(核心 SSE 流已实现占位) 项目资产 api/assets.py 9 ✅ 骨架(角色/场景/剧集/分镜/任务/"
},
{
"path": "docs/STUDIO_AGENT_PRD.md",
"size": 105148,
"headings": [
"StudioAgent — AI 制片 Agent 平台 PRD",
"一、产品概述",
"1.1 一句话描述",
"1.2 核心价值主张",
"1.3 目标用户",
"1.4 成功指标",
"二、系统架构(参考 pi-mono 分层模式)",
"2.1 架构设计哲学",
"2.2 对比 pi-mono 的设计借鉴",
"三、Agent 系统详细设计",
"3.0 动态编排哲学",
"3.1 Agent 角色定义",
"Producer 的四大核心能力",
"3.2 LangGraph Swarm 编排(核心架构代码)",
"backend/app/agents/graph.py",
"═══════════ 全局状态(动态感知,非固定阶段)═══════════",
"── 动态状态(取代 current_phase 固定阶段枚举)──",
"Producer 通过此字段感知\"项目到了哪\",而非被阶段限制",
"Producer 通过此字段感知\"项目有什么、缺什么\"",
"── 用户交互偏好 ──",
"\"autonomous\"(用户授权自动执行,仅终审确认)",
"\"supervised\"(每步确认,类似传统 workflow",
"── Agent 运行时 ──",
"═══════════ Handoff 工具 ═══════════"
],
"opening": "StudioAgent — AI 制片 Agent 平台 PRD Product Requirements Document 版本v1.0 日期2026-03-03 基于 BRD v0.1 细化,参考 pi-mono 架构模式 + LangGraph 最佳实践 --- 一、产品概述 1.1 一句话描述 StudioAgent 是一个多 Agent 协作的 AI 制片平台——用户通过自然语言对话,指挥一个由 Producer、Screenwriter、Director、Camera、Editor、Sound 组成的 AI 剧组,全自动完成从创意到成片的视频制作。 1.2 核心价值主张 用户痛点 StudioAgent 解法 --------- ----------------- 工具类产品需要逐步操作,用户是\"操作员\" 对话驱动,用户是\"甲方/监制\"AI 自主规划执行 单点 AI 生成缺乏全局理解,角色/画风不一致 多 Agent 协作推理Director 负责视觉连贯性审核 固定流水线无法应对创意变更 LangGraph 动态编排,任意阶段可打断/修改/重做 各 AI 工具分散,用户需要手动串联 统一平台集成 LLM + 图片 + 视频 + 语音Agent 自动串联 1.3 目标用户 用户类型 核心诉求 典型对话 --------- --------- --------- 小说/IP 作者 零成本把作品视觉化 \"把我的小说做成 10 集短剧\" 短视频创作者 批量生产高质量内容 \"做一条 30 秒的产品广告\" 影视从业者 快速出预览/概念片 \"按这个分镜脚本出 animatic\" 企业市场部 低成本品牌视频 \"做一条企业年会宣传片\" 1.4 成功指标 指标 基线 M3 目标 M4 目标 ------ ------ --------- --------- 完整制作流程完成率 0% ≥60% ≥80% 平均完成一部 10 分镜短片耗时 N/A ≤30 min ≤15 min 用户 7 日留存率 0% ≥25% ≥40% Agent 回复满意度(用户评分) N/A ≥"
},
{
"path": "backend/app/llm/prompts/camera.md",
"size": 1035,
"headings": [
"Camera Agent — 摄影",
"核心职责",
"工作原则",
"参考图机制"
],
"opening": "Camera Agent — 摄影 你是 StudioAgent 制片团队的摄影师Camera负责所有视觉素材的生成。 核心职责 1. 角色形象生成 — 根据角色描述生成多张候选形象 2. 场景图生成 — 根据场景描述生成环境图 3. 分镜画面生成 — 根据分镜描述 + 角色/场景参考图生成画面 4. 图片修改 — 根据用户反馈修改已有图片 工作原则 - 生成候选图时默认生成 4 张,供用户选择 - 分镜画面生成时自动收集角色形象和场景图作为参考 - 保持画风一致性(同一项目使用统一的 style 参数) - 角色形象要从正面、半身、高清的角度生成 - 完成任务后通过 handoff 交还给 Producer 参考图机制 生成分镜画面时,会自动收集: 1. 该分镜中出现的角色的已确认形象 2. 该分镜所在场景的已确认场景图 3. 用户上传的草图(如有) 这些参考图作为 AI 模型的 image reference 传入,确保画面一致性。"
},
{
"path": "backend/app/llm/prompts/director.md",
"size": 1021,
"headings": [
"Director Agent — 导演",
"核心职责",
"工作原则",
"运镜指令词汇"
],
"opening": "Director Agent — 导演 你是 StudioAgent 制片团队的导演Director负责视觉叙事和镜头语言。 核心职责 1. 分镜生成 — 根据剧本生成分镜脚本(画面描述 + 镜头语言) 2. 镜头规划 — 为每个分镜设计最佳的拍摄角度和运镜方式 3. 视觉一致性审核 — 审查角色形象和场景的视觉连贯性 4. 镜头变体建议 — 分析当前画面,建议多种构图/角度变体 工作原则 - 镜头语言要服务于叙事,不为炫技而炫技 - 保证角色在不同分镜中的外观一致性 - 分镜描述要足够详细,可直接用于 AI 图片生成 - 合理运用推拉摇移等运镜技巧增加画面表现力 - 完成任务后通过 handoff 交还给 Producer 运镜指令词汇 push in推近, pull out拉远, pan left左摇, pan right右摇, tilt up上仰, tilt down下俯, orbit环绕, static静态, zoom in变焦推近, dolly跟拍"
},
{
"path": "backend/app/llm/prompts/editor.md",
"size": 586,
"headings": [
"Editor Agent — 剪辑",
"核心职责",
"工作原则"
],
"opening": "Editor Agent — 剪辑 你是 StudioAgent 制片团队的剪辑师Editor负责视频生成和时间轴编排。 核心职责 1. 图生视频 — 将分镜画面通过 AI 模型生成视频片段 2. 视频延长 — 延长视频片段时长 3. 时间轴编排 — 将多个视频片段按顺序拼接,添加转场效果 工作原则 - 视频 prompt 要包含具体的运动描述 - 运镜指令要与 Director 规划的一致 - 默认每个分镜 5 秒时长 - 转场效果要符合叙事节奏 - 完成任务后通过 handoff 交还给 Producer"
},
{
"path": "backend/app/llm/prompts/producer.md",
"size": 2769,
"headings": [
"Producer Agent — 制片人 / 总调度",
"核心身份",
"你的四大核心能力",
"1. 意图理解",
"2. 项目状态感知",
"3. 自适应确认策略",
"何时应该请求用户确认interrupt",
"何时可以自主继续(不 interrupt",
"何时应该讨论而非执行",
"4. 错误恢复",
"协作策略",
"沟通风格"
],
"opening": "Producer Agent — 制片人 / 总调度 你是 StudioAgent 制片团队的制片人Producer是整个 AI 剧组的智能决策者和总调度。 核心身份 你不是一个按预设步骤执行的状态机,而是一个自主决策的 Agent。类比 Claude Code——根据当前理解动态决定下一步做什么做完一步看结果再决定下一步。 你的四大核心能力 1. 意图理解 识别用户当前想做什么,不是所有对话都是\"执行任务\" - 完整制作 \"把这个小说做成短剧\" → 自主规划完整流程,在关键节点请求确认 - 局部修改 \"换个角色形象\" / \"第 3 个分镜重新拍\" → 直接 handoff 到对应 Agent - 讨论/咨询 \"你觉得这个剧本怎么改好?\" → 提供分析和建议,不执行操作 - 等待/暂停 \"等一下,让我想想\" → 进入等待状态 - 方向变更 \"之前的分镜不好,从角色重来\" → 回溯到指定阶段 2. 项目状态感知 通过 query project status 工具了解\"项目当前有什么、缺什么\",据此决定下一步。 3. 自适应确认策略 何时应该请求用户确认interrupt - 制定或修改整体制作方案时(影响全局方向) - 首次提取角色/场景设定时(用户可能想调整) - 执行高成本操作前(如批量生成 10 张图片、生成视频) - 你对下一步不确定时(用户意图模糊) - 生成的结果可能不符合预期时(如模型降级后的结果) 何时可以自主继续(不 interrupt - 用户给了明确具体的指令(如\"把角色A的头发改成短发\" - 执行低成本操作(如修改单个描述、收集参考图) - 内部协调步骤(如 Agent 间 handoff、参数准备 - 用户已在 autonomous 模式下 何时应该讨论而非执行 - 用户在提问或寻求建议 - 用户表达犹豫或不确定 - 用户说\"等一下\"/\"让我想想\" 4. 错误恢复 遇到问题不是直接报错停止,而是自主尝试替代方案: - 图片生成失败 → 自动降级到备选模型 → 告知用户 - 视频生成失败 → 重试一次 → 仍失败 →"
},
{
"path": "backend/app/llm/prompts/screenwriter.md",
"size": 1145,
"headings": [
"Screenwriter Agent — 编剧",
"核心职责",
"工作原则",
"输出格式"
],
"opening": "Screenwriter Agent — 编剧 你是 StudioAgent 制片团队的编剧Screenwriter专注于文本分析和剧本创作。 核心职责 1. 文本分析 — 分析用户提供的小说、故事大纲或文字描述 2. 角色提取 — 从文本中识别和提炼角色信息(姓名、年龄、外貌、性格、声音特征) 3. 场景提取 — 从文本中识别场景/地点信息 4. 剧本生成 — 根据角色、场景和情节生成结构化剧本 5. 剧本编辑 — 根据用户反馈修改剧本 工作原则 - 提取角色时保持完整性,不遗漏重要角色 - 角色描述要具体到可以生成视觉形象的程度 - 剧本结构要适合分镜转化(每个场景有明确的画面描述) - 对白要自然,适合配音朗读 - 完成任务后通过 handoff 交还给 Producer 输出格式 角色提取结果应包含name, gender, age, appearance外貌描述, personality, voice description 剧本应按分镜结构组织:每个 panel 包含 description画面描述, dialogue对白, camera move推荐运镜, duration建议时长"
},
{
"path": "backend/app/llm/prompts/sound.md",
"size": 637,
"headings": [
"Sound Agent — 音效",
"核心职责",
"工作原则"
],
"opening": "Sound Agent — 音效 你是 StudioAgent 制片团队的音效师Sound负责配音和音效设计。 核心职责 1. 对白分析 — 分析剧本中的对白,匹配角色音色 2. 角色配音 — 使用 TTS 为角色生成配音 3. 音效设计 — 根据场景描述匹配环境音和音效 4. 背景音乐 — 根据氛围匹配合适的背景音乐 工作原则 - 配音情感要与对白内容匹配 - 同一角色在不同分镜中使用相同的 voice id - 音效要与画面内容协调 - 背景音乐氛围要与剧情节奏一致 - 完成任务后通过 handoff 交还给 Producer"
}
],
"code_evidence": {
"project_name": "StudioAgent",
"software_name_candidate": "studio agent frontend",
"frameworks": [
"Next.js",
"React"
],
"language": "React、TypeScript、JavaScript",
"routes": [
"/",
"/login",
"/projects",
"/register"
],
"feature_name_candidates": [
"login",
"projects",
"register",
"settings",
"projects settings",
"asset hub",
"billing",
"AgentStatusBar",
"MessageBubble",
"ChatPanel",
"ChatInput",
"AssetPanel"
],
"entry_files": [
"frontend/src/app/layout.tsx",
"frontend/src/app/page.tsx"
],
"page_files": [
"frontend/src/app/providers.tsx",
"frontend/src/app/settings/page.tsx",
"frontend/src/app/projects/page.tsx",
"frontend/src/app/projects/[id]/page.tsx",
"frontend/src/app/projects/[id]/settings/page.tsx",
"frontend/src/app/asset-hub/page.tsx",
"frontend/src/app/(auth)/register/page.tsx",
"frontend/src/app/(auth)/login/page.tsx",
"frontend/src/app/billing/page.tsx"
],
"component_files": [
"frontend/src/components/ui/card.tsx",
"frontend/src/components/ui/scroll-area.tsx",
"frontend/src/components/ui/label.tsx",
"frontend/src/components/ui/avatar.tsx",
"frontend/src/components/ui/button.tsx",
"frontend/src/components/ui/textarea.tsx",
"frontend/src/components/ui/input.tsx",
"frontend/src/components/agent/AgentStatusBar.tsx",
"frontend/src/components/agent/MessageBubble.tsx",
"frontend/src/components/agent/ChatPanel.tsx",
"frontend/src/components/agent/ChatInput.tsx",
"frontend/src/components/assets/AssetPanel.tsx"
],
"api_files": [],
"run_command_candidates": [
"npm run dev",
"npm run start"
],
"package": {
"name": "studio-agent-frontend",
"path": "frontend/package.json",
"version": "0.1.0",
"scripts": {
"dev": "next dev --turbopack",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependency_names": [
"@eslint/eslintrc",
"@radix-ui/react-avatar",
"@radix-ui/react-dialog",
"@radix-ui/react-dropdown-menu",
"@radix-ui/react-scroll-area",
"@radix-ui/react-slot",
"@radix-ui/react-tabs",
"@radix-ui/react-tooltip",
"@tailwindcss/postcss",
"@tanstack/react-query",
"@types/node",
"@types/react",
"@types/react-dom",
"class-variance-authority",
"clsx",
"eslint",
"eslint-config-next",
"framer-motion",
"lucide-react",
"next",
"postcss",
"radix-ui",
"react",
"react-dom",
"shadcn",
"tailwind-merge",
"tailwindcss",
"tw-animate-css",
"typescript",
"zustand"
]
}
},
"external_research_notes": ""
}

View File

@@ -0,0 +1,89 @@
# 业务理解证据
- 软件名称StudioAgent
- 项目目录:`/Users/xxx/Documents/code/Software Copyright/StudioAgent`
本文件只列出可供模型研判的项目证据,不代表最终申报口径。
模型需要自行判断应阅读哪些文档、抽取哪些功能、采用什么操作手册结构。
## 代码与页面证据
- frameworks['Next.js', 'React']
- languageReact、TypeScript、JavaScript
- routes['/', '/login', '/projects', '/register']
- feature_name_candidates['login', 'projects', 'register', 'settings', 'projects settings', 'asset hub', 'billing', 'AgentStatusBar', 'MessageBubble', 'ChatPanel', 'ChatInput', 'AssetPanel']
- entry_files['frontend/src/app/layout.tsx', 'frontend/src/app/page.tsx']
- page_files['frontend/src/app/providers.tsx', 'frontend/src/app/settings/page.tsx', 'frontend/src/app/projects/page.tsx', 'frontend/src/app/projects/[id]/page.tsx', 'frontend/src/app/projects/[id]/settings/page.tsx', 'frontend/src/app/asset-hub/page.tsx', 'frontend/src/app/(auth)/register/page.tsx', 'frontend/src/app/(auth)/login/page.tsx', 'frontend/src/app/billing/page.tsx']
- component_files['frontend/src/components/ui/card.tsx', 'frontend/src/components/ui/scroll-area.tsx', 'frontend/src/components/ui/label.tsx', 'frontend/src/components/ui/avatar.tsx', 'frontend/src/components/ui/button.tsx', 'frontend/src/components/ui/textarea.tsx', 'frontend/src/components/ui/input.tsx', 'frontend/src/components/agent/AgentStatusBar.tsx', 'frontend/src/components/agent/MessageBubble.tsx', 'frontend/src/components/agent/ChatPanel.tsx', 'frontend/src/components/agent/ChatInput.tsx', 'frontend/src/components/assets/AssetPanel.tsx']
## 文档证据
### CLAUDE.md
- 大小8114 bytes
- 标题线索CLAUDE.mdCommandsDevelopmentDatabaseQualityRunning single backend testArchitectureBackend (`backend/`)Frontend (`frontend/`)SSE ProtocolInteraction ModesKey Design DecisionsMCP Tools UsageSkillsProject Status
CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. Commands Development Database Quality Running single backend test Architecture Three-layer system: Frontend (Next.js 15) ←SSE/REST→ Backend (FastAPI + LangGraph) ←Celery→ Workers Backend ( backend/ ) Entry : app/main.py — FastAPI app mounting 7 routers under /api/v1/ (auth, projects, conversations, assets, asset-hub, candidates, billing). Agent System ( app/agents/ ): - graph.py — LangGraph Swarm with 6 agents (Producer, Screenwriter, Director, Camera, Editor, Sound). Star topology : Producer is the hub; all others hand off only back to Producer. Uses create swarm() from langgraph swarm . - state.py — ProductionState TypedDict. Uses dynamic completed steps + available assets (not fixed phase enum). Producer reads state to decide next actions autonomously. - tools/confirm.py —
### README.md
- 大小4527 bytes
- 标题线索StudioAgent架构技术栈快速开始前置要求安装启动克隆项目复制环境变量文件并填入你的密钥安装依赖启动基础设施PostgreSQL + Redis和开发服务器全容器化启动数据库迁移项目结构核心设计理念开发命令项目状态许可证
StudioAgent 多智能体 AI 视频制片平台。用户用自然语言描述创意想法6 个专业 AI Agent 协作完成剧本、分镜、图像、视频和音频的生产——全程支持人机协同控制。 架构 6 个 AI Agent ,通过 LangGraph Swarm 构建星形拓扑: Agent 职责 ------- ------ Producer制片人 中枢节点——规划、协调、自主决策下一步行动 Screenwriter编剧 故事分析、角色提取、分集剧本生成 Director导演 分镜设计、镜头编排、视觉连续性把控 Camera摄影师 图像生成(角色、场景、分镜画面) Editor剪辑师 视频组装、转场、时间线编辑 Sound音效师 对白、语音合成、音效、背景音乐 Producer 是唯一的中枢——所有其他 Agent 完成任务后只能交回 Producer。 技术栈 层级 技术 ------ ------ 前端 Next.js 15、React 19、Tailwind CSS 4、Zustand、TanStack Query、Framer Motion 后端 Python 3.12、FastAPI、LangGraph Swarm、SQLAlchemy 2.0、Celery 数据库 PostgreSQL 16、Redis LLM OpenRouter (Claude)、Google (Gemini)、VolcEngine (豆包) 图像生成 Seedream、Imagen、FLUX 视频生成 Seedance、Veo、Kling 语音生成 Qwen TTS、ElevenLabs 快速开始 前置要求 - Python 3.12+ - Node.js 20+ - Docker & Docker Compose 安装启动 全容器化启动 数据库迁移 项目结构 核心设计理念 - 目标驱动编排 Producer 根据状态自主决策下一步,而非固定流水线 - Agent 驱动中断 :通过 LangGraph interrupt() 实现人机协同,由 Agent 判断何时暂停
### docs/ARCHITECTURE_AND_PLAN.md
- 大小20046 bytes
- 标题线索StudioAgent — 项目架构与实施计划一、已完成工作1.1 项目架构骨架已完成后端Python + FastAPI + LangGraph后端 API 路由7 个模块40+ 端点后端数据模型SQLAlchemy ORM对应 PRD 第九章 20+ 张表);后端 Agent 系统PRD 第三章核心架构);后端 LLM Provider 层PRD 第七章后端多模态生成器PRD 第七章 7.2-7.3);后端 WorkersCelery 异步任务前端Next.js 15 + React 19前端页面路由PRD 第十一章 11.2);前端组件与 Hooks基础设施二、待实施计划M0: 骨架 — 跑通最小闭环2 周M1: 双 Agent — Producer + Screenwriter 闭环2 周M2: 全 Agent — 6 Agent 全部上线3 周M3: 产品化 — 可用产品3 周M4: 发布 — 公开 Beta2 周三、技术风险与缓解PRD 第十五章四、启动指引1. 安装依赖2. 配置环境变量
StudioAgent — 项目架构与实施计划 文档版本 : v1.0 日期 : 2026-03-04 基于 : STUDIO AGENT PRD.md v1.2 --- 一、已完成工作 1.1 项目架构骨架(已完成) 基于 PRD 第十二章目录结构,完整创建了前后端项目骨架。共 90+ 文件 ,覆盖三层架构的所有模块。 后端Python + FastAPI + LangGraph 模块 文件 状态 说明 ------ ------ ------ ------ 项目配置 pyproject.toml ✅ 完成 Python 3.12,含 FastAPI/LangGraph/SQLAlchemy/Celery 等全部依赖 应用入口 app/main.py ✅ 完成 FastAPI 应用CORS 配置7 个路由模块挂载,健康检查端点 配置管理 app/config.py ✅ 完成 Pydantic Settings全部环境变量定义DB/Redis/LLM/媒体生成/存储) 依赖注入 app/deps.py ✅ 完成 数据库 session 依赖,带事务管理 数据库 app/db/session.py ✅ 完成 AsyncEngine + AsyncSessionFactory Alembic alembic.ini ✅ 骨架 配置文件就位,待创建 env.py 和初始迁移 Celery celery app.py ✅ 完成 4 个队列image/video/voice/text按类型路由 后端 API 路由7 个模块40+ 端点) 路由模块 文件 端点数 状态 --------- ------ -------- ------ 认证 api/auth.py 3 ✅ 骨架register/login/me 项目 api/projects.py 5 ✅ 骨架CRUD + 软删除) 对话 api/conversations.py 8 ✅ 骨架(核心 SSE 流已实现占位) 项目资产 api/assets.py 9 ✅ 骨架(角色/场景/剧集/分镜/任务/
### docs/STUDIO_AGENT_PRD.md
- 大小105148 bytes
- 标题线索StudioAgent — AI 制片 Agent 平台 PRD一、产品概述1.1 一句话描述1.2 核心价值主张1.3 目标用户1.4 成功指标;二、系统架构(参考 pi-mono 分层模式2.1 架构设计哲学2.2 对比 pi-mono 的设计借鉴三、Agent 系统详细设计3.0 动态编排哲学3.1 Agent 角色定义Producer 的四大核心能力3.2 LangGraph Swarm 编排核心架构代码backend/app/agents/graph.py═══════════ 全局状态(动态感知,非固定阶段)═══════════;── 动态状态(取代 current_phase 固定阶段枚举──Producer 通过此字段感知"项目到了哪"而非被阶段限制Producer 通过此字段感知"项目有什么、缺什么";── 用户交互偏好 ──;"autonomous"(用户授权自动执行,仅终审确认);"supervised"(每步确认,类似传统 workflow── Agent 运行时 ──;═══════════ Handoff 工具 ═══════════
StudioAgent — AI 制片 Agent 平台 PRD Product Requirements Document 版本v1.0 日期2026-03-03 基于 BRD v0.1 细化,参考 pi-mono 架构模式 + LangGraph 最佳实践 --- 一、产品概述 1.1 一句话描述 StudioAgent 是一个多 Agent 协作的 AI 制片平台——用户通过自然语言对话,指挥一个由 Producer、Screenwriter、Director、Camera、Editor、Sound 组成的 AI 剧组,全自动完成从创意到成片的视频制作。 1.2 核心价值主张 用户痛点 StudioAgent 解法 --------- ----------------- 工具类产品需要逐步操作,用户是"操作员" 对话驱动,用户是"甲方/监制"AI 自主规划执行 单点 AI 生成缺乏全局理解,角色/画风不一致 多 Agent 协作推理Director 负责视觉连贯性审核 固定流水线无法应对创意变更 LangGraph 动态编排,任意阶段可打断/修改/重做 各 AI 工具分散,用户需要手动串联 统一平台集成 LLM + 图片 + 视频 + 语音Agent 自动串联 1.3 目标用户 用户类型 核心诉求 典型对话 --------- --------- --------- 小说/IP 作者 零成本把作品视觉化 "把我的小说做成 10 集短剧" 短视频创作者 批量生产高质量内容 "做一条 30 秒的产品广告" 影视从业者 快速出预览/概念片 "按这个分镜脚本出 animatic" 企业市场部 低成本品牌视频 "做一条企业年会宣传片" 1.4 成功指标 指标 基线 M3 目标 M4 目标 ------ ------ --------- --------- 完整制作流程完成率 0% ≥60% ≥80% 平均完成一部 10 分镜短片耗时 N/A ≤30 min ≤15 min 用户 7 日留存率 0% ≥25% ≥40% Agent 回复满意度(用户评分) N/A ≥
### backend/app/llm/prompts/camera.md
- 大小1035 bytes
- 标题线索Camera Agent — 摄影;核心职责;工作原则;参考图机制
Camera Agent — 摄影 你是 StudioAgent 制片团队的摄影师Camera负责所有视觉素材的生成。 核心职责 1. 角色形象生成 — 根据角色描述生成多张候选形象 2. 场景图生成 — 根据场景描述生成环境图 3. 分镜画面生成 — 根据分镜描述 + 角色/场景参考图生成画面 4. 图片修改 — 根据用户反馈修改已有图片 工作原则 - 生成候选图时默认生成 4 张,供用户选择 - 分镜画面生成时自动收集角色形象和场景图作为参考 - 保持画风一致性(同一项目使用统一的 style 参数) - 角色形象要从正面、半身、高清的角度生成 - 完成任务后通过 handoff 交还给 Producer 参考图机制 生成分镜画面时,会自动收集: 1. 该分镜中出现的角色的已确认形象 2. 该分镜所在场景的已确认场景图 3. 用户上传的草图(如有) 这些参考图作为 AI 模型的 image reference 传入,确保画面一致性。
### backend/app/llm/prompts/director.md
- 大小1021 bytes
- 标题线索Director Agent — 导演;核心职责;工作原则;运镜指令词汇
Director Agent — 导演 你是 StudioAgent 制片团队的导演Director负责视觉叙事和镜头语言。 核心职责 1. 分镜生成 — 根据剧本生成分镜脚本(画面描述 + 镜头语言) 2. 镜头规划 — 为每个分镜设计最佳的拍摄角度和运镜方式 3. 视觉一致性审核 — 审查角色形象和场景的视觉连贯性 4. 镜头变体建议 — 分析当前画面,建议多种构图/角度变体 工作原则 - 镜头语言要服务于叙事,不为炫技而炫技 - 保证角色在不同分镜中的外观一致性 - 分镜描述要足够详细,可直接用于 AI 图片生成 - 合理运用推拉摇移等运镜技巧增加画面表现力 - 完成任务后通过 handoff 交还给 Producer 运镜指令词汇 push in推近, pull out拉远, pan left左摇, pan right右摇, tilt up上仰, tilt down下俯, orbit环绕, static静态, zoom in变焦推近, dolly跟拍
### backend/app/llm/prompts/editor.md
- 大小586 bytes
- 标题线索Editor Agent — 剪辑;核心职责;工作原则
Editor Agent — 剪辑 你是 StudioAgent 制片团队的剪辑师Editor负责视频生成和时间轴编排。 核心职责 1. 图生视频 — 将分镜画面通过 AI 模型生成视频片段 2. 视频延长 — 延长视频片段时长 3. 时间轴编排 — 将多个视频片段按顺序拼接,添加转场效果 工作原则 - 视频 prompt 要包含具体的运动描述 - 运镜指令要与 Director 规划的一致 - 默认每个分镜 5 秒时长 - 转场效果要符合叙事节奏 - 完成任务后通过 handoff 交还给 Producer
### backend/app/llm/prompts/producer.md
- 大小2769 bytes
- 标题线索Producer Agent — 制片人 / 总调度核心身份你的四大核心能力1. 意图理解2. 项目状态感知3. 自适应确认策略何时应该请求用户确认interrupt何时可以自主继续不 interrupt何时应该讨论而非执行4. 错误恢复;协作策略;沟通风格
Producer Agent — 制片人 / 总调度 你是 StudioAgent 制片团队的制片人Producer是整个 AI 剧组的智能决策者和总调度。 核心身份 你不是一个按预设步骤执行的状态机,而是一个自主决策的 Agent。类比 Claude Code——根据当前理解动态决定下一步做什么做完一步看结果再决定下一步。 你的四大核心能力 1. 意图理解 识别用户当前想做什么,不是所有对话都是"执行任务" - 完整制作 "把这个小说做成短剧" → 自主规划完整流程,在关键节点请求确认 - 局部修改 "换个角色形象" / "第 3 个分镜重新拍" → 直接 handoff 到对应 Agent - 讨论/咨询 "你觉得这个剧本怎么改好?" → 提供分析和建议,不执行操作 - 等待/暂停 "等一下,让我想想" → 进入等待状态 - 方向变更 "之前的分镜不好,从角色重来" → 回溯到指定阶段 2. 项目状态感知 通过 query project status 工具了解"项目当前有什么、缺什么",据此决定下一步。 3. 自适应确认策略 何时应该请求用户确认interrupt - 制定或修改整体制作方案时(影响全局方向) - 首次提取角色/场景设定时(用户可能想调整) - 执行高成本操作前(如批量生成 10 张图片、生成视频) - 你对下一步不确定时(用户意图模糊) - 生成的结果可能不符合预期时(如模型降级后的结果) 何时可以自主继续(不 interrupt - 用户给了明确具体的指令(如"把角色A的头发改成短发" - 执行低成本操作(如修改单个描述、收集参考图) - 内部协调步骤(如 Agent 间 handoff、参数准备 - 用户已在 autonomous 模式下 何时应该讨论而非执行 - 用户在提问或寻求建议 - 用户表达犹豫或不确定 - 用户说"等一下"/"让我想想" 4. 错误恢复 遇到问题不是直接报错停止,而是自主尝试替代方案: - 图片生成失败 → 自动降级到备选模型 → 告知用户 - 视频生成失败 → 重试一次 → 仍失败 →
### backend/app/llm/prompts/screenwriter.md
- 大小1145 bytes
- 标题线索Screenwriter Agent — 编剧;核心职责;工作原则;输出格式
Screenwriter Agent — 编剧 你是 StudioAgent 制片团队的编剧Screenwriter专注于文本分析和剧本创作。 核心职责 1. 文本分析 — 分析用户提供的小说、故事大纲或文字描述 2. 角色提取 — 从文本中识别和提炼角色信息(姓名、年龄、外貌、性格、声音特征) 3. 场景提取 — 从文本中识别场景/地点信息 4. 剧本生成 — 根据角色、场景和情节生成结构化剧本 5. 剧本编辑 — 根据用户反馈修改剧本 工作原则 - 提取角色时保持完整性,不遗漏重要角色 - 角色描述要具体到可以生成视觉形象的程度 - 剧本结构要适合分镜转化(每个场景有明确的画面描述) - 对白要自然,适合配音朗读 - 完成任务后通过 handoff 交还给 Producer 输出格式 角色提取结果应包含name, gender, age, appearance外貌描述, personality, voice description 剧本应按分镜结构组织:每个 panel 包含 description画面描述, dialogue对白, camera move推荐运镜, duration建议时长
### backend/app/llm/prompts/sound.md
- 大小637 bytes
- 标题线索Sound Agent — 音效;核心职责;工作原则
Sound Agent — 音效 你是 StudioAgent 制片团队的音效师Sound负责配音和音效设计。 核心职责 1. 对白分析 — 分析剧本中的对白,匹配角色音色 2. 角色配音 — 使用 TTS 为角色生成配音 3. 音效设计 — 根据场景描述匹配环境音和音效 4. 背景音乐 — 根据氛围匹配合适的背景音乐 工作原则 - 配音情感要与对白内容匹配 - 同一角色在不同分镜中使用相同的 voice id - 音效要与画面内容协调 - 背景音乐氛围要与剧情节奏一致 - 完成任务后通过 handoff 交还给 Producer

View File

@@ -0,0 +1,852 @@
{
"software_name": "StudioAgent AI视频制片平台软件",
"version": "V0.1.0",
"project_root": "/Users/xxx/Documents/code/Software Copyright/StudioAgent",
"file_count": 92,
"material_line_count": 5037,
"source_line_count": 4853,
"selected_source_line_count": 4853,
"lines_per_page": 60,
"total_pages": 84,
"target_pages": 60,
"available_candidate_line_count": 5137,
"available_candidate_pages": 86,
"supplement_status": "候选源码可达到前30页/后30页要求",
"mode": "front30_back30",
"selection_file": "软件著作权申请资料/草稿/代码文件选择.json",
"outputs": [
"代码-前30页.md",
"代码-后30页.md"
],
"files": [
{
"path": "frontend/src/app/layout.tsx",
"source_line_count": 22,
"selected_line_start": 1,
"selected_line_end": 22,
"selected_line_count": 22,
"material_line_start": 1,
"material_line_end": 24
},
{
"path": "frontend/src/app/page.tsx",
"source_line_count": 24,
"selected_line_start": 1,
"selected_line_end": 24,
"selected_line_count": 24,
"material_line_start": 25,
"material_line_end": 50
},
{
"path": "backend/app/agents/compaction.py",
"source_line_count": 14,
"selected_line_start": 1,
"selected_line_end": 14,
"selected_line_count": 14,
"material_line_start": 51,
"material_line_end": 66
},
{
"path": "backend/app/agents/graph.py",
"source_line_count": 187,
"selected_line_start": 1,
"selected_line_end": 187,
"selected_line_count": 187,
"material_line_start": 67,
"material_line_end": 255
},
{
"path": "backend/app/agents/session.py",
"source_line_count": 25,
"selected_line_start": 1,
"selected_line_end": 25,
"selected_line_count": 25,
"material_line_start": 256,
"material_line_end": 282
},
{
"path": "backend/app/agents/sse_transformer.py",
"source_line_count": 111,
"selected_line_start": 1,
"selected_line_end": 111,
"selected_line_count": 111,
"material_line_start": 283,
"material_line_end": 395
},
{
"path": "backend/app/agents/state.py",
"source_line_count": 82,
"selected_line_start": 1,
"selected_line_end": 82,
"selected_line_count": 82,
"material_line_start": 396,
"material_line_end": 479
},
{
"path": "backend/app/agents/tools/base.py",
"source_line_count": 29,
"selected_line_start": 1,
"selected_line_end": 29,
"selected_line_count": 29,
"material_line_start": 480,
"material_line_end": 510
},
{
"path": "backend/app/agents/tools/camera_tools.py",
"source_line_count": 89,
"selected_line_start": 1,
"selected_line_end": 89,
"selected_line_count": 89,
"material_line_start": 511,
"material_line_end": 601
},
{
"path": "backend/app/agents/tools/candidate.py",
"source_line_count": 14,
"selected_line_start": 1,
"selected_line_end": 14,
"selected_line_count": 14,
"material_line_start": 602,
"material_line_end": 617
},
{
"path": "backend/app/agents/tools/confirm.py",
"source_line_count": 38,
"selected_line_start": 1,
"selected_line_end": 38,
"selected_line_count": 38,
"material_line_start": 618,
"material_line_end": 657
},
{
"path": "backend/app/agents/tools/director_tools.py",
"source_line_count": 52,
"selected_line_start": 1,
"selected_line_end": 52,
"selected_line_count": 52,
"material_line_start": 658,
"material_line_end": 711
},
{
"path": "backend/app/agents/tools/editor_tools.py",
"source_line_count": 52,
"selected_line_start": 1,
"selected_line_end": 52,
"selected_line_count": 52,
"material_line_start": 712,
"material_line_end": 765
},
{
"path": "backend/app/agents/tools/global_asset_picker.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 766,
"material_line_end": 778
},
{
"path": "backend/app/agents/tools/producer_tools.py",
"source_line_count": 97,
"selected_line_start": 1,
"selected_line_end": 97,
"selected_line_count": 97,
"material_line_start": 779,
"material_line_end": 877
},
{
"path": "backend/app/agents/tools/reference_collector.py",
"source_line_count": 29,
"selected_line_start": 1,
"selected_line_end": 29,
"selected_line_count": 29,
"material_line_start": 878,
"material_line_end": 908
},
{
"path": "backend/app/agents/tools/screenwriter_tools.py",
"source_line_count": 69,
"selected_line_start": 1,
"selected_line_end": 69,
"selected_line_count": 69,
"material_line_start": 909,
"material_line_end": 979
},
{
"path": "backend/app/agents/tools/sound_tools.py",
"source_line_count": 60,
"selected_line_start": 1,
"selected_line_end": 60,
"selected_line_count": 60,
"material_line_start": 980,
"material_line_end": 1041
},
{
"path": "backend/app/api/asset_hub.py",
"source_line_count": 124,
"selected_line_start": 1,
"selected_line_end": 124,
"selected_line_count": 124,
"material_line_start": 1042,
"material_line_end": 1167
},
{
"path": "backend/app/api/assets.py",
"source_line_count": 59,
"selected_line_start": 1,
"selected_line_end": 59,
"selected_line_count": 59,
"material_line_start": 1168,
"material_line_end": 1228
},
{
"path": "backend/app/api/auth.py",
"source_line_count": 43,
"selected_line_start": 1,
"selected_line_end": 43,
"selected_line_count": 43,
"material_line_start": 1229,
"material_line_end": 1273
},
{
"path": "backend/app/api/billing.py",
"source_line_count": 23,
"selected_line_start": 1,
"selected_line_end": 23,
"selected_line_count": 23,
"material_line_start": 1274,
"material_line_end": 1298
},
{
"path": "backend/app/api/candidates.py",
"source_line_count": 52,
"selected_line_start": 1,
"selected_line_end": 52,
"selected_line_count": 52,
"material_line_start": 1299,
"material_line_end": 1352
},
{
"path": "backend/app/api/conversations.py",
"source_line_count": 153,
"selected_line_start": 1,
"selected_line_end": 153,
"selected_line_count": 153,
"material_line_start": 1353,
"material_line_end": 1507
},
{
"path": "backend/app/api/projects.py",
"source_line_count": 65,
"selected_line_start": 1,
"selected_line_end": 65,
"selected_line_count": 65,
"material_line_start": 1508,
"material_line_end": 1574
},
{
"path": "backend/app/config.py",
"source_line_count": 72,
"selected_line_start": 1,
"selected_line_end": 72,
"selected_line_count": 72,
"material_line_start": 1575,
"material_line_end": 1648
},
{
"path": "backend/app/db/migrations/env.py",
"source_line_count": 67,
"selected_line_start": 1,
"selected_line_end": 67,
"selected_line_count": 67,
"material_line_start": 1649,
"material_line_end": 1717
},
{
"path": "backend/app/db/migrations/versions/001_initial_schema.py",
"source_line_count": 224,
"selected_line_start": 1,
"selected_line_end": 224,
"selected_line_count": 224,
"material_line_start": 1718,
"material_line_end": 1943
},
{
"path": "backend/app/db/session.py",
"source_line_count": 24,
"selected_line_start": 1,
"selected_line_end": 24,
"selected_line_count": 24,
"material_line_start": 1944,
"material_line_end": 1969
},
{
"path": "backend/app/deps.py",
"source_line_count": 67,
"selected_line_start": 1,
"selected_line_end": 67,
"selected_line_count": 67,
"material_line_start": 1970,
"material_line_end": 2038
},
{
"path": "backend/app/generators/base.py",
"source_line_count": 30,
"selected_line_start": 1,
"selected_line_end": 30,
"selected_line_count": 30,
"material_line_start": 2039,
"material_line_end": 2070
},
{
"path": "backend/app/generators/image/flux.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 2071,
"material_line_end": 2083
},
{
"path": "backend/app/generators/image/imagen.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 2084,
"material_line_end": 2096
},
{
"path": "backend/app/generators/image/seedream.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 2097,
"material_line_end": 2109
},
{
"path": "backend/app/generators/video/kling.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 2110,
"material_line_end": 2122
},
{
"path": "backend/app/generators/video/seedance.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 2123,
"material_line_end": 2135
},
{
"path": "backend/app/generators/video/veo.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 2136,
"material_line_end": 2148
},
{
"path": "backend/app/generators/voice/elevenlabs.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 2149,
"material_line_end": 2161
},
{
"path": "backend/app/generators/voice/qwen_tts.py",
"source_line_count": 11,
"selected_line_start": 1,
"selected_line_end": 11,
"selected_line_count": 11,
"material_line_start": 2162,
"material_line_end": 2174
},
{
"path": "backend/app/llm/__init__.py",
"source_line_count": 85,
"selected_line_start": 1,
"selected_line_end": 85,
"selected_line_count": 85,
"material_line_start": 2175,
"material_line_end": 2261
},
{
"path": "backend/app/llm/base.py",
"source_line_count": 53,
"selected_line_start": 1,
"selected_line_end": 53,
"selected_line_count": 53,
"material_line_start": 2262,
"material_line_end": 2316
},
{
"path": "backend/app/main.py",
"source_line_count": 76,
"selected_line_start": 1,
"selected_line_end": 76,
"selected_line_count": 76,
"material_line_start": 2317,
"material_line_end": 2394
},
{
"path": "backend/app/models/asset.py",
"source_line_count": 124,
"selected_line_start": 1,
"selected_line_end": 124,
"selected_line_count": 124,
"material_line_start": 2395,
"material_line_end": 2520
},
{
"path": "backend/app/models/conversation.py",
"source_line_count": 37,
"selected_line_start": 1,
"selected_line_end": 37,
"selected_line_count": 37,
"material_line_start": 2521,
"material_line_end": 2559
},
{
"path": "backend/app/models/project.py",
"source_line_count": 23,
"selected_line_start": 1,
"selected_line_end": 23,
"selected_line_count": 23,
"material_line_start": 2560,
"material_line_end": 2584
},
{
"path": "backend/app/models/task.py",
"source_line_count": 45,
"selected_line_start": 1,
"selected_line_end": 45,
"selected_line_count": 45,
"material_line_start": 2585,
"material_line_end": 2631
},
{
"path": "backend/app/models/user.py",
"source_line_count": 27,
"selected_line_start": 1,
"selected_line_end": 27,
"selected_line_count": 27,
"material_line_start": 2632,
"material_line_end": 2660
},
{
"path": "backend/app/schemas/auth.py",
"source_line_count": 31,
"selected_line_start": 1,
"selected_line_end": 31,
"selected_line_count": 31,
"material_line_start": 2661,
"material_line_end": 2693
},
{
"path": "backend/app/schemas/conversation.py",
"source_line_count": 41,
"selected_line_start": 1,
"selected_line_end": 41,
"selected_line_count": 41,
"material_line_start": 2694,
"material_line_end": 2736
},
{
"path": "backend/app/schemas/project.py",
"source_line_count": 31,
"selected_line_start": 1,
"selected_line_end": 31,
"selected_line_count": 31,
"material_line_start": 2737,
"material_line_end": 2769
},
{
"path": "backend/app/services/auth_service.py",
"source_line_count": 46,
"selected_line_start": 1,
"selected_line_end": 46,
"selected_line_count": 46,
"material_line_start": 2770,
"material_line_end": 2817
},
{
"path": "backend/app/services/conversation_service.py",
"source_line_count": 62,
"selected_line_start": 1,
"selected_line_end": 62,
"selected_line_count": 62,
"material_line_start": 2818,
"material_line_end": 2881
},
{
"path": "backend/app/services/project_service.py",
"source_line_count": 45,
"selected_line_start": 1,
"selected_line_end": 45,
"selected_line_count": 45,
"material_line_start": 2882,
"material_line_end": 2928
},
{
"path": "backend/app/workers/image_worker.py",
"source_line_count": 9,
"selected_line_start": 1,
"selected_line_end": 9,
"selected_line_count": 9,
"material_line_start": 2929,
"material_line_end": 2939
},
{
"path": "backend/app/workers/text_worker.py",
"source_line_count": 9,
"selected_line_start": 1,
"selected_line_end": 9,
"selected_line_count": 9,
"material_line_start": 2940,
"material_line_end": 2950
},
{
"path": "backend/app/workers/video_worker.py",
"source_line_count": 9,
"selected_line_start": 1,
"selected_line_end": 9,
"selected_line_count": 9,
"material_line_start": 2951,
"material_line_end": 2961
},
{
"path": "backend/app/workers/voice_worker.py",
"source_line_count": 9,
"selected_line_start": 1,
"selected_line_end": 9,
"selected_line_count": 9,
"material_line_start": 2962,
"material_line_end": 2972
},
{
"path": "frontend/src/app/(auth)/login/page.tsx",
"source_line_count": 88,
"selected_line_start": 1,
"selected_line_end": 88,
"selected_line_count": 88,
"material_line_start": 2973,
"material_line_end": 3062
},
{
"path": "frontend/src/app/(auth)/register/page.tsx",
"source_line_count": 99,
"selected_line_start": 1,
"selected_line_end": 99,
"selected_line_count": 99,
"material_line_start": 3063,
"material_line_end": 3163
},
{
"path": "frontend/src/app/asset-hub/page.tsx",
"source_line_count": 32,
"selected_line_start": 1,
"selected_line_end": 32,
"selected_line_count": 32,
"material_line_start": 3164,
"material_line_end": 3197
},
{
"path": "frontend/src/app/billing/page.tsx",
"source_line_count": 8,
"selected_line_start": 1,
"selected_line_end": 8,
"selected_line_count": 8,
"material_line_start": 3198,
"material_line_end": 3207
},
{
"path": "frontend/src/app/projects/[id]/page.tsx",
"source_line_count": 99,
"selected_line_start": 1,
"selected_line_end": 99,
"selected_line_count": 99,
"material_line_start": 3208,
"material_line_end": 3308
},
{
"path": "frontend/src/app/projects/[id]/settings/page.tsx",
"source_line_count": 8,
"selected_line_start": 1,
"selected_line_end": 8,
"selected_line_count": 8,
"material_line_start": 3309,
"material_line_end": 3318
},
{
"path": "frontend/src/app/projects/page.tsx",
"source_line_count": 164,
"selected_line_start": 1,
"selected_line_end": 164,
"selected_line_count": 164,
"material_line_start": 3319,
"material_line_end": 3484
},
{
"path": "frontend/src/app/providers.tsx",
"source_line_count": 22,
"selected_line_start": 1,
"selected_line_end": 22,
"selected_line_count": 22,
"material_line_start": 3485,
"material_line_end": 3508
},
{
"path": "frontend/src/app/settings/page.tsx",
"source_line_count": 8,
"selected_line_start": 1,
"selected_line_end": 8,
"selected_line_count": 8,
"material_line_start": 3509,
"material_line_end": 3518
},
{
"path": "frontend/src/stores/conversation.ts",
"source_line_count": 19,
"selected_line_start": 1,
"selected_line_end": 19,
"selected_line_count": 19,
"material_line_start": 3519,
"material_line_end": 3539
},
{
"path": "frontend/src/stores/user.ts",
"source_line_count": 33,
"selected_line_start": 1,
"selected_line_end": 33,
"selected_line_count": 33,
"material_line_start": 3540,
"material_line_end": 3574
},
{
"path": "frontend/src/components/agent/AgentStatusBar.tsx",
"source_line_count": 36,
"selected_line_start": 1,
"selected_line_end": 36,
"selected_line_count": 36,
"material_line_start": 3575,
"material_line_end": 3612
},
{
"path": "frontend/src/components/agent/ChatInput.tsx",
"source_line_count": 42,
"selected_line_start": 1,
"selected_line_end": 42,
"selected_line_count": 42,
"material_line_start": 3613,
"material_line_end": 3656
},
{
"path": "frontend/src/components/agent/ChatPanel.tsx",
"source_line_count": 61,
"selected_line_start": 1,
"selected_line_end": 61,
"selected_line_count": 61,
"material_line_start": 3657,
"material_line_end": 3719
},
{
"path": "frontend/src/components/agent/MessageBubble.tsx",
"source_line_count": 71,
"selected_line_start": 1,
"selected_line_end": 71,
"selected_line_count": 71,
"material_line_start": 3720,
"material_line_end": 3792
},
{
"path": "frontend/src/components/assets/AssetPanel.tsx",
"source_line_count": 26,
"selected_line_start": 1,
"selected_line_end": 26,
"selected_line_count": 26,
"material_line_start": 3793,
"material_line_end": 3820
},
{
"path": "frontend/src/components/ui/avatar.tsx",
"source_line_count": 109,
"selected_line_start": 1,
"selected_line_end": 109,
"selected_line_count": 109,
"material_line_start": 3821,
"material_line_end": 3931
},
{
"path": "frontend/src/components/ui/button.tsx",
"source_line_count": 64,
"selected_line_start": 1,
"selected_line_end": 64,
"selected_line_count": 64,
"material_line_start": 3932,
"material_line_end": 3997
},
{
"path": "frontend/src/components/ui/card.tsx",
"source_line_count": 92,
"selected_line_start": 1,
"selected_line_end": 92,
"selected_line_count": 92,
"material_line_start": 3998,
"material_line_end": 4091
},
{
"path": "frontend/src/components/ui/input.tsx",
"source_line_count": 21,
"selected_line_start": 1,
"selected_line_end": 21,
"selected_line_count": 21,
"material_line_start": 4092,
"material_line_end": 4114
},
{
"path": "frontend/src/components/ui/label.tsx",
"source_line_count": 24,
"selected_line_start": 1,
"selected_line_end": 24,
"selected_line_count": 24,
"material_line_start": 4115,
"material_line_end": 4140
},
{
"path": "frontend/src/components/ui/scroll-area.tsx",
"source_line_count": 58,
"selected_line_start": 1,
"selected_line_end": 58,
"selected_line_count": 58,
"material_line_start": 4141,
"material_line_end": 4200
},
{
"path": "frontend/src/components/ui/textarea.tsx",
"source_line_count": 18,
"selected_line_start": 1,
"selected_line_end": 18,
"selected_line_count": 18,
"material_line_start": 4201,
"material_line_end": 4220
},
{
"path": "frontend/src/hooks/useAgentStream.ts",
"source_line_count": 216,
"selected_line_start": 1,
"selected_line_end": 216,
"selected_line_count": 216,
"material_line_start": 4221,
"material_line_end": 4438
},
{
"path": "frontend/src/hooks/useCandidateSystem.ts",
"source_line_count": 85,
"selected_line_start": 1,
"selected_line_end": 85,
"selected_line_count": 85,
"material_line_start": 4439,
"material_line_end": 4525
},
{
"path": "frontend/src/lib/api.ts",
"source_line_count": 29,
"selected_line_start": 1,
"selected_line_end": 29,
"selected_line_count": 29,
"material_line_start": 4526,
"material_line_end": 4556
},
{
"path": "frontend/src/lib/utils.ts",
"source_line_count": 6,
"selected_line_start": 1,
"selected_line_end": 6,
"selected_line_count": 6,
"material_line_start": 4557,
"material_line_end": 4564
},
{
"path": "frontend/next.config.ts",
"source_line_count": 15,
"selected_line_start": 1,
"selected_line_end": 15,
"selected_line_count": 15,
"material_line_start": 4565,
"material_line_end": 4581
},
{
"path": "frontend/src/app/globals.css",
"source_line_count": 128,
"selected_line_start": 1,
"selected_line_end": 128,
"selected_line_count": 128,
"material_line_start": 4582,
"material_line_end": 4711
},
{
"path": "backend/pyproject.toml",
"source_line_count": 74,
"selected_line_start": 1,
"selected_line_end": 74,
"selected_line_count": 74,
"material_line_start": 4712,
"material_line_end": 4787
},
{
"path": "docker-compose.dev.yml",
"source_line_count": 19,
"selected_line_start": 1,
"selected_line_end": 19,
"selected_line_count": 19,
"material_line_start": 4788,
"material_line_end": 4808
},
{
"path": "docker-compose.yml",
"source_line_count": 124,
"selected_line_start": 1,
"selected_line_end": 124,
"selected_line_count": 124,
"material_line_start": 4809,
"material_line_end": 4934
},
{
"path": "backend/celery_app.py",
"source_line_count": 29,
"selected_line_start": 1,
"selected_line_end": 29,
"selected_line_count": 29,
"material_line_start": 4935,
"material_line_end": 4965
},
{
"path": "frontend/package.json",
"source_line_count": 45,
"selected_line_start": 1,
"selected_line_end": 45,
"selected_line_count": 45,
"material_line_start": 4966,
"material_line_end": 5012
},
{
"path": "frontend/tsconfig.json",
"source_line_count": 23,
"selected_line_start": 1,
"selected_line_end": 23,
"selected_line_count": 23,
"material_line_start": 5013,
"material_line_end": 5037
}
],
"safe_software_filename": "StudioAgent AI视频制片平台软件"
}

View File

@@ -0,0 +1,110 @@
# 代码提取清单
- 软件名称StudioAgent AI视频制片平台软件
- 版本号V0.1.0
- 项目目录:/Users/xxx/Documents/code/Software Copyright/StudioAgent
- 源码文件数92
- 材料代码行数5037
- 每页行数60
- 总页数84
- 目标页数60
- 候选源码可生成页数86
- 补充状态候选源码可达到前30页/后30页要求
- 输出模式front30_back30
## 文件来源
| 文件 | 源码行数 | 抽取源码范围 | 抽取行数 | 材料行范围 |
| --- | ---: | --- | ---: | --- |
| `frontend/src/app/layout.tsx` | 22 | 1-22 | 22 | 1-24 |
| `frontend/src/app/page.tsx` | 24 | 1-24 | 24 | 25-50 |
| `backend/app/agents/compaction.py` | 14 | 1-14 | 14 | 51-66 |
| `backend/app/agents/graph.py` | 187 | 1-187 | 187 | 67-255 |
| `backend/app/agents/session.py` | 25 | 1-25 | 25 | 256-282 |
| `backend/app/agents/sse_transformer.py` | 111 | 1-111 | 111 | 283-395 |
| `backend/app/agents/state.py` | 82 | 1-82 | 82 | 396-479 |
| `backend/app/agents/tools/base.py` | 29 | 1-29 | 29 | 480-510 |
| `backend/app/agents/tools/camera_tools.py` | 89 | 1-89 | 89 | 511-601 |
| `backend/app/agents/tools/candidate.py` | 14 | 1-14 | 14 | 602-617 |
| `backend/app/agents/tools/confirm.py` | 38 | 1-38 | 38 | 618-657 |
| `backend/app/agents/tools/director_tools.py` | 52 | 1-52 | 52 | 658-711 |
| `backend/app/agents/tools/editor_tools.py` | 52 | 1-52 | 52 | 712-765 |
| `backend/app/agents/tools/global_asset_picker.py` | 11 | 1-11 | 11 | 766-778 |
| `backend/app/agents/tools/producer_tools.py` | 97 | 1-97 | 97 | 779-877 |
| `backend/app/agents/tools/reference_collector.py` | 29 | 1-29 | 29 | 878-908 |
| `backend/app/agents/tools/screenwriter_tools.py` | 69 | 1-69 | 69 | 909-979 |
| `backend/app/agents/tools/sound_tools.py` | 60 | 1-60 | 60 | 980-1041 |
| `backend/app/api/asset_hub.py` | 124 | 1-124 | 124 | 1042-1167 |
| `backend/app/api/assets.py` | 59 | 1-59 | 59 | 1168-1228 |
| `backend/app/api/auth.py` | 43 | 1-43 | 43 | 1229-1273 |
| `backend/app/api/billing.py` | 23 | 1-23 | 23 | 1274-1298 |
| `backend/app/api/candidates.py` | 52 | 1-52 | 52 | 1299-1352 |
| `backend/app/api/conversations.py` | 153 | 1-153 | 153 | 1353-1507 |
| `backend/app/api/projects.py` | 65 | 1-65 | 65 | 1508-1574 |
| `backend/app/config.py` | 72 | 1-72 | 72 | 1575-1648 |
| `backend/app/db/migrations/env.py` | 67 | 1-67 | 67 | 1649-1717 |
| `backend/app/db/migrations/versions/001_initial_schema.py` | 224 | 1-224 | 224 | 1718-1943 |
| `backend/app/db/session.py` | 24 | 1-24 | 24 | 1944-1969 |
| `backend/app/deps.py` | 67 | 1-67 | 67 | 1970-2038 |
| `backend/app/generators/base.py` | 30 | 1-30 | 30 | 2039-2070 |
| `backend/app/generators/image/flux.py` | 11 | 1-11 | 11 | 2071-2083 |
| `backend/app/generators/image/imagen.py` | 11 | 1-11 | 11 | 2084-2096 |
| `backend/app/generators/image/seedream.py` | 11 | 1-11 | 11 | 2097-2109 |
| `backend/app/generators/video/kling.py` | 11 | 1-11 | 11 | 2110-2122 |
| `backend/app/generators/video/seedance.py` | 11 | 1-11 | 11 | 2123-2135 |
| `backend/app/generators/video/veo.py` | 11 | 1-11 | 11 | 2136-2148 |
| `backend/app/generators/voice/elevenlabs.py` | 11 | 1-11 | 11 | 2149-2161 |
| `backend/app/generators/voice/qwen_tts.py` | 11 | 1-11 | 11 | 2162-2174 |
| `backend/app/llm/__init__.py` | 85 | 1-85 | 85 | 2175-2261 |
| `backend/app/llm/base.py` | 53 | 1-53 | 53 | 2262-2316 |
| `backend/app/main.py` | 76 | 1-76 | 76 | 2317-2394 |
| `backend/app/models/asset.py` | 124 | 1-124 | 124 | 2395-2520 |
| `backend/app/models/conversation.py` | 37 | 1-37 | 37 | 2521-2559 |
| `backend/app/models/project.py` | 23 | 1-23 | 23 | 2560-2584 |
| `backend/app/models/task.py` | 45 | 1-45 | 45 | 2585-2631 |
| `backend/app/models/user.py` | 27 | 1-27 | 27 | 2632-2660 |
| `backend/app/schemas/auth.py` | 31 | 1-31 | 31 | 2661-2693 |
| `backend/app/schemas/conversation.py` | 41 | 1-41 | 41 | 2694-2736 |
| `backend/app/schemas/project.py` | 31 | 1-31 | 31 | 2737-2769 |
| `backend/app/services/auth_service.py` | 46 | 1-46 | 46 | 2770-2817 |
| `backend/app/services/conversation_service.py` | 62 | 1-62 | 62 | 2818-2881 |
| `backend/app/services/project_service.py` | 45 | 1-45 | 45 | 2882-2928 |
| `backend/app/workers/image_worker.py` | 9 | 1-9 | 9 | 2929-2939 |
| `backend/app/workers/text_worker.py` | 9 | 1-9 | 9 | 2940-2950 |
| `backend/app/workers/video_worker.py` | 9 | 1-9 | 9 | 2951-2961 |
| `backend/app/workers/voice_worker.py` | 9 | 1-9 | 9 | 2962-2972 |
| `frontend/src/app/(auth)/login/page.tsx` | 88 | 1-88 | 88 | 2973-3062 |
| `frontend/src/app/(auth)/register/page.tsx` | 99 | 1-99 | 99 | 3063-3163 |
| `frontend/src/app/asset-hub/page.tsx` | 32 | 1-32 | 32 | 3164-3197 |
| `frontend/src/app/billing/page.tsx` | 8 | 1-8 | 8 | 3198-3207 |
| `frontend/src/app/projects/[id]/page.tsx` | 99 | 1-99 | 99 | 3208-3308 |
| `frontend/src/app/projects/[id]/settings/page.tsx` | 8 | 1-8 | 8 | 3309-3318 |
| `frontend/src/app/projects/page.tsx` | 164 | 1-164 | 164 | 3319-3484 |
| `frontend/src/app/providers.tsx` | 22 | 1-22 | 22 | 3485-3508 |
| `frontend/src/app/settings/page.tsx` | 8 | 1-8 | 8 | 3509-3518 |
| `frontend/src/stores/conversation.ts` | 19 | 1-19 | 19 | 3519-3539 |
| `frontend/src/stores/user.ts` | 33 | 1-33 | 33 | 3540-3574 |
| `frontend/src/components/agent/AgentStatusBar.tsx` | 36 | 1-36 | 36 | 3575-3612 |
| `frontend/src/components/agent/ChatInput.tsx` | 42 | 1-42 | 42 | 3613-3656 |
| `frontend/src/components/agent/ChatPanel.tsx` | 61 | 1-61 | 61 | 3657-3719 |
| `frontend/src/components/agent/MessageBubble.tsx` | 71 | 1-71 | 71 | 3720-3792 |
| `frontend/src/components/assets/AssetPanel.tsx` | 26 | 1-26 | 26 | 3793-3820 |
| `frontend/src/components/ui/avatar.tsx` | 109 | 1-109 | 109 | 3821-3931 |
| `frontend/src/components/ui/button.tsx` | 64 | 1-64 | 64 | 3932-3997 |
| `frontend/src/components/ui/card.tsx` | 92 | 1-92 | 92 | 3998-4091 |
| `frontend/src/components/ui/input.tsx` | 21 | 1-21 | 21 | 4092-4114 |
| `frontend/src/components/ui/label.tsx` | 24 | 1-24 | 24 | 4115-4140 |
| `frontend/src/components/ui/scroll-area.tsx` | 58 | 1-58 | 58 | 4141-4200 |
| `frontend/src/components/ui/textarea.tsx` | 18 | 1-18 | 18 | 4201-4220 |
| `frontend/src/hooks/useAgentStream.ts` | 216 | 1-216 | 216 | 4221-4438 |
| `frontend/src/hooks/useCandidateSystem.ts` | 85 | 1-85 | 85 | 4439-4525 |
| `frontend/src/lib/api.ts` | 29 | 1-29 | 29 | 4526-4556 |
| `frontend/src/lib/utils.ts` | 6 | 1-6 | 6 | 4557-4564 |
| `frontend/next.config.ts` | 15 | 1-15 | 15 | 4565-4581 |
| `frontend/src/app/globals.css` | 128 | 1-128 | 128 | 4582-4711 |
| `backend/pyproject.toml` | 74 | 1-74 | 74 | 4712-4787 |
| `docker-compose.dev.yml` | 19 | 1-19 | 19 | 4788-4808 |
| `docker-compose.yml` | 124 | 1-124 | 124 | 4809-4934 |
| `backend/celery_app.py` | 29 | 1-29 | 29 | 4935-4965 |
| `frontend/package.json` | 45 | 1-45 | 45 | 4966-5012 |
| `frontend/tsconfig.json` | 23 | 1-23 | 23 | 5013-5037 |

View File

@@ -0,0 +1,133 @@
# 代码文件候选清单
请先确认要抽取哪些源码文件,再运行代码材料抽取。
本清单只列出候选源码证据,不默认决定抽取文件。
模型需要先理解项目业务、页面入口和源码职责,再填写 `selected/start_line/end_line/model_reason`
当前已选约 84 页,全部候选源码约 86 页。
```text
STOP_FOR_USER
NEXT_ACTION: 请由模型先填写 草稿/代码文件选择.json 的抽取选择和选择理由,再让用户确认;确认后运行 confirm_stage.py --stage code-selection。
```
确认方式:
1. 模型根据项目业务和代码入口选择最能体现软件功能的文件。
2. 把需要抽取的文件设为 `selected: true`,并填写 `model_reason`
3. 如只想抽取某个文件中间部分,可填写 `start_line``end_line`
4. 用户确认模型选择后,再记录 `code-selection` 门禁。
## 默认选中文件
| 文件 | 行数 | 抽取范围 | 模型选择理由 |
| --- | ---: | --- | --- |
| `frontend/src/app/layout.tsx` | 22 | 1-22 | 前端应用根布局,体现页面框架和全局结构。 |
| `frontend/src/app/page.tsx` | 24 | 1-24 | 系统首页入口,体现 StudioAgent 产品入口和开始创作路径。 |
| `backend/app/agents/compaction.py` | 14 | 1-14 | 上下文压缩服务骨架,体现长对话维护能力。 |
| `backend/app/agents/graph.py` | 187 | 1-187 | LangGraph Swarm 编排核心,体现六 Agent 创建、handoff 和图编译。 |
| `backend/app/agents/session.py` | 25 | 1-25 | 会话生命周期骨架,体现 prompt、resume、steer、abort 等会话控制。 |
| `backend/app/agents/sse_transformer.py` | 111 | 1-111 | Agent 事件到 SSE 协议转换,体现前后端流式协作协议。 |
| `backend/app/agents/state.py` | 82 | 1-82 | 生产状态定义,体现项目计划、角色、场景、剧本、分镜、资产和交互模式。 |
| `backend/app/agents/tools/base.py` | 29 | 1-29 | Agent 工具基类,体现工具定义和执行上下文。 |
| `backend/app/agents/tools/camera_tools.py` | 89 | 1-89 | 摄影工具定义,体现角色、场景、分镜画面生成和图片修改。 |
| `backend/app/agents/tools/candidate.py` | 14 | 1-14 | 候选状态模型,体现候选素材抽卡状态结构。 |
| `backend/app/agents/tools/confirm.py` | 38 | 1-38 | 用户确认工具,体现关键节点中断和人机协同控制。 |
| `backend/app/agents/tools/director_tools.py` | 52 | 1-52 | 导演工具定义,体现分镜生成、镜头规划和视觉一致性审核。 |
| `backend/app/agents/tools/editor_tools.py` | 52 | 1-52 | 剪辑工具定义,体现视频生成、延长和时间线编排。 |
| `backend/app/agents/tools/global_asset_picker.py` | 11 | 1-11 | 全局素材选择工具,体现跨项目素材复用入口。 |
| `backend/app/agents/tools/producer_tools.py` | 97 | 1-97 | Producer 工具定义,体现方案规划、成本估算和项目状态查询。 |
| `backend/app/agents/tools/reference_collector.py` | 29 | 1-29 | 参考图收集工具,体现角色、场景和草图参考素材组织。 |
| `backend/app/agents/tools/screenwriter_tools.py` | 69 | 1-69 | 编剧工具定义,体现文本分析、角色提取、场景提取、剧本生成和编辑。 |
| `backend/app/agents/tools/sound_tools.py` | 60 | 1-60 | 音效工具定义,体现对白分析、语音生成、音效和背景音乐设计。 |
| `backend/app/api/asset_hub.py` | 124 | 1-124 | 全局素材库接口,体现文件夹、全局角色、场景和音色管理。 |
| `backend/app/api/assets.py` | 59 | 1-59 | 项目资产接口,体现角色、场景、剧集、分镜、任务和全局素材复制入口。 |
| `backend/app/api/auth.py` | 43 | 1-43 | 认证接口,体现注册、登录和获取当前用户信息。 |
| `backend/app/api/billing.py` | 23 | 1-23 | 计费接口,体现余额、交易记录和充值入口。 |
| `backend/app/api/candidates.py` | 52 | 1-52 | 候选抽卡接口,体现候选确认、取消、撤回和历史恢复能力。 |
| `backend/app/api/conversations.py` | 153 | 1-153 | 对话接口体现项目会话创建、消息发送、SSE 流式响应和恢复入口。 |
| `backend/app/api/projects.py` | 65 | 1-65 | 项目接口,体现项目创建、列表、详情、更新和软删除。 |
| `backend/app/config.py` | 72 | 1-72 | 后端配置管理体现数据库、Redis、LLM 和多媒体生成服务参数。 |
| `backend/app/db/migrations/env.py` | 67 | 1-67 | 数据库迁移环境,体现模型元数据和迁移运行配置。 |
| `backend/app/db/migrations/versions/001_initial_schema.py` | 224 | 1-224 | 初始数据库迁移,体现用户、项目、对话、资产、任务和交易表结构。 |
| `backend/app/db/session.py` | 24 | 1-24 | 数据库连接会话,体现异步数据库访问基础。 |
| `backend/app/deps.py` | 67 | 1-67 | 后端依赖注入,体现数据库会话、当前用户和 Agent 图依赖。 |
| `backend/app/generators/base.py` | 30 | 1-30 | 多媒体生成器抽象接口,体现图像、视频和语音生成统一结构。 |
| `backend/app/generators/image/flux.py` | 11 | 1-11 | FLUX 图片生成器骨架,体现图像生成备选服务接入。 |
| `backend/app/generators/image/imagen.py` | 11 | 1-11 | Imagen 图片生成器骨架,体现图像生成备选服务接入。 |
| `backend/app/generators/image/seedream.py` | 11 | 1-11 | Seedream 图片生成器骨架,体现图像生成服务接入。 |
| `backend/app/generators/video/kling.py` | 11 | 1-11 | Kling 视频生成器骨架,体现视频生成备选服务接入。 |
| `backend/app/generators/video/seedance.py` | 11 | 1-11 | Seedance 视频生成器骨架,体现视频生成服务接入。 |
| `backend/app/generators/video/veo.py` | 11 | 1-11 | Veo 视频生成器骨架,体现视频生成备选服务接入。 |
| `backend/app/generators/voice/elevenlabs.py` | 11 | 1-11 | ElevenLabs 语音生成器骨架,体现英文配音服务接入。 |
| `backend/app/generators/voice/qwen_tts.py` | 11 | 1-11 | Qwen TTS 语音生成器骨架,体现中文配音服务接入。 |
| `backend/app/llm/__init__.py` | 85 | 1-85 | LLM 工厂和模型注册表,体现多 Provider 模型接入。 |
| `backend/app/llm/base.py` | 53 | 1-53 | LLM Provider 抽象接口,体现模型消息和响应结构。 |
| `backend/app/main.py` | 76 | 1-76 | FastAPI 应用入口,体现路由挂载、健康检查和跨域配置。 |
| `backend/app/models/asset.py` | 124 | 1-124 | 资产模型,体现角色、形象、场景、分镜等制片资产结构。 |
| `backend/app/models/conversation.py` | 37 | 1-37 | 对话和消息模型,体现 Agent 消息、推理内容和元数据保存。 |
| `backend/app/models/project.py` | 23 | 1-23 | 项目模型,体现视频项目基本信息和软删除状态。 |
| `backend/app/models/task.py` | 45 | 1-45 | 任务和交易模型,体现异步任务状态和余额流水。 |
| `backend/app/models/user.py` | 27 | 1-27 | 用户模型,体现账号、余额和偏好数据。 |
| `backend/app/schemas/auth.py` | 31 | 1-31 | 认证接口数据结构,体现注册、登录和用户响应字段。 |
| `backend/app/schemas/conversation.py` | 41 | 1-41 | 对话接口数据结构,体现消息发送、恢复和消息响应字段。 |
| `backend/app/schemas/project.py` | 31 | 1-31 | 项目接口数据结构,体现创建、更新和响应字段。 |
| `backend/app/services/auth_service.py` | 46 | 1-46 | 认证服务,体现密码哈希、用户创建、用户查询和令牌生成。 |
| `backend/app/services/conversation_service.py` | 62 | 1-62 | 对话服务,体现会话创建、消息存储和历史查询。 |
| `backend/app/services/project_service.py` | 45 | 1-45 | 项目服务,体现项目创建、查询、更新和软删除业务逻辑。 |
| `backend/app/workers/image_worker.py` | 9 | 1-9 | 图像任务 Worker体现图像生成异步任务入口。 |
| `backend/app/workers/text_worker.py` | 9 | 1-9 | 文本任务 Worker体现文本生成异步任务入口。 |
| `backend/app/workers/video_worker.py` | 9 | 1-9 | 视频任务 Worker体现视频生成异步任务入口。 |
| `backend/app/workers/voice_worker.py` | 9 | 1-9 | 语音任务 Worker体现配音生成异步任务入口。 |
| `frontend/src/app/(auth)/login/page.tsx` | 88 | 1-88 | 登录页面源码,体现用户身份认证的前端操作流程。 |
| `frontend/src/app/(auth)/register/page.tsx` | 99 | 1-99 | 注册页面源码,体现账号创建和登录状态写入流程。 |
| `frontend/src/app/asset-hub/page.tsx` | 32 | 1-32 | 全局素材库页面,体现素材分类管理入口。 |
| `frontend/src/app/billing/page.tsx` | 8 | 1-8 | 计费管理页面入口,体现成本信息查看功能。 |
| `frontend/src/app/projects/[id]/page.tsx` | 99 | 1-99 | 核心制片工作区页面,体现左侧对话、右侧资产和底部费用状态布局。 |
| `frontend/src/app/projects/[id]/settings/page.tsx` | 8 | 1-8 | 项目设置页面入口,体现单项目配置功能。 |
| `frontend/src/app/projects/page.tsx` | 164 | 1-164 | 项目列表与新建项目页面,体现项目管理主流程。 |
| `frontend/src/app/providers.tsx` | 22 | 1-22 | 前端全局 Provider体现客户端状态和请求上下文承载。 |
| `frontend/src/app/settings/page.tsx` | 8 | 1-8 | 用户设置页面入口,体现系统配置功能。 |
| `frontend/src/stores/conversation.ts` | 19 | 1-19 | 对话状态管理,体现会话状态数据结构。 |
| `frontend/src/stores/user.ts` | 33 | 1-33 | 用户状态管理,体现登录用户、令牌和余额状态保存。 |
| `frontend/src/components/agent/AgentStatusBar.tsx` | 36 | 1-36 | 多 Agent 状态栏组件,体现制片人、编剧、导演等角色的协作状态展示。 |
| `frontend/src/components/agent/ChatInput.tsx` | 42 | 1-42 | 对话输入组件,体现用户发送自然语言制作需求的交互。 |
| `frontend/src/components/agent/ChatPanel.tsx` | 61 | 1-61 | AI 剧组对话面板,体现消息列表、状态栏和输入区组合。 |
| `frontend/src/components/agent/MessageBubble.tsx` | 71 | 1-71 | 消息气泡组件体现用户、Agent 和工具结果的展示方式。 |
| `frontend/src/components/assets/AssetPanel.tsx` | 26 | 1-26 | 项目资产面板,体现角色、场景、分镜、视频和音频分类查看。 |
| `frontend/src/components/ui/avatar.tsx` | 109 | 1-109 | 基础头像组件,支撑用户和 Agent 视觉标识展示。 |
| `frontend/src/components/ui/button.tsx` | 64 | 1-64 | 基础按钮组件,支撑注册、登录、创建项目和候选确认等操作。 |
| `frontend/src/components/ui/card.tsx` | 92 | 1-92 | 基础卡片组件,支撑项目、素材和结果信息展示。 |
| `frontend/src/components/ui/input.tsx` | 21 | 1-21 | 基础输入组件,支撑账号、项目等表单输入。 |
| `frontend/src/components/ui/label.tsx` | 24 | 1-24 | 表单标签组件,支撑表单字段说明。 |
| `frontend/src/components/ui/scroll-area.tsx` | 58 | 1-58 | 滚动区域组件,支撑对话和素材列表浏览。 |
| `frontend/src/components/ui/textarea.tsx` | 18 | 1-18 | 基础多行输入组件,支撑项目描述和创意文本输入。 |
| `frontend/src/hooks/useAgentStream.ts` | 216 | 1-216 | SSE 流式对话 Hook体现消息发送、Agent 事件处理、确认请求和交接状态更新。 |
| `frontend/src/hooks/useCandidateSystem.ts` | 85 | 1-85 | 候选素材状态 Hook体现候选选择、确认、取消和撤回的前端逻辑。 |
| `frontend/src/lib/api.ts` | 29 | 1-29 | API 客户端封装,体现统一接口请求和鉴权头处理。 |
| `frontend/src/lib/utils.ts` | 6 | 1-6 | 前端样式工具函数,支撑组件类名组合。 |
| `frontend/next.config.ts` | 15 | 1-15 | 前端构建和 API 代理配置,体现前后端联调路径。 |
| `frontend/src/app/globals.css` | 128 | 1-128 | 全局样式,体现 Web 界面的基础视觉与暗色模式样式。 |
| `backend/pyproject.toml` | 74 | 1-74 | 后端依赖和开发工具配置,体现 FastAPI、LangGraph、数据库和测试工具依赖。 |
| `docker-compose.dev.yml` | 19 | 1-19 | 开发环境容器覆写配置,体现本地开发服务启动方式。 |
| `docker-compose.yml` | 124 | 1-124 | 容器编排配置体现数据库、Redis、后端、Worker 和前端服务组成。 |
| `backend/celery_app.py` | 29 | 1-29 | Celery 任务队列配置,体现图像、视频、语音和文本队列路由。 |
| `frontend/package.json` | 45 | 1-45 | 前端依赖和脚本配置,体现运行、构建和依赖环境。 |
| `frontend/tsconfig.json` | 23 | 1-23 | 前端 TypeScript 配置,体现路径别名和类型检查环境。 |
## 未选候选文件
| 文件 | 行数 | 证据类型 |
| --- | ---: | --- |
| `backend/app/agents/__init__.py` | 1 | 页面文件证据 |
| `backend/app/agents/nodes/__init__.py` | 1 | 页面文件证据 |
| `backend/app/agents/tools/__init__.py` | 1 | 页面文件证据 |
| `backend/app/generators/__init__.py` | 5 | 页面文件证据 |
| `backend/app/models/__init__.py` | 30 | 页面文件证据 |
| `backend/app/schemas/__init__.py` | 1 | 页面文件证据 |
| `backend/app/services/__init__.py` | 1 | 页面文件证据 |
| `backend/app/workers/__init__.py` | 1 | 页面文件证据 |
| `frontend/next-env.d.ts` | 6 | 普通源码文件 |
| `frontend/postcss.config.js` | 5 | 普通源码文件 |
| `backend/tests/__init__.py` | 1 | 补充源码证据 |
| `frontend/components.json` | 23 | 补充源码证据 |

View File

@@ -0,0 +1,149 @@
# StudioAgent AI视频制片平台软件操作手册
## 一、软件概述
StudioAgent AI视频制片平台软件用于辅助用户完成视频内容创作。用户以自然语言描述创意、故事文本、广告目标或局部修改要求软件围绕一个视频项目组织对话、制作进度和素材资产。系统中的制片人、编剧、导演、摄影、剪辑、音效等角色分别承担规划、剧本、分镜、画面、视频和声音相关工作用户可在关键节点查看结果并作出确认。
软件的主要使用对象包括小说或 IP 作者、短视频创作者、影视预览制作人员、企业市场宣传人员,以及需要管理角色、场景、分镜、视频和音频素材的内容团队。审核时可把本软件理解为一个面向视频制作过程的项目工作区:用户先创建项目,再通过对话推进制作,制作过程中形成的素材在同一页面分类查看和复用。
## 二、运行环境与进入方式
本软件以网页方式使用,用户通过浏览器打开系统地址进入首页。首页显示软件名称和“开始创作”“登录”等入口,未登录用户可先进入注册或登录页面,已登录用户可进入项目列表继续处理已有项目。
软件部署时需要准备前台页面服务、后台业务服务、数据库、缓存服务以及浏览器访问环境。用户侧通常只需要使用 Chrome、Edge、Safari 等现代浏览器访问系统页面;具体服务器、数据库和缓存服务由部署人员根据实际环境配置。
【截图预留请在此处插入“StudioAgent 首页或进入方式”截图。】
## 三、账号注册与登录
用户首次使用时,可以在注册页面填写昵称、邮箱和密码。提交后,软件会创建账号并保存登录状态,随后跳转到项目列表页面。若邮箱已被注册、密码不符合要求或网络请求失败,页面会显示错误提示,用户可修改信息后重新提交。
已有账号的用户进入登录页面后,填写邮箱和密码并提交。登录通过后,软件会获取当前用户信息,把登录状态保存到本地,并进入“我的项目”页面。登录失败时,页面会保留在登录页并提示用户检查账号或密码。
操作步骤:
1. 打开软件首页,点击“登录”或进入注册页面。
2. 注册时填写昵称、邮箱和密码;登录时填写邮箱和密码。
3. 点击“注册”或“登录”按钮提交。
4. 根据页面反馈进入项目列表,或按错误提示修改信息后重新提交。
【截图预留:请在此处插入“账号注册与登录”页面或操作结果截图。】
## 四、项目创建与项目列表管理
用户登录后进入“我的项目”页面。页面展示当前账号下已有的视频制作项目,每个项目以卡片形式显示项目名称、描述、风格和创建日期,用户可通过卡片区分不同创作任务。页面加载时会读取项目列表,若登录状态失效,软件会引导用户回到登录页。
创建新项目时,用户点击“新建项目”,在弹出的窗口中填写项目名称和可选描述。项目名称用于识别当前视频任务,描述可记录想制作的内容方向,例如短剧、广告片、概念预览或企业宣传片。创建成功后,软件会自动进入该项目的制片工作区。
操作步骤:
1. 登录后进入“我的项目”页面。
2. 查看已有项目卡片,或点击“新建项目”。
3. 填写项目名称和描述,点击“创建”。
4. 创建成功后进入项目工作区;需要继续已有项目时,点击对应项目卡片进入。
【截图预留:请在此处插入“我的项目”列表和新建项目窗口截图。】
## 五、AI 制片工作区
项目工作区是本软件的核心页面。页面顶部显示 StudioAgent 标识和当前项目名称,左侧为对话区域,右侧为项目资产区域,底部显示余额、本项目消耗和当前模型等状态。用户进入项目后,软件会读取项目信息,并获取或创建对应的项目对话。
用户在左侧输入框中描述制作要求,例如“把这个故事做成 30 秒短片”“先生成角色形象”“把第三个分镜重新设计”。软件会把用户消息加入对话记录,并以连续消息形式显示制片过程。对话区会展示用户消息、助手回复、工具处理结果和思考中的提示,便于用户理解当前制作进展。
操作步骤:
1. 从项目列表进入某个项目。
2. 在左侧对话输入框中输入创作需求或修改意见。
3. 等待软件返回制片人或其他制作角色的回复。
4. 查看回复内容、处理状态和结果提示,必要时继续输入补充要求。
【截图预留请在此处插入“AI 制片工作区对话面板”截图。】
## 六、多角色协作状态查看
软件把视频制作过程拆分给多个制作角色协作处理,包括制片人、编剧、导演、摄影、剪辑和音效。制片人负责理解用户意图和安排下一步;编剧处理文本分析、角色和剧本;导演处理分镜和镜头规划;摄影处理角色、场景和分镜画面;剪辑处理视频片段和时间线;音效处理配音、音效和背景音乐。
在工作区中,用户可以通过状态栏查看当前由哪个角色处理任务,以及角色之间是否发生交接。软件在收到工作开始、消息返回、处理结果、确认请求或完成信号时,会更新页面状态。这样用户无需了解内部执行细节,也能知道当前制作环节处于等待、处理中还是已完成。
操作步骤:
1. 在项目工作区提交创作需求。
2. 查看对话区下方或附近的角色状态栏。
3. 观察当前工作中的角色名称和交接状态。
4. 当软件请求确认时,根据页面提示选择确认、修改或继续补充说明。
【截图预留:请在此处插入“多角色协作状态栏”截图。】
## 七、项目资产分类查看
工作区右侧为项目资产面板,用于集中展示创作过程中形成的角色、场景、分镜、视频和音频。页面顶部以标签形式区分素材类型,用户可在不同标签之间切换。项目刚创建时,资产区域会提示“项目资产将在创作过程中自动生成”;随着制作推进,相关素材会逐步沉淀到对应分类。
该功能帮助用户在对话之外查看项目产物。比如角色形象、场景图、分镜画面、视频片段和音频内容可以按类型分开呈现,用户在确认或修改时能更清楚地找到目标素材。对于需要反复调整的项目,资产面板也能帮助用户把已生成内容和待处理内容区分开。
操作步骤:
1. 进入项目工作区并查看右侧资产面板。
2. 点击“角色”“场景”“分镜”“视频”“音频”等标签。
3. 查看当前分类下已有素材或空状态提示。
4. 根据对话结果继续生成、确认或调整对应素材。
【截图预留:请在此处插入“项目资产分类面板”截图。】
## 八、候选素材选择与撤回
当软件为角色形象、场景图或分镜画面生成多个候选结果时,用户可以在候选中选择满意项。候选选择功能会记录原始素材、候选列表、当前选中项和上一个版本,方便用户比较不同结果。用户确认后,选中的候选会作为当前素材保存;如果结果不合适,也可以取消本次候选或撤回到上一版本。
该功能适合处理视觉结果存在多种可能的制作环节。例如角色外观可能有多张候选图,场景画面可能有多个氛围版本,分镜图可能有不同构图。用户可先浏览候选,再选择最符合项目风格的一项,减少直接覆盖已有素材带来的风险。
操作步骤:
1. 在生成角色、场景或分镜画面后查看候选结果。
2. 点击不同候选,比较画面、风格或内容是否符合要求。
3. 选择满意项后点击确认,使其成为当前素材。
4. 如果不采用本轮候选,选择取消;如果需要恢复,使用撤回入口回到上一版本。
【截图预留:请在此处插入“候选素材选择与撤回”页面或操作结果截图。】
## 九、全局素材库
全局素材库用于保存可跨项目复用的角色、场景和音色。用户进入素材库页面后,左侧可查看素材文件夹区域,右侧可通过“全部”“角色”“场景”“音色”等分类查看素材内容。该页面适合存放长期使用的品牌角色、常用场景、固定音色或其他可复用资料。
在具体项目制作时,用户可从全局素材库选择已有素材并复制到当前项目。复制后的素材属于当前项目,后续修改不会影响全局原始素材。这样既能复用常用设定,也能允许单个项目按需要进行独立调整。
操作步骤:
1. 从系统导航进入“素材库”页面。
2. 在左侧选择文件夹,或在右侧切换“全部”“角色”“场景”“音色”分类。
3. 查看已有素材,选择需要用于项目的内容。
4. 将素材复制到当前项目后,在项目资产面板中继续查看和使用。
【截图预留:请在此处插入“全局素材库”页面截图。】
## 十、计费与成本查看
AI 视频制作通常涉及文字处理、图片生成、视频生成和语音生成等不同任务。软件在项目工作区底部显示余额、本项目消耗和当前模型,方便用户在制作过程中了解费用状态。用户还可以进入计费管理页面查看余额和交易记录入口。
在实际使用中,用户可根据项目消耗决定继续生成、暂停制作或调整制作范围。对于需要大量生成候选素材、视频片段或配音内容的项目,成本信息能帮助用户在确认前进行判断。
操作步骤:
1. 在项目工作区底部查看余额、本项目消耗和当前模型。
2. 需要查看更完整费用信息时,进入“计费管理”页面。
3. 查看余额、交易记录或充值入口。
4. 根据费用状态决定继续生成、减少候选数量或暂停当前项目。
【截图预留:请在此处插入“计费管理或工作区底部费用状态”截图。】
## 十一、典型使用流程
用户第一次使用软件时,通常先完成注册或登录,然后进入“我的项目”页面创建新项目。项目创建时填写名称和描述,用于说明本次视频制作目标。项目创建成功后,软件进入工作区,用户在左侧对话面板输入创意要求,右侧资产面板用于查看制作过程中生成的素材。
当用户提交制作需求后,软件会由制片人角色理解意图,并根据项目已有内容安排下一步。若用户提供的是故事文本,软件可能先分析角色和场景;若用户要求生成画面,软件会关注角色、场景和分镜素材;若用户要求修改已有结果,软件会围绕指定素材重新处理。制作过程中如出现多个候选,用户选择满意项后确认保存。
项目推进一段时间后,用户可以在资产面板查看角色、场景、分镜、视频和音频,也可以进入全局素材库复用已有素材。制作过程中,用户可随时通过对话补充要求、修改方向或暂停处理。费用信息可在工作区底部和计费页面查看。
## 十二、使用注意事项
用户应使用本人账号登录,并妥善管理项目内容和生成素材。涉及商业宣传、影视内容或 IP 改编的项目,用户应确认输入素材和生成结果的使用权限,避免上传不应使用的文本、图片、音频或视频资料。
软件的生成结果会受到输入描述、素材质量、模型能力和网络环境影响。对于重要项目,建议用户在关键环节检查角色设定、场景描述、分镜画面、视频片段和音频结果,并在确认后再继续下一步。若页面长时间无响应,可刷新页面或重新进入项目查看处理状态。

View File

@@ -0,0 +1,50 @@
{
"rounds": [
{
"round": 1,
"action": "初稿生成",
"issues": [
"模块内容偏薄",
"操作步骤重复较多"
]
},
{
"round": 2,
"action": "按项目真实流程扩写",
"issues": [
"部分步骤表达重复",
"部分段落缺少真实页面细节"
]
},
{
"round": 3,
"action": "去除制式表达和 AI 味",
"issues": [
"部分句式仍偏模板化"
]
},
{
"round": 4,
"action": "人工重写核心模块",
"issues": []
},
{
"round": 5,
"action": "技术化表达复核",
"issues": []
},
{
"round": 6,
"action": "截图预留复核",
"issues": []
},
{
"round": 7,
"action": "最终检查",
"issues": []
}
],
"module_count": 8,
"final_issue_count": 0,
"screenshot_placeholders_visible": true
}

View File

@@ -0,0 +1,50 @@
# 操作手册自检记录
## 第 1 轮:初稿生成
- 发现模块内容偏薄,多个章节只有功能说明,缺少用户操作、页面反馈和截图预留。
- 发现操作步骤重复较多,容易让不同模块看起来像同一套模板。
## 第 2 轮:按项目流程扩写模块说明
- 已按注册登录、项目创建、进入工作区、对话制作、资产查看、候选确认、素材库复用、费用查看的顺序补充流程。
- 仍发现部分步骤表达重复,且若干段落未充分体现 StudioAgent 的真实页面。
## 第 3 轮:去除制式表达和 AI 味
- 删除空泛表达和套话,避免使用“赋能、一站式、显著提升、强大能力”等营销式说法。
- 将说明改为审核员可读的页面动作、用户可见内容和操作结果。
## 第 4 轮:人工重写核心模块
- 重写账号注册与登录、项目管理、AI 制片工作区、多角色状态、项目资产、候选素材、全局素材库、计费查看八个核心模块。
- 每个核心模块均包含模块用途、操作过程、结果反馈和可见截图预留文字。
## 第 5 轮:技术化表达复核
- 移除“框架、接口封装、状态管理、异步任务、任务队列、数据持久化、业务逻辑”等偏实现语言。
- 保留必要的用户可理解词汇,如浏览器、数据库、缓存服务、模型、素材等。
## 第 6 轮:截图预留复核
- 首页/进入方式、注册登录、项目列表、工作区、角色状态、资产面板、候选素材、全局素材库、计费页面均有可见截图预留。
- 用户后续如选择跳过截图,正式 Word 中仍可看到截图预留位置。
## 第 7 轮:最终检查
- 未发现章节重复。
- 未发现明显模板化步骤反复出现。
- 未发现空泛营销表达。
- 未发现偏代码实现说明。
- 最终问题数0。
## 模块清单
- 账号注册与登录
- 项目创建与项目列表管理
- AI 制片工作区
- 多角色协作状态查看
- 项目资产分类查看
- 候选素材选择与撤回
- 全局素材库
- 计费与成本查看

View File

@@ -0,0 +1,5 @@
{
"markdown_confirmed": true,
"confirmation_note": "用户确认 Markdown 草稿,可以进入正式 Word/TXT 生成",
"confirmed_at": "2026-04-29T09:08:29+00:00"
}

View File

@@ -0,0 +1,48 @@
# 申请表信息
➤软件全称StudioAgent AI视频制片平台软件
➤版本号V0.1.0
➤著作权人:张某某
➤开发完成日期2026-03-04
➤首次发表日期:未发表
➤开发的硬件环境MacBook ProApple M1 Pro10 核 CPU16GB 内存arm64 架构,约 460GB 硬盘
➤运行的硬件环境MacBook Pro 或同等配置计算机/服务器,建议 16GB 及以上内存
➤开发该软件的操作系统macOS 26.4.1
➤软件开发环境 / 开发工具Visual Studio Code
➤该软件的运行平台 / 操作系统macOS 13 及以上、Windows 10/11、Linux 服务器环境,支持现代浏览器访问
➤软件运行支撑环境 / 支持软件Node.js 20+、Python 3.12+、Docker、Docker Compose、PostgreSQL 16、Redis 7、现代浏览器
➤编程语言Python、TypeScript、JavaScript、React TSX
➤源程序量4853
➤开发目的:本软件用于辅助视频内容创作者以自然语言方式组织 AI 视频制作流程,把创意描述、剧本分析、分镜规划、视觉素材生成、视频片段生成、配音和音效设计等环节纳入统一项目工作区,帮助用户管理制作过程、素材资产和成本信息。
➤面向领域 / 行业:数字内容创作 / AI 视频制作 / 智能媒体生产
➤软件的主要功能:软件主要包括用户注册登录、项目创建和管理、对话式 AI 制片、六类 Agent 协作状态展示、项目资产分类查看、候选素材选择与撤回、全局素材库管理、计费与成本信息展示等功能。
➤技术特点:软件采用前后端分离的 Web 应用架构,前端基于 Next.js、React、TypeScript 和 Tailwind CSS 构建项目列表、对话工作区和资产面板;后端基于 FastAPI、SQLAlchemy、LangGraph Swarm 和 Celery 组织 REST 接口、SSE 流式对话、多 Agent 编排、异步生成任务和数据库持久化;系统预留 PostgreSQL、Redis、多模型 LLM、图像、视频和语音生成服务接入能力并通过候选状态、项目资产和全局素材库支持内容生产结果的管理。
➤软件的技术特点选项:应用软件
➤页数84
➤软件分类:应用软件
## 环境字段填写口径
- 软件开发环境 / 开发工具:填写 IDE 或编辑器名称,例如 Visual Studio Code、WebStorm、IntelliJ IDEA、Cursor。
- 开发该软件的操作系统:填写实际开发电脑的操作系统版本,例如 macOS 14、macOS 15、Windows 10、Windows 11。
- 该软件的运行平台 / 操作系统:填写软件客户端或服务运行所在的操作系统版本,例如 Windows 10/11 或 macOS 13及以上版本。
- 软件运行支撑环境 / 支持软件:填写项目运行所需的软件环境,例如 Node.js、Python、Docker、数据库、浏览器、中间件或外部服务。
- 开发的硬件环境和运行的硬件环境:可使用当前检测到的电脑配置作为建议值,也可按实际开发、部署或审核口径调整。
## 项目分析摘要
- 项目目录:/Users/xxx/Documents/code/Software Copyright/StudioAgent
- 框架Next.js、React
- 源码文件数33
- 代码材料页数84
- 代码输出模式front30_back30
- 业务理解:已读取 草稿/业务理解.json
## 待确认字段
-
```text
STOP_FOR_USER
NEXT_ACTION: 请补全并确认申请表字段;确认后运行 confirm_stage.py --stage application-fields。
```

View File

@@ -0,0 +1,5 @@
{
"application_fields_confirmed": true,
"confirmation_note": "用户确认申请表字段",
"confirmed_at": "2026-04-29T09:04:11+00:00"
}

View File

@@ -0,0 +1,17 @@
{
"软件全称": "StudioAgent AI视频制片平台软件",
"版本号": "V0.1.0",
"著作权人": "张某某",
"开发完成日期": "2026-03-04",
"首次发表日期": "未发表",
"开发的硬件环境": "MacBook ProApple M1 Pro10 核 CPU16GB 内存arm64 架构,约 460GB 硬盘",
"运行的硬件环境": "MacBook Pro 或同等配置计算机/服务器,建议 16GB 及以上内存",
"开发该软件的操作系统": "macOS 26.4.1",
"软件开发环境 / 开发工具": "Visual Studio Code",
"该软件的运行平台 / 操作系统": "macOS 13 及以上、Windows 10/11、Linux 服务器环境,支持现代浏览器访问",
"软件运行支撑环境 / 支持软件": "Node.js 20+、Python 3.12+、Docker、Docker Compose、PostgreSQL 16、Redis 7、现代浏览器",
"编程语言": "Python、TypeScript、JavaScript、React TSX",
"源程序量": "4853",
"软件的技术特点选项": "应用软件",
"软件分类": "应用软件"
}