LLM Chat 插件开发指南
LLM Chat 是 AIO Hub 的核心模块之一,提供了强大的插件扩展能力。通过开发插件,你可以深度定制聊天体验,包括修改上下文、添加自定义设置、扩展 UI 等。
1. 聊天设置集成 (Chat Settings Integration)
插件可以将其配置项直接集成到 LLM Chat 的设置对话框中,无需让用户跳转到单独的插件设置页面。这提供了更一致的用户体验。
注册设置项
要在聊天设置对话框中添加你的插件配置,需要在插件的 activate 钩子或初始化逻辑中调用 registerPluginSettings。
typescript
import { markRaw } from "vue";
import { registerSettingsSection } from "@/tools/llm-chat/composables/usePluginSettings";
// 假设你有一个图标组件
import MyPluginIcon from "./icons/MyPluginIcon.vue";
export function activate(context) {
registerSettingsSection({
title: "我的超级插件", // 设置分组的标题
icon: markRaw(MyPluginIcon), // 设置分组的图标
items: [
{
id: "my-plugin.auto-translate", // 唯一 ID
label: "自动翻译", // 显示名称
type: "switch", // 类型:switch, select, input, number, slider
path: "plugins.mySuperPlugin.autoTranslate", // 存储路径,建议使用 plugins.<插件ID>.<属性>
default: false, // 默认值
hint: "开启后,将自动翻译接收到的消息", // 提示信息
},
{
id: "my-plugin.language",
label: "目标语言",
type: "select",
path: "plugins.mySuperPlugin.targetLanguage",
default: "en",
options: [
{ label: "英语", value: "en" },
{ label: "日语", value: "ja" },
{ label: "法语", value: "fr" },
],
// 可选:控制显示条件
visible: (settings) =>
settings.plugins?.mySuperPlugin?.autoTranslate === true,
},
],
});
}支持的设置类型
目前支持以下设置项类型 (type):
switch: 开关按钮,对应 boolean 值。input: 文本输入框,对应 string 值。number: 数字输入框,对应 number 值。select: 下拉选择框,需要提供options数组。slider: 滑动条,需要提供min,max,step。action: 按钮,点击触发action事件(需配合自定义逻辑)。
访问设置值
插件可以通过 useChatSettings composable 访问用户的设置值:
typescript
import { useChatSettings } from "@/tools/llm-chat/composables/useChatSettings";
const { settings } = useChatSettings();
// 访问你的插件设置
const isAutoTranslateEnabled =
settings.value.plugins?.mySuperPlugin?.autoTranslate;2. 上下文管道 (Context Pipeline)
LLM Chat 使用 Context Pipeline 来处理消息和上下文。插件可以注册处理器来干预这个过程。
注册处理器
typescript
export function activate(context) {
context.chat.registerProcessor({
id: "my-plugin:add-footer",
name: "添加页脚",
description: "在消息末尾添加页脚",
async execute(pipelineContext) {
const lastMessage =
pipelineContext.messages[pipelineContext.messages.length - 1];
if (lastMessage) {
lastMessage.content += "\n\n(Powered by My Plugin)";
}
},
});
}详细的 Context Pipeline 架构请参考 docs/tools/llm-chat/design/context-pipeline-architecture.md。
3. UI 组件扩展 (Coming Soon)
未来版本将支持插件注册自定义的消息渲染器、输入框扩展等 UI 组件。