修复新增项目问题,删除问题,更新skill

This commit is contained in:
ACT丶流星雨 2026-04-04 19:28:29 +08:00
parent 8926fbc637
commit cdad1d50c0
9 changed files with 27 additions and 30 deletions

View File

@ -141,6 +141,7 @@ add_deriveAsset({
1. 加载风格技法参考,获取 `script``assets`,并并且激活 `director_planning_narrative` 以及 `director_planning_style`,所有规划内容以该文档为风格基准,冲突时以风格技法参考为准。 1. 加载风格技法参考,获取 `script``assets`,并并且激活 `director_planning_narrative` 以及 `director_planning_style`,所有规划内容以该文档为风格基准,冲突时以风格技法参考为准。
2. 按下方规范制定导演规划(创作规划),全文遵守「导演具象化原则」 2. 按下方规范制定导演规划(创作规划),全文遵守「导演具象化原则」
3. 严格按照XML格式写出导演规划<storyboardTable>内容</storyboardTable>
### 导演具象化原则(贯穿全文) ### 导演具象化原则(贯穿全文)
@ -257,6 +258,7 @@ add_deriveAsset({
1. 获取 `script``assets`,并且激活 `director_storyboard_table_narrative` 以及 `director_storyboard_table_style` ,作为分镜设计的风格参考。 1. 获取 `script``assets`,并且激活 `director_storyboard_table_narrative` 以及 `director_storyboard_table_style` ,作为分镜设计的风格参考。
2. 按下方规则将剧本拆分为分镜,**每写一行前**回顾上一行状态,确保符合「视觉连续性铁律」后再填写当前行所有字段 2. 按下方规则将剧本拆分为分镜,**每写一行前**回顾上一行状态,确保符合「视觉连续性铁律」后再填写当前行所有字段
3. 严格按照XML格式写出导演规划<scriptPlan></scriptPlan>
### 分镜拆分原则 ### 分镜拆分原则

View File

@ -17,7 +17,7 @@
- 主要删除决策:被删/压缩内容、原因、对主线影响 - 主要删除决策:被删/压缩内容、原因、对主线影响
- 世界观呈现策略:关键元素出场节奏、解释度策略、角色态度锚点 - 世界观呈现策略:关键元素出场节奏、解释度策略、角色态度锚点
3. **阐述思路**200-300字核心改编原则方向、删减大方向、世界观呈现思路 3. **阐述思路**200-300字核心改编原则方向、删减大方向、世界观呈现思路
4. 使用要求的XML格式写出改编策略 4. 严格按照XML格式写出改编策略<adaptationStrategy>改编策略内容</adaptationStrategy>
5. 返回简短确认,如:"改编策略已保存,请在右侧工作台查看。" 5. 返回简短确认,如:"改编策略已保存,请在右侧工作台查看。"
## 约束 ## 约束

View File

@ -15,7 +15,7 @@
1. 调用 `get_planData` 获取骨架与改编策略若存在上一集剧本id调用 `get_script_content(ids)` 获取最后一集剧本内容,用于衔接剧情与角色状态,调用 `get_novel_text` 获取对应章节原文,调用 `get_novel_events(ids)` 获取事件表 1. 调用 `get_planData` 获取骨架与改编策略若存在上一集剧本id调用 `get_script_content(ids)` 获取最后一集剧本内容,用于衔接剧情与角色状态,调用 `get_novel_text` 获取对应章节原文,调用 `get_novel_events(ids)` 获取事件表
2. 从骨架中**仅提取当前任务集**的信息:覆盖章节、戏剧功能、场景核心、删减决策、集末钩子。**忽略其他已完成或未分配的集** 2. 从骨架中**仅提取当前任务集**的信息:覆盖章节、戏剧功能、场景核心、删减决策、集末钩子。**忽略其他已完成或未分配的集**
3. **阐述思路**200-300字场景组织方式、重点情绪与冲突、节奏把控思路 3. **阐述思路**200-300字场景组织方式、重点情绪与冲突、节奏把控思路
4. 严格按照XML格式写出剧本内容<scriptItem name="剧本名称"></scriptItem>` 4. 严格按照XML格式写出剧本内容<scriptItem name="剧本名称"></scriptItem>
5. 返回简短确认,如:"第X集剧本已写入请在工作台查看。" 5. 返回简短确认,如:"第X集剧本已写入请在工作台查看。"
## 约束 ## 约束

View File

@ -20,7 +20,7 @@
- 全局删减决策表 - 全局删减决策表
- 付费卡点设计 - 付费卡点设计
3. **阐述思路**200-300字核心吸引力判断、三幕划分思路、分集策略方向 3. **阐述思路**200-300字核心吸引力判断、三幕划分思路、分集策略方向
4. 使用规定的XML格式写出骨架 4. 严格按照XML格式写出故事骨架<storySkeleton>故事骨架内容</storySkeleton>
5. 返回简短确认,如:"故事骨架已保存,请在右侧工作台查看。" 5. 返回简短确认,如:"故事骨架已保存,请在右侧工作台查看。"
## 约束 ## 约束

View File

@ -168,7 +168,7 @@ function createSubAgent(parentCtx: AgentContext) {
memoryKey: "assistant:execution", memoryKey: "assistant:execution",
messages: [ messages: [
{ role: "assistant", content: artSkills.prompt + `\n${modelInfo}` }, { role: "assistant", content: artSkills.prompt + `\n${modelInfo}` },
{ role: "user", content: prompt }, { role: "user", content: prompt + addPrompt },
], ],
tools: { ...artSkills.tools }, tools: { ...artSkills.tools },
}); });
@ -183,7 +183,7 @@ function createSubAgent(parentCtx: AgentContext) {
const systemPrompt = await fs.promises.readFile(skill, "utf-8"); const systemPrompt = await fs.promises.readFile(skill, "utf-8");
return runAgent({ return runAgent({
prompt, prompt,
system: systemPrompt + "你必须使用如下XML格式写入工作区\n<storySkeleton>故事骨架内容</storySkeleton>", system: systemPrompt,
name: "监制", name: "监制",
memoryKey: "assistant:supervision", memoryKey: "assistant:supervision",
}); });

View File

@ -141,11 +141,15 @@ function createSubAgent(parentCtx: AgentContext) {
execute: async ({ prompt }) => { execute: async ({ prompt }) => {
const skill = path.join(u.getPath("skills"), "script_execution_skeleton.md"); const skill = path.join(u.getPath("skills"), "script_execution_skeleton.md");
const systemPrompt = await fs.promises.readFile(skill, "utf-8"); const systemPrompt = await fs.promises.readFile(skill, "utf-8");
const formatPrompt = "\n你必须使用如下XML格式写入工作区\n<storySkeleton>故事骨架内容</storySkeleton>";
return runAgent({ return runAgent({
prompt, prompt,
system: systemPrompt + "\n你必须使用如下XML格式写入工作区\n<storySkeleton>故事骨架内容</storySkeleton>", system: systemPrompt + formatPrompt,
name: "编剧", name: "编剧",
memoryKey: "assistant:execution:storySkeleton", memoryKey: "assistant:execution:storySkeleton",
messages: [{ role: "user", content: prompt + formatPrompt }],
}); });
}, },
}); });
@ -156,11 +160,15 @@ function createSubAgent(parentCtx: AgentContext) {
execute: async ({ prompt }) => { execute: async ({ prompt }) => {
const skill = path.join(u.getPath("skills"), "script_execution_adaptation.md"); const skill = path.join(u.getPath("skills"), "script_execution_adaptation.md");
const systemPrompt = await fs.promises.readFile(skill, "utf-8"); const systemPrompt = await fs.promises.readFile(skill, "utf-8");
const formatPrompt = "\n你必须使用如下XML格式写入工作区\n<adaptationStrategy>改编策略内容</adaptationStrategy>";
return runAgent({ return runAgent({
prompt, prompt,
system: systemPrompt + "\n你必须使用如下XML格式写入工作区\n<adaptationStrategy>改编策略内容</adaptationStrategy>", system: systemPrompt + formatPrompt,
name: "编剧", name: "编剧",
memoryKey: "assistant:execution:adaptationStrategy", 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 projectPrompt = ["## 章节ID映射(ID:章序)", novelData.map((i: any) => `${i.id}:${i.index}`).join(","), ""].join("\n");
const formatPrompt = `\n你必须使用如下XML格式写入工作区\nXML不得添加任何额外标签<scriptItem name="剧本名称">剧本内容</scriptItem><scriptItem name="剧本名称">剧本内容</scriptItem><scriptItem name="剧本名称">剧本内容</scriptItem>`;
return runAgent({ return runAgent({
prompt, prompt,
system: system: systemPrompt + formatPrompt,
systemPrompt +
`\n你必须使用如下XML格式写入工作区\nXML不得添加任何额外标签<scriptItem name="剧本名称">剧本内容</scriptItem><scriptItem name="剧本名称">剧本内容</scriptItem><scriptItem name="剧本名称">剧本内容</scriptItem>`,
messages: [ messages: [
{ role: "assistant", content: projectPrompt + "\n" + scriptPrompt }, { role: "assistant", content: projectPrompt + "\n" + scriptPrompt },
{ role: "user", content: prompt }, { role: "user", content: prompt + formatPrompt },
], ],
name: "编剧", name: "编剧",
memoryKey: "assistant:execution:script", memoryKey: "assistant:execution:script",

View File

@ -25,6 +25,7 @@ export default router.post(
const { projectType, name, intro, type, directorManual, artStyle, videoRatio, imageModel, videoModel, imageQuality, mode } = req.body; const { projectType, name, intro, type, directorManual, artStyle, videoRatio, imageModel, videoModel, imageQuality, mode } = req.body;
await u.db("o_project").insert({ await u.db("o_project").insert({
id: Date.now(),
projectType, projectType,
name, name,
intro, intro,

View File

@ -54,6 +54,9 @@ export default router.post(
await u.db("o_videoTrack").where("projectId", id).delete(); await u.db("o_videoTrack").where("projectId", id).delete();
await u.db("o_video").where("projectId", id).delete(); await u.db("o_video").where("projectId", id).delete();
//删除项目下的资源 //删除项目下的资源
await u.db("memories").where("isolationKey", "like", `${id}:%`).delete();
try { try {
await u.oss.deleteDirectory(`${id}/`); await u.oss.deleteDirectory(`${id}/`);
console.log(`项目 ${id} 的OSS文件夹删除成功`); console.log(`项目 ${id} 的OSS文件夹删除成功`);

View File

@ -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 { export interface memories {
'content': string; 'content': string;
'createTime': number; 'createTime': number;
@ -247,7 +231,6 @@ export interface o_videoTrack {
} }
export interface DB { export interface DB {
"_o_project_old_20260404": _o_project_old_20260404;
"memories": memories; "memories": memories;
"o_agentDeploy": o_agentDeploy; "o_agentDeploy": o_agentDeploy;
"o_agentWorkData": o_agentWorkData; "o_agentWorkData": o_agentWorkData;