完善Agent tools

This commit is contained in:
ACT丶流星雨 2026-03-21 11:56:39 +08:00
parent a35acdd910
commit 12337f55d6
7 changed files with 351 additions and 155 deletions

View File

@ -1,6 +1,7 @@
---
name: execution
description: 用户需要拆分剧本的时候可以看此skill的参考资料了解拆分原则和示例
description: >
用户需要拆分剧本或提取衍生资产时可以看此skill的参考资料了解拆分原则、衍生资产提取原则和示例
---
# execution Agent
@ -12,6 +13,7 @@ description: 用户需要拆分剧本的时候可以看此skill的参考资料
当用户需要以下帮助时激活此技能:
- 拆分剧本
- 提取衍生资产(从剧本和已有角色资产中提取关联道具、场景物件等衍生资产)
## 工作指引
@ -19,12 +21,20 @@ description: 用户需要拆分剧本的时候可以看此skill的参考资料
- 当执行拆分剧本任务的时候,你需要先调用 `get_flowData` 获取原始剧本
- 根据[剧本拆分]文档中的拆分原则和示例,将剧本拆分成视频模型能够处理的片段
- 将拆分后的剧本片段必须使用`set_flowData_script`工具保存,然后仅需告知用户拆分完成
- 将拆分后的剧本片段必须使用 `set_flowData` 工具保存key 为 `"script"`),然后仅需告知用户拆分完成
### 提取衍生资产流程
1. 调用 `get_flowData` 分别获取 `script`(剧本)和 `assets`(现有资产列表)
2. 根据[衍生资产提取](references/derive-assets-extraction.md)文档中的提取原则,分析剧本内容,为每个角色资产识别出关联的衍生资产(道具、服饰、法器、座驾、场景物件等)
3. 对每个有衍生状态的资产调用 `set_flowData({ key: "assets[N].derive", value: derive数组 })` 逐个保存
4. 告知用户提取完成,列出为每个角色提取的衍生资产概要,等待用户确认
## 参考资料
本技能附带以下参考资料,根据任务需要使用 `read_skill_file` 工具按需加载:
- [剧本拆分](references/script-splitting.md) — 将剧本拆分成视频模型能够处理的片段,包含拆分原则和示例
- [衍生资产提取](references/derive-assets-extraction.md) — 从剧本和角色资产中提取衍生资产的原则和示例
**注意**:根据用户当前任务选择性加载对应参考资料,不要一次性全部加载。

View File

