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;