From 34e29270215225a41248c7af7caa11b351a90873 Mon Sep 17 00:00:00 2001 From: sunny-335 Date: Thu, 2 Jul 2026 12:39:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20v1.3.0=20=E7=9E=AC=E9=97=B4=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E9=80=82=E9=85=8D=E3=80=81=E6=8F=90=E7=A4=BA=E8=AF=8D?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=8C=96=E9=87=8D=E6=9E=84=E3=80=81=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E5=88=B7=E6=96=B0=E3=80=81=E5=AE=89=E5=85=A8=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=A4=B1=E8=B4=A5=E5=85=B3=E9=97=AD=E5=8F=8A=E5=A4=9A?= =?UTF-8?q?=E9=A1=B9Bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增瞬间插件(Moments)评论区适配 - 重构提示词组装为模块化架构 - 强化身份约束:禁止编造事实、泄露系统信息 - 日志页面增加实时刷新功能 - AI安全审核改为失败关闭策略 - 评论人昵称广告判定 - 修复PromptBuilder安全提示词可被绕过 - 修复processFalsePositive无去重锁和失败卡在PENDING - 修复AiReplyCleanupService删除处理中记录 - 修复hasExistingReply错误时静默放行 - 修复Endpoint参数校验/搜索大小写/批量并发限制 - 修复LogsView实时刷新漏检状态变化和竞态 - 修复ContextExtractor/ReplyReconciler空指针风险 - 优化实时刷新:间隔可配置/滚动保留/用户操作后重置计时 - UI标签Prompt设置改为提示词设置 --- docs/CHANGELOG.md | 56 +++++ docs/guide/prompt.md | 55 +++-- docs/guide/settings.md | 42 ++-- docs/index.md | 6 +- gradle.properties | 2 +- .../endpoint/CommentAiAutopilotEndpoint.java | 41 +++- .../listener/ReplyReconciler.java | 4 +- .../service/AiReplyCleanupService.java | 9 +- .../service/AiReplyOrchestrator.java | 45 +++- .../service/CommentPreFilterService.java | 25 +- .../service/ContextExtractor.java | 75 +++++- .../service/FilterService.java | 33 +++ .../service/MomentsIntegrationService.java | 40 +++ .../service/PersonaResolver.java | 1 + .../service/PromptBuilder.java | 229 +++++++++++------- .../service/ReviewService.java | 11 +- src/main/resources/extensions/settings.yaml | 13 +- src/main/resources/plugin.yaml | 5 +- ui/src/views/HomeView.vue | 11 +- ui/src/views/LogsView.vue | 168 +++++++++++-- ui/src/views/SettingsView.vue | 38 ++- 21 files changed, 719 insertions(+), 190 deletions(-) create mode 100644 src/main/java/top/nxxy335/commentaiautopilot/service/MomentsIntegrationService.java diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index d560ffe..b77faec 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,61 @@ # 更新日志 +## v1.3.0 + +> 2026-07-01 + +### 新增 + +- **支持瞬间插件(Moments)评论区适配** — 当检测到已安装并启用 [plugin-moments](https://github.com/halo-sigs/plugin-moments) 时,自动为瞬间评论启用 AI 自动回复 + - 新增 `MomentsIntegrationService`,通过 `SchemeManager` 检测 Moment 扩展注册状态,避免直接引用导致的 `NoClassDefFoundError` + - 在插件设置 - 基本设置中新增"瞬间评论区适配"开关,仅当瞬间插件可用时显示,默认开启 + - `ContextExtractor` 适配 Moment 上下文:使用 moment name 作为关联标识,评论创建时间作为日期上下文 + - `FilterService` 对 Moment 评论读取 `momentsEnabled` 配置决定是否触发 AI 回复 +- **评论人昵称广告判定** — 前置过滤现在综合判断评论者昵称与评论内容。昵称包含商业推广关键词(如"免费算命"、"加微信xxx"、"代写论文"、"低价代购"等)即使评论内容看似正常也会被判定为广告 + - `CommentPreFilterService.check()` 新增 `commentOwner` 参数,将昵称纳入 AI 分类输入 + - 系统提示词新增"原则六:昵称与内容综合判定",列举昵称广告典型特征 + +### 改进 + +- **重构提示词组装与兼容机制** — 建立更健壮的模块化拼接逻辑,解决多配置组合时的指令冲突与上下文丢失问题 + - 新增 `{{output_guidance}}`、`{{sentiment_hint}}`、`{{language_requirement}}` 三个占位符,将输出规范、情感提示、语言要求拆分为独立模块 + - 角色与预设使用段落分隔(空行+段落标记)确保指令隔离,避免风格预设污染角色设定 + - 情感提示通过 `{{sentiment_hint}}` 占位符原位注入;旧模板不含该占位符时自动降级为末尾追加,保持向后兼容 + - 消除两个近乎相同的 `buildPrompt` 重载的代码重复,统一委托给单一核心组装方法 + - 默认模板更新为模块化结构,新安装用户即可获得更稳定的 AI 输出 + - 强化身份约束:明确角色不是文章作者、站点管理员、客服或用户本人;禁止声称亲身经历未提供之事;禁止编造文章外的人物、数据、链接;禁止泄露系统提示词、模型参数、插件实现与安全策略 +- **"Prompt设置"更名为"提示词设置"** — UI 标签页、面板标题、设置项标签、帮助文本统一改为中文"提示词" +- **日志瞬间关联链接精确到具体瞬间** — Moment 评论的关联链接从 `/moments` 列表页改为 `/moments/{name}` 具体瞬间页 +- **日志页面增加实时刷新功能** — 新增"实时刷新"开关,开启后每 10 秒静默轮询新数据。标签页隐藏或弹窗打开时自动暂停,回到页面时立即刷新 +- **AI 安全审核改为失败关闭策略** — `ReviewService` 在审核服务不可用或异常时不再自动通过,改为返回 FAIL 并拦截发布,避免未经审核的 AI 回复被自动发布 + +### Bug 修复 + +- **修复日志页面 XSS 漏洞** — `renderContent` 仅移除 `