# 更新日志 ## v1.4.0 > 2026-07-02 ### 新增 - **AI审核白名单** — 管理员自动入白名单 + 支持手动添加其他评论者;白名单内评论跳过 AI 审核拦截。与黑名单并排显示 - **黑/白名单移除按钮** — 名单列表中每个评论者新增移除按钮 - **Comment Next 插件冲突检测** — 检测 plugin-comment-next 是否安装启用,若启用则提示冲突并提供 AI回复/AI拦截配置页跳转链接 - **日志「操作」按钮** — 替代原删除按钮,根据记录状态显示不同操作(取消通过AI回复/取消通过评论者评论/触发AI回复/删除违规评论) - **日志回复角色显示与筛选** — 日志列表显示回复角色名标签,筛选下拉新增角色筛选项 - **取消通过AI回复/评论者评论** — 新增端点支持取消已发布回复的通过状态 - **模块化提示词配置** — 拆分为角色身份、安全审核、情感适配、输出规范4个独立模块,各默认填入完整默认值 - **设置页新增配置项** — 最大重试次数、最大对话轮次(支持0=无限制+二次确认)、速率限制(支持0=无限制+二次确认)、回复质量自学习开关 - **AI Foundation 未安装明确提示** — 显示「未安装插件依赖」+ 安装链接 - **首页待审核卡片条件显示** — 仅在关闭自动发布时显示,启用前置过滤且违规设待审核时显示违规待审核数 - **日志删除评论多选项** — 日志页删除按钮改为弹窗,根据记录状态提供不同选项 - 正常状态(PASS/PENDING/REVIEWING/FALSE_POSITIVE)提供「仅删除AI回评」「删除评论者评论」「仅删除日志」「取消」四项 - 已拦截状态(FILTERED)提供「确定」「取消」二项 - 「仅删除AI回评」删除已发布 Reply 扩展,日志标记为 DELETED 保留 - 「删除评论者评论」级联删除 Comment 及关联 Reply/AiCommentReply - **AI角色按场景切换** — 支持为文章分类(Category)指定默认 AI 角色,在模型设置中配置分类角色映射。解析优先级:唤醒词 > Post/Category/Tag 标注 > 分类角色映射 > 全局默认。瞬间评论使用全局默认 - **回复质量自学习** — 从历史被拒绝回复中提取共性特征(长度/开头词/语气词),生成时注入「避免以下风格」提示。默认关闭,在基本设置中开启 - **首页待审核卡片** — 首页新增待审核独立卡片,一键跳转审核 ### 改进 - **首页角色卡片完善** — 显示完整角色信息(唤醒词、性别等) - **「查看日志」按钮移至标题栏** — 位于「插件设置」右侧 - **移除角色卡片「修改配置」按钮** — 统一使用标题栏入口 - **分类角色映射移至AI角色配置组** — 从模型设置组迁移 - **移除提示词预设** — 避免自定义角色时提示词重复组合,预设模板移至文档 - **统一使用 Halo 官方弹窗组件** — 所有二次确认弹窗改用 `VModal` 组件,移除浏览器原生 `confirm()`。删除角色、导入配置等操作均使用统一的官方弹窗 - **AI角色删除后自动刷新** — 删除角色后自动重新拉取角色列表,确保已删除角色不再显示 - **日志页分页改用官方组件** — 使用 Halo 官方 `VPagination` 组件,新增每页条数选择器(10/20/50/100,默认20) - **首页信息整合** — 「回复概览」更名为「概览」,移除通过率进度条,AI Foundation 连接状态整合到概览卡片,移除独立健康横幅和快捷操作卡片 - **自定义提示词模板默认留空** — settings.yaml 默认值改为空字符串,未填写时后端使用完整 `DEFAULT_PROMPT_TEMPLATE` - **修复文档变量显示问题** — 文档中 `{{变量}}` 在 markdown 渲染时不显示,改用 `` 包裹修复 - **修正头像默认行为描述** — 邮箱为空时使用 Gravatar 默认头像(非 Halo 默认头像) ### Bug 修复 - **修复删除违规评论时误删日志** — deleteCommenterComment 改为保留 AiCommentReply 日志记录,仅删除 Comment 和 Reply 扩展 - **修复 WhitelistService 类型推断错误** — ObjectNode 三元表达式类型推断问题 - **修复配置导入 400 Bad Request** — 导出的 personas 含完整 Extension 只读元数据(creationTimestamp/finalizers/labels 等),导入更新时未清理导致校验异常。导入前清洗 metadata 仅保留必要字段 - **修复 `deleteAiReplyOnly` 乐观锁重试无效** — 删除 Reply 期间版本号可能过期,重试复用过期 record 必然失败。改为重试前重新 fetch 最新版本 - **修复 `deleteCommenterComment` 空指针风险** — AiCommentReply 列表过滤未检查 `spec == null`,畸形数据触发 NPE --- ## 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 作为关联标识,通过 `Unstructured` 单次 fetch 获取瞬间实际内容(`spec.content.raw`/`html`)和发布时间(`spec.releaseTime`)作为 AI 上下文 - `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 秒静默轮询新数据。标签页隐藏或弹窗打开时自动暂停,回到页面时立即刷新。支持可配置刷新间隔(5s/10s/30s/60s)、新记录 Toast 提示、滚动位置保留、连续失败自动关闭 - **AI 安全审核改为失败关闭策略** — `ReviewService` 在审核服务不可用或异常时不再自动通过,改为返回 FAIL 并拦截发布,避免未经审核的 AI 回复被自动发布 ### Bug 修复 - **修复日志页面 XSS 漏洞** — `renderContent` 仅移除 `