# 半自动评论回复 SOP（小红书 · 笔记评论区）

用途："帮我回评论""回一下这条笔记的评论"。Agent 挑高价值评论、按 `persona.md` 语气逐条拟回复，
经你拍板后**逐条填进回复框、停在发送前**，由你亲手点发送。

## 铁律（最高优先级，先读再动手）

> **回评是不可逆的外发操作。Agent 绝不自动点击「发送」——逐条填进回复框后停下，发送那一下永远由用户亲手点。**

- Agent 只做到：拟回复 → 你拍板 → 点该评论「回复」→ 填回复框 → `screenshot` 核对 → **停下交回用户**，下一条同理。
- 即使用户说"帮我都回了"，也只逐条填到位、截图核对，把"点发送"留给用户本人——不因催促放宽。
- **绝不批量自动连发**：一条一停，避免被判机器人刷评、触发风控。
- 遇验证码/登录失效/风控（`300012` 等）**立即停下告诉用户**，绝不自动绕验证（沿用 `runtime-rules.md`）。
- 单步重试 ≤ 1；连续失败就停报，别在同一条上死磕。

## 选哪些评论（Agent 推荐、用户拍板）

进笔记后抽评论区（用范式 3 的 `.comment-item`），**挑"值得回"的，别无脑全回**：

- **提问类**：问链接/价格/型号/怎么做——回了能促转化、涨完播。
- **高赞/高互动**：评论区被顶上来的，回复曝光最高。
- **潜在转化**：表达"想要/求购/蹲一个"。
- **争议/质疑**：需要中性、真诚回应，先接情绪（按 `persona.md` 回复语气；不引战不拉踩）。
- **跳过**：纯表情、广告、无意义灌水；自己的小号不用回。

把"评论 → 建议回复"逐条列给用户，让用户勾选要发哪几条。

## 流程

1. **进目标笔记**：从列表/搜索结果**点卡片本体**进（带 `xsec_token`；直链 `/explore/<id>` 会 `300031` 404——见 `runtime-rules.md`）。登录态下才有评论区与回复框。
2. **抽评论**：`browser{action:"eval"}` 用范式 3 抽 `.comment-item`（含 `.comment-item .content` 文本、点赞数），Agent 据此挑高价值评论、逐条拟回复。
3. **逐条回复**（用户拍板后，一条一停）：
   - 点该评论的「回复」图标：`browser{action:"act", kind:"click", ref:"<该评论的 .reply>"}`。点后**底部 `.engage-bar-container` 进入"回复 @该用户"模式**（出现「发送」「取消」），回复框焦点也在这。
   - 填回复：`browser{action:"act", kind:"fill", ref:"p.content-input", text:"<回复文字>"}`（contenteditable，`fill` 可用；不行用 `type`）。
   - `browser{action:"screenshot"}` 核对 → **停**，告诉用户"已填第 N 条（回复 @某人），请你核对后**亲手点发送**"。
   - 想换一条/填错了 → 点 `.engage-bar-container button.cancel`（取消）。用户发完说"下一条"，再处理下一条。**Agent 不自己连发、不点发送。**

## 选择器（已对真实登录态 DOM 校正 ✅ 2026-06-17）

| 用途 | 选择器 | 备注 |
|---|---|---|
| 评论项容器 | `.comment-item`（子评论 `.comment-item.comment-item-sub`，一级容器 `.parent-comment`） | ✅ 范式 3 |
| 评论文本 | `.comment-item .content` | ✅ 范式 3 |
| 评论「回复」触发 | `.comment-item .reply` | 图标容器（`div.reply.icon-container`，无文字）；点后底部进回复模式 |
| 回复输入框 | `p.content-input`（在 `.engage-bar-container` 内） | contenteditable；`fill` 可用 |
| 发送按钮 | `.engage-bar-container button.submit` | 文案「发送」，空内容带 `gray` 禁用；**仅核对定位，绝不程序化点击** |
| 取消按钮 | `.engage-bar-container button.cancel` | 放弃当前回复/换条用 |

> 小红书改版会让选择器失效。抽不到就**如实报"没抽到"**，别硬填、别编；失效时 `snapshot`/`eval` 看真实 class 再更新本表（同 `eval-patterns.md` / `publish-flow.md` 纪律）。
