• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
MC服主必备:越用越懂你的AI智能体,服务器卡顿自动排查

原创 开源 MC服主必备:越用越懂你的AI智能体,服务器卡顿自动排查 v2.2.0

完成注册/登录后下载
[MD] ## v2.2.0 - 联网搜索与网页抓取、对话推荐、命令执行技能、玩家自定义监听、跨玩家上下线订阅、LLM 预算治理与缓存命中率分析 ### ✨ 新增功能 - **联网搜索(WebSearch,本次重点)**:游戏里的 AI 现在能上网查实时信息了——版本更新内容、mod 推荐、今日金价/汇率、球赛比分、Wiki 百科等,不再受训练数据截止日期限制。内置 **9 家搜索引擎供应商**(国内:智谱/百度千帆/豆包/七牛/阿里百炼;国际:Tavily/Brave/Exa/You.com),按服务器语言自动选择,多数有免费额度。服主在 `web.yml` 填一家 API Key 即可用,`provider: auto` 按语言自动路由;支持时间范围筛选、复杂问题自动多步搜索(最多拆 5 个子搜索)。需 `kilacraft.websearch` 权限(默认所有玩家可用,但需服主配 API Key 才生效) - **对话推荐(Suggestion,本次重点)**:AI 回复完毕后,在聊天框下方追加 1~5 个"你可能还想问"的可点击推荐问题,点击即发送,无需手打——像聊天软件里的"猜你想问",AI 答完自动帮你接好下一句。基于多轮历史 + 当前可用技能智能生成,强制"宁缺毋滥",**顺带让你发现 AI 还有哪些能力**(联网搜索、监听、命令执行都能成为推荐入口)。**只在命令模式触发,连续对话模式不触发**,保护沉浸感。玩家可 `/kila suggestion off` 关闭(默认开启,无需权限);推荐列表按聊天框实际宽度智能换行 - **命令执行技能(CommandSkill,本次重点)**:用自然语言让 AI 帮忙执行服务器命令——"回主城""领每日奖励""清空聊天记录"等,AI 翻译成对应命令**以玩家本人身份执行**(受服务器权限约束,AI 做的不超过玩家自己能做的)。本版本三项重大升级: - **默认对所有玩家启用**:原需在 `config.yml` 手动开启且仅 OP,现已移除开关、改由 `kilacraft.command.execute` 权限节点(默认所有玩家)统一控制,关闭用权限插件(如 LuckPerms)回收即可 - **命令知识库文档**:新增 `commands/commands.md`(中英双版)作为 AI 识别命令的知识库,内置本插件所有命令的说明/示例/权限/关键词;服主可按模板**追加第三方插件命令**(如 Essentials 的 `home`/`tpa`),让 AI 认得服里的全部命令。`/kila reload` 即时刷新,`/kila doctor` 检查文档健康 - **按玩家权限动态过滤**:AI 看到的命令列表按当前玩家实际权限过滤,玩家没权限的命令不会出现,AI 只会建议/执行玩家真正能用的命令 - **玩家自定义监听(WatchSkill)**:用一句自然语言设定"自动盯梢",条件满足或事件发生时 AI 主动提醒。取代了本版本移除的旧挂机任务系统,能力更强、更安全: - **条件监听**:盯数值/状态——"帮我盯铁锭到 64 个""血量低于 30% 提醒我"。支持监听内置技能的只读查询(Bukkit 统计、CMI、市场、原版 API),运行时自动识别取值类型 - **事件监听**:盯 11 种高价值游戏事件——熔炉烧好、作物成熟、击杀 BOSS、附近生成实体、玩家死亡、传送、经验升级、切换世界、破坏方块、钓鱼、聊天关键词 - 触发后**只通知 AI,不自动操作**(比旧挂机任务安全);玩家短暂掉线(5 分钟内)重连监听自动恢复 - **可监听边界**:AI 只能基于内置可监听清单创建监听,清单外内容(如需联网的金价/汇率)会直接告知无法监听;AI 误选也会被系统兜底拒绝,不会留下无效监听 - 需 `kilacraft.watch` 权限(默认所有玩家)。每玩家上限:条件监听 3 个 / 事件监听 5 个 / 全服合计 200 个 - **跨玩家上下线订阅(PlayerWatchSkill)**:用自然语言订阅好友的上线/下线通知——"Steve 上线告诉我""Alex 上下线都告诉我"。取代旧挂机任务系统中的同名能力且**更强**:支持同时订阅多个玩家(旧系统一次只能盯一个)、自带防乱序(下线通知取消尚未发出的上线通知)、上线通知延迟 2 秒等玩家完全进服。订阅仅存内存,订阅者下线自动清空。需 `kilacraft.player_watch` 权限(默认所有玩家),每玩家上限 5 个 - **网页抓取(WebFetch)**:丢一个具体网址给 AI,AI 会抓取网页正文、读完、再回答你针对该页面的问题——"帮我看看这个教程网页讲了什么""这个 mod 维基里的合成配方是什么"。与联网搜索互补:搜是给关键词找网页列表,抓是给具体网址读正文。**零配置无需 API Key**,内置企业级安全防护(详见下方"安全加固")。需 `kilacraft.webfetch` 权限(默认所有玩家可用) - **LLM 预算治理**:跨所有 LLM 入口的防失控兜底。按玩家维度统计每小时调用,超阈值(默认 200 次/小时/玩家,`llm.yml` 可调)触发 1 小时熔断。**二元熔断**——玩家主动请求永不熔断,被动调用(问候/推荐/提醒/插件回调)超限时拒绝。正常使用感知不到(200/小时达不到),只在异常工况兜底,**优先保护玩家体验与服主的钱包**。设为 0 或负数完全禁用 - **LLM 缓存命中率统计(`/kila cache`)**:新增命令实时查看大模型提示词缓存命中率,按 10 种 AI 调用类型(意图识别两阶段、二次分析、对话、问候、画像、推荐、工具通知、诊断)逐一展示请求数与命中率。自动兼容 DeepSeek/OpenAI/Anthropic 三家缓存字段,无需配置。游戏内以条形图展示、控制台输出对齐表格。数据仅内存累积,重启清零,`/kila cache reset` 可手动重置。需 `kilacraft.admin.cache` 权限(默认仅 OP) ### 🔧 优化 - **AI 能力边界如实告知(本次重点)**:当玩家请求的操作超出了 AI 的能力范围(例如传送到任意坐标这类不受支持的操作)时,AI 现在会如实说明该操作无法完成,并正常提供能做的部分(如查询到位置并告知坐标)——不会再出现"明明只查到了坐标、却回复已传送"这类虚假成功。无需配置,自动生效 - **知识库功能与可靠性优化(本次重点)**:①知识库目录支持任意子文件夹归类,中英文文件可混放、切换语言不丢文件;②AI 不再拿无关片段"硬凑"答案——没相关内容时正常回答、绝不编造细节(如"服务器凌晨 4 点重启"这类凭空捏造),未配知识库文件的服务器零影响;③换种说法、沾边的问题更容易命中 - **意图识别失败防幻觉(本次重点)**:当技能路径尝试过但失败时(技能名无效、JSON 解析失败、模型调用错误等),系统现会在回退普通对话时注入 `[FAILURE]` 标记,引导 AI 如实告知"技能系统未能处理此请求",而非凭自身知识编造看似合理的回复。闲聊、现实话题等本就非技能的请求不受影响,静默回退普通对话 - **system 系统提示词彻底静态化(本次重点)**:**所有** LLM 调用(普通对话、问候、二次分析等)的 system 提示词不再含任何每玩家占位符(含 `{player}`),改为跨玩家字节一致的纯静态文本;玩家名、画像、离线事件、时间等动态数据**全部移到 user 消息**注入。供应商前缀缓存按"从第 0 字节起连续相同前缀"命中,此前 system 里混入 `{player}` 会让前缀从该处失效——静态化后多玩家场景的缓存命中率显著提升。旧配置残留的 `{player}` 不再替换(留作字面量,仅降命中率不影响功能),问候配置含废弃占位符时启动会 warn 提示迁移 - **缓存命中率与提示词治理全面优化**:围绕"让可缓存前缀更稳定"做了一组配套调整——①散落在各 AI 入口的按玩家动态内容(命令列表、玩家元数据、画像等)统一提取到独立注入槽位;②对话历史由文本块拼接改为标准 `messages` 数组注入,贴合大模型多轮原生格式且缓存边界更清晰;③待确认续体分类的 system 改为纯静态契约、每请求变化的待处理操作描述移入 user 消息;④二次分析的原 `analysis_prompt_suffix` 后缀合并进 `system_prompt`,由单一系统提示词统一承载,减少配置项并避免后缀拼接扰动命中率;⑤全部内置 Skill 提示词重构为结构化三段式(能力摘要 + 触发场景 + 反向边界),意图识别新增相对调整规则与参数缺失处理场景,二次分析新增搜索结果相关性筛选与措辞忠实原则,推荐重构为三层结构 - **配置文件大合并**:原 `greeting.yml` 与新增的推荐、监听、工具通知配置整合为单个 `behavior.yml`(四大段:greeting / suggestion / watch / utility.prompts),单文件双语,`/kila reload` 无缝衔接,减少配置文件数量 - **问候系统重构**:登录问候改为基于离线期间的高光事件(击杀/BOSS 等),用熟络回忆的语气自然提起,不再汇报在线时长、行走距离等统计数据;问候不再写入对话历史,避免影响后续对话;提示词新增事实边界约束,仅依据实际事件陈述、严禁凭画像编造或替他人说话,杜绝"你建过自动农场"这类幻觉 - **Bukkit 查询技能拆分**:原单个通用 Bukkit 查询技能(`apis.yml`)按职责拆分为 5 个独立技能(玩家信息/状态/物品栏/世界/服务器),71 个只读查询能力**完全不变**。每个技能提示词新增反向边界与消歧义提示(如"位置"=脚部坐标 vs "眼部位置"=眼睛坐标),AI 路由更精准 - **服务器健康监控告警阈值优化**:减少误报的防抖优化——MSPT 改为"最大值 + 中位数双重门控"、CPU 改为"连续 3 次超阈值才确认";阈值放宽(MSPT p95 50→100ms、CPU 80%→90%、冷却 5→30 分钟);新增 `mspt_median_threshold`、`cpu_consecutive_threshold` 配置项 - **LLM 模型名与 URL 自动兼容**:自动适配 DeepSeek 旧版模型名(`deepseek-chat`→`deepseek-v4-flash` 等,**仅内存改写、不动配置**),老配置升级后无需手改即可用;对不完整的 API 地址自动补全(如填 `/v1` 自动补 `/chat/completions`)。零配置,对非 DeepSeek 透明无影响 - **对话历史管理增强**:`config.yml` 的 `settings.max_history` 三项改进——①取值钳制到 0-100(防误填超大值 OOM);②内存容量改为与 `max_history` 动态一致(原写死 100 条);③`max_history: 0` 彻底禁用历史(不保存不加载,重连也不读旧记录)。`/kila reload` 即时生效 - **`/kila doctor` 自检增强**:游戏内改为分组折叠摘要(各组显示"X 正常, Y 警告, Z 异常",仅异常项展开),大幅减少健康时的刷屏;控制台新增 Web 搜索供应商等指标;新增命令文档健康检查与 `health_guardian` 检查项 - **当前时间注入 AI 上下文**:AI 现能感知当前精确时间(带时区,精确到分钟),"现在几点""帮我搜今天的新闻"等依赖时间的请求更准确;精确到分钟同时兼顾了缓存命中率的分钟级粒度 - **上下文轮数默认值调优**:意图识别历史 `intent_history_count` 默认 5→7 轮、二次分析历史 `analysis_history_count` 默认 2→3 轮——更长历史让 AI 理解代词指代(如"再查那个物品")更准,对话推荐也不易重复 - **`/kila reload` 增强**:新增重载监听/Web/推荐/问候/工具通知/命令文档配置;预算阈值即时刷新 - **SkillEntityHelper 参数提取工具入 SPI**:新增 `SkillEntityHelper` 静态工具类(`getString`/`getInt`/`getDouble`/`getBoolean` 等零异常、失败返回默认值),消除技能内散落的 `try { parse } catch` 样板。已纳入 SPI 发布包,第三方技能开发者可直接用 - **数据库表名前缀安全校验**:`mysql.table_prefix` 新增字符校验(仅字母/数字/下划线),含非法字符自动回退默认 `kca_` 并报错——前缀直接拼入 SQL,校验防误配或恶意注入 - **API 请求 debug 日志加场景标签**:debug 模式下,LLM 请求日志开头/结尾标注调用场景(如"意图识别 Phase2""二次分析""问候"),便于多入口并发时区分日志归属 - **文档归档**:挂机任务系统移除后,相关文档已归档至 `doc/归档/`;更新意图识别提示词配置指南 - **画像分析触发阈值优化**:`min_messages_to_trigger` 默认 10→20,减少低质量刷屏触发不必要的 LLM 分析;`analysis_timeout_seconds` 代码默认值与配置统一为 120 秒 - **两个既有技能更名**:音效粒子(原 `bukkit_fx`)与原版统计(原 `bukkit_stats`)两个既有技能改名为 `sound_fx`/`player_stats`,名称更简洁、语义更明确,AI 识别技能名的准确率提升(长混合标识符是 AI 拼写错误的高发区);对应权限节点跟随改名(`kilacraft.sound_fx`/`kilacraft.player_stats`,默认全员可用,通常无需处理) ### 🐛 修复 - **安全加固(WebFetch SSRF 防护)**:网页抓取内置三重防护,服主可放心开启:①**内网地址拦截**:默认禁止访问本机/局域网地址(`127.x`/`10.x`/`192.168.x`/`172.16-31.x`);②**防 DNS 重绑定**:把 IP 校验焊进 DNS 解析环节,保证"检查的 IP 就是连接的 IP",消除"先检查后连接"的时间差漏洞;③**强制 HTTPS + 逐跳复检**:防护开启时 `http://` 升级为 `https://`,逐跳处理重定向(最多 3 跳)每跳复检协议与 IP。响应体按字节硬上限读取(防超大网页 OOM),上游错误脱敏(原始错误只进日志) - **实体名国际化与错别字修正**:Minecraft 实体名(苦力怕、僵尸、骷髅、凋灵等 26 种)现已本地化——英文服显示 Creeper/Zombie/Skeleton,中文服显示官方译名;修正历史错别字:"wither" 译名统一为官方"凋灵"(原误"凋零"——凋零是状态效果、凋灵才是 BOSS),"蠹虫"(原误"蠢虫")等一并更正 - **修复英文国际化配置文件的 YAML 语法错误**:`messages_en.yml` 部分译文含嵌套双引号导致 YAML 解析失败,英文服可能无法加载问候/告警文案;已修正 - **Skill 参数描述错误修正**:原 `apis.yml` 中 `get_player_location` 移除不存在的 `yaw`/`pitch` 字段,`get_player_open_inventory` 字段名更正为实际返回的 `raw_result`——原错误字段名可能导致意图识别失败 - **原版 API 执行器无状态化加固**:执行器内部"当前调用玩家"可变字段改为参数全程透传,成为无状态组件(当前为串行调用无实际并发,纯属防御性加固) - **修复 bStats 技能注册表被改名 fork 劫持**:多个服务器上报同名技能时,若首个是改名非官方分支会覆盖官方技能身份信息;现改为官方源始终优先,非官方条目仅贡献服务器计数 - **修复二次分析历史上下文配置失效的回归**:`llm.yml` 的 `agent.analysis_history_count` 在此前某版本意外失效——二次分析传入了完整历史队列绕过轮数限制;现恢复按配置轮数截断,避免 token 浪费 - **修复画像分析触发计数把 AI 回复也算进去**:触发门控 `countMessagesSince` 此前只按 `source` 过滤、不区分角色,导致玩家说一句 + AI 回一句(2 条记录)就算 2 条,阈值实际是"轮数 × 2"而被灌水;现修正为只数 `role='user'` 的玩家发言,口径与"玩家主动发言数"语义一致 - **修复询问类问题被误执行为操作**:玩家询问"怎么做某事"时,AI 此前可能误判为执行请求而真的执行操作;现已严格区分"询问方法"与"请求执行"——询问只会得到解释说明,明确表达执行意图才会执行 - **修复缺参数操作答错**:操作缺少必要信息(如未指定传送目标)时,AI 此前可能答非所问或直接拒绝;现已自动先查询获取所需信息再执行,多步操作自动衔接 ### ⚠️ 兼容性 #### 📋 配置文件变更 插件仅在文件不存在时自动生成,已有文件不会被覆盖。为获得完整的新版本配置优化,**建议将以下所有文件删除后重启重新生成**。首次启动会自动生成新配置文件:`behavior.yml`(替代原 `greeting.yml`,并整合了推荐/监听/工具通知等新功能的配置)、`web.yml`、`commands/` 命令知识库文档及 `skills/` 下各新增技能的配置文件。 以下已有配置文件在本版本有变更: | 文件 | 变更说明 | 操作 | |------|---------|------| | `behavior.yml` | 全新文件替代 `greeting.yml`,整合四大段(greeting/suggestion/watch/utility.prompts);问候提示词重写,system 静态化后多数动态占位符废弃 | ❌ 务必删除 `greeting.yml` 后重新生成 | | `intent_prompts.yml` / `_en.yml` | 提示词重构:新增规则 10/场景 7;afk_task 回调替换为监听路由;移除历史来源标签规则;续体分类静态化 | ❌ 务必删除(否则路由到已删的 afk_task 系统) | | `skills/`(含已移除的 `skills/afktask/`、`skills/guardian/`) | 全部 Skill 提示词重构为三段式;通用 Bukkit 查询拆分为 5 个独立技能配置,旧 `apis.yml` 已删;afktask/guardian 配置随系统移除 | ❌ 删整个 `skills/` 文件夹重新生成 | | `language.yml` / `_en.yml` | 新增 `/kila cache` 文案;`/kila doctor` 改分组折叠格式;新增 `kilacraft.admin.cache` 权限 | 📋 建议删除(否则文案缺占位符/旧格式) | | `admin.yml` | 健康监控阈值调整:新增 `mspt_median_threshold`/`cpu_consecutive_threshold`;多项阈值放宽减少误报 | 📋 建议删除(否则沿用易误报的旧阈值) | | `config.yml` | 移除 `afk_task`/`command_skill` 段;`allowed_actions` 减 `AFKTask` 加 `player_watch`;`max_history` 限 0-100 | 📋 建议删除(残留失效段不影响功能;自定义过 `allowed_actions` 需手动补 `player_watch`) | | `llm.yml` | 新增 `budget_per_player_per_hour`;移除 `analysis_prompt_suffix`(合并进 `system_prompt`);`intent/analysis_history_count` 默认值上调;system 移除 `{player}` | ✅ 可删除(残留 suffix 段被忽略;system 含 `{player}` 降命中率) | | `output.yml` | `afk_callback` 场景并入 `skill_result` | ✅ 可删除(不影响功能) | | `greeting.yml` / `_en.yml` | 已合并进 `behavior.yml` | 🗑️ 直接删除 | > 以上文件除 ❌ 标记外,不删除均可正常运行——插件对新增配置项均有内置默认值兜底。不过要获得完整的新版本配置优化,**仍建议将上述所有文件删除后重启重新生成**。 #### 从 v2.1.3 升级 1. 停服替换 JAR,启动即可;数据库无需迁移 2. **移除挂机任务系统(破坏性变更)**:旧的挂机任务系统(`/kila afk query/cancel`、`afk_task` 配置段、`kilacraft.afk` 权限)已整体移除。其能力被两个新系统**功能替代**: - **玩家自定义监听(WatchSkill)**:玩家用自然语言设定条件/事件监听(盯物品数量、盯 BOSS 刷新等),能力比旧挂机任务更强 - **跨玩家上下线订阅(PlayerWatchSkill)**:订阅好友上下线(替代旧系统的同名能力,支持多目标) - 如有玩家依赖旧的 `/kila afk` 命令,请引导改用监听能力或直接对 AI 说"帮我盯 xxx" 3. **命令执行技能默认开启(行为变更)**:命令执行技能(让 AI 以玩家身份执行服务器命令)现在默认对所有玩家启用。此前需在 `config.yml` 设 `command_skill.enabled: true` 且权限仅 OP,本版本移除了该开关,改由 `kilacraft.command.execute` 权限节点(默认所有玩家)统一控制。**如不希望玩家使用此能力,请用权限插件(如 LuckPerms)回收该权限**。建议服主编辑 `commands/commands.md` 追加本服第三方插件命令,让 AI 认得更多命令 4. **配置文件变更**:原 `greeting.yml` 已合并进新文件 `behavior.yml`(四大段:greeting / suggestion / watch / utility.prompts),采用单文件双语模式。升级时需**删除 `greeting.yml` 和 `greeting_en.yml`**,让插件重新生成 `behavior.yml` 后,再将旧问候配置中的自定义值迁移到 `behavior.yml` 的 `greeting:` 段下(键路径不变,仅文件不同;注意旧占位符 `{last_location}`/`{summary_section}` 已被 `{last_session_highlights}` 取代)。其余三个段(suggestion / watch / utility.prompts)为本版本新增功能的配置,首次启动即自动生成默认值 5. **新增权限节点**: - `kilacraft.watch`(玩家自定义监听) - `kilacraft.player_watch`(跨玩家上下线订阅) - `kilacraft.websearch`(联网搜索,需服主配 API Key) - `kilacraft.webfetch`(网页抓取,零配置) - `kilacraft.command.execute`(命令执行技能,**默认所有玩家**——如需关闭请用权限插件回收) - `kilacraft.admin.cache`(查看 LLM 缓存命中率统计,默认仅 OP) 6. **移除权限节点**:`kilacraft.afk`(挂机任务,已被新系统替代) 7. 本次为大版本功能升级:**联网能力 + 玩家自定义监听 + 对话推荐 + 命令执行技能 + 缓存命中率分析**等新特性,建议服主通读本日志了解新玩法 [/MD]
[MD] ## v2.1.3 - 玩家实时状态感知、问候系统新版本提醒、版本信息查询技能、知识库检索质量提升、AI 调用资源优化与安全稳定性加固 ### ✨ 新增功能 - **项目内置 CLAUDE.md 开发规范**:从 v2.1.3 起,仓库根目录提供 `CLAUDE.md` 文件,面向使用 AI 编程工具进行二次开发的开发者。文件默认适配 Claude Code(每次会话自动加载),详细记录了项目架构、国际化规范、代码约定、关键设计约束与修改触发条件等内容。若使用其他 AI Code 工具(Cline / Cursor / Copilot Chat 等),请将该文件内容按对应工具的全局规则或上下文文件配置方式引入即可 - **AI 实时感知玩家状态**:AI 现在能自动感知玩家此刻的位置坐标、生命与饥饿、手持与身上的装备、所在世界、天气与时间等实时信息,无需玩家反复说明、也无需额外调用技能查询。像"帮我回去""这个能挖钻石吗""附近有沙漠吗"这类依赖当前状态的请求,AI 可直接结合实情给出贴合的回复与建议。该能力对所有玩家默认开启,全自动、零配置、不持久化任何数据 - **AI 登录问候主动提醒新版本**:长时间运行不重启的服务器也能及时获知插件更新。当有 `kilacraft.admin.info` 权限的管理员登录时,AI 会在问候中主动告知是否有新版本可用、指出具体版本号与下载地址。同一版本对同一位管理员只提醒一次,不会反复打扰;网络检测失败静默处理,不影响正常问候 - **版本信息查询技能**:管理员可直接用自然语言向 AI 询问插件版本情况——"有没有新版本""最新版更新了什么""下载地址是什么""v2.1.0 有什么功能"。AI 会从 Gitee/GitHub 实时拉取版本信息回答,包括版本号、发布日期、下载地址和完整更新日志。需要 `kilacraft.admin.info` 权限(默认 OP) ### 🔧 优化 - **知识库检索更精准(本次重点)**:BM25 算法补全了 IDF(逆文档频率)权重——出现在少数文档里的稀有、专业关键词排名更靠前,"玩家""命令"这类到处都有的通用词不再稀释结果。绝大多数服主使用的默认 BM25 模式,召回准确度整体提升 - **热重载知识库更可靠**:切换服务器语言或开关 Embedding 语义检索后,`/kila reload` 会自动重建知识库分块、统计与向量缓存,避免缓存与实际内容对不上导致检索异常或响应变慢 - **AI 调用资源优化**:玩家下线时自动取消其仍在进行的 AI 请求,不再继续空耗 API 额度和服务器线程 - **Embedding 缓存并发优化**:多名玩家同时提问时不再互相串行等待(开启 Embedding 的大服更明显) - **AI 报错提示更精准**:连接报 404 时,现在区分"模型名称有误"和"API 地址有误",避免服主按错方向排查 - **超大服务器安全缓存清理更高效**:近期活跃玩家缓存的清理耗时不再随玩家数增长而明显变慢 - **挂机任务回调更可追溯**:回调因玩家已离线而未能送达时,补充控制台日志记录,方便排查"任务好像没触发" - **command 类技能操作可审计**:以 OP 身份执行的命令类技能(如 `/tpa 目标`)在保留跨玩家操作能力的同时,新增操作审计日志 - **服务器异常告警通知更可靠**:服务器性能异常告警现在会通过登录问候提醒每一位有权限的管理员,而不是只提醒第一个上线的人。同一条告警对同一位管理员只提醒一次,不会重复打扰 ### 🐛 修复 - 修正 `knowledge.yml` 中检索相对阈值(`relative_threshold`)的注释方向——原注释把"调高 = 更严格"误标成了"调高 = 更宽松",可能让服主朝相反方向调参;默认值未变 - 修复二次分析在调用 AI 前的极端异常路径可能导致玩家无响应的隐患(防御性加固) - 修复热重载输出配置时个别回复可能短暂落到错误显示位置的情况 - 加固挂机任务创建的并发安全性 ### ⚠️ 兼容性 #### 从 v2.1.2 升级 1. 停服替换 JAR,启动即可;数据库无需迁移 2. **移除已废弃的控制台 AI 对话入口**:从控制台直接发送 `/kila <消息>` 与 AI 闲聊的功能(早期调试用途,随着 Agent 能力丰富,控制台已无法使用多数技能)已彻底移除。控制台仍保留 `/kila plugins`(第三方插件集成)、`/kila doctor`、`/kila reload`、`/kila knowledge reload` 等管理命令;**玩家侧完全不受影响** 3. 本次为质量优化版本:**无新增配置项、无权限变更、无数据库变更**,现有功能完全兼容 4. 如曾自定义过 `knowledge.yml` 注释,可重新生成以获取修正后的阈值说明(仅注释更正,配置项无新增) [/MD]
[MD] ## v2.1.2 - 新增游戏内查询与诊断命令(usage / history / memory / skills / run / doctor / about)、知识库检索重构与 AI 错误处理优化 ### ✨ 新增功能 - **语料播种词典**:启动时自动扫描知识库中的命令名(如 `/back` → `back`)和复合标识符(如 `mob-farm`、`ender-dragon`),自动加入 HanLP 分词词典。无需手动配置词典,服主写的知识库内容本身就是最好的分词参考 - **知识库编写指南**:官方 Wiki 提供开箱即用的知识库编写模板(中英文),含 7 条编写规则 + 可直接使用的完整样例,按模板填写即可获得最佳召回效果 - **BM25 文档长度自动统计**:启动时自动统计知识库片段的实际平均长度,BM25 算法对长短文档的评分更公平。高级服主可通过 `avg_doc_length` 手动指定固定值(默认 0=自动) - **游戏内查询与诊断命令体系**:新增一组命令,方便服主与玩家掌握 AI 使用情况、排查问题 - `/kila usage [玩家|all] [时间]`:查看 AI 用量统计(对话轮数、技能调用次数与成功率、热门技能、活跃玩家),支持自己 / 指定玩家 / 全服三个维度 - `/kila history [玩家] [页码]`:分页查看对话历史 - `/kila memory [玩家]`:查看玩家画像(登录统计 + AI 分析的八维度画像) - `/kila skills [页码]`:列出当前可用的技能清单 - **强制执行技能**:`/kila run <技能> <提示词>` 跳过意图识别、直接指定技能执行,支持多步骤任务;若无法解析意图会自动降级为普通对话 - **配置自检**:`/kila doctor` 一键诊断 17 项配置(数据库 / LLM 连通 / Spark / 各项 AI 能力开关等),快速定位配置问题,控制台同步输出脱敏的完整配置 - **版本与更新检查**:`/kila about` 查看当前版本、最新版本及下载地址 ### 🔧 优化 - **检索过滤重构(硬阈值 → 软阈值/自适应阈值)**:旧的 `min_relevance_score`(单一硬阈值 30)被替换为两阶段过滤 - **噪声地板(noise_floor)**:硬门槛,低于此值直接丢弃(默认 25) - **相对阈值(relative_threshold)**:软门槛,低于最高分 × 比例才丢弃(默认 0.3) - 最终门槛 = max(噪声地板,最高分 × 相对阈值),数学上保证至少返回 1 条相关结果,不会出现"明明有相关内容却返回空"的情况 - 服主可按喜好调整宽松度:降两个值→更多结果(弱相关问题也能答),升两个值→更严格(答不上就沉默) - **BM25 算法参数优化**: - 分段重叠从 30 调整为 50 字符,长文档分段后上下文更加连贯 - 最小分段从 25 调整为 20 字符,减少短但有用的段落被误丢弃 - 短文档保护机制:少于 50 字符的片段不受长度惩罚(旧版命令类文档因过短得分被严重压低) - **Embedding 启用后改为融合模式**:不再单独使用 Embedding 替换 BM25,而是 BM25 + Embedding 双路并行,通过 RRF(Reciprocal Rank Fusion)按排名融合。两条路都有贡献的片段排前面,只在一路出现的也能参与排序——兼顾了关键词精确匹配和语义理解 - **自定义词典自动与语料联动**:热重载知识库时自动重新扫描语料并重建分词词典,新增的命令名/标识符即时生效 - **项目稳定性增强**:修复了多处极端输入导致的 NPE 崩溃,强化了面向未知用户文档的防御性 - **AI 错误分类化提示(本次重点)**:AI 调用失败时,玩家会看到可定位原因的提示(如「模型名称可能有误,请检查 llm.yml 的 model 配置」「API Key 无效或无访问权限」),原始错误详情同时输出到控制台 WARN,方便服主快速排查。覆盖普通对话、技能、任务、登录问候、挂机通知、全服广播等所有 AI 调用场景 - **AI 超时友好提示**:响应超时显示「AI 响应超时,请稍后重试」,不再向玩家暴露技术异常类名 - **挂机任务回调降级提示**:挂机任务回调配置解析失败时,明确提示任务将以「仅通知」模式运行(回调动作无法执行),并在控制台输出原始内容辅助排查 - **代码规范治理**:统一工具类构造函数风格、清理全限定类名、收敛冗余方法重载(内部优化,无功能影响) - **完整英文支持**:所有命令输出与提示全面支持中英双语,英文环境体验完整 - **帮助菜单按权限显示**:`/kila help` 仅展示当前玩家有权限使用的命令 - **查询命令权限精细化**:查看自己 / 查看他人 / 查看全服 分别独立授权(`kilacraft.query.self`、`kilacraft.usage.other` 等) ### 🐛 修复 - 修复 `BM25Scorer.countOccurrences` / `EmbeddingCache.getVector` / `putVector` / `getNorm` 对 null 输入缺少防御导致 NPE - 修复 AI 调用因配置错误(模型名 / Key / 地址写错、限流、服务端故障等)失败时,玩家一直卡在「正在思考中...」且无任何错误提示的问题 - 修复 AI 错误提示被误写进对话历史、污染后续对话上下文的问题(普通对话、登录问候、插件命令路径) - 修复画像分析在 AI 返回异常结构时写入脏数据、版本号误递增的问题(新增 8 字段白名单 + 长度限制) - 修复技能 / 任务二次分析 AI 失败时偶发的无响应卡死 ### ⚠️ 兼容性 #### 从 v2.1.1 升级 1. 停服替换 JAR,启动即可 2. **推荐操作**(获取完整的检索优化效果):删除 `knowledge.yml` 后重启服务器,让插件重新生成包含新配置项的最新版本,再按需修改 3. 不删除 `knowledge.yml` 也可运行:旧版中的 `min_relevance_score` 会被忽略(新版本不再使用),检索过滤自动使用默认的软阈值(noise_floor=25,relative_threshold=0.3) 4. 如果之前手动在 `custom_dictionary.words` 中维护了命令名/标识符等专有词汇,升级后可考虑精简——新增的语料播种词典会自动从知识库内容中提取这些词 5. **建议删除语言配置文件**(`language.yml` / `language_en.yml`):本次重构了帮助菜单格式并新增大量命令文案,保留旧文件会导致新命令提示缺失、帮助菜单格式陈旧;删除后重启会自动重新生成最新版本,再按需修改自定义文案 6. **使用英文(en)模式的服主建议删除 `i18n/messages_en.yml`**:本次将命令的玩家可见文案迁移至 `language.yml` 体系,`messages_en.yml` 中已清理对应的旧键,删除后重启可避免残留冗余 [/MD]
[MD] ## v2.1.1 - 两阶段意图识别架构、Skill SPI 结构化响应(needInfo 二次确认)、提示词体系重构、LLM 思考模式治理 ### ✨ 新增功能 - **两阶段意图识别架构(本次核心)**:将原本「单次全量技能清单送 LLM」拆为两阶段,显著降低 Token 消耗 - **Phase 1(粗选)**:仅发送每个技能的一行 `name + description`,LLM 判断需要哪些技能类别;纯闲聊直接返回 `null`,跳过 Phase 2 走普通 AI 对话 - **Phase 2(精选)**:仅对 Phase 1 命中的技能发送全量信息(actions + hints),完成动作选择与参数提取;并对 `skill_name` 做白名单校验,无效名称拒绝执行 - **量化收益**: - **改造前基线**(单阶段,每次识别):主规则段 ~2.6 万 + 全部技能全量 ~8 万(含 BukkitAPI 77 动作 ~3.8 万)≈ **10.6 万字符** - **纯闲聊**:仅 Phase 1 判定(返回 `null`,不发 Phase 2)≈ **0.8 万字符**,较基线 **↓ ~92%** - **普通技能**(命中 1 个内置技能,取全量中位数 ~3.1 千字符):Phase 1 + Phase 2 ≈ **3.8 万字符**,**↓ ~65%** - **复杂技能**(命中含 BukkitAPI 77 动作):Phase 1 + Phase 2 ≈ **7.3 万字符**,**↓ ~32%** - token 换算(中文混合内容 ~0.6 token/字符):基线 ≈ 64K → 三场景 ≈ 4.8K / 22.6K / 43.5K - 响应速度:两阶段增加一次极轻量的 Phase 1 调用,但每次识别不再携带全量技能清单,净延迟取决于模型与网络 - **Skill SPI 结构化响应与待确认续体机制(needInfo 二次确认/补参)**: - **三种结果状态**:`SkillResult` 新增类型化 `SkillStatus` 枚举(SUCCESS/FAILURE/NEED_INFO)+ `getStatus()`;归一化层 `SkillResultFormatter` 统一打 `[STATUS]` 标记,Skill 写裸文本即可 - **needInfo 续体**:Skill 用 `needInfo(message)` 暂停(缺参数引导补充 / 高风险需确认),**框架自动快照参数、在玩家下轮回复后恢复执行**——参数不再经 LLM 聊天往返,杜绝金额/占位符被 LLM 文本污染导致的解析失败。玩家"确认/取消/直接给新值"即完成,无需重复描述意图 - **确认信号标准化**:确认位改为 `context.isConfirmed()`(框架统一管理),不再使用自定义 `confirmed` 实体参数 - **关键词短路**:明显的"确认/取消/yes/no"等中英确认词直接判定(免 LLM 调用),仅歧义/补值回复走 LLM 分类 - **漂移恢复**:确认转账后若余额因期间变动不足,不会静默报错——改为重新引导玩家给出新金额 - **NEED_INFO 统计单列**:多步骤结果统计不再把 NEED_INFO 计入"失败",单列为"需确认" - **转账金额容错**:自动剥离金额前导 `$`(避免 LLM 带着 $ 转发金额导致解析失败) - **意图识别提示词体系重构**(中英文同步):新增「三条不可违反」最高优先级规则(不确定时默认走多步骤);单意图/多步骤决策重构为三条件判定(必需参数由用户提供 + 单动作可完成 + 不依赖其他动作返回值);算术占位符统一支持 `amount`/`quantity`/`price`/`threshold`;参数缺失强制「先查后操作」(严禁必需参数为 null);Phase 1 粗选定位强化(宁多勿漏) - **LLM 思考模式治理**:普通对话路径对默认开启思考的模型(MiMo、DeepSeek V4+、GLM 4.5+、Kimi K2+、Qwen3、Grok 4、Doubao thinking、MiniMax-M3 等)自动关闭思考;admin 推理路径按模型族注入启用参数;适配 OpenAI o-series / Doubao thinking 的 `max_completion_tokens`。解决思考 token 与输出 token 共享 `max_tokens` 预算导致 MC 场景(配额较小)实际输出为空 - **占位符算术求值工具(ArithmeticUtil)**:求值逻辑抽离为公共工具类,应用范围从多步骤任务标量参数(amount/quantity/price)扩展至 CUSTOM 任务 `threshold`,支持「比当前血量少 5」等相对阈值(`{step_0.health}-5`)。仅单次二元运算(+ - * /),纯正则无注入风险 - **JSON 自动修复工具(JsonSafeGetUtil)**:三阶段修复(过滤多余闭合 → 补全缺失闭合 → 移除尾部逗号),交叉嵌套时放弃修复,统一替换多处重复实现 - **启动时版本更新检测**:异步检查 GitHub 最新版本,有新版时控制台彩色框线提示,静默失败 ### 🔧 优化 - **诊断模型回退机制**:`admin.yml` 未配置推理模型时自动回退使用 `llm.yml` 基础对话模型(仅复用 url/key/model,max_tokens/timeout 仍用诊断专用值避免报告截断),降低健康监控使用门槛 - **健康监控不可用分层诊断**:逐一检查前置条件(模型 / 守护开关 / Spark 安装),给出精准提示;诊断报告头部新增「诊断模型」行标注实际生成模型 - **DB 历史加载条数调优**:`loadFromDB` limit 由 `maxHistory×2` 调整为 `maxHistory`(默认 20),减少冗余加载 - **挂机任务字符串条件值展示优化**:`EvaluationResult` 新增 `actualValueStr`,字符串条件(如方块类型)显示真实值而非 0/1 占位 - **LLM 空响应友好提示**:流式响应为空时向玩家返回「AI 暂时无法回复」,不再收到空消息(同时记录 SSE chunk 数与最近原始数据辅助排查) - **JSON 场景禁用 `max_tokens`**:意图识别、画像分析等场景不再设 `max_tokens`,避免复杂 JSON 被截断;GenericBukkitAPI 描述增强提升 Phase 1 分类准确率 - **并发与线程安全**:`ConversationManager` 历史队列升级为 `ConcurrentLinkedDeque` + 自动 trim(MAX_HISTORY_SIZE=100);`AFKTaskManager` 原子注册防超限;`ProfileManager.flushAllProfiles` 单连接批量更新防级联失败 - **代码精简与可观测性**:LLMProvider 接口精简、ThinkingModelCapable 升级为功能接口;SkillIntentRecognizer 异常分层捕获补完整堆栈;GreetingPromptBuilder 事件摘要合并消除 ~140 行重复;历史记录访问统一;清理冗余 i18n 包裹与翻译死键 - **配置热重载硬化**:`PersonalitiesConfigManager` 改为快照替换模式,`LLMConfigManager` 全字段 volatile - **Embedding 检索优化**:chunk 向量范数预计算缓存,余弦相似度运算量降低 2/3 - **`reconcileOnlineProfiles` 单连接批量**:与 `flushAllProfiles` 模式对齐 - **画像分析提示词时效性优化(中英文同步)**:不再提炼余额、坐标、库存数等易过期的瞬时数据,只保留长期稳定的特征,避免画像残留过期错误信息;已有画像会在下次分析时自动清理 - **内置 Skill 全量迁移到结构化输出**:MarketActionSkill / CMISkill / MarketQuerySkill / CommandSkill 剥离手写的 `[FAILURE]`/`[NEED_INFO]` 前缀(约 80 处),统一由框架归一化层打标;`TaskExecutor` 多步骤内部跳过状态改为类型化枚举,移除旧的中文前缀嗅探(消除英文环境下分类失配的潜在 bug) - **二次确认与提示词治理(中英文同步)**:意图识别提示词规则 8 重构为框架续体描述(不再要求 LLM 从历史读值重建参数)、新增 `pending_resume.classify_prompt` 分类引导;`llm.yml` 系统提示词统一说明 marker 语义并补充"需确认"统计语义;`MarketActionSkill.yml`/_en.yml transfer_money 移除 `confirmed` 参数、新增 market_query 不可用时的回退策略;`messages_en.yml` 新增 ~20 条续体相关翻译键、剥离嵌在 key/value 里的标记前缀并修复重复 key;`Skill-SPI-接入文档.md`(zh+en)全面重写 ### 🐛 修复 - 修复 `BM25Scorer.countOccurrences` 空关键词死循环导致 `mvn test` 永久卡死 - 修复 `KnowledgeRetriever.splitByFixedSize` 内容长度恰好等于 MAX_CHUNK_SIZE 时重叠回退逻辑凭空多切一段 - 修复 `ConversationPersistenceService.mergeLoadedHistory` 在 `loadedHistory` 与 `playerHistory` 为同一对象时 `clear()` 清空自身导致历史丢失 - 修复思考 / 推理模型用于普通对话时实际输出为空(思考模式治理已覆盖) - 修复画像分析 JSON 解析偶发失败、CUSTOM 任务 `condition_plan` 空值 NPE、关服 `flushAllProfiles` 连接异常级联失败、`ConversationManager` 非线程安全 `ArrayDeque` 并发数据丢失 - **安全与稳定性加固**:修复多项稳定性与安全边界问题;新增近期活跃玩家缓存强化数据隔离 ### ⚠️ 兼容性 #### 从 v2.1.0 升级 1. 停服替换 JAR,启动即可 2. **必须移除 `intent_prompts.yml` / `intent_prompts_en.yml`**:本次两阶段架构 + 提示词体系重构 + 规则 8 续体化 + 新增 `pending_resume.classify_prompt` 对该文件结构改动较大(新增 `phase1` 段、全量重写为 9 段、新增「三条不可违反」等规则)。旧版文件的内容会覆盖代码内置的新版默认值,导致两阶段架构与本次提示词重构**无法生效**——**务必删除后重启,由插件重新生成** 3. **推荐**(获取完整优化效果):以下配置文件建议删除后重启重新生成(不删可运行,仅缺少部分优化): - `skills/afktask/AFKTaskSkill.yml` / `AFKTaskSkill_en.yml`、`skills/bukkit/apis.yml` / `apis_en.yml` - `skills/globalmarketplus/MarketActionSkill.yml` / `MarketActionSkill_en.yml`(**transfer_money 描述更新**:移除 `confirmed` 参数、新增 market_query 不可用时的回退策略;不删仍可用,但部分转账场景可能走回退路径) - `llm.yml`(思考模式治理说明 + 默认模型更新 + **技能结果 marker 语义统一说明**:新增 `[SUCCESS]/[FAILURE]/[NEED_INFO]/[SKIPPED]` 四类标记的回退处理与多步骤失败语义,旧版会覆盖新版)/ `admin.yml`(诊断模型回退说明) - `config.yml`(新增 `security.player_isolation.offline_cache` 段;新增 `pending_resume` 段——待确认续体配置:enabled/ttl_seconds/max_rounds,均有默认值兜底) - `database.yml`(新增 `h2.tcp` 段,H2 TCP Server 访问控制;画像分析提示词时效性优化,旧配置会覆盖内置新版,需更新或删除重新生成) 4. 除第 2 点的 `intent_prompts.yml` 外,其余配置项均有代码级默认值兜底,**不删除也能正常运行** 5. **诊断功能门槛降低**:未配置 `admin.yml` 推理模型时健康监控自动回退 `llm.yml`,无需额外配置即可使用(诊断配额仍由 `admin.yml` 控制,不与普通对话冲突) 6. **Skill SPI 完全向后兼容**:`SkillResult` 改动为**纯加法**(`success`/`failure`/公开构造器签名一字未变),已编译的旧第三方 Jar **无需重新编译、无需改动**即可运行——运行时由服务器新版 `SkillResult` 提供并自动填充 `status`(SPI Jar 仅用于编译期,不打包进第三方插件)。旧 Skill 无需任何改动;如需使用 `needInfo` 等新能力,以 2.1.1+ 的 SPI Jar 重新编译即可 [/MD]
[MD] ## v2.1.0 - 服主管理功能(服务器健康监控、玩家行为分析、审计日志查询)、代码包架构重组 ### ✨ 新增功能 - **服务器健康监控系统**:AI 驱动的智能服务器监控与诊断系统,解决服务器卡顿难定位、性能问题排查耗时的问题 - **零配置自动监控**:守护线程 24/7 后台运行,每 10 秒检测 TPS、MSPT、CPU 等指标,异常自动触发诊断 - **AI 智能诊断**:使用推理模型(如 DeepSeek R1)进行深度性能分析,自动生成 Markdown 诊断报告,精准定位性能瓶颈 - **服务器活动指标采集**:采样窗口内采集各世界区块加载变化和玩家分布数据,弥补 Profiler 无法捕获非 CPU 活动(I/O、磁盘、网络)的数据盲区 - **方法级热点定位**:基于 Spark Profiler 的调用栈分析,精确到代码层面,识别具体插件的性能影响。auto 模式采用全时段采样,与 manual 模式保持一致 - **手动精准分析**:支持 `/kilacraft profile start [时长]` 命令,服主可按需分析特定时段,解决间歇性性能问题 - **智能防抖机制**:告警冷却、滑动窗口频率限制,避免资源耗尽,确保系统稳定 - **外部通知推送**:自动触发诊断分析完成后,可向 Discord 或钉钉群机器人推送告警通知,服主不在线也能第一时间获悉服务器状况。Discord 支持 Embed 卡片消息,钉钉支持 Markdown 文本 + 可选 HMAC-SHA256 签名安全加固。推送内容仅包含告警原因、实时快照指标和 AI 诊断结论摘要,不含完整诊断报告附件,避免敏感信息泄露 - **独立配置管理**:新增 `admin.yml` 配置文件,集中管理监控阈值、推理模型、外部通知渠道、诊断提示词等 - **服务器健康告警查询(ServerHealthSkill)**:通过自然语言查询历史健康告警记录 - **玩家行为分析(PlayerAnalysisSkill)**:在线人数趋势、活跃玩家排行、新玩家流入、画像分析覆盖率、社交图谱洞察、指定玩家社交关系查询 - **审计日志查询(AuditLogSkill)**:查看 AI 技能执行记录、使用统计、失败日志 - 新增管理员权限节点:`kilacraft.admin.health`、`kilacraft.admin.player`、`kilacraft.admin.audit`(默认仅 OP) - 新增 Spark 插件作为软依赖,无 Spark 时管理功能自动禁用,不影响其他功能。Paper 1.21+/Folia/Purpur/Leaf/Pufferfish 等服务端已内置 Spark,无需额外安装 - 新增 `/kilacraft notify test` 命令,可测试 Discord/钉钉通知渠道配置是否正确 - 新增诊断报告文件输出(Markdown 格式,自动保存到 `plugins/Kilacraft-AI/reports/`) ### 🔧 优化 - **画像分析提示词时效性优化**:首次分析排除临时性瞬时状态,增量分析主动清理已过时的临时性内容,避免短生命周期事务在多个版本中残留 - **自监控文本逻辑复用**:`DiagnosticReportGenerator.appendSelfMonitoring()` 提取为公共静态方法,`ServerHealthGuardian` 委托调用,消除重复代码 - **Admin Skill 查询输出全面格式化**:所有服主管理 Skill(PlayerAnalysisSkill 6 个 action、AuditLogSkill 3 个 action)的 message 输出全面优化——时间戳可读化(epoch→yyyy-MM-dd HH:mm)、UUID→玩家名反查(在线缓存 + 库查询二级策略)、事件类型翻译(PLAYER_LOGIN→登录)、关系强度等级化(数值→陌生/点头之交/普通朋友/好友/密友),提升 AI 二次分析的输入可读性 - **AI 提示词语气统一**:普通对话和二次分析的提示词统一为简洁平实风格,与问候系统保持一致。移除“热情有趣/像朋友聊天”等措辞,同步更新配置文件和代码硬编码默认值 - **MySQL 连接失败自动回退 H2**:启动和热重载时 MySQL 不可用自动回退到 H2 内置数据库,确保持久化功能正常可用 - **审计日志查询支持查询其他玩家**:`audit_log.query_logs` 加入安全白名单,管理员可查询指定玩家的技能使用记录 - **热重载数据库切换资源释放顺序优化**:调整为先关闭旧 Provider 再创建新 Provider,避免 H2 TCP 端口冲突 - **热重载 DAO tablePrefix 刷新一致性**:所有持有 DAO 的模块在热重载时重建 DAO 以反映最新的表前缀 - **AI问候系统提示词与注入内容全面优化**:健康告警三层结构化输出(异常指标/涉及插件/热点方法+触发路径)、注入内容视角修正(AI视角用玩家名而非"你")、上次位置世界名前缀、提示词规则全面强化(规则3里程碑泛化与防模糊描述)及国际化全链路审计治理 ### 🐛 修复 - **修复热重载切换数据库后玩家画像版本号重置(V8→V1)**:`reconcileOnlineProfiles()` 未从新数据库重新加载画像到内存缓存,导致运行时状态覆盖新库的历史画像数据 - **修复 `databaseManager` 未初始化时 `initializeAdminSystem` / `syncGuardianState` 的 NPE** ### ⚠️ 兼容性 #### 从 v2.0.2 升级 1. 停服替换 JAR,启动即可,数据库无需迁移 2. 首次启动自动生成 `admin.yml` 配置文件 3. 如需使用服务器健康监控功能,需安装 Spark 插件并在 `admin.yml` 中配置推理模型 API 密钥 4. 服主管理功能默认仅 OP 可用,无需额外配置权限 5. **`database.yml` 画像分析提示词已更新**(新增第 5 条时效性规则),如需获取完整的提示词优化效果: - 备份当前 `database.yml` 中自定义的配置项 - 删除 `database.yml` 后重启服务器,让插件重新生成最新版本 - 将备份的自定义配置项手动覆盖回新配置文件 6. **`greeting.yml` 问候提示词已优化**(提示词规则全面强化、注入内容视角修正、健康告警结构化),如需获取完整的优化效果: - 备份当前 `greeting.yml`(及 `greeting_en.yml`,如使用英文模式)中自定义的配置项 - 删除 `greeting.yml`(及 `greeting_en.yml`)后重启服务器,让插件重新生成最新版本 - 将备份的自定义配置项手动覆盖回新配置文件 #### 新增权限节点 - `kilacraft.admin.health`(服务器健康管理,默认 OP) - `kilacraft.admin.player`(玩家行为分析,默认 OP) - `kilacraft.admin.audit`(审计日志查询,默认 OP) - `kilacraft.admin.*`(全部管理功能,默认 OP) [/MD]
[MD] ## v2.0.2 - 群组服数据隔离、Skill权限预检、增量画像分析、画像历史快照、占位符算术、JSON自动修复 ### ✨ 新增功能 - **增量画像分析**:画像分析从"每次全新生成"升级为"旧画像 + 新对话融合更新",玩家长期积累的特征不会被短期波动覆盖 - 提示词支持中英文双语配置(首次分析 / 增量分析分开配置),支持热重载 - **画像历史快照**:新增 `kca_profile_snapshot` 表,每次分析自动保存画像快照,支持追溯任意版本的画像内容与分析时间范围,永久保留 - **群组服数据隔离**:支持 BungeeCord/Velocity 跨子服数据共享与隔离 - `database.yml` 新增 `group.server_id` 配置,需删除旧配置文件重新生成 - 对话历史、服务器事件、技能审计日志按 `server_id` 隔离;玩家画像与社交关系天然跨服共享(无 `server_id` 字段,不可配置) - Schema 升级至 v2,自动创建 `server_id` 索引(兼容 H2 / MySQL) - 支持群组服配置热重载 - **Skill 权限预检过滤**:意图识别阶段按玩家权限动态过滤可用技能,无权限技能不进入 LLM 候选列表 - `Skill` 接口新增 `getRequiredPermission()`,所有内置 Skill 实现权限声明 - `PluginPermissionEnum` 新增 8 个 Skill 级权限枚举 - **占位符算术表达式**:多步骤任务支持 `{step_x.field + 10}` 等四则运算 - **LLM JSON 自动修复**:挂机任务回调自动补全缺失的闭合花括号 ### 🐛 修复 - 修复 API_KEY 未配置时提示指向错误配置文件(`config.yml` → `llm.yml`) - 修复 `getBoolean()` 解析 `"shared"`/`"isolated"` 字符串值静默返回默认值(Critical) - 修复 `DatabaseManager.reload()` 热重载不更新 `currentConfig` - 修复附魔金苹果事件名称超长 BUG - 使用派生表语法修复清理过期对话记录、清理过期事件记录、清理过期审计记录的 SQL 语法不兼容 BUG - 修复 `ProfileManager` 热重载时不重建 DAO 导致 `table_prefix` 变更不生效 - 修复 `update()` 全字段回写覆盖画像分析字段:`profile_data` / `profile_analyzed_at` 改为由 `updateProfileData()` 独占写入,运行时状态更新不再覆盖 AI 分析结果 - 修复 `/ai clear` 后下次对话仍从 DB 加载旧历史:引入一次性 `cleared` 标记,阻止 `loadHistoryIfNeeded` 从 DB 加载 - 修复 AI 问候写入内存历史后 `loadHistoryIfNeeded` 误判为已有数据跳过 DB 加载:判空逻辑排除仅含 assistant 消息的历史 - 修复 AI 请求报错被静默吞掉,异常信息未输出到控制台 - 统一 AI 调用超时时间,修复玩家画像分析超时设置与其他 AI 调用不一致 ### 🔧 优化 - 分布式定时任务竞态安全:水位标记 + `SELECT FOR UPDATE` 行锁实现分布式互斥 - `database.yml` 群组服配置段上移 + 注释风格统一 - 移除 `DataCleanupService.serverId` 死代码 - 优化关键字段长度说明注释 - 移除社交关系交互类型枚举的无效参数 - ConditionPlan 操作符描述迁移至 `I18nService.tr()` 体系 - 玩家画像注入扩展至所有面向玩家的 LLM 输出路径(二次分析、阶段性通知、全服广播),统一使用 `ProfileManager.injectProfileSummary()` 公共方法 - 玩家画像维度从 5 维扩展为 8 维(新增 interests/boundaries/communication/spatial/facts),引导语改为"参考上下文"避免干扰 AI 对话判断,增量分析自动迁移旧字段 - 增量画像分析注入旧画像时过滤 `version`/`analyzed_at` 元数据字段,避免 LLM 误判 - SPI 接入文档、数据库配置指南、玩家画像与社交关系系统详解中英文同步更新(修正表结构字段与实际 DDL 不一致、补充增量分析工作流与快照机制) - 意图识别提示词全局优化:强化技能语义匹配标准,明确"技能获取的数据可能有助于回答"≠"技能匹配用户意图",约束问题拆解必须基于用户明确表述的信息需求 - BukkitStatsSkill 提示词收窄:限定仅支持 Minecraft 原版统计项,禁止猜测或编造枚举名 - CommandSkill 提示词优化:明确区分"可执行操作"与"信息咨询"的匹配边界,删除不适合生存玩家的示例 - LLM 二次分析提示词增强边界限制,减少幻觉和不合理推断 - 第三方 Skill 注册新增兼容性预检机制,注册失败不影响主流程 ### ⚠️ 兼容性 #### 从 v2.0.1 升级 1. 停服替换 JAR,启动即可(默认单服模式,无需修改配置) 2. 数据库 Schema 自动升级至 v2(新增 `profile_snapshot` 表 + 3 个 `server_id` 索引),无需手动迁移 3. 所有新增配置项均有代码级默认值兜底,**即使不删除任何配置文件也能正常运行** 4. **推荐操作**(获取完整的 v2.0.2 提示词优化效果):删除以下配置文件后重启服务器,让插件重新生成最新版本: - `intent_prompts.yml` / `intent_prompts_en.yml`(意图识别提示词强化了语义匹配标准) - `skills/bukkit/BukkitStatsSkill.yml` / `BukkitStatsSkill_en.yml`(收窄了统计查询匹配范围) - `skills/command/CommandSkill.yml` / `CommandSkill_en.yml`(优化了命令匹配边界) - `llm.yml`(强化了禁止暴露统计信息的提示词,旧版已有类似规则但措辞较弱,可不删) - `database.yml`(新增群组服配置段 + 增量画像提示词 + 画像维度升级至 8 维 + 画像超时调整,可手动添加或删掉重新生成) 5. 如需群组服模式,在 `database.yml` 中添加 `group.server_id` 配置(单机服留空即可) 6. v2.0.2 新增 `profile.incremental_system_prompt` / `incremental_system_prompt_en` 配置项(已有画像时的增量分析提示词),留空使用内置默认值 #### 从 v2.0.0 升级 1. 先按上方「从 v2.0.1 升级」步骤操作 2. v2.0.1 新增了画像分析提示词配置化(`database.yml` 中 `profile.analysis_system_prompt` 等),如需自定义提示词请删除 `database.yml` 重新生成 3. v2.0.1 如果使用英文模式(`language: en`),首次启动会自动生成 `greeting_en.yml` 英文问候配置文件 #### 从 v2.0.0 之前的版本升级 1. **必须先阅读 v2.0.0 兼容性说明**,该版本引入了数据库持久化、配置架构重构等重大变更 2. 升级步骤: - **停服备份** `plugins/Kilacraft-AI/` 整个目录 - 替换 `Kilacraft-AI.jar` 为新版本 - **首次启动**时插件会自动创建新的配置文件和数据库表(Schema 自动升级至 v2),旧配置文件不会被删除 - 根据日志提示,对照新配置文件模板手动迁移旧 `config.yml` 中的自定义配置(`llm:` → `llm.yml`、`agent:` → `llm.yml`、`output:` → `output.yml`、`knowledge:` → `knowledge.yml`) - 如使用 MySQL,需提前创建数据库并配置 `database.yml` - **强烈建议**删除 `intent_prompts.yml` / `intent_prompts_en.yml`、`skills/` 目录下的 Skill 配置文件,让插件重新生成最新版本 3. 旧版本(<2.0.0)的对话历史保存在内存中,不存在历史数据迁移问题,升级后数据从零开始积累 #### 新增权限节点 - `kilacraft.afk.task` / `kilacraft.bukkit_fx` / `kilacraft.bukkit_stats` / `kilacraft.bukkit_api`(默认 true) - `kilacraft.cmi` / `kilacraft.command.execute` / `kilacraft.market.action`(默认 OP) - `kilacraft.market.query` / `kilacraft.utility`(默认 true) #### 版本推荐 > v2.0.2 以前的版本(含 v1.x 全系列)不再提供直接下载入口。推荐所有用户升级到 v2.0.2,以获得更好的系统稳定性、安全性以及更低的 Token 消耗。 [/MD]
[MD] ## v2.0.1 - AI 问候增强、稀有事件采集、全球市场查询扩展、提示词治理与国际化全面升级 ### ✨ 新增功能 - **AI 回归问候增强** - 新增 Bukkit 原版统计数据采集(32 项),覆盖基础/战斗、稀有 BOSS、探索/距离、生活/趣味四大类 - 问候数据维度扩展:在线/离线好友状态(含世界名和下线时间)、上次会话时长、全服事件热度、好友登录频次 - 好友动态新增 PVP 死亡视角(PLAYER_PVP_DEATH);离线事件描述增强(死亡分组、成就逐条、金钱汇总、重复计数) - 问候提示词要求从 8 条细化为 12 条,明确玩家数据整数里程碑触发条件 - **服务器事件采集补充**:新增 4 种稀有事件(远古残骸、驯服动物、合成附魔金苹果、召唤凋零)+ PVP 击杀双向记录 - **全球市场查询新增 `query_seller_items` Action**:按卖家名称查询在售商品,底层调用 GMP 专用 API,已加入安全隔离白名单 - **AI 全局语言约束**:在所有 LLM 调用中自动注入语言约束指令,防止第三方 SPI Skill 返回的多语言数据干扰 AI 输出语言一致性 - **画像分析提示词配置化**:画像分析系统提示词从硬编码迁移至 `database.yml` 配置文件,支持中英文双语,支持热重载(`/kilacraft reload` 即时生效) ### 🐛 修复 - **修复全球市场交易金额记录为 -1.0**:`TransactionEvent.getPrice()` 返回默认值,改用 `TransactionResultEvent` 获取真实交易数据 - **修复玩家升级信息格式倒序**:事件按 `created_at DESC` 排序,原代码取反导致“从 13 级升到了 1 级” - **修复 Bukkit 统计伤害单位显示错误**:半心→颗心(数值除以 2) - **修复 Embedding 初始化状态异常**:配置完整但 `available` 未设为 `true`,导致 Embedding 语义检索始终降级到 BM25 - **修复 Embedding 热重载关闭开关不生效**:热重载将 `enabled` 设为 `false` 时,`KnowledgeRetriever` 未收到关闭信号,仍使用 Embedding 检索 - **修复英文模式下启动连带创建中文 greeting.yml**:构造函数无条件释放中文配置文件,改为按语言延迟释放 - **修复热重载后幽灵补录已下线玩家画像**:`reconcileOnlineProfiles()` 仅检查内存缓存,未验证玩家是否真正在线,导致已下线玩家的过期画像被错误补录 ### 🔧 优化 - **全球市场 Skill 提示词治理**:转账 action 新增公式禁令;修正幽灵引用 `bukkit_api.get_player_balance` → `market_query.query_balance`;hints 新增余额实时查询强制规则 - **全局意图识别提示词优化**:`continuous_conversation` 规则 4 新增余额绝对禁令子规则 - **问候格式优化**:会话时长/下线时间自动换算为可读格式;死亡消息需翻译为中文;单位换算规则(分钟→小时、格→米、半心→颗心) - **问候系统提示词多语言化**:问候系统默认提示词从硬编码迁移为动态获取,按当前语言返回对应默认值;配置加载逻辑改为按语言延迟释放配置文件 - **离线数据聚合架构升级**:`OfflineEventAggregator` 扩展为多维度聚合;`ServerEventDao` 新增 3 个查询方法;`PlayerProfileDao` 新增批量离线好友查询;`FriendStatus` 扩展为含世界名和会话时长的 record - **国际化(i18n)全面升级**:全项目中文硬编码统一迁移至 `I18nService.tr()` + `messages_en.yml` 翻译体系,覆盖面扩展至:问候提示词构建器(265+ 行改造)、7 种挂机任务实现类、全部 5 个定时任务执行逻辑、DatabaseManager、KilacraftAI、KnowledgeRetriever、ProfileAnalysisService、ProfileManager、TaskScheduler、SkillResult、CommandSkill 等;PluginLogger 异常重载兼容性加固;事件计数、时间格式等拼接模式合并为完整模板;独立英文配置文件(greeting_en.yml 等)移除中文源文件中的冗余英文注释 ### ⚠️ 兼容性 #### 从 v2.0.0 升级 1. **停服替换** `Kilacraft-AI.jar` 为新版本 2. **启动服务器**即可,所有新增配置项均有默认值,插件自动使用内置默认提示词 3. 如需自定义画像分析提示词,需备份当前 `database.yml` 后删除该文件,重启服务器让插件重新生成包含完整默认模板的新配置文件,再按需修改 4. 如果使用英文模式(`language: en`),首次启动会自动生成 `greeting_en.yml` 英文问候配置文件 5. 数据库 Schema 无变更(版本仍为 v1),**无需数据库迁移** #### 从 v2.0.0 之前的版本升级 1. **必须先阅读 v2.0.0 更新日志**,该版本引入了数据库持久化、配置架构重构等重大变更 2. v2.0.0 起引入了独立的配置文件体系(`database.yml`、`llm.yml`、`greeting.yml` 等),旧的 `config.yml` 中的部分配置已迁移 3. 升级步骤: - **停服备份** `plugins/Kilacraft-AI/` 整个目录 - 替换 `Kilacraft-AI.jar` 为新版本 - **首次启动**时插件会自动创建新的配置文件和数据库表(Schema v1),旧配置文件不会被删除 - 根据日志提示,对照新配置文件模板手动迁移旧 `config.yml` 中的自定义配置 - 如使用 MySQL,需提前创建数据库并配置 `database.yml` 4. 旧版本(<2.0.0)的对话历史保存在内存中,不存在历史数据迁移问题,升级后数据从零开始积累 [/MD]
[MD] ## v2.0.0 - 数据库持久化与对话历史保存、玩家画像与社交关系、AI 登录问候、配置架构重构、8 种新挂机任务、全球市场操作技能、通用工具技能、Embedding 语义检索、挂机任务智能回调 ### ✨ 新增功能 - **8 种全新挂机任务类型**:挂机任务从 12 种扩展至 20 种,覆盖更多游戏场景 - **监视玩家钓鱼**:监视自己的钓鱼活动,钓到鱼时自动通知或触发后续动作 - 示例:“钓到鱼了告诉我并查市场价格” - **监视玩家聊天**:监视自己发送的聊天消息,可用于暗号触发自动化流程 - 示例:“我说'开始刷怪'的时候帮我执行刷怪塔开关命令” - **监视方块破坏**:监视自己破坏方块,挖到指定矿物时触发后续动作 - 示例:“我挖到钻石了告诉我背包里有多少钻石” - **监视实体死亡**:监视附近的实体死亡,可用于 BOSS 击杀检测 - 示例:“凋灵死了告诉我” - **监视实体生成**:监视附近的实体生成,可用于刷怪塔效率监控 - 示例:“刷怪塔生成僵尸村民了告诉我” - **监视实体爆炸**:监视附近的爆炸事件,可用于防炸服预警 - 示例:“有爆炸的时候告诉我坐标” - **监视熔炉烧炼**:监视熔炉烧炼完成,当炉内物品全部烧完时通知 - 示例:“熔炉烧完了告诉我” - **监视作物生长**:监视作物成熟,可用于自动化农场管理 - 示例:“小麦熟了告诉我并查市场价格” - 所有新任务类型均支持纯通知和回调双模式 - **全球市场操作技能(MarketActionSkill)**:全新技能,支持 AI 代玩家执行全球市场交易操作 - 独立于原有的 MarketQuerySkill(只读查询),提供写入类市场操作能力 - 仅当 GlobalMarketPlus 插件存在时自动注册 - 支持 9 种市场操作: - **搜索商品**(search_item):搜索并打开购买 GUI - **上架物品**(sell_item):将手中物品上架,支持引导式价格确认 - **领取邮箱**(pickup_mail):一键领取所有或指定邮件 - **发起求购**(buy_item):以指定单价发起收购订单 - **下架商品**(cancel_listing):展示在售列表,选择后下架 - **转账**(transfer_money):向其他玩家转账,大额需二次确认 - **发起拍卖**(auction_item):将手中物品发起拍卖 - **批量出售**(sell_inventory):将背包内所有同类物品批量上架 - **批量收购**(buy_inventory):以指定单价发起批量收购订单 - 所有写操作通过 Bukkit 命令代执行,由 GlobalMarketPlus 插件内部保证原子性 - **UtilitySkill(通用工具技能)**:新增 utility 技能,提供三个基础动作,可在多步骤任务中灵活编排 - **delay_wait**:非阻塞延迟 1-60 秒,使用专用调度器,不占用 I/O 线程池 - 示例:"先等 10 秒,然后再帮我查一下市场价格" - **notify_player**:将阶段性结果通过独立 LLM 调用概括后主动通知玩家,支持超时保护,尊重服主流式输出配置 - 示例:"先帮我查余额和背包,总结完后告诉我结果,然后再上架钻石" - **broadcast_message**:OP 管理员专用,将消息通过 AI 美化后全服广播(CHAT 载体),支持单意图和多步骤编排 - 示例:"帮我写一段公告:本周末全服双倍经验" - 可结合多步骤任务编排:"先查一下在线玩家列表,然后帮我广播一条活动通知" - **知识库 Embedding 语义检索**:通过调用 Embedding API 获取文本向量,用余弦相似度替代 BM25 算法进行语义检索 - 支持配置不同 Embedding 供应商(如智谱AI、硅基流动、OpenAI 等),可与 LLM 供应商不同 - 向量缓存持久化,避免每次启动重新计算 - 可配置最低相似度阈值、向量维度、API 超时等参数 - 未配置时自动降级回原有 BM25 算法检索 - **数据库持久化层**:同时支持 H2 嵌入式数据库(零配置开箱即用)和 MySQL 外挂数据库(多子服共享数据) - HikariCP 连接池,支持 `/kilacraft reload` 热重载切换数据库类型(失败自动回退旧连接池) - `database.yml` 独立配置文件(类型/连接参数/表前缀/数据保留天数) - Schema 自动迁移,支持 H2 和 MySQL 双方言 - **对话历史持久化服务**:玩家对话记录自动保存到数据库,重启不丢失 - Write-Behind 异步刷盘:内存消息队列 → 每 30 秒批量写入,阈值(≥20 条)即时触发 - 懒加载历史(Lazy Loading):玩家首次发言时从 DB 自动加载历史到内存,平滑衔接上下文 - 玩家退出时立即 flush,确保不丢数据;过期数据定时清理(可配置保留天数) - **玩家画像系统**:AI 记住每个玩家的行为偏好和游戏风格,提供更个性化的服务 - 登录统计(首次登录、累计时长、登录次数)、行为偏好、游戏风格、LLM 分析结果持久化 - 内存缓存 + DB 异步读写 + 版本戳防竞态,秒级响应 - 登录/退出时自动触发 LLM 画像分析(三重门控:时间间隔 + 消息数量 + 滑动窗口) - 五点画像维度:游戏风格、性格特征、内容偏好、沟通风格、特别观察 - 画像摘要可在 AI 对话中动态注入系统提示词,让 AI 更懂玩家 - 示例:"AI 会记得一个喜欢 PVP 的玩家,并在交流时调整回复风格" - **社交关系图谱**:AI 自动追踪玩家间的社交关系强度,形成社交网络 - 三种交互来源自动加权增强:私聊(+0.01)、TPA 传送(+0.02)、Skill 交互(+0.005) - 每日关系衰减(5%)+ 弱关系自动清理,保持数据新鲜度 - Skill 日志智能提取:定期扫描白名单 Skill 的玩家交互记录,自动增强相关玩家的社交关系 - 水位标记分布式安全机制(DB 行锁 `SELECT FOR UPDATE`),多子服不冲突 - 示例:玩家登录时 AI 问候语可提到"你的好友 Steve 也在线" - **服务器事件采集系统**:自动记录服务器中发生的里程碑事件,玩家离线后也能回顾 - 玩家死亡、成就解锁、等级提升自动记录到 `kca_server_event` 表 - 全球市场交易事件(上架、售出、收款)自动记录(卖家视角) - 私聊和 TPA 传送指令无需额外配置,自动增强社交关系强度 - 离线事件聚合器:玩家登录时可回顾离线期间发生的服务器大事 - **AI 登录问候系统**:玩家登录时 AI 自动发送个性化问候语 - 首次登录:欢迎新玩家,介绍 AI 助手功能和服务信息 - 回归登录:三大分类数据聚合架构 - **分类一**:玩家自己的离线事件(市场交易、成就、等级变化等) - **分类二**:好友离线期间的动态(JOIN player_profile 获取名称,展示好友的里程碑事件) - **分类三**:摘要统计(累计时长/登录次数/加入天数,仅触及明显里程碑时提及;上次游玩亮点) - 示例:"欢迎回来!你已经离线 3 天了,这期间 Steve 达成了 2 个成就,你的钻石也卖出去了" - 冷却机制(可配置),避免频繁骚扰 - `greeting.yml` 独立配置文件(开关/提示词模板/冷却/三大分类事件数量/服务器信息) - 新增 `OutputScenario.GREETING` 场景,输出载体独立可配 - **统一定时任务调度器**:所有周期性后台任务集中管理 - `ManagedTask` 接口 + `TaskScheduler` 统一管理器,5 个托管任务 - CAS 互斥保护 + 结构化日志 + 运行统计 - `/kilacraft tasks` 命令查看任务运行状态(需 `kilacraft.tasks` 权限,默认 OP) - **技能执行审计日志**:所有技能执行自动记录,支持回溯分析 - 记录:玩家 UUID、技能名、动作、参数、执行结果、耗时、触发来源 - 异步写入 `kca_skill_log` 表,不影响技能执行性能 - 社交关系提取器消费此日志表,自动发现玩家间的 Skill 交互 ### 🔧 优化改进 - **内置枚举替代知识库文件**:音效、粒子、统计等游戏内置枚举数据从知识库 Markdown 文件迁移至专用枚举注册表,检索更精准、不占用知识库空间、加载更快 - **自定义 I/O 线程池**:替代 JDK 默认的 ForkJoinPool.commonPool(),提供自适应有界线程池 - 核心线程 = CPU 核数,最大线程 = min(CPU×4, 128),队列容量与最大线程一致 - 安全拒绝策略:满载时丢弃任务并记录警告,绝不阻塞 Bukkit 主线程 - CPU 感知自适应:2 核 VPS 到 64 核大型服务器均有合理配置 - 初始化/关闭时输出详细日志(核心/最大/队列/服务端模式) - **HTTP 连接池优化**:OkHttp ConnectionPool 连接数与 IO_POOL 最大线程数对齐,避免线程因等连接而阻塞 - **挂机任务智能回调机制**:回调任务触发时,LLM 能在执行结果区域看到事件触发原因,回复更准确 - **挂机任务第一人称视角**:当玩家监视自己时,AI 以第一人称回复("你说了:好的"),不再以旁观者视角描述 - **挂机任务回调事件描述统一**:所有 20 种挂机任务的回调路径与通知路径使用一致的事件描述格式 - **意图识别时序语义理解**:LLM 能正确理解"小麦熟了之后查价格"、"等他上线了告诉我"等时序表达,将后续动作放入回调而非并行步骤 - **AI 回复质量优化**: - 禁止在回复中称呼玩家 ID,对话更自然 - 技能执行失败时,AI 根据失败原因自然解释,不再触发绝对禁令拒绝回复 - AI 不再暴露内部技术细节(步骤 ID、枚举原始值、统计计数等),全部转为玩家可理解的自然语言 - **config.yml 注释阅读体验优化**:全文件双语注释统一为"先中文、后英文"连续排列,无论哪种语言阅读都更连贯 - **配置架构重构**:4 个新独立配置 Manager 替代 847 行 `config.yml` - `LLMConfigManager` → `llm.yml`(温度/Token/系统提示词/Agent 能力配置) - `OutputConfigManager` → `output.yml`(输出管线/流式/音效/5 种载体场景配置) - `KnowledgeConfigManager` → `knowledge.yml`(分段/BM25/Embedding/自定义词典) - `GreetingConfigManager` → `greeting.yml`(AI 问候系统配置) - `ConfigManager` 改为代理模式,消费方无需感知底层拆分 - **对话来源标识**:所有对话记录携带来源标识 - 支持 6 种来源:聊天监听、`/ai` 命令、控制台插件调用、控制台交互、登录问候、挂机回调 - AI 回复持久化时自动携带来源标识,便于数据分析和问题排查 - **热重载数据库配置**:`/kilacraft reload` 支持热重载数据库配置(含数据库类型 H2/MySQL 切换),失败时自动回退到旧连接池 - **关闭时序重构**:优化插件卸载流程,确保数据不丢失 - 新顺序:定时任务取消 → 刷盘剩余消息 → 写出所有玩家画像 → 等待 IO 线程池完成 → 关闭数据库连接池 - **线程安全增强**:`ConversationManager.chatMode` 从 `HashMap` 升级为 `ConcurrentHashMap` - **流式输出修复**:修复特殊场景下流式输出载体被硬编码为 `NORMAL_CHAT` 的问题,确保问候等场景流式输出正确 - **SkillSecurityFilter 增强**:新增 `getOnlinePlayerNames()` / `getOnlineUuidToName()` 公开 API,供社交关系等模块在异步线程安全获取在线玩家信息 - **pom.xml 新增依赖**:HikariCP 5.1.0(连接池)、H2 2.2.224(嵌入式数据库)、MySQL Connector/J 8.4.0(provided),均通过 Maven Shade 重定位避免冲突 ### ⚠️ 兼容性 — 配置迁移指南 > **重要:升级前请完整备份 `plugins/Kilacraft-AI/` 目录!** 此版本将 847 行 `config.yml` 按配置域拆分为 6 个独立文件,提升可维护性。首次启动后,插件会自动生成以下新文件(使用内置默认值): - `database.yml`(数据库配置,默认 H2 嵌入式,同时支持 MySQL 外挂数据库) - `llm.yml`(LLM API 配置 + Agent 能力配置) - `output.yml`(输出管线配置,含音效) - `knowledge.yml`(知识库检索/分段/BM25/Embedding/自定义词典) - `greeting.yml`(AI 问候系统配置,默认关闭) **迁移步骤:** 1. 备份整个 `plugins/Kilacraft-AI/` 目录 2. 启动服务器,让插件生成新配置文件 3. 对照下表,将旧 `config.yml` 中自定义的配置值复制到对应新文件中 4. 执行 `/kilacraft reload` 使迁移后的配置生效 5. 迁移完成后,旧 `config.yml` 中的 `llm:`、`agent:`、`output:`、`knowledge:` 段可删除(保留也不影响运行,插件不再读取) **配置迁移对照表:** | 旧位置(config.yml) | 新文件 | 新位置(key path 保持不变) | |---|---|---| | `llm:` 整个段 | `llm.yml` | `llm:` | | `agent:` 整个段 | `llm.yml` | `agent:` | | `output:` 整个段 | `output.yml` | `output:` | | `knowledge:` 整个段 | `knowledge.yml` | `knowledge:` | | (新增,无旧配置) | `database.yml` | `database:` | | (新增,无旧配置) | `greeting.yml` | `greeting:` | **保留在 config.yml 不变:** - `settings:`(语言、调试模式) - `messages:`(AI 消息前缀) - `command_skill:`(命令 Skill 安全控制) - `afk_task:`(挂机任务) - `security:`(安全配置) **新增数据库表(首次启动自动创建):** - `kca_conversation`:对话历史持久化 - `kca_player_profile`:玩家画像数据 - `kca_server_event`:服务器事件记录 - `kca_social_relation`:社交关系强度 - `kca_skill_log`:技能执行审计日志 - `kca_watermark`:水位标记(分布式互斥) **新增权限节点:** - `kilacraft.tasks`:查看定时任务运行状态(默认 OP) **新增依赖(已内置于 JAR):** - HikariCP 5.1.0(数据库连接池) - H2 2.2.224(嵌入式数据库) **完全向后兼容**:默认 H2 嵌入式数据库零配置即可运行,同时支持 MySQL 外挂数据库。现有功能无需修改。 [/MD]
后退
顶部 底部