矫正命名规范

This commit is contained in:
ACT丶流星雨 2026-03-26 11:34:56 +08:00
parent 35993e7bfe
commit e949277899
26 changed files with 184 additions and 91 deletions

View File

@ -21,7 +21,7 @@ description: >
### 提取衍生资产流程
1. 调用 `get_flowData` 分别获取 `script`(剧本)和 `assets`(现有资产列表)
2. 根据[衍生资产提取](references/derive-assets-extraction.md)文档中的提取原则,分析剧本内容,为每个角色资产识别出关联的衍生资产(道具、服饰、法器、座驾、场景物件等)
2. 根据[衍生资产提取](references/derive_assets_extraction.md)文档中的提取原则,分析剧本内容,为每个角色资产识别出关联的衍生资产(道具、服饰、法器、座驾、场景物件等)
3. 对每个有衍生状态的资产调用 `set_flowData_assets` 保存
4. 告知用户提取完成,列出为每个角色提取的衍生资产概要
5. **询问用户是否需要生成衍生资产图片**
@ -32,7 +32,7 @@ description: >
### 生成分镜表流程
1. 调用 `get_flowData` 分别获取 `script`(剧本)和 `assets`(现有资产列表)
2. 根据[分镜表生成](references/storyboard-generation.md)文档中的拆分原则和字段填写指引将剧本拆分为分镜填写每条分镜的所有字段id、title、description、camera、duration、frameMode、prompt、lines、sound、associateAssetsIds
2. 根据[分镜表生成](references/storyboard_generation.md)文档中的拆分原则和字段填写指引将剧本拆分为分镜填写每条分镜的所有字段id、title、description、camera、duration、frameMode、prompt、lines、sound、associateAssetsIds
3. 调用 `set_flowData({ key: "storyboard", value: 分镜数组 })` 一次性保存完整分镜表
4. 告知用户分镜表生成完成,列出分镜概要(总条数、主要场景)
5. **询问用户是否需要生成分镜图片**
@ -43,7 +43,7 @@ description: >
本技能附带以下参考资料,根据任务需要使用 `read_skill_file` 工具按需加载:
- [衍生资产提取](references/derive-assets-extraction.md) — 从剧本和角色资产中提取衍生资产的原则和示例
- [分镜表生成](references/storyboard-generation.md) — 从剧本和资产生成分镜表的拆分原则、字段规范和示例
- [衍生资产提取](references/derive_assets_extraction.md) — 从剧本和角色资产中提取衍生资产的原则和示例
- [分镜表生成](references/storyboard_generation.md) — 从剧本和资产生成分镜表的拆分原则、字段规范和示例
**注意**:根据用户当前任务选择性加载对应参考资料,不要一次性全部加载。

View File

@ -0,0 +1,77 @@
# 烤龙肉的做法
## 前言
龙肉,作为幻想世界中最珍贵的食材之一,其烹饪方法自古以来就是冒险者和宫廷厨师们追求的终极秘技。以下是一份经典的烤龙肉食谱。
---
## 食材准备
| 食材 | 用量 | 备注 |
|------|------|------|
| 龙肉(里脊或腿肉) | 2公斤 | 需提前放血处理 |
| 龙息椒粉 | 2大勺 | 普通辣椒粉可替代 |
| 凤凰蛋黄 | 3个 | 鸡蛋黄可替代 |
| 精灵橄榄油 | 100毫升 | 特级初榨橄榄油可替代 |
| 矮人黑盐 | 适量 | 海盐可替代 |
| 迷迭香、百里香 | 各一把 | 新鲜为佳 |
| 蒜头 | 8瓣 | 拍碎 |
| 蜂蜜 | 3大勺 | 用于表面刷酱 |
---
## 烹饪步骤
### 第一步:腌制龙肉(需提前一天)
1. 将龙肉洗净,用厨房纸巾吸干表面水分
2. 用锋利的刀在肉面划几道深约1厘米的斜纹便于入味
3. 将蛋黄、橄榄油、龙息椒粉、黑盐混合,调成腌料
4. 均匀涂抹在龙肉表面,放入密封容器
5. 冷藏腌制12-24小时
### 第二步:准备香草束
1. 将迷迭香、百里香捆扎成束
2. 蒜瓣拍碎备用
3. 准备好蜂蜜刷酱
### 第三步:烤制
1. **预热烤炉**将烤炉预热至220°C若使用龙焰烤炉调至"青龙"档位)
2. **初次高温烤制**
- 将腌制好的龙肉放入烤盘
- 铺上香草束和蒜瓣
- 220°C烤制20分钟封住肉汁
3. **转中温慢烤**
- 温度降至160°C
- 每隔20分钟翻面一次并刷上蜂蜜
- 继续烤制约1.5-2小时视肉块大小调整
4. **检验熟度**
- 用探针温度计测量中心温度达65°C为五分熟
- 达75°C为全熟
- 龙肉建议七分熟约70°C口感最佳
### 第四步:静置与切片
1. 出炉后用锡纸包裹静置15分钟
2. 逆着纹理切成1厘米厚的片状
3. 摆盘,淋上烤盘中的肉汁
---
## 小贴士
- ⚠️ **安全提示**:处理龙肉时请佩戴防火手套,残余龙息可能引发灼伤
- 🍷 **搭配推荐**:建议搭配精灵白葡萄酒或矮人麦芽啤酒
- 🔥 若龙肉带有冰属性如霜龙烤制时间需延长30%
---
## 成品效果
外皮金黄酥脆,内部肉质鲜嫩多汁,带有独特的硫磺香气与蜂蜜的甜润,回味中隐约有龙息的微辣感。

