From cdad1d50c07747dc2417cded9075935ec3a1444f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ACT=E4=B8=B6=E6=B5=81=E6=98=9F=E9=9B=A8?= <1340145680@qq.com> Date: Sat, 4 Apr 2026 19:28:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=A2=9E=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E9=97=AE=E9=A2=98=EF=BC=8C=E5=88=A0=E9=99=A4=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=9B=B4=E6=96=B0skill?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/skills/production_agent_execution.md | 2 ++ data/skills/script_execution_adaptation.md | 2 +- data/skills/script_execution_script.md | 2 +- data/skills/script_execution_skeleton.md | 2 +- src/agents/productionAgent/index.ts | 6 +++--- src/agents/scriptAgent/index.ts | 20 ++++++++++++++------ src/routes/project/addProject.ts | 1 + src/routes/project/delProject.ts | 3 +++ src/types/database.d.ts | 19 +------------------ 9 files changed, 27 insertions(+), 30 deletions(-) diff --git a/data/skills/production_agent_execution.md b/data/skills/production_agent_execution.md index 747779d..1bd9af1 100644 --- a/data/skills/production_agent_execution.md +++ b/data/skills/production_agent_execution.md @@ -141,6 +141,7 @@ add_deriveAsset({ 1. 加载风格技法参考,获取 `script` 和 `assets`,并并且激活 `director_planning_narrative` 以及 `director_planning_style`,所有规划内容以该文档为风格基准,冲突时以风格技法参考为准。 2. 按下方规范制定导演规划(创作规划),全文遵守「导演具象化原则」 +3. 严格按照XML格式写出导演规划内容 ### 导演具象化原则(贯穿全文) @@ -257,6 +258,7 @@ add_deriveAsset({ 1. 获取 `script` 和 `assets`,并且激活 `director_storyboard_table_narrative` 以及 `director_storyboard_table_style` ,作为分镜设计的风格参考。 2. 按下方规则将剧本拆分为分镜,**每写一行前**回顾上一行状态,确保符合「视觉连续性铁律」后再填写当前行所有字段 +3. 严格按照XML格式写出导演规划内容 ### 分镜拆分原则 diff --git a/data/skills/script_execution_adaptation.md b/data/skills/script_execution_adaptation.md index 9279146..38791d2 100644 --- a/data/skills/script_execution_adaptation.md +++ b/data/skills/script_execution_adaptation.md @@ -17,7 +17,7 @@ - 主要删除决策:被删/压缩内容、原因、对主线影响 - 世界观呈现策略:关键元素出场节奏、解释度策略、角色态度锚点 3. **阐述思路**(200-300字):核心改编原则方向、删减大方向、世界观呈现思路 -4. 使用要求的XML格式写出改编策略。 +4. 严格按照XML格式写出改编策略改编策略内容。 5. 返回简短确认,如:"改编策略已保存,请在右侧工作台查看。" ## 约束 diff --git a/data/skills/script_execution_script.md b/data/skills/script_execution_script.md index abd42f3..4446b5a 100644 --- a/data/skills/script_execution_script.md +++ b/data/skills/script_execution_script.md @@ -15,7 +15,7 @@ 1. 调用 `get_planData` 获取骨架与改编策略;若存在上一集剧本id,调用 `get_script_content(ids)` 获取最后一集剧本内容,用于衔接剧情与角色状态,调用 `get_novel_text` 获取对应章节原文,调用 `get_novel_events(ids)` 获取事件表 2. 从骨架中**仅提取当前任务集**的信息:覆盖章节、戏剧功能、场景核心、删减决策、集末钩子。**忽略其他已完成或未分配的集** 3. **阐述思路**(200-300字):场景组织方式、重点情绪与冲突、节奏把控思路 -4. 严格按照XML格式写出剧本内容剧本内容`。 +4. 严格按照XML格式写出剧本内容剧本内容。 5. 返回简短确认,如:"第X集剧本已写入,请在工作台查看。" ## 约束 diff --git a/data/skills/script_execution_skeleton.md b/data/skills/script_execution_skeleton.md index 578b688..aa1531a 100644 --- a/data/skills/script_execution_skeleton.md +++ b/data/skills/script_execution_skeleton.md @@ -20,7 +20,7 @@ - 全局删减决策表 - 付费卡点设计 3. **阐述思路**(200-300字):核心吸引力判断、三幕划分思路、分集策略方向 -4. 使用规定的XML格式写出骨架。 +4. 严格按照XML格式写出故事骨架故事骨架内容。 5. 返回简短确认,如:"故事骨架已保存,请在右侧工作台查看。" ## 约束 diff --git a/src/agents/productionAgent/index.ts b/src/agents/productionAgent/index.ts index bb8d40f..0d5f0d0 100644 --- a/src/agents/productionAgent/index.ts +++ b/src/agents/productionAgent/index.ts @@ -168,7 +168,7 @@ function createSubAgent(parentCtx: AgentContext) { memoryKey: "assistant:execution", messages: [ { role: "assistant", content: artSkills.prompt + `\n${modelInfo}` }, - { role: "user", content: prompt }, + { role: "user", content: prompt + addPrompt }, ], tools: { ...artSkills.tools }, }); @@ -183,7 +183,7 @@ function createSubAgent(parentCtx: AgentContext) { const systemPrompt = await fs.promises.readFile(skill, "utf-8"); return runAgent({ prompt, - system: systemPrompt + "你必须使用如下XML格式写入工作区:\n故事骨架内容", + system: systemPrompt, name: "监制", memoryKey: "assistant:supervision", }); @@ -230,4 +230,4 @@ export function buildSkillPrompt(skills: { name: string; description: string }[] ${skillEntries} `; -} \ No newline at end of file +} diff --git a/src/agents/scriptAgent/index.ts b/src/agents/scriptAgent/index.ts index b0cb807..bd4b078 100644 --- a/src/agents/scriptAgent/index.ts +++ b/src/agents/scriptAgent/index.ts @@ -141,11 +141,15 @@ function createSubAgent(parentCtx: AgentContext) { execute: async ({ prompt }) => { const skill = path.join(u.getPath("skills"), "script_execution_skeleton.md"); const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + + const formatPrompt = "\n你必须使用如下XML格式写入工作区:\n故事骨架内容"; + return runAgent({ prompt, - system: systemPrompt + "\n你必须使用如下XML格式写入工作区:\n故事骨架内容", + system: systemPrompt + formatPrompt, name: "编剧", memoryKey: "assistant:execution:storySkeleton", + messages: [{ role: "user", content: prompt + formatPrompt }], }); }, }); @@ -156,11 +160,15 @@ function createSubAgent(parentCtx: AgentContext) { execute: async ({ prompt }) => { const skill = path.join(u.getPath("skills"), "script_execution_adaptation.md"); const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + + const formatPrompt = "\n你必须使用如下XML格式写入工作区:\n改编策略内容"; + return runAgent({ prompt, - system: systemPrompt + "\n你必须使用如下XML格式写入工作区:\n改编策略内容", + system: systemPrompt + formatPrompt, name: "编剧", memoryKey: "assistant:execution:adaptationStrategy", + messages: [{ role: "user", content: prompt + formatPrompt }], }); }, }); @@ -181,14 +189,14 @@ function createSubAgent(parentCtx: AgentContext) { const projectPrompt = ["## 章节ID映射(ID:章序)", novelData.map((i: any) => `${i.id}:${i.index}`).join(","), ""].join("\n"); + const formatPrompt = `\n你必须使用如下XML格式写入工作区:\nXML不得添加任何额外标签剧本内容剧本内容剧本内容`; + return runAgent({ prompt, - system: - systemPrompt + - `\n你必须使用如下XML格式写入工作区:\nXML不得添加任何额外标签剧本内容剧本内容剧本内容`, + system: systemPrompt + formatPrompt, messages: [ { role: "assistant", content: projectPrompt + "\n" + scriptPrompt }, - { role: "user", content: prompt }, + { role: "user", content: prompt + formatPrompt }, ], name: "编剧", memoryKey: "assistant:execution:script", diff --git a/src/routes/project/addProject.ts b/src/routes/project/addProject.ts index 9d50ac7..93a6991 100644 --- a/src/routes/project/addProject.ts +++ b/src/routes/project/addProject.ts @@ -25,6 +25,7 @@ export default router.post( const { projectType, name, intro, type, directorManual, artStyle, videoRatio, imageModel, videoModel, imageQuality, mode } = req.body; await u.db("o_project").insert({ + id: Date.now(), projectType, name, intro, diff --git a/src/routes/project/delProject.ts b/src/routes/project/delProject.ts index 40f2658..3f45939 100644 --- a/src/routes/project/delProject.ts +++ b/src/routes/project/delProject.ts @@ -54,6 +54,9 @@ export default router.post( await u.db("o_videoTrack").where("projectId", id).delete(); await u.db("o_video").where("projectId", id).delete(); //删除项目下的资源 + + await u.db("memories").where("isolationKey", "like", `${id}:%`).delete(); + try { await u.oss.deleteDirectory(`${id}/`); console.log(`项目 ${id} 的OSS文件夹删除成功`); diff --git a/src/types/database.d.ts b/src/types/database.d.ts index dc02b6a..1af96b9 100644 --- a/src/types/database.d.ts +++ b/src/types/database.d.ts @@ -1,22 +1,6 @@ -// @db-hash 19c726e36479d905346c772cfa8007ba +// @db-hash 6fa5017e455bc367c9c902ba574d11b4 //该文件由脚本自动生成,请勿手动修改 -export interface _o_project_old_20260404 { - 'artStyle'?: string | null; - 'createTime'?: number | null; - 'directorManual'?: string | null; - 'id'?: number | null; - 'imageModel'?: string | null; - 'imageQuality'?: string | null; - 'intro'?: string | null; - 'mode'?: string | null; - 'name'?: string | null; - 'projectType'?: string | null; - 'type'?: string | null; - 'userId'?: number | null; - 'videoModel'?: string | null; - 'videoRatio'?: string | null; -} export interface memories { 'content': string; 'createTime': number; @@ -247,7 +231,6 @@ export interface o_videoTrack { } export interface DB { - "_o_project_old_20260404": _o_project_old_20260404; "memories": memories; "o_agentDeploy": o_agentDeploy; "o_agentWorkData": o_agentWorkData;