koishi-plugin-yesimbot-extension-online-prompt
Version:
YesImBot 在线提示词加载扩展,由AI完成编写,不保证可靠性,可能出现奇怪问题
186 lines (132 loc) • 4.83 kB
Markdown
# koishi-plugin-yesimbot-extension-online-prompt
一个为 YesImBot 设计的 Koishi 插件,用于从在线源动态加载自定义提示词。支持 GitHub Gist、Notion 等多种平台的实时同步。
**⚠️ 注意:本插件由 AI 完成编写,不保证可用性。**
**作者:我是小鸭头**
## 📖 介绍
这是一个为 YesImBot 设计的在线提示词加载扩展插件。它允许你从在线源(如 GitHub Gist、Notion 等)动态加载自定义提示词,实现提示词的实时同步和更新。
## ✨ 特性
- 🌐 **多源支持**: 支持从多个在线源加载提示词
- 🔄 **自动刷新**: 可配置的自动刷新间隔
- 💾 **智能缓存**: 内置缓存机制,减少网络请求
- 🔁 **重试机制**: 网络请求失败时自动重试
- ⚡ **优先级控制**: 支持设置不同提示词源的优先级
- 🛡️ **错误处理**: 完善的错误处理和日志记录
## 🚀 安装
1. 将此插件放置在 YesImBot 项目的 `packages` 目录下
2. 在项目根目录运行构建命令:
```bash
npm run build
```
## 📝 配置
### 基本配置
```yaml
plugins:
yesimbot-extension-online-prompt:
urls:
- name: "my-custom-prompt"
url: "https://gist.githubusercontent.com/username/gist-id/raw/prompt.txt"
priority: 10
enabled: true
headers:
Authorization: "token your-github-token" # 可选
- name: "notion-prompt"
url: "https://your-notion-export-url.com/prompt.txt"
priority: 20
enabled: true
refreshInterval: 300 # 5分钟刷新一次
timeout: 10
retryAttempts: 3
enableCache: true
cacheExpiry: 3600 # 1小时缓存过期
```
### 配置项说明
| 配置项 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| `urls` | Array | `[]` | 在线提示词源配置列表 |
| `refreshInterval` | Number | `300` | 自动刷新间隔(秒),0 表示不自动刷新 |
| `timeout` | Number | `10` | 请求超时时间(秒) |
| `retryAttempts` | Number | `3` | 请求失败时的重试次数 |
| `enableCache` | Boolean | `true` | 是否启用缓存 |
| `cacheExpiry` | Number | `3600` | 缓存过期时间(秒) |
### URL 配置项说明
| 配置项 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| `name` | String | ✅ | 提示词源的名称,用于生成占位符 |
| `url` | String | ✅ | 提示词内容的 URL |
| `priority` | Number | ❌ | 优先级,数字越小越靠前(默认:10) |
| `enabled` | Boolean | ❌ | 是否启用此提示词源(默认:true) |
| `headers` | Object | ❌ | 可选的 HTTP 请求头 |
## 🎯 使用方法
### 1. 在提示词中使用占位符
配置完成后,你可以在 YesImBot 的提示词模板中使用以下占位符:
```mustache
{{online.my-custom-prompt}}
{{online.notion-prompt}}
```
占位符格式为:`{{online.{name}}}`,其中 `{name}` 是你在配置中设置的提示词源名称。
### 2. 示例提示词模板
```mustache
你是一个AI助手。
{{online.my-custom-prompt}}
当前时间:{{date.now}}
用户:{{user.name}}
请根据以上信息回复用户。
```
## 🔗 支持的在线源
### GitHub Gist
1. 创建一个 GitHub Gist
2. 获取 Raw URL(格式:`https://gist.githubusercontent.com/username/gist-id/raw/filename`)
3. 在配置中使用该 URL
### Notion
1. 在 Notion 中创建包含提示词的页面
2. 导出为 Markdown 或纯文本
3. 将导出的文件上传到可公开访问的位置
4. 在配置中使用该 URL
### 其他平台
任何能够提供纯文本内容的 HTTP(S) URL 都可以作为提示词源。
## 🔧 高级用法
### 1. 使用认证头
对于需要认证的私有源,可以在配置中添加认证头:
```yaml
headers:
Authorization: "Bearer your-token"
X-API-Key: "your-api-key"
```
### 2. 优先级控制
通过设置不同的 `priority` 值来控制提示词的加载顺序:
```yaml
urls:
- name: "system-prompt"
priority: 1 # 最高优先级
- name: "user-prompt"
priority: 10 # 较低优先级
```
### 3. 条件启用
可以通过 `enabled` 字段来临时禁用某个提示词源:
```yaml
urls:
- name: "debug-prompt"
enabled: false # 临时禁用
```
## 🐛 故障排除
### 常见问题
1. **提示词内容为空**
- 检查 URL 是否可访问
- 确认网络连接正常
- 查看日志中的错误信息
2. **请求超时**
- 增加 `timeout` 配置值
- 检查网络延迟
3. **认证失败**
- 确认认证头配置正确
- 检查 token 是否有效
### 日志查看
插件会输出详细的日志信息,包括:
- 提示词加载状态
- 网络请求结果
- 缓存操作
- 错误信息
## 📄 许可证
MIT License
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!