@ -0,0 +1,174 @@
# 衍生资产提取(从剧本 + 资产 → derive[]
本指南只做一件事:
根据剧本内容和已有资产,为每个资产提取在剧情中出现的**不同状态/变体**derive
> **核心概念**derive 是父资产的**其他视觉状态**,用于为后续图片生成提供参考。
> 只衍生**图片模型无法仅凭提示词自行处理的视觉差异**,如服装、形态、伤势、物件状态等。
> 表情、情绪、简单动作等模型可自行控制的内容**不需要衍生**。
> - 角色资产 → 不同服装、伤势外观、形态变化等状态变体
> - 道具资产 → 不同物理状态变体(破损、发光、打开等)
> - 场景资产 → 不同时间/氛围状态变体(白天、夜晚、废墟等)
## 1. 输入与输出
### 输入
- 剧本文本(字符串),通过 `get_flowData("script")` 获取
- 已有资产列表(数组),通过 `get_flowData("assets")` 获取
每个资产结构:
```ts
{
assetsId: string; // 资产唯一ID
name: string; // 资产名称
desc: string; // 资产描述
src: string; // 资产图片URL
derive?: Array<{ // 已有衍生状态(可能为空)
assetsId: string;
name: string;
desc: string;
src: string;
}>;
}
```
### 输出
对每个需要衍生状态的资产,调用 `set_flowData` 写入 derive。通过 `key` 指定 lodash 路径,只传最小更新数据。
```ts
// 为索引 0 的资产设置 derive
set_flowData({
key: "assets[0].derive",
value: [
{ name: "状态名", desc: "状态描述" }
]
})
```
derive 元素格式:
```ts
{
name: string; // 状态名称1~20字
desc: string; // 状态描述1~100字
}
```
## 2. 衍生状态类型
derive 代表同一资产在不同剧情场景下的**视觉状态变体**
### 角色资产的衍生状态
| 类型 | 说明 | 示例 |
|------|------|------|
| 服装变体 | 角色穿着不同服饰的状态 | 战甲状态、便装状态、礼服状态 |
| 伤势/身体状态 | 角色身体发生显著外观变化 | 重伤缠绷带、灵力暴走纹路蔓延、白发苍老 |
| 形态变化 | 角色外形产生根本变化 | 魔化形态、兽化、幼年状态 |
| 特殊装扮 | 伪装或临时装束 | 蒙面伪装、乞丐装扮 |
> **不需要衍生的状态**:表情、情绪、简单动作姿态等图片模型可通过提示词直接控制的内容,无需单独建立衍生资产。
### 道具/物件资产的衍生状态
| 类型 | 说明 | 示例 |
|------|------|------|
| 损坏状态 | 物件受损的外观 | 令牌破损、剑身断裂 |
| 激活/发光状态 | 物件被触发后的外观 | 令牌发光、法印激活 |
| 变形状态 | 物件形态发生变化 | 玉佩碎裂、卷轴展开 |
### 场景资产的衍生状态
| 类型 | 说明 | 示例 |
|------|------|------|
| 时间变体 | 同一场景不同时段 | 夜晚的宗门、黄昏的战场 |
| 破坏状态 | 场景受到破坏后 | 废墟状态、火烧后 |
| 氛围变体 | 场景氛围发生变化 | 战后的宗门大殿、雨中的山门 |
## 3. 提取原则
### 3.1 核心理解
- derive **不是**与父资产相关的独立物件(如角色的武器、坐骑)
- derive **是**父资产自身在不同剧情节点的**视觉状态变体**,用于为图片生成提供参考图
- 每个 derive 应该能被理解为"**父资产名 + 状态名**"(如"凌玄·重伤缠绷带"、"青云令·破损"
- **不要衍生**图片模型可通过提示词直接控制的内容(表情、情绪、简单动作姿态等)
### 3.2 来源优先级
1. **剧本中明确描写** — 最高优先级,剧本中直接描写了资产的不同状态
2. **角色描述暗示** — 中优先级desc中暗示存在状态变化但剧本未直接描写
3. **合理推测** — 低优先级,根据剧情发展合理推测的状态变化
### 3.3 提取规则
- 只提取**与默认状态有明显视觉差异、且图片模型无法仅凭提示词自行控制**的衍生状态
- 已存在于资产 `derive` 数组中的状态**不要重复提取**
- 每个资产的衍生状态数量建议 **1~5个**,宁缺勿滥
- `desc` 字段格式:`[与默认态的差异] · [视觉特征] · [出现场景/触发条件]`
- 衍生状态命名应能直接表达"这是什么状态",而非"这是什么东西"
### 3.4 命名规范
- 名称简洁2~6个字
- 体现**视觉外观变化**而非情绪动作,如"重伤缠绷带"而非"悲伤流泪"
- 如果剧本中有明确的状态描写,直接提炼为状态名
## 4. 示例
### 输入剧本片段
```
苏晚卿冷笑:「还有你当宝贝的青云令」
「若不是我趁你养伤时,偷偷在令牌上动了手脚」
△ 凌玄气血逆流,再次一口鲜血喷出
△ 青云令表面灵纹暗淡,隐约可见细微裂痕
```
### 输入资产
```json
[
{ "assetsId": "char-1", "name": "凌玄", "desc": "男主 · 青云宗宗主 · 重伤废修", "derive": [] },
{ "assetsId": "char-2", "name": "苏晚卿", "desc": "女配 · 凌玄未婚妻 · 背叛者", "derive": [] },
{ "assetsId": "item-1", "name": "青云令", "desc": "宗主信物 · 青玉材质 · 灵纹浮刻", "derive": [] }
]
```
### 输出
分别对每个需要衍生的资产调用 `set_flowData`,通过 key 精确定位:
```ts
// 凌玄(索引 0
set_flowData({
key: "assets[0].derive",
value: [
{ name: "重伤缠绷带", desc: "气血逆流后 · 胸口缠满绷带面色苍白 · 养伤期间外观" },
{ name: "废修白发", desc: "灵力尽失 · 黑发变白面容憔悴 · 修为被废后常态" }
]
})
// 苏晚卿(索引 1— 无需衍生,跳过
// 青云令(索引 2
set_flowData({
key: "assets[2].derive",
value: [
{ name: "灵纹暗淡", desc: "被篡改后 · 灵纹失去光泽隐现裂痕 · 感应功能被破坏" },
{ name: "令牌发光", desc: "被激活时 · 灵纹亮起青色光芒 · 正常使用状态" }
]
})
```
```
## 5. 工具调用顺序
1. `get_flowData("script")` — 获取剧本内容
2. `get_flowData("assets")` — 获取已有资产列表
3. 分析剧本,为每个资产识别在剧情中出现的不同视觉状态
4. 对每个有衍生状态的资产调用 `set_flowData({ key: "assets[N].derive", value: derive数组 })` 保存
5. 向用户汇报提取结果概要

View File

@ -59,6 +59,7 @@
"js-md5": "^0.8.3",
"jsonwebtoken": "^9.0.3",
"knex": "^3.1.0",
"lodash": "^4.17.23",
"morgan": "^1.10.1",
"qwen-ai-provider-v5": "^2.1.0",
"serialize-error": "^13.0.1",
@ -77,6 +78,7 @@
"@types/express-ws": "^3.0.6",
"@types/jsonwebtoken": "^9.0.10",
"@types/license-checker": "^25.0.6",
"@types/lodash": "^4.17.24",
"@types/morgan": "^1.9.10",
"cross-env": "^10.1.0",
"electron": "^40.0.0",

View File

@ -42,7 +42,7 @@ export async function decisionAI(ctx: AgentContext) {
const systemPrompt = buildSystemPrompt(skill.prompt, mem);
const prefixSystem = `不论用户说什么要做什么都请直接调用run_sub_agent运行**executionAI**执行剧本切分任务`;
const prefixSystem = `请回复用户收到以后直接调用run_sub_agent运行**executionAI**执行用户的任务`;
const { textStream } = await u.Ai.Text("productionAgent").stream({
system: prefixSystem + systemPrompt,

View File

@ -1,49 +1,56 @@
import { tool, Tool } from "ai";
import { z } from "zod";
import u from "@/utils";
import { z, toJSONSchema } from "zod";
import _ from "lodash";
import { Socket } from "socket.io";
interface FlowData {
rawScript: string;
script: {
blocks: string[];
};
}
const deriveSchema = z.object({ name: z.string().min(1).max(20), desc: z.string().min(1).max(100) });
const assetSchema = z.object({ assetsId: z.string(), name: z.string(), desc: z.string(), src: z.string(), derive: z.array(deriveSchema).optional() });
const flowDataSchema = z.object({ script: z.string(), assets: z.array(assetSchema) });
type FlowData = z.infer<typeof flowDataSchema>;
const keySchema = z.object({ key: z.enum(["script", "assets"]).describe("script=剧本,assets=资产列表") });
const valueSchema = z.union([z.string(), z.array(assetSchema), assetSchema, z.array(deriveSchema)]).describe("路径对应的值");
export default (socket: Socket, toolsNames?: string[]) => {
let flowData: FlowData = {
rawScript: "",
script: {
blocks: [],
},
};
const tools: Record<string, Tool> = {
get_flowData: tool({
description: "获取当前工作区的状态/数据",
inputSchema: z.object({
key: z.enum(["script"]).describe("state的key,rawScript代表原始剧本文字,script代表分块后的剧本"),
}),
description: "获取工作区数据",
inputSchema: keySchema,
execute: async ({ key }) => {
flowData = await new Promise((resolve) => socket.emit("getFlowData", { key }, (res: any) => resolve(res)));
console.log("[tool] get_flowData:", key);
console.log("[tools] get_flowData", key);
const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key }, (res: any) => resolve(res)));
return flowData[key];
},
}),
set_flowData_script: tool({
description: "保存数据到工作区",
get_flowData_schema: tool({
description: "获取工作区数据的类型结构,在使用set_flowData前应先调用",
inputSchema: keySchema,
execute: async ({ key }) => {
console.log("[tools] get_flowData_schema", key);
return toJSONSchema(flowDataSchema.shape[key]);
},
}),
set_flowData: tool({
description: "保存数据到工作区,key为lodash路径,先调用get_flowData_schema了解可用路径和类型",
inputSchema: z.object({
value: z.array(z.string()).describe("剧本分块后的文本数组"),
key: z.string().describe("lodash路径,如 script、assets[0].derive"),
value: valueSchema,
}),
execute: async ({ value }) => {
flowData.script.blocks = value;
socket.emit("setFlowData", { key: "script", value: { blocks: value } });
execute: async ({ key, value }) => {
console.log("[tools] set_flowData", key, value);
const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key }, (res: any) => resolve(res)));
const backup = _.cloneDeep(_.get(flowData, key));
_.set(flowData, key, value);
const r = flowDataSchema.safeParse(flowData);
if (!r.success) {
_.set(flowData, key, backup);
return { error: r.error.issues.map((i) => `[${i.path.join(".")}] ${i.message}`).join("; ") };
}
socket.emit("setFlowData", { key, value });
return true;
},
}),
};
if (!toolsNames) return tools;
else return Object.fromEntries(Object.entries(tools).filter(([name]) => toolsNames.includes(name)));
return toolsNames ? Object.fromEntries(Object.entries(tools).filter(([n]) => toolsNames.includes(n))) : tools;
};

View File

@ -1,130 +1,128 @@
// @routes-hash 45e23a536a13265ff62fe92b1cb71fe3
// @routes-hash eb87a13a06fbdb3ce3e25bcea6173c31
import { Express } from "express";
import route1 from "./routes/agents/clearMemory";
import route2 from "./routes/agents/getMemory";
import route3 from "./routes/agents/productionAgent";
import route4 from "./routes/artStyle/getArtStyle";
import route5 from "./routes/assets/addAssets";
import route6 from "./routes/assets/batchDelete";
import route7 from "./routes/assets/batchGenerationData";
import route8 from "./routes/assets/delAssets";
import route9 from "./routes/assets/getAssetsApi";
import route10 from "./routes/assets/getImage";
import route11 from "./routes/assets/saveAssets";
import route12 from "./routes/assets/updateAssets";
import route13 from "./routes/assets/uploadClip";
import route14 from "./routes/assetsGenerate/generateAssets";
import route15 from "./routes/assetsGenerate/polishAssetsPrompt";
import route16 from "./routes/cornerScape/getAllAssets";
import route17 from "./routes/general/generalStatistics";
import route18 from "./routes/general/getSingleProject";
import route19 from "./routes/general/updateProject";
import route20 from "./routes/login/login";
import route21 from "./routes/migrate/migrateData";
import route22 from "./routes/modelSelect/getModelDetail";
import route23 from "./routes/modelSelect/getModelList";
import route24 from "./routes/novel/addNovel";
import route25 from "./routes/novel/batchDeleteNovel";
import route26 from "./routes/novel/delNovel";
import route27 from "./routes/novel/event/batchDeleteEvent";
import route28 from "./routes/novel/event/deletEvent";
import route29 from "./routes/novel/event/generateEvents";
import route30 from "./routes/novel/event/getEvent";
import route31 from "./routes/novel/getNovel";
import route32 from "./routes/novel/updateNovel";
import route33 from "./routes/other/deleteAllData";
import route34 from "./routes/other/getCaptcha";
import route35 from "./routes/production/getProductionData";
import route36 from "./routes/production/workbench/getVideoModelDetail";
import route37 from "./routes/project/addProject";
import route38 from "./routes/project/delProject";
import route39 from "./routes/project/editProject";
import route40 from "./routes/project/getProject";
import route41 from "./routes/script/addScript";
import route42 from "./routes/script/delScript";
import route43 from "./routes/script/getScrptApi";
import route44 from "./routes/script/updateScript";
import route45 from "./routes/setting/agentDeploy/deployAgentModel";
import route46 from "./routes/setting/agentDeploy/getAgentDeploy";
import route47 from "./routes/setting/agentDeploy/updateKey";
import route48 from "./routes/setting/dbConfig/clearData";
import route49 from "./routes/setting/getTextModel";
import route50 from "./routes/setting/loginConfig/getUser";
import route51 from "./routes/setting/loginConfig/updateUserPwd";
import route52 from "./routes/setting/memoryConfig/getMemory";
import route53 from "./routes/setting/memoryConfig/sureMemory";
import route54 from "./routes/setting/vendorConfig/addVendor";
import route55 from "./routes/setting/vendorConfig/deleteVendor";
import route56 from "./routes/setting/vendorConfig/getVendorList";
import route57 from "./routes/setting/vendorConfig/modelTest";
import route58 from "./routes/setting/vendorConfig/updateVendor";
import route59 from "./routes/task/getMyTaskApi";
import route60 from "./routes/task/getTaskCategories";
import route61 from "./routes/task/taskDetails";
import route62 from "./routes/test/test";
import route3 from "./routes/artStyle/getArtStyle";
import route4 from "./routes/assets/addAssets";
import route5 from "./routes/assets/batchDelete";
import route6 from "./routes/assets/batchGenerationData";
import route7 from "./routes/assets/delAssets";
import route8 from "./routes/assets/getAssetsApi";
import route9 from "./routes/assets/getImage";
import route10 from "./routes/assets/saveAssets";
import route11 from "./routes/assets/updateAssets";
import route12 from "./routes/assets/uploadClip";
import route13 from "./routes/assetsGenerate/generateAssets";
import route14 from "./routes/assetsGenerate/polishAssetsPrompt";
import route15 from "./routes/cornerScape/getAllAssets";
import route16 from "./routes/general/generalStatistics";
import route17 from "./routes/general/getSingleProject";
import route18 from "./routes/general/updateProject";
import route19 from "./routes/login/login";
import route20 from "./routes/migrate/migrateData";
import route21 from "./routes/modelSelect/getModelDetail";
import route22 from "./routes/modelSelect/getModelList";
import route23 from "./routes/novel/addNovel";
import route24 from "./routes/novel/batchDeleteNovel";
import route25 from "./routes/novel/delNovel";
import route26 from "./routes/novel/event/batchDeleteEvent";
import route27 from "./routes/novel/event/deletEvent";
import route28 from "./routes/novel/event/generateEvents";
import route29 from "./routes/novel/event/getEvent";
import route30 from "./routes/novel/getNovel";
import route31 from "./routes/novel/updateNovel";
import route32 from "./routes/other/deleteAllData";
import route33 from "./routes/other/getCaptcha";
import route34 from "./routes/production/getProductionData";
import route35 from "./routes/production/workbench/getVideoModelDetail";
import route36 from "./routes/project/addProject";
import route37 from "./routes/project/delProject";
import route38 from "./routes/project/editProject";
import route39 from "./routes/project/getProject";
import route40 from "./routes/script/addScript";
import route41 from "./routes/script/delScript";
import route42 from "./routes/script/getScrptApi";
import route43 from "./routes/script/updateScript";
import route44 from "./routes/setting/agentDeploy/deployAgentModel";
import route45 from "./routes/setting/agentDeploy/getAgentDeploy";
import route46 from "./routes/setting/agentDeploy/updateKey";
import route47 from "./routes/setting/dbConfig/clearData";
import route48 from "./routes/setting/getTextModel";
import route49 from "./routes/setting/loginConfig/getUser";
import route50 from "./routes/setting/loginConfig/updateUserPwd";
import route51 from "./routes/setting/memoryConfig/getMemory";
import route52 from "./routes/setting/memoryConfig/sureMemory";
import route53 from "./routes/setting/vendorConfig/addVendor";
import route54 from "./routes/setting/vendorConfig/deleteVendor";
import route55 from "./routes/setting/vendorConfig/getVendorList";
import route56 from "./routes/setting/vendorConfig/modelTest";
import route57 from "./routes/setting/vendorConfig/updateVendor";
import route58 from "./routes/task/getMyTaskApi";
import route59 from "./routes/task/getTaskCategories";
import route60 from "./routes/task/taskDetails";
import route61 from "./routes/test/test";
export default async (app: Express) => {
app.use("/api/agents/clearMemory", route1);
app.use("/api/agents/getMemory", route2);
app.use("/api/agents/productionAgent", route3);
app.use("/api/artStyle/getArtStyle", route4);
app.use("/api/assets/addAssets", route5);
app.use("/api/assets/batchDelete", route6);
app.use("/api/assets/batchGenerationData", route7);
app.use("/api/assets/delAssets", route8);
app.use("/api/assets/getAssetsApi", route9);
app.use("/api/assets/getImage", route10);
app.use("/api/assets/saveAssets", route11);
app.use("/api/assets/updateAssets", route12);
app.use("/api/assets/uploadClip", route13);
app.use("/api/assetsGenerate/generateAssets", route14);
app.use("/api/assetsGenerate/polishAssetsPrompt", route15);
app.use("/api/cornerScape/getAllAssets", route16);
app.use("/api/general/generalStatistics", route17);
app.use("/api/general/getSingleProject", route18);
app.use("/api/general/updateProject", route19);
app.use("/api/login/login", route20);
app.use("/api/migrate/migrateData", route21);
app.use("/api/modelSelect/getModelDetail", route22);
app.use("/api/modelSelect/getModelList", route23);
app.use("/api/novel/addNovel", route24);
app.use("/api/novel/batchDeleteNovel", route25);
app.use("/api/novel/delNovel", route26);
app.use("/api/novel/event/batchDeleteEvent", route27);
app.use("/api/novel/event/deletEvent", route28);
app.use("/api/novel/event/generateEvents", route29);
app.use("/api/novel/event/getEvent", route30);
app.use("/api/novel/getNovel", route31);
app.use("/api/novel/updateNovel", route32);
app.use("/api/other/deleteAllData", route33);
app.use("/api/other/getCaptcha", route34);
app.use("/api/production/getProductionData", route35);
app.use("/api/production/workbench/getVideoModelDetail", route36);
app.use("/api/project/addProject", route37);
app.use("/api/project/delProject", route38);
app.use("/api/project/editProject", route39);
app.use("/api/project/getProject", route40);
app.use("/api/script/addScript", route41);
app.use("/api/script/delScript", route42);
app.use("/api/script/getScrptApi", route43);
app.use("/api/script/updateScript", route44);
app.use("/api/setting/agentDeploy/deployAgentModel", route45);
app.use("/api/setting/agentDeploy/getAgentDeploy", route46);
app.use("/api/setting/agentDeploy/updateKey", route47);
app.use("/api/setting/dbConfig/clearData", route48);
app.use("/api/setting/getTextModel", route49);
app.use("/api/setting/loginConfig/getUser", route50);
app.use("/api/setting/loginConfig/updateUserPwd", route51);
app.use("/api/setting/memoryConfig/getMemory", route52);
app.use("/api/setting/memoryConfig/sureMemory", route53);
app.use("/api/setting/vendorConfig/addVendor", route54);
app.use("/api/setting/vendorConfig/deleteVendor", route55);
app.use("/api/setting/vendorConfig/getVendorList", route56);
app.use("/api/setting/vendorConfig/modelTest", route57);
app.use("/api/setting/vendorConfig/updateVendor", route58);
app.use("/api/task/getMyTaskApi", route59);
app.use("/api/task/getTaskCategories", route60);
app.use("/api/task/taskDetails", route61);
app.use("/api/test/test", route62);
app.use("/api/artStyle/getArtStyle", route3);
app.use("/api/assets/addAssets", route4);
app.use("/api/assets/batchDelete", route5);
app.use("/api/assets/batchGenerationData", route6);
app.use("/api/assets/delAssets", route7);
app.use("/api/assets/getAssetsApi", route8);
app.use("/api/assets/getImage", route9);
app.use("/api/assets/saveAssets", route10);
app.use("/api/assets/updateAssets", route11);
app.use("/api/assets/uploadClip", route12);
app.use("/api/assetsGenerate/generateAssets", route13);
app.use("/api/assetsGenerate/polishAssetsPrompt", route14);
app.use("/api/cornerScape/getAllAssets", route15);
app.use("/api/general/generalStatistics", route16);
app.use("/api/general/getSingleProject", route17);
app.use("/api/general/updateProject", route18);
app.use("/api/login/login", route19);
app.use("/api/migrate/migrateData", route20);
app.use("/api/modelSelect/getModelDetail", route21);
app.use("/api/modelSelect/getModelList", route22);
app.use("/api/novel/addNovel", route23);
app.use("/api/novel/batchDeleteNovel", route24);
app.use("/api/novel/delNovel", route25);
app.use("/api/novel/event/batchDeleteEvent", route26);
app.use("/api/novel/event/deletEvent", route27);
app.use("/api/novel/event/generateEvents", route28);
app.use("/api/novel/event/getEvent", route29);
app.use("/api/novel/getNovel", route30);
app.use("/api/novel/updateNovel", route31);
app.use("/api/other/deleteAllData", route32);
app.use("/api/other/getCaptcha", route33);
app.use("/api/production/getProductionData", route34);
app.use("/api/production/workbench/getVideoModelDetail", route35);
app.use("/api/project/addProject", route36);
app.use("/api/project/delProject", route37);
app.use("/api/project/editProject", route38);
app.use("/api/project/getProject", route39);
app.use("/api/script/addScript", route40);
app.use("/api/script/delScript", route41);
app.use("/api/script/getScrptApi", route42);
app.use("/api/script/updateScript", route43);
app.use("/api/setting/agentDeploy/deployAgentModel", route44);
app.use("/api/setting/agentDeploy/getAgentDeploy", route45);
app.use("/api/setting/agentDeploy/updateKey", route46);
app.use("/api/setting/dbConfig/clearData", route47);
app.use("/api/setting/getTextModel", route48);
app.use("/api/setting/loginConfig/getUser", route49);
app.use("/api/setting/loginConfig/updateUserPwd", route50);
app.use("/api/setting/memoryConfig/getMemory", route51);
app.use("/api/setting/memoryConfig/sureMemory", route52);
app.use("/api/setting/vendorConfig/addVendor", route53);
app.use("/api/setting/vendorConfig/deleteVendor", route54);
app.use("/api/setting/vendorConfig/getVendorList", route55);
app.use("/api/setting/vendorConfig/modelTest", route56);
app.use("/api/setting/vendorConfig/updateVendor", route57);
app.use("/api/task/getMyTaskApi", route58);
app.use("/api/task/getTaskCategories", route59);
app.use("/api/task/taskDetails", route60);
app.use("/api/test/test", route61);
}

View File

@ -868,6 +868,11 @@
resolved "https://registry.npmmirror.com/@types/license-checker/-/license-checker-25.0.6.tgz#c346285ee7e42bac58a4922059453f50a5d4175d"
integrity sha512-ju/75+YPkNE5vX1iPer+qtI1eI/LqJVYZgOsmSHI1iiEM1bQL5Gh1lEvyjR9T7ZXVE1FwJa2doWJEEmPNwbZkw==
"@types/lodash@^4.17.24":
version "4.17.24"
resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.24.tgz#4ae334fc62c0e915ca8ed8e35dcc6d4eeb29215f"
integrity sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==
"@types/morgan@^1.9.10":
version "1.9.10"
resolved "https://registry.npmmirror.com/@types/morgan/-/morgan-1.9.10.tgz#725c15d95a5e6150237524cd713bc2d68f9edf1a"
@ -3044,7 +3049,7 @@ lodash.once@^4.0.0:
resolved "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==
lodash@^4.17.15, lodash@^4.17.21:
lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.23:
version "4.17.23"
resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a"
integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==