mirror of
https://github.com/jie65535/JChatGPT.git
synced 2026-06-23 00:49:31 +08:00
Add global skill system for self-accumulated knowledge
Introduce a cross-group skill system that lets the bot distill reusable
knowledge into markdown docs and load them on demand, keeping day-to-day
context pollution low.
- SkillStore manages data/skills/*.md files with name/description
frontmatter and an in-memory index cache (rebuilt on init/reload)
- Only the skill index (name + one-line description) is injected via the
new {skills} system-prompt placeholder; bodies load on demand
- New tools: loadSkill / saveSkill (upsert, iterate = load+overwrite) /
deleteSkill, gated by PluginConfig.skillsEnabled
- Skill names validated against ^[A-Za-z0-9_-]+$ to prevent traversal
- Wire SkillStore.init into onEnable and refresh on /jgpt reload; add
/jgpt skills listing command
- Bump version to 1.12.0; update README
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
53
README.md
53
README.md
@@ -7,6 +7,7 @@ JChatGPT 是一个基于 Kotlin 的 Mirai Console 插件,它将大型语言模
|
||||
- **多模型支持**:支持聊天模型、推理模型和视觉模型
|
||||
- **丰富的工具系统**:包括网络搜索、代码执行、图像识别、群管理等
|
||||
- **上下文记忆**:支持持久化记忆存储
|
||||
- **技能系统**:Bot 可在群聊中自我沉淀可复用知识,全局跨群、按需加载、低上下文污染
|
||||
- **用户画像系统**:好感度、印象、标签、Bot 自定义代号
|
||||
- **Token消耗统计**:按天 × 用户 × 群聚合记录,支持多维度统计查询
|
||||
- **LaTeX 渲染**:自动将数学表达式渲染为图片
|
||||
@@ -30,6 +31,7 @@ AI 可以自动调用多种工具来完成复杂任务:
|
||||
- 推理思考(需要配置推理模型)
|
||||
- 群管理(禁言等,需启用相应权限)
|
||||
- 记忆管理(添加和修改对话记忆)
|
||||
- 技能管理(沉淀、加载、迭代、删除可复用知识技能)
|
||||
- 聊天历史搜索(按关键词、发送者、时间范围检索群聊消息,需启用历史消息上下文)
|
||||
|
||||
## 权限列表
|
||||
@@ -45,6 +47,7 @@ AI 可以自动调用多种工具来完成复杂任务:
|
||||
- `/jgpt reload` - 重载配置文件
|
||||
- `/jgpt clearMemory` - 清空所有对话记忆
|
||||
- `/jgpt clearContextCache` - 清空所有对话上下文缓存
|
||||
- `/jgpt skills` - 列出当前所有技能(名称 + 简介)
|
||||
|
||||
### 好感度管理
|
||||
- `/jgpt setFavor <user> <value>` - 设置指定用户的好感度值(-100~100)
|
||||
@@ -135,6 +138,8 @@ callKeyword: '[小筱][林淋月玥]'
|
||||
showToolCallingMessage: true
|
||||
# 是否启用记忆编辑功能,记忆存在data目录,提示词中需要加上{memory}来填充记忆,每个群都有独立记忆
|
||||
memoryEnabled: true
|
||||
# 是否启用技能系统,技能存在data/skills目录(全局跨群),提示词中需要加上{skills}来注入技能索引
|
||||
skillsEnabled: true
|
||||
# 是否启用好感度系统
|
||||
enableFavorabilitySystem: true
|
||||
# 好感度每日基础偏移速度(点/天)
|
||||
@@ -165,6 +170,7 @@ JChatGPT 使用系统提示词来定义 AI 的行为和个性。提示词文件
|
||||
- `{time}` - 当前时间(格式:yyyy年MM月dd E HH:mm:ss)
|
||||
- `{subject}` - 当前聊天环境信息(群聊名称或私聊信息)
|
||||
- `{memory}` - 当前联系人的记忆内容
|
||||
- `{skills}` - 全局技能索引(仅名称 + 一句话简介,正文按需加载)
|
||||
|
||||
### 示例提示词
|
||||
|
||||
@@ -279,12 +285,13 @@ JChatGPT 默认配置为使用阿里云百炼平台的通义千问系列模型
|
||||
3. **VisualAgent** - 图像识别和理解
|
||||
4. **ReasoningAgent** - 深度思考和推理
|
||||
5. **MemoryAppend/Replace** - 对话记忆管理
|
||||
6. **GroupManageAgent** - 群管理功能(如禁言)
|
||||
7. **SendSingleMessage/CompositeMessage** - 发送消息
|
||||
8. **SendVoiceMessage** - 发送语音消息
|
||||
9. **ImageAgent** - 图像生成与编辑(文生图、单图编辑、多图融合)
|
||||
10. **WeatherService** - 天气查询
|
||||
11. **SearchChatHistory** - 按关键词、发送者、时间范围搜索群聊消息历史(依赖 mirai-hibernate-plugin)
|
||||
6. **LoadSkill/SaveSkill/DeleteSkill** - 技能管理(加载、沉淀/迭代、删除全局技能)
|
||||
7. **GroupManageAgent** - 群管理功能(如禁言)
|
||||
8. **SendSingleMessage/CompositeMessage** - 发送消息
|
||||
9. **SendVoiceMessage** - 发送语音消息
|
||||
10. **ImageAgent** - 图像生成与编辑(文生图、单图编辑、多图融合)
|
||||
11. **WeatherService** - 天气查询
|
||||
12. **SearchChatHistory** - 按关键词、发送者、时间范围搜索群聊消息历史(依赖 mirai-hibernate-plugin)
|
||||
|
||||
## 用户画像系统
|
||||
|
||||
@@ -315,6 +322,40 @@ JChatGPT 维护对每位用户的画像,由好感度、Bot 自定义代号、
|
||||
- `enableFavorabilitySystem` - 是否启用画像系统(默认:true)
|
||||
- `favorabilityBaseShiftSpeed` - 好感度每日基础偏移速度(点/天,默认:2.0)
|
||||
|
||||
## 技能系统
|
||||
|
||||
JChatGPT 允许 Bot 在群聊中**自我沉淀可复用的知识和经验**,存成"技能"(本质是带简介的提示词文档),并在需要时按需加载。例如群友反复问到某个软件/模组的用法、常见报错排查,Bot 在回答或被纠正的过程中学到的内容可以沉淀成技能,跨群复用。
|
||||
|
||||
### 设计要点
|
||||
- **全局跨群**:技能不按群隔离,任何群学到的都能在其它群复用。
|
||||
- **低上下文污染**:日常对话只在系统提示词里常驻"技能名 + 一句话简介"的索引,正文不进上下文。
|
||||
- **按需加载**:当话题命中某个技能时,Bot 才用 `loadSkill` 把正文读入上下文。
|
||||
- **自我迭代**:Bot 通过 `saveSkill` 沉淀/更新技能,过时的用 `deleteSkill` 删除,无需人工介入(也支持手动编辑文件)。
|
||||
|
||||
### 存储格式
|
||||
每个技能 = `data/skills/` 下的一个 markdown 文件,带 frontmatter:
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: kubejs-basics
|
||||
description: KubeJS 基础语法、常见报错与排查方法
|
||||
---
|
||||
|
||||
(正文:沉淀下来的知识、经验或提示词)
|
||||
```
|
||||
|
||||
技能名为 kebab-case,只能包含字母、数字、下划线、连字符(用于校验防止路径穿越)。
|
||||
|
||||
### 相关工具
|
||||
- **loadSkill(name)** - 加载某技能正文到上下文
|
||||
- **saveSkill(name, description, content)** - 新增或整篇覆盖一个技能(迭代 = 先 loadSkill 读全文,改好后同名写回)
|
||||
- **deleteSkill(name)** - 删除过时或失效的技能
|
||||
|
||||
### 配置与命令
|
||||
- 配置项 `skillsEnabled`(默认 true)控制是否启用技能系统
|
||||
- 系统提示词中需包含 `{skills}` 占位符以注入技能索引
|
||||
- `/jgpt skills` - 列出当前所有技能;`/jgpt reload` 会重新扫描技能目录
|
||||
|
||||
## Token消耗统计
|
||||
|
||||
JChatGPT 按 (日期, userId, groupId) 三元组聚合每次对话的 Token 消耗,提供多维度统计查询。
|
||||
|
||||
Reference in New Issue
Block a user