JChatGPT
JChatGPT 是一个基于 Kotlin 的 Mirai Console 插件,为 QQ 提供 LLM 对话、工具调用、持久记忆、技能、用户画像、图片处理、用量统计和聊天历史检索。
生产运行链路:
NapCat -> OneBot -> Overflow -> Mirai Console -> JChatGPT
插件使用 Mirai 兼容 API,但实际能力和兼容性以 Overflow 为准。
主要能力
- 统一配置聊天、画像、推理、视觉、网页摘要、图像和 TTS 模型
- 聊天模型多接入点容灾、失败退避和冷却
- 网络搜索、网页读取、GitHub 查询、代码执行、视觉、天气、群管理等工具
- 持久记忆、全局技能和渐进式用户画像
- QQ 图片理解、图片生成、语音发送和 LaTeX 渲染
- SQLite 聊天历史、联系人快照、全文检索和模型用量统计
@Bot、引用回复、关键字和连续会话触发
构建与部署
构建需要让 JAVA_HOME 指向 JDK 17,产物保持 Java 11 兼容:
.\gradlew.bat build buildPlugin --console=plain
插件产物位于:
build/mirai/JChatGPT-<version>.mirai2.jar
运行环境需要 Mirai Console 2.16.0、Overflow,以及通过 OneBot 连接的 NapCat。将插件放入 Mirai Console 的 plugins/ 后启动一次,插件会自动生成配置文件。
最小配置
模型与凭据写入:
config/top.jie65535.mirai.JChatGPT/Models.yml
最小示例:
providers:
- name: deepseek
type: openai
api: 'https://api.deepseek.com/v1/'
token: 'sk-xxxx'
models:
- name: chat-main
provider: deepseek
model: deepseek-chat
然后在同目录的 Config.yml 中绑定用途:
chatModelAlias: chat-main
chatFallbackModelAliases: []
修改配置后执行 /jgpt reload。其他模型、工具和实验功能按需配置,缺少依赖或凭据的可选工具不会启用。
群聊触发限制
默认开启 requireOwnerInGroup:只有配置的主人也在群内,JChatGPT 才允许触发群聊对话。请在 Config.yml 中填写主人的 QQ:
ownerId: 123456789 # 替换为你的 QQ 号
requireOwnerInGroup: true
此限制优先于聊天权限,覆盖 @Bot、引用回复、关键词以及连续会话触发。主人未配置、QQ 号无效、不在群内或成员查询失败时,均静默忽略,不发送拒绝提示。检查使用 Overflow 提供的当前群成员信息,不使用历史联系人快照;成员变动的生效时间取决于 Overflow 的同步。
私聊仍按原有逻辑处理,聊天记录继续保存,画像相关配置、管理命令和其他插件不受此开关影响。开关限制新的消息触发,不会强制取消已经开始的模型请求或工具调用。设为 false 可恢复原有群聊触发行为,修改后执行 /jgpt reload。
升级后此开关也默认开启;未配置 ownerId 时,所有群聊对话触发都会被忽略。
使用
- 群聊中
@Bot,或回复 Bot 的消息 - 使用
callKeyword配置的关键字触发 - 引用群友消息并
@Bot,让模型读取引用内容
主要权限:
JChatGPT:Chattop.jie65535.mirai.jchatgpt:command.jgpt
常用命令:
/jgpt enable <contact>
/jgpt disable <contact>
/jgpt reload
/jgpt clearMemory
/jgpt clearContextCache
/jgpt skills
/jgpt tokens [days]
画像维护命令:
/jgpt profileAnalyze <userIds> [batches]
/jgpt profileAnalyzeGroup [groupIds] [batches]
/jgpt profileShow <userId>
/jgpt profileCompact [userIds]
/jgpt profileStop
数据位置
config/top.jie65535.mirai.JChatGPT/:模型、插件配置和系统提示词data/top.jie65535.mirai.JChatGPT/chat-history.sqlite:聊天历史、联系人快照和模型用量data/top.jie65535.mirai.JChatGPT/skills/:Bot 沉淀的全局技能
数据库和运行时配置包含不可替代的私有数据,不要提交到 Git,也不要在没有备份时删除或重建。
开发验证
.\gradlew.bat test --console=plain
.\gradlew.bat build buildPlugin --console=plain
涉及事件、联系人、撤回或群元数据的行为,最终仍需在 NapCat / OneBot / Overflow 实际链路中验证。