# 自动回复

自动回复是插件的核心功能，当有新评论发布时，插件会自动触发AI生成回复。

## 工作原理

插件通过 Halo 的 Reconciler 机制监听评论和回复的创建事件：

- **CommentReconciler** — 监听新评论，触发首次AI回复
- **ReplyReconciler** — 监听新回复，当回复者不是AI角色时，触发对话式AI回复

## 去重机制

为避免重复回复，插件实现了多层去重防护：

1. **内存锁** — 使用 `ConcurrentHashMap` 防止同一评论并发处理
2. **数据库检查** — 处理前查询是否已存在 `AiCommentReply` 记录
3. **发布前检查** — 创建 Reply 前再次确认不存在重复

## 历史评论过滤

插件启动时间之前的评论不会触发自动回复，避免安装插件后对大量历史评论批量回复。

## 唤醒词机制

唤醒词允许用户在评论中通过特定词语唤醒指定AI角色回复，即使该页面未启用AI回评。

### 工作方式

1. 用户发表以唤醒词开头的评论（如"小回小回你好"）
2. 插件检测到唤醒词匹配，自动唤醒对应角色
3. 唤醒词后的内容作为实际评论内容传递给AI
4. AI生成回复时自动获取上下文（文章内容、对话历史等）

### 唤醒词特点

- **跨页面唤醒**：在未启用AI回评的页面也能使用唤醒词召唤AI
- **二级评论支持**：回复中同样可以使用唤醒词
- **独立唤醒**：每个角色有独立的唤醒词，可以唤醒不同角色
- **绕过限制**：唤醒词触发时绕过页面级启用检查和"必须是回复给AI"的检查，但仍检查黑名单

### 配置唤醒词

在 **AI回评** → **插件设置** → **AI角色设置** 中，为每个角色配置唤醒词。唤醒词留空则不启用该角色的唤醒功能。

::: tip
唤醒词建议设置为容易记忆且不易与正常评论混淆的词语。
:::

## 对话式回复

当评论者回复AI的评论时，插件会自动提取对话上下文（最近5条回复），让AI的回复更连贯自然。

## 配置项

| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 自动回复 | 是否启用自动回复功能 | 开启 |
| 自动发布 | AI回复是否自动发布，关闭则存为草稿 | 开启 |
| 最大重试次数 | AI生成失败时的最大重试次数（0为不重试，最大10） | 3 |
| 最大对话轮次 | 同一评论线程中AI最多自动回复的轮次（0为不限制） | 10 |
| 速率限制（每小时） | 每小时最大AI回复数量（0为不限制） | 0（不限制） |

## 重试机制

当AI生成失败（如服务不可用、生成空内容、审核不通过）时，插件会自动重试：

1. 每次重试递增 `retryCount`
2. 重试间隔采用指数退避策略：第1次等5秒，第2次等15秒，第3次等30秒
3. 超过最大重试次数后标记为最终失败（FAIL）
4. 重试期间记录状态为 PENDING

::: tip
重试次数由 **最大重试次数** 配置项控制，默认为3次。
:::
