KnowledgeBaseSkill
适用于 ArkOps-Ai 的生产级知识库技能——使 AI 能够使用持久化知识库查询、管理并回答玩家问题。
功能特性
- 模糊搜索——N-gram 关键词提取结合停用词过滤,支持中英文精准搜索
- 加权评分——结果按相关性排序(标签 > 标题 > ID > 内容)
- 数据持久化——基于 JSON 的存储,支持原子写入和防抖保存
- 权限控制——细粒度的工具级权限(玩家 / 管理员 / 超级管理员)
- 线程安全——使用
ConcurrentHashMap缓存和同步文件操作 - 分类管理——动态分类分组,无需冗余数据文件
快速开始
环境要求
- Java 21+
- Maven 3.6+
- 服务器已安装 ArkOps-Ai 插件
- Paper/Spigot 1.21.8+
构建
mvn clean package
编译后的 jar 文件将位于 target/KnowledgeBaseSkill-1.0.0.jar。
安装
- 将
KnowledgeBaseSkill-1.0.0.jar复制到服务器的plugins/文件夹 - 重启服务器
- 技能将自动注册到 ArkOps-Ai
数据存储位置
知识库数据存储在:
plugins/ArkOps-Ai/skills/knowledge_base/entries.json
架构
plugins/ArkOps-Ai/skills/knowledge_base/
└── entries.json # 所有知识库条目(单一数据源)
条目结构
{
"server_rules": {
"title": "服务器规则",
"content": "1. 尊重所有玩家\n2. 禁止作弊...",
"category": "rules",
"tags": ["rules", "guidelines", "behavior"],
"created_at": 1710000000,
"updated_at": 1710000000
}
}
工具列表
| 工具 | 权限 | 描述 |
|---|---|---|
query_knowledge |
玩家 | 使用模糊匹配搜索知识库 |
add_knowledge |
超级管理员 | 添加新的知识库条目 |
update_knowledge |
超级管理员 | 更新现有条目 |
delete_knowledge |
超级管理员 | 通过 ID 删除条目 |
list_categories |
玩家 | 列出所有可用分类 |
list_knowledge |
玩家 | 列出条目,可按分类过滤 |
搜索算法
关键词提取
- 停用词过滤——移除常见词汇(如何、怎么、the、is 等)
- N-gram 生成——提取 2-gram 和 3-gram 子串
- 分词——对英文术语按空格分割
评分规则
| 匹配位置 | 权重 |
|---|---|
| 标签 | +15 |
| 标题 | +10 |
| ID | +8 |
| 内容 | +5 |
结果按得分降序排序。
保存机制
| 事件 | 操作 |
|---|---|
| 添加/更新/删除 | 标记为脏数据并计划保存(5 秒防抖) |
| 服务器关闭 | 强制立即保存 |
| 多次快速编辑 | 合并为单次写入 |
原子写入使用 .tmp 文件 + 重命名模式防止数据损坏。
使用示例
查询知识库
玩家:如何查看筑梦点?
AI: [query_knowledge] question="如何查看筑梦点"
结果:找到 1 条结果:
【筑梦点系统指令】
ID: dream_voice_commands
分类:economy
标签:筑梦点, dv, balance, pay, 经济, 货币, 转账
筑梦点是服务器的一种货币系统。查看筑梦点余额的指令是 /dv balance...
添加知识库
玩家:添加知识库 查看筑梦点到方法是/dv balance
AI: [add_knowledge] id="dream_voice_commands" title="筑梦点系统指令" content="..." category="economy" tags="筑梦点, dv, balance, pay"
结果:成功添加知识库条目:dream_voice_commands
开发指南
项目结构
KnowledgeBaseSkill/
├── pom.xml
├── SKILL_DEVELOPMENT.md # ArkOps-Ai 技能开发文档
├── skill-template/ # 参考模板
└── src/main/java/com/arkops/
├── knowledgebaseskill/
│ └── KnowledgeBaseSkill.java
└── skill/
├── Skill.java # 技能接口(存根)
└── SkillManager.java # 技能管理器(存根)
依赖
| 依赖 | 作用域 | 用途 |
|---|---|---|
io.papermc.paper:paper-api |
提供 | Bukkit API |
com.google.code.gson:gson |
编译(阴影) | JSON 序列化 |
Gson 被阴影打包到最终 jar 文件中以避免冲突。
许可证
该 Skill 仍处于开发与内部测试阶段,暂未开放使用。感谢您的关注,请耐心等待后续发布。 如果你对本项目感兴趣可以联系DreamArkMC@163.com申请参加内测。
作者
DreamArk Studio
DreamArk Studio