- 还原工程:以 1.4.1 安装包为来源,补齐缺失的 filterOnly 配置/编排逻辑/UI 开关,gradle build 全绿(5 测试通过) - 修复「开启回评」:annotation 改用字符串 on/off 契约,FilterService 归一化解析成为唯一判定入口,默认开启、显式关闭生效、重启不丢;新增 FilterServiceTest 锁定行为 - 整体健壮性:白名单/黑名单(兼容数组形态、正则预编译)、清理天数钳制 [1,365]、UI parseCfg 空值判定修正 Co-Authored-By: WorkBuddy <workbuddy@tencent.com>
3.2 KiB
3.2 KiB
过滤规则
过滤规则控制哪些评论触发AI回复,包括文章/页面级开关、评论者黑/白名单。
文章/页面级开关
插件通过 Halo 的 AnnotationSetting 机制,在文章和页面编辑器的元数据区域添加了 启用AI回评 开关。
默认行为
| 类型 | 默认状态 |
|---|---|
| 文章(Post) | 默认开启 |
| 页面(SinglePage) | 默认关闭 |
全局页面AI回复开关
在 基本设置 中新增 启用页面AI回复 开关:
- 开启:所有独立页面一键启用AI回复(包括新建页面)
- 关闭:所有页面一键关闭AI回复
- 默认为关闭
::: tip 开启全局页面AI回复后,无需逐个在页面编辑器中开启。新建页面也会自动启用AI回复。 :::
单独控制
- 编辑文章或页面
- 在编辑器侧边栏找到 元数据 区域
- 找到 启用AI回评 开关
- 根据需要开启或关闭
!!! note "实现约定(改动前请先阅读)"
`metadata.annotations` 的值只能是字符串,因此该开关在 `annotation-setting.yaml` 中
必须使用 `on-value: "true"` / `off-value: "false"` 显式声明字符串取值。
运行时判定入口为 `FilterService#resolveAnnotation`,其缺省值与 `annotation-setting.yaml`
中的表单默认值必须保持一致:
| 来源 | 文章(Post) | 页面(SinglePage) |
|------|-------------|-------------------|
| 表单默认值 | `value: "true"` | `value: "false"` |
| 运行时缺省 | `DEFAULT_POST_REPLY_ENABLED = true` | `pagesEnabled`(默认 `false`) |
若只想关闭某个页面的回评:在页面编辑器中把开关切到关闭并保存即可(会写入
`ai-reply-enabled: "false"`,运行时优先于全局开关)。
评论者黑名单
评论者黑名单功能可以屏蔽指定评论者,使其评论不触发AI回复。
支持的格式
| 格式 | 示例 | 说明 |
|---|---|---|
| 名称 | 张三 |
匹配评论者的显示名称 |
| 邮箱 | spam@example.com |
匹配评论者邮箱(不区分大小写) |
| 正则表达式 | regex:^spam.* |
以 regex: 开头,按正则匹配 |
批量操作
- 批量添加:点击"添加评论者"按钮,弹出评论者列表对话框,支持搜索、多选、全选批量添加,也支持手动输入名称或邮箱
- 批量移除:名单列表中支持多选后批量移除
::: tip 黑名单中的评论者发布评论时,插件会同时匹配显示名称和邮箱地址(不区分大小写),正则表达式则按模式匹配,匹配成功则跳过AI回复。 :::
评论者白名单
白名单功能让信任的评论者跳过 AI 前置过滤与拦截,避免可信评论被误伤。
配置方法
- 在 基本设置 中开启 启用白名单 开关
- 在白名单评论者区域添加评论者
- 支持批量添加/移除,操作方式与黑名单一致
::: warning 白名单与黑名单关系 白名单优先级高于黑名单:同时命中两者的评论者按白名单处理(跳过拦截但不会触发 AI 回复)。白名单仅跳过 AI 审核拦截,不影响 AI 回复的触发逻辑。 :::