View File

@ -1,5 +1,5 @@
---
name: universal-agent
name: universal_agent
description: 专注于从小说原文中提取结构化事件信息的助手。
---

View File

@ -1,5 +1,5 @@
---
name: universal-agent
name: universal_agent
description: 专注于从小说原文中提取角色信息并生成视觉化角色描述的助手。
---

View File

@ -1,5 +1,5 @@
---
name: universal-agent
name: universal_agent
description: 专注于从小说原文中提取道具物品信息并生成视觉化描述的助手。
---

View File

@ -1,5 +1,5 @@
---
name: universal-agent
name: universal_agent
description: 专注于从小说原文中提取场景信息并生成视觉化场景描述的助手。
---

View File

@ -206,7 +206,7 @@ set_flowData({
camera: "中景 · 缓慢推进",
duration: 3,
frameMode: "endFrame",
prompt: "A white-haired young man in white robes kneeling on the floor, spitting blood, trembling body, pale face, dramatic lighting, cinematic composition",
prompt: "A white_haired young man in white robes kneeling on the floor, spitting blood, trembling body, pale face, dramatic lighting, cinematic composition",
lines: null,
sound: "喷血声",
associateAssetsIds: [0]
@ -218,7 +218,7 @@ set_flowData({
camera: "大特写",
duration: 3,
frameMode: "firstFrame",
prompt: "Close-up of a jade token with glowing runes fading, fine cracks appearing on the surface, dark moody lighting, cinematic detail shot",
prompt: "Close_up of a jade token with glowing runes fading, fine cracks appearing on the surface, dark moody lighting, cinematic detail shot",
lines: null,
sound: "玉石碎裂声",
associateAssetsIds: [2]

View File

@ -1,5 +1,5 @@
---
name: universal-agent
name: universal_agent
description: 专注于从视频分镜提示词中提取结构化台词、旁白与音效信息的助手。
---

View File

@ -77,7 +77,7 @@ const planData = {
4. 生成汇总统计(总章节、强主线章节数、可压缩章节、预估总时长、目标时长、压缩比)
5. 输出 Markdown 表格格式的事件表,作为后续任务上下文(不写入 planData
**输出格式**:参考 [event-format.md](references/event-format.md)
**输出格式**:参考 [event_format.md](references/event_format.md)
**关键原则**
- 核心事件描述必须包含**动作**和**结果**,不能只写状态
@ -115,7 +115,7 @@ const planData = {
7. 设计付费卡点(位置、内容、钩子类型)
8. 调用 `set_planData_storySkeleton` 保存
**输出格式**:参考 [skeleton-format.md](references/skeleton-format.md)
**输出格式**:参考 [skeleton_format.md](references/skeleton_format.md)
**关键约束**
- 总时长 = 【项目配置】中的集数 × 单集时长
@ -145,7 +145,7 @@ const planData = {
- 角色态度作为世界观锚点
5. 调用 `set_planData_adaptationStrategy` 保存
**输出格式**:参考 [adaptation-format.md](references/adaptation-format.md)
**输出格式**:参考 [adaptation_format.md](references/adaptation_format.md)
**关键原则**
- 故事核优先:主角是"被定义为疯子却选择活下去的人",所有决策服务于此弧线
@ -179,7 +179,7 @@ const planData = {
- 表演指示(情绪、动作细节)
6. 仅当指令中包含 `用户已确认写入SQL: 是` 时,调用 `insert_script_to_sqlite` 写入剧本
**输出格式**:参考 [script-format.md](references/script-format.md)
**输出格式**:参考 [script_format.md](references/script_format.md)
**关键约束**
- 单集总时长严格控制在【项目配置】指定的单集时长 ±10秒

View File

@ -84,7 +84,7 @@ description: >-
| 转场标注 | 节拍间转场方式明确 | 轻微 |
| 情绪连贯 | 节拍间情绪过渡自然 | 中等 |
详细审核标准请参考 [quality-criteria.md](references/quality-criteria.md)。
详细审核标准请参考 [quality_criteria.md](references/quality_criteria.md)。
## 审核报告格式

View File

@ -1,5 +1,5 @@
---
name: universal-agent
name: universal_agent
description: 通用文本分析与内容提取 Agent支持小说事件提取、视频台词提取、角色/场景/道具资产描述生成等多种结构化内容处理任务。
---
@ -11,36 +11,36 @@ description: 通用文本分析与内容提取 Agent支持小说事件提取
你拥有以下参考技能references根据用户请求自动匹配对应技能执行
### 1. 小说章节事件提取event-extract
### 1. 小说章节事件提取event_extract
- **触发条件**:用户提供小说原文,要求提取章节事件、生成事件表
- **参考文件**`references/event-extract.md`
- **参考文件**`references/event_extract.md`
- **输出**:结构化事件表格(章节、角色、核心事件、主线关系、信息密度、预估集长、情绪强度)+ 汇总统计
### 2. 视频提示词台词提取video-dialogue-extract
### 2. 视频提示词台词提取video_dialogue_extract
- **触发条件**:用户提供视频分镜提示词/画面描述,要求从中提取或还原台词、旁白、音效文本
- **参考文件**`references/video-dialogue-extract.md`
- **参考文件**`references/video_dialogue_extract.md`
- **输出**:结构化台词表(镜号、角色、台词内容、台词类型、情绪标注、时长估算)
### 3. 小说角色提取novel-character-extract
### 3. 小说角色提取novel_character_extract
- **触发条件**:用户提供小说原文,要求提取角色信息、生成角色视觉描述
- **参考文件**`references/novel-character-extract.md`
- **参考文件**`references/novel_character_extract.md`
- **资产类型**`role`(对应 `o_assets.type = "role"`
- **输出**:结构化角色资产表(角色名称、角色定位、外貌特征、服饰描述、体型体态、标志性特征、性格气质、首次出场、出场章节数、状态变体)+ 核心角色卡片
### 4. 小说场景提取novel-scene-extract
### 4. 小说场景提取novel_scene_extract
- **触发条件**:用户提供小说原文,要求提取场景/地点信息、生成场景视觉描述
- **参考文件**`references/novel-scene-extract.md`
- **参考文件**`references/novel_scene_extract.md`
- **资产类型**`scene`(对应 `o_assets.type = "scene"`
- **输出**:结构化场景资产表(场景名称、场景类型、空间描述、光照氛围、关键陈设、色调基调、首次出场、出场章节数、关联角色、状态变体)+ 核心场景卡片
### 5. 小说道具提取novel-props-extract
### 5. 小说道具提取novel_props_extract
- **触发条件**:用户提供小说原文,要求提取道具/物品/器物信息、生成道具视觉描述
- **参考文件**`references/novel-props-extract.md`
- **参考文件**`references/novel_props_extract.md`
- **资产类型**`tool`(对应 `o_assets.type = "tool"`
- **输出**:结构化道具资产表(道具名称、类别、外观描述、尺寸参考、材质质感、功能/用途、首次出场、关联角色、状态变体)+ 高频道具排名

View File

@ -1,23 +1,23 @@
[
{
"skillId": "52c51fa8655f899a1b7aae9b6aad7251",
"attribution": "universal-agent.md"
"attribution": "universal_agent.md"
},
{
"skillId": "6d46cdca10b2f49e07e515885d1387a0",
"attribution": "universal-agent.md"
"attribution": "universal_agent.md"
},
{
"skillId": "1864df75d1d65f76e275046649ecaef8",
"attribution": "universal-agent.md"
"attribution": "universal_agent.md"
},
{
"skillId": "3e5efec258c8d8e6a39bcef12f8ee058",
"attribution": "universal-agent.md"
"attribution": "universal_agent.md"
},
{
"skillId": "7fbce6f90d7d85496ba9817e9622e640",
"attribution": "universal-agent.md"
"attribution": "universal_agent.md"
},
{
"skillId": "31fb5c5a1f514ec1e66b4eba9f22d4db",

View File

@ -492,7 +492,7 @@ export default (resTool: ResTool, toolsNames?: string[]) => {
resTool.systemMessage(`图片生成调度计划:共 ${levels.length} 层,${images.length} 张图片`);
// --- 准备公共数据 ---
const skill = await useSkill("universal-agent");
const skill = await useSkill("universal_agent.md");
const projectData = await u.db("o_project").where("id", resTool.data.projectId).select("videoRatio").first();
const imageModel = resTool.data.imageModel;

View File

@ -522,8 +522,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "a1e818cc03a0b355b239ac1fb0512969",
md5: "1fd22029e8047aa30b0dfd703cb837ed",
path: "universal-agent.md",
name: "universal-agent",
path: "universal_agent.md",
name: "universal_agent",
description: "",
embedding: "",
type: "main",
@ -534,8 +534,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "3e5efec258c8d8e6a39bcef12f8ee058",
md5: "efccb0464cfd472861b49ebf737d4820",
path: "references/event-extract.md",
name: "event-extract",
path: "references/event_extract.md",
name: "event_extract",
description:
"专为小说改编短剧设计的文本分析助手逐章提取涉及角色、核心事件、主线关系、信息密度、预估集长及情绪强度等结构化信息以Markdown表格形式输出并附汇总统计辅助短剧制作的内容规划与时长估算。",
embedding: "",
@ -547,8 +547,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "52c51fa8655f899a1b7aae9b6aad7251",
md5: "783678aaab829b34e7c30a414c356bf6",
path: "references/novel-character-extract.md",
name: "novel-character-extract",
path: "references/novel_character_extract.md",
name: "novel_character_extract",
description:
"专为小说内容分析设计的角色提取助手从原文中识别并结构化输出所有重要角色的视觉描述信息包括外貌、服饰、体态、状态变体等字段供美术制作和AI角色图生成使用。",
embedding: "",
@ -560,8 +560,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "6d46cdca10b2f49e07e515885d1387a0",
md5: "10544d12c4ef011e6b3b63a99b8c7fa8",
path: "references/novel-props-extract.md",
name: "novel-props-extract",
path: "references/novel_props_extract.md",
name: "novel_props_extract",
description:
"专注于从小说原文中提取道具物品信息的分析助手能识别武器、法器、药物等各类道具生成包含外观、材质、尺寸、功能及状态变体的结构化视觉描述表格供美术制作和AI绘图使用。",
embedding: "",
@ -573,8 +573,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "1864df75d1d65f76e275046649ecaef8",
md5: "65603aa495a541f54c55b7f30e149f45",
path: "references/novel-scene-extract.md",
name: "novel-scene-extract",
path: "references/novel_scene_extract.md",
name: "novel_scene_extract",
description:
"专注于从小说原文中提取并结构化场景信息的分析助手可识别各类场景地点输出包含空间描述、光照氛围、关键陈设、色调基调等字段的标准化场景资产表用于美术制作和AI绘图的场景概念图生成。",
embedding: "",
@ -586,8 +586,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "7fbce6f90d7d85496ba9817e9622e640",
md5: "830559e8f2cd5d0fa8e6df48a164fe2d",
path: "references/video-dialogue-extract.md",
name: "video-dialogue-extract",
path: "references/video_dialogue_extract.md",
name: "video_dialogue_extract",
description:
"这是一个专门从视频分镜提示词中提取结构化台词、旁白与音效信息的AI助手配置文档定义了完整的输出格式含镜号、角色、台词类型、表演指导等字段、提取规则及处理流程用于将视频分镜描述转化为标准化台词表。",
embedding: "",
@ -612,8 +612,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "27dc2dfc901de2180227d0269217583a",
md5: "7d353be4bab7a794436d9abff2b9c6ee",
path: "references/adaptation-format.md",
name: "adaptation-format",
path: "references/adaptation_format.md",
name: "adaptation_format",
description:
"本文档规定了改编策略输出的标准格式,包括核心改编原则、删除决策和世界观呈现策略三大模块的书写规范,明确各模块所需涵盖的维度与要素,用于指导竖屏短剧等载体的文学改编工作。",
embedding: "",
@ -625,8 +625,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "d49fa09504fe784a8e6eb102756c6d56",
md5: "2ef08a7479f29d74986999ceb02092c8",
path: "references/event-format.md",
name: "event-format",
path: "references/event_format.md",
name: "event_format",
description:
"本文档规定了影视改编项目中事件表的标准输出格式,包括文件头、事件表格、各字段填写规范(章节、角色、核心事件、主线关系、情绪强度、预估时长)及汇总统计模板,用于指导从原著提取事件并评估改编集数与压缩比的第一阶段工作。",
embedding: "",
@ -638,8 +638,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "797906c2ddf0750f050bcdeae23eae3d",
md5: "f5e7fe6db7e05db69d5dc327c4c538f2",
path: "references/script-format.md",
name: "script-format",
path: "references/script_format.md",
name: "script_format",
description:
"本文档为竖屏短剧剧本的输出格式规范定义了文件头、节拍结构、分镜脚本、画面描述、台词、转场标注等标准格式要求并附有时长控制参数与自查清单供AI视频生成和导演制作使用。",
embedding: "",
@ -651,8 +651,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "1abd8675c0c3e62b20c0b151d2ec0fb1",
md5: "a587532c737ce15022e1522021f099bb",
path: "references/skeleton-format.md",
name: "skeleton-format",
path: "references/skeleton_format.md",
name: "skeleton_format",
description:
"本文档定义了故事骨架文件skeleton.md的标准化输出格式涵盖故事核、人物成长隐线、三幕结构、分集决策模板、全局删减记录、付费卡点设计及自查清单用于指导编剧将章节事件列表转化为结构完整的剧集改编方案。",
embedding: "",
@ -664,8 +664,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "0b7828d7a6ab458a4b201122f08d6c16",
md5: "120b3c856f1b2a8a429e11319e8c95fe",
path: "references/quality-criteria.md",
name: "quality-criteria",
path: "references/quality_criteria.md",
name: "quality_criteria",
description:
"本文档为影视/短剧项目的质量审核标准手册,涵盖事件表、故事骨架、改编策略和剧本四大模块的详细审核规则,规定了格式规范、角色名称统一、时长合理性、画面可执行性及场景氛围一致性等审核要求,用于确保各阶段产出物的内容准确性与制作可行性。",
embedding: "",
@ -690,8 +690,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "75a45cf996015ca819582873887ec301",
md5: "6045d76873fd58b8b87a914a21a38439",
path: "references/derive-assets-extraction.md",
name: "derive-assets-extraction",
path: "references/derive_assets_extraction.md",
name: "derive_assets_extraction",
description:
"本文档是一份技术操作指南说明如何根据剧本内容和已有资产列表提取每个资产在剧情中出现的不同视觉状态变体derive并通过工具函数读取和写入数据用于后续图片生成参考。",
embedding: "",
@ -703,8 +703,8 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
{
id: "fce75f69d704c19bebcb356bc1bd6e81",
md5: "a3b3432854970f22949ba47236a6532f",
path: "references/storyboard-generation.md",
name: "storyboard-generation",
path: "references/storyboard_generation.md",
name: "storyboard_generation",
description:
"根据剧本和资产列表生成结构化分镜面板的工具指南涵盖分镜拆分原则、字段填写规范及工具调用流程用于将剧本转化为含画面描述、镜头语言、台词和AI绘图提示词的分镜数据。",
embedding: "",
@ -727,7 +727,7 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
name: "o_skillAttribution",
builder: (table) => {
table.text("skillId").notNullable().references("id").inTable("o_skillList").onDelete("CASCADE");
table.text("attribution").notNullable(); // "production_agent_decision.md" | "production_agent_execution.md" | "production_agent_supervision.md" | "script_agent_decision.md" | "script_agent_execution.md" | "script_agent_supervision.md" | "universal-agent.md"
table.text("attribution").notNullable(); // "production_agent_decision.md" | "production_agent_execution.md" | "production_agent_supervision.md" | "script_agent_decision.md" | "script_agent_execution.md" | "script_agent_supervision.md" | "universal_agent.md"
table.primary(["skillId", "attribution"]);
table.index(["attribution"]);
},
@ -735,23 +735,23 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
await knex("o_skillAttribution").insert([
{
skillId: "52c51fa8655f899a1b7aae9b6aad7251",
attribution: "universal-agent.md",
attribution: "universal_agent.md",
},
{
skillId: "6d46cdca10b2f49e07e515885d1387a0",
attribution: "universal-agent.md",
attribution: "universal_agent.md",
},
{
skillId: "1864df75d1d65f76e275046649ecaef8",
attribution: "universal-agent.md",
attribution: "universal_agent.md",
},
{
skillId: "3e5efec258c8d8e6a39bcef12f8ee058",
attribution: "universal-agent.md",
attribution: "universal_agent.md",
},
{
skillId: "7fbce6f90d7d85496ba9817e9622e640",
attribution: "universal-agent.md",
attribution: "universal_agent.md",
},
{
skillId: "31fb5c5a1f514ec1e66b4eba9f22d4db",

View File

@ -1,4 +1,4 @@
// @routes-hash f5f78866e59979bf30af031c9ea0de82
// @routes-hash e48d3637c019a24988e008910e734d8c
import { Express } from "express";
import route1 from "./routes/agents/clearMemory";
@ -77,15 +77,22 @@ import route73 from "./routes/setting/loginConfig/getUser";
import route74 from "./routes/setting/loginConfig/updateUserPwd";
import route75 from "./routes/setting/memoryConfig/getMemory";
import route76 from "./routes/setting/memoryConfig/sureMemory";
import route77 from "./routes/setting/vendorConfig/addVendor";
import route78 from "./routes/setting/vendorConfig/deleteVendor";
import route79 from "./routes/setting/vendorConfig/getVendorList";
import route80 from "./routes/setting/vendorConfig/modelTest";
import route81 from "./routes/setting/vendorConfig/updateVendor";
import route82 from "./routes/task/getTaskApi";
import route83 from "./routes/task/getTaskCategories";
import route84 from "./routes/task/taskDetails";
import route85 from "./routes/test/test";
import route77 from "./routes/setting/skillManagement/addSkill";
import route78 from "./routes/setting/skillManagement/deleteSkill";
import route79 from "./routes/setting/skillManagement/embeddingSkill";
import route80 from "./routes/setting/skillManagement/generateDescription";
import route81 from "./routes/setting/skillManagement/getSkillList";
import route82 from "./routes/setting/skillManagement/scanSkills";
import route83 from "./routes/setting/skillManagement/updateSkill";
import route84 from "./routes/setting/vendorConfig/addVendor";
import route85 from "./routes/setting/vendorConfig/deleteVendor";
import route86 from "./routes/setting/vendorConfig/getVendorList";
import route87 from "./routes/setting/vendorConfig/modelTest";
import route88 from "./routes/setting/vendorConfig/updateVendor";
import route89 from "./routes/task/getTaskApi";
import route90 from "./routes/task/getTaskCategories";
import route91 from "./routes/task/taskDetails";
import route92 from "./routes/test/test";
export default async (app: Express) => {
app.use("/api/agents/clearMemory", route1);
@ -164,13 +171,20 @@ export default async (app: Express) => {
app.use("/api/setting/loginConfig/updateUserPwd", route74);
app.use("/api/setting/memoryConfig/getMemory", route75);
app.use("/api/setting/memoryConfig/sureMemory", route76);
app.use("/api/setting/vendorConfig/addVendor", route77);
app.use("/api/setting/vendorConfig/deleteVendor", route78);
app.use("/api/setting/vendorConfig/getVendorList", route79);
app.use("/api/setting/vendorConfig/modelTest", route80);
app.use("/api/setting/vendorConfig/updateVendor", route81);
app.use("/api/task/getTaskApi", route82);
app.use("/api/task/getTaskCategories", route83);
app.use("/api/task/taskDetails", route84);
app.use("/api/test/test", route85);
app.use("/api/setting/skillManagement/addSkill", route77);
app.use("/api/setting/skillManagement/deleteSkill", route78);
app.use("/api/setting/skillManagement/embeddingSkill", route79);
app.use("/api/setting/skillManagement/generateDescription", route80);
app.use("/api/setting/skillManagement/getSkillList", route81);
app.use("/api/setting/skillManagement/scanSkills", route82);
app.use("/api/setting/skillManagement/updateSkill", route83);
app.use("/api/setting/vendorConfig/addVendor", route84);
app.use("/api/setting/vendorConfig/deleteVendor", route85);
app.use("/api/setting/vendorConfig/getVendorList", route86);
app.use("/api/setting/vendorConfig/modelTest", route87);
app.use("/api/setting/vendorConfig/updateVendor", route88);
app.use("/api/task/getTaskApi", route89);
app.use("/api/task/getTaskCategories", route90);
app.use("/api/task/taskDetails", route91);
app.use("/api/test/test", route92);
}

View File

@ -28,6 +28,7 @@ export default router.post(
.db("o_assets")
.leftJoin("o_image", "o_assets.imageId", "o_image.id")
.select("o_assets.*", "o_image.filePath")
// @ts-ignore
.where("o_assets.id", "in", assetIds)
.whereNull("o_assets.assetsId")
.where("o_assets.projectId", projectId);
@ -36,6 +37,7 @@ export default router.post(
.leftJoin("o_image", "o_assets.imageId", "o_image.id")
.select("o_assets.*", "o_image.filePath")
.where("o_assets.projectId", projectId)
// @ts-ignore
.where("o_assets.id", "in", assetIds)
.whereNotNull("o_assets.assetsId");

View File

@ -22,11 +22,8 @@ export default router.post(
const assetsData = await u
.db("o_assets")
.leftJoin("o_scriptAssets", "o_assets.id", "o_scriptAssets.assetId")
.where(
"o_scriptAssets.scriptId",
"in",
data.map((i) => i.id),
)
// @ts-ignore
.whereIn( "o_scriptAssets.scriptId", data.map((i) => i.id))
.select("o_assets.id", "o_assets.name", "o_scriptAssets.scriptId");
const scriptAssetsMap: Record<number, { id: number; name: string }[]> = {};
assetsData.forEach((i) => {

View File

@ -8,7 +8,7 @@ export default router.get("/", async (req, res) => {
const skill = await useSkill("universal_agent.md");
const result = await u.Ai.Text("universalAgent").invoke({
system: "请直接调用activate_skill工具激活技能" + skill.prompt,
messages: [{ role: "user", content: `开始激活然后随机使用read_skill_file调用一个技能` }],
messages: [{ role: "user", content: `如何烹饪龙肉` }],
tools: skill.tools,
});

View File

@ -1,4 +1,4 @@
// @db-hash 2b2f9f6242d2d20e89412ba5117415df
// @db-hash a4883a3df3fda68054d467ee6dd26523
//该文件由脚本自动生成,请勿手动修改
export interface memories {
@ -155,6 +155,7 @@ export interface o_storyboard {
'filePath'?: string | null;
'frameMode'?: string | null;
'id'?: number;
'index'?: string | null;
'lines'?: string | null;
'mode'?: string | null;
'model'?: string | null;

View File

@ -123,6 +123,8 @@ function createSkillTools(skill: SkillRecord, mainSkillName: string) {
.where("o_skillList.state", 1)
.andWhere("o_skillAttribution.attribution", mainSkillName);
console.log("%c Line:120 🌮 resources", "background:#b03734", resources);
activated.add(name);
console.log(`[Skill] 📖 已激活:${name}${body.length} 字符,${resources.length} 资源)`);
let content = "";