Files
sproutclaw-data/agent/skills-disabled/SoftwareCopyright-Skill/生成demo/软件著作权申请资料/草稿/业务理解证据.json
shumengya 50edff80f5 feat: 导出 SproutClaw .sproutclaw 配置
包含 extensions、skills、prompts、settings、auth、models、mcp 等配置。
排除 node_modules、npm 缓存、sessions 等运行时数据。
2026-06-26 15:48:56 +08:00

294 lines
20 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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": ""
}