Agent 资产管理
Agent 资产(Assets)系统允许用户为每个智能体绑定专属的多媒体资源(图片、音频、视频、文档等)。这些资产不仅可以用于 UI 展示,还可以通过特殊的协议和宏系统注入到提示词中,供大语言模型(LLM)理解和引用。
一、核心概念:agent-asset:// 协议
系统定义了一套专有的 URI 协议,用于在消息内容或提示词模板中引用 Agent 专属资产。
1. 协议格式
标准的引用格式如下: agent-asset://{group}/{id}.{ext}
- group: 资产所属的分组 ID(默认为
default)。 - id: 资产的唯一标识符(通常是不带后缀的文件名)。
- ext: 文件扩展名(可选,用于辅助渲染引擎识别类型)。
示例:
agent-asset://emojis/happy.png:引用表情包分组下的 happy 图片。agent-asset://bgm/theme_song.mp3:引用背景音乐分组下的主题曲。
2. 引用与解析
- 消息内引用:在发送给 AI 的消息或 AI 的回复中包含此协议链接时,UI 渲染引擎会自动将其解析为对应的媒体组件(如图片卡片、音频播放器)。
- 提示词引用:在系统提示词中使用该协议,可以告诉 AI 某些资产的存在及其含义,AI 可以根据上下文决定在回复中输出这些链接。
二、资产分组管理
为了应对大量资产,系统提供了灵活的分组机制。
1. 分组定义 (Asset Group)
每个分组包含以下属性:
- ID:唯一标识,用于协议路径。
- 显示名称:UI 界面展示的名称。
- 图标:支持使用 Emoji 作为分组图标。
- 描述:描述该分组的用途,有助于 LLM 理解资产背景。
- 排序:控制侧边栏分组的显示顺序。
2. 批量操作
在资产管理器中,你可以进入批量模式:
- 批量移动:将选中的多个资产一键转移到另一个分组。
- 批量删除:物理删除选中的资产文件及其元数据。
- 拖拽归类:直接将资产卡片拖拽到左侧的分组列表上即可完成移动。
三、资产类型与处理
系统支持多种类型的资产,并根据文件 MIME 类型自动归类:
| 类型 | 常见后缀 | 说明 |
|---|---|---|
| 图片 (Image) | .png, .jpg, .webp, .gif | 支持在线预览、缩略图生成。 |
| 音频 (Audio) | .mp3, .wav, .ogg | 支持在线播放,可配置封面图(Poster)。 |
| 视频 (Video) | .mp4, .webm | 支持内置播放器预览。 |
| 文件 (File) | .pdf, .txt, .docx | 通用文件类型,提供下载和路径引用。 |
缩略图机制
对于视频和音频资产,系统支持关联一个 thumbnailPath。
- 视频:自动截取首帧作为缩略图。
- 音频:用户可以手动指定一张图片作为该音频在 UI 中的封面。
四、导入与导出
资产系统支持多种迁移方式,确保数据的流动性。
1. 物理存储
所有资产物理存储在应用数据目录下的 llm-chat/agents/{agentId}/assets/ 目录中。你可以通过界面上的“打开目录”按钮直接访问原始文件。
2. SillyTavern 兼容导入
系统内置了对 SillyTavern 角色卡及预设的兼容支持:
- 支持解析 ST 的
{{item}}格式并转换为本系统的资产定义。 - 在导入角色卡时,会自动将关联的表情包、背景图等资源存入对应的资产分组。
3. JSON 导出
你可以将整个 Agent 的配置(包含资产元数据定义)导出为 JSON 文件。注意:JSON 导出仅包含路径和配置信息,不包含物理文件本身。若要迁移整个 Agent,建议直接备份物理目录。
五、与宏系统联动
资产系统深度集成了宏引擎,支持动态注入。
1. {{assets}} 宏
- {{assets}}:注入当前 Agent 所有已启用资产的列表及描述。
- {{assets::groupId}}:仅注入指定分组下的资产信息。这对于告诉 AI 它可以调用哪些表情包或背景音乐非常有用。
2. 注入策略
资产引用的注入遵循 Agent 的消息注入策略。你可以将包含资产引用的消息配置为:
- 深度注入 (Depth):在对话历史的特定深度插入资产说明。
- 锚点注入 (Anchor):在系统提示词或角色定义之后紧跟资产列表。
相关阅读: