feat: 增强插件可靠性与可用性

- 修复 PromptBuilder ClassLoader 冲突,改为 ConfigMap 直读
- 实现失败重试机制,指数退避策略
- 评论者黑名单支持邮箱匹配,可从评论列表选择
- 日志页面支持按状态/情感筛选和关键词搜索
- AI角色邮箱配置增加 Gravatar 头像实时预览
- 插件依赖声明修正:ai-foundation 改为必须依赖
- 新增定时清理旧记录功能,可配置保留天数
- 更新 README 和 VitePress 文档
This commit is contained in:
sunny-335
2026-06-14 23:07:22 +08:00
parent e03ba7a20d
commit ef3cdf4bdc
20 changed files with 946 additions and 81 deletions
+13
View File
@@ -32,3 +32,16 @@
| 自动回复 | 是否启用自动回复功能 | 开启 |
| 自动发布 | AI回复是否自动发布,关闭则存为草稿 | 开启 |
| 最大重试次数 | AI生成失败时的最大重试次数 | 3 |
## 重试机制
当AI生成失败(如服务不可用、生成空内容、审核不通过)时,插件会自动重试:
1. 每次重试递增 `retryCount`
2. 重试间隔采用指数退避策略:第1次等5秒,第2次等15秒,第3次等30秒
3. 超过最大重试次数后标记为最终失败(FAIL)
4. 重试期间记录状态为 PENDING
::: tip
重试次数由 **最大重试次数** 配置项控制,默认为3次。
:::
+28
View File
@@ -0,0 +1,28 @@
# 数据清理
数据清理功能可以自动删除过期的AI回复记录,防止数据库无限增长。
## 自动清理
插件每天自动执行一次清理任务,删除超过保留天数的 `AiCommentReply` 记录。
### 配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 启用自动清理 | 是否开启自动清理 | 开启 |
| 保留天数 | 超过此天数的记录将被清理 | 30 |
配置路径:**插件设置** → **数据清理**
## 手动清理
在数据清理页面点击 **立即清理** 按钮,可以立即执行一次清理操作。清理完成后会显示删除的记录数量。
::: warning
清理操作不可撤销,请根据实际需求设置合理的保留天数。
:::
## 清理范围
清理操作仅删除 `AiCommentReply` 记录(插件内部的日志记录),不会删除已发布的 Halo Reply 评论。已发布的评论不受影响。
+15
View File
@@ -22,3 +22,18 @@
- 草稿记录显示 **审核通过****拒绝** 按钮
- 已发布的记录显示正常状态
- 被拒绝的记录显示 REJECTED 标签
## 批量操作
当日志页面有多条草稿记录时,可以使用批量操作功能:
1. 勾选要操作的记录(支持全选)
2. 选中后顶部显示批量操作工具栏
3. 支持的批量操作:
- **批量通过** — 一次性审核通过多条草稿
- **批量拒绝** — 一次性拒绝多条草稿
- **批量删除** — 一次性删除多条记录
::: warning
批量操作不可撤销,请谨慎操作。
:::
+16
View File
@@ -50,3 +50,19 @@
## 插件升级后设置丢失了?
插件升级不会丢失设置。如果遇到问题,请检查 ConfigMap 是否正确迁移。
## AI生成失败后会怎样?
插件会自动重试,重试次数由"最大重试次数"配置控制(默认3次)。重试间隔递增(5秒、15秒、30秒)。超过最大重试次数后标记为失败。
## 如何批量审核草稿回复?
在AI回复日志页面,勾选多条记录后,使用顶部的批量操作工具栏进行批量通过、拒绝或删除。
## 旧记录太多怎么办?
在插件设置的"数据清理"页面,可以配置自动清理超过指定天数的记录(默认30天),也可以点击"立即清理"手动触发。
## 黑名单支持邮箱吗?
支持。黑名单同时匹配评论者的显示名称和邮箱地址,不区分大小写。你也可以在设置页面点击"添加评论者"按钮从评论列表中选择。
+10 -3
View File
@@ -32,13 +32,20 @@
1. 进入插件设置页面
2.**基本设置** 中找到 **评论者黑名单**
3. 输入评论者的显示名称,多个用逗号分隔
3. 输入评论者的显示名称或邮箱,多个用逗号分隔
4. 保存设置
### 从评论列表选择
1. 在黑名单输入框旁点击 **添加评论者** 按钮
2. 弹出评论者列表对话框
3. 搜索并选择要屏蔽的评论者
4. 选中后自动添加到黑名单
### 示例
```
张三,李四,王五
张三,spam@example.com,李四
```
黑名单中的评论者发布评论时,插件会跳过AI回复,并在日志中记录过滤原因
黑名单中的评论者发布评论时,插件会同时匹配显示名称和邮箱地址(不区分大小写),匹配成功则跳过AI回复。
+9
View File
@@ -5,19 +5,27 @@ AI回评(Comment AI Autopilot)是一个 Halo 博客系统的插件,能够
## 核心功能
- **自动回复** — 监听新评论,自动调用AI生成回复,支持多轮对话上下文
- **多语言适配** — 根据评论语言自动用对应语言回复
- **情感分析** — 分析评论情感倾向(正面/中性/负面),根据情感调整回复语气
- **草稿模式** — AI回复先存为草稿,管理员审核后再发布
- **失败重试** — AI生成失败时自动重试,指数退避策略
- **批量操作** — 草稿模式下支持批量通过/拒绝/删除
- **文章/页面级开关** — 在文章编辑器中直接控制是否启用AI回复,文章默认开启,页面默认关闭
- **评论者黑名单** — 屏蔽指定评论者,不触发AI回复
- **手动触发** — 在评论管理页面对历史评论手动触发AI回复
- **AI角色** — 自定义AI回复者的昵称、人格提示词和Gravatar头像
- **安全审核** — AI生成的内容经过安全审核,不合规内容自动拒绝
- **仪表盘统计** — 显示回复数、情感分布、每日回复趋势等图表
- **日志筛选搜索** — 按状态、情感筛选,关键词搜索
- **数据清理** — 自动清理超过指定天数的旧记录
- **AI Foundation 集成** — 必须安装 Halo AI Foundation 插件,使用其提供的AI模型能力
## 工作流程
```
新评论 → 过滤检查 → 情感分析 → 构建Prompt → AI生成 → 安全审核 → 发布/草稿
↓ (失败)
重试 → ... → 最终失败
```
1. **新评论到达** — Reconciler 监听到新评论创建事件
@@ -27,6 +35,7 @@ AI回评(Comment AI Autopilot)是一个 Halo 博客系统的插件,能够
5. **AI生成** — 调用AI模型生成回复内容
6. **安全审核** — 对生成内容进行安全审核
7. **发布/草稿** — 根据设置自动发布或存为草稿等待审核
8. **重试** — 如果AI生成失败,系统会自动重试(最多 maxRetryCount 次),每次重试间隔递增
## 前置要求
+11
View File
@@ -37,3 +37,14 @@ AI回复者的显示名称,默认为「小回」。修改后新回复将使用
::: warning
如果不填写邮箱,AI回复者将使用 Halo 默认头像。
:::
### 头像预览
在设置页面输入邮箱后,右侧会实时显示 Gravatar 头像预览,方便确认头像是否正确。
::: tip
如果预览头像不正确,请检查:
1. 邮箱是否拼写正确
2. 是否已在 [Gravatar](https://gravatar.com) 上为该邮箱设置头像
3. 头像更新可能有缓存延迟
:::
+12 -1
View File
@@ -9,7 +9,7 @@
| 自动回复 | 是否启用自动回复功能 | 开启 |
| 自动发布 | AI回复是否自动发布 | 开启 |
| 最大重试次数 | AI生成失败时的最大重试次数 | 3 |
| 评论者黑名单 | 不触发AI回复的评论者显示名称,逗号分隔 | 空 |
| 评论者黑名单 | 不触发AI回复的评论者显示名称或邮箱,逗号分隔 | 空 |
## AI角色设置
@@ -53,3 +53,14 @@
| `{{article}}` | 文章内容 |
| `{{comment}}` | 评论内容 |
| `{{conversation}}` | 对话上下文(多轮对话时) |
## 数据清理
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 启用自动清理 | 是否自动清理过期的AI回复记录 | 开启 |
| 保留天数 | 超过此天数的记录将被自动清理 | 30 |
::: tip
你也可以在数据清理页面点击"立即清理"按钮手动触发清理操作。
:::