Files
argon-theme/.kiro/steering/username-comment-detection.md
nanhaoluo 2e73a1e209 docs: 更新用户名-评论联合检测文档
- 添加立即同步执行说明
- 添加管理员查看原用户名功能说明
- 添加前台删除评论功能说明
- 更新相关函数列表
2026-01-22 18:43:00 +08:00

5.8 KiB
Raw Permalink Blame History

inclusion
inclusion
manual

AI 评论用户名-内容联合检测机制

功能概述

AI 评论检测系统已升级为用户名-评论内容联合检测机制,同时检查评论者的用户名和评论内容是否合规。

检测逻辑

1. 联合检测

  • AI 模型同时判断用户名和评论内容的合规性
  • 返回四个字段:
    • content_spam: 评论内容是否为垃圾评论
    • content_reason: 内容判断理由25字以内
    • username_invalid: 用户名是否不合规
    • username_reason: 用户名判断理由25字以内

2. 执行时机

  • 立即同步执行:评论发布后立即执行 AI 检测
  • 不再延迟,确保检测结果及时生效
  • 发送邮件通知也在检测完成后立即执行

3. 处理规则

情况1评论内容不合规

  • 按照后台设置的自动处理方式执行:
    • 移入回收站trash
    • 标记为待审核hold
    • 仅标记不改变状态mark
  • 如果留了邮箱,发送垃圾评论通知邮件

情况2评论内容正常但用户名不合规

  • 未留邮箱:直接移入回收站

    • 记录元数据:_argon_username_invalid_no_email
    • 原因:无法通知用户,直接拒绝
  • 留了邮箱:自动修改用户名并发送通知

    • 生成格式:用户-XXXXXXXX8位唯一标识码
    • 标识码基于:原用户名 + 邮箱 + IP + User Agent
    • 保存原始用户名到元数据:_argon_original_username
    • 发送用户名变更通知邮件
    • 管理员可见原用户名:显示为 用户-XXXXXXXX (原用户名: xxx)

情况3评论和用户名都正常

  • 正常发布,记录检测结果

管理员功能

1. 查看原用户名

  • 管理员在前台查看评论时,可以看到原始用户名
  • 显示格式:用户-A3B7K9M2 (原用户名: 违规昵称)
  • 普通用户只能看到:用户-A3B7K9M2

2. 前台删除评论

  • 管理员在前台可以直接删除评论
  • 删除按钮使用红色 btn-outline-danger 样式
  • 删除前弹出确认对话框
  • 删除后评论淡出并移除
  • 完整的成功/失败提示

唯一标识码生成规则

// 格式:用户-XXXXXXXX
// 字符集0-9, A-Z排除 I 和 O 避免混淆)
// 长度8位
// 算法:基于 MD5(原用户名 + 邮箱 + IP + UA + 时间戳)

示例:

  • 用户-A3B7K9M2
  • 用户-5N8Q4R6T

邮件通知

用户名变更通知邮件

当用户名被修改时,系统会发送邮件通知,包含:

  • 原用户名(删除线显示)
  • 新用户名(高亮显示)
  • AI 判断理由
  • 评论链接
  • 检测信息AI 模型、识别码、检测时间)

邮件模板位置:email-templates/username-change-notify.php

评论元数据

系统会保存以下元数据:

检测结果

  • _argon_spam_detection_result: 完整检测结果
    [
        'is_spam' => bool,
        'reason' => string,
        'username_invalid' => bool,
        'username_reason' => string,
        'original_username' => string,  // 仅用户名变更时
        'new_username' => string,       // 仅用户名变更时
        'action' => string,             // 处理方式
        'reason_detail' => string       // 详细原因
    ]
    

用户名变更相关

  • _argon_original_username: 原始用户名
  • _argon_username_changed: 标记用户名已变更
  • _argon_username_invalid_no_email: 标记用户名不合规且未留邮箱

检测信息

  • _argon_spam_detection_time: 检测时间戳
  • _argon_spam_detection_code: 8位识别码

AI 提示词

默认提示词(可在后台自定义):

你是一个专业的内容审核助手。请分别判断以下评论的用户名和内容是否合规。

不合规内容包括但不限于:广告推广、反动言论、错误政治观点、时政敏感内容、违法信息、色情暴力、恶意攻击等。
不合规用户名包括但不限于:广告推广、色情暴力、政治敏感、恶意攻击、侮辱性词汇等。

请仅返回 JSON 格式:
{
  "content_spam": true/false,
  "content_reason": "内容判断理由(25字以内)",
  "username_invalid": true/false,
  "username_reason": "用户名判断理由(25字以内)"
}

如果内容正常content_reason 填写 "正常"。如果用户名正常username_reason 填写 "正常"。

兼容性

  • 兼容旧版 API 响应格式(is_spam + reason
  • 自动转换为新格式
  • max_tokens 增加到 150 以支持更详细的响应

相关函数

核心函数

  • argon_detect_spam_comment($comment_id): 执行联合检测
  • argon_generate_unique_username(): 生成唯一用户名
  • argon_async_spam_detection_handler(): 同步检测处理(立即执行)
  • argon_send_username_change_notify_email(): 发送用户名变更通知
  • argon_display_original_username(): 为管理员显示原用户名
  • frontend_delete_comment(): 前台删除评论

文件位置

  • 检测逻辑:functions.php (第 7320-7900 行)
  • 邮件模板:email-templates/username-change-notify.php
  • 前端 JSargontheme.js (deleteComment 函数)

使用建议

  1. 提示词优化:根据实际情况在后台调整 AI 提示词
  2. 白名单管理:将信任的用户邮箱/IP 加入白名单
  3. 检测模式
    • 全量检测:所有评论都检测(推荐新站)
    • 抽查模式:根据用户历史动态调整概率(推荐成熟站点)
  4. 邮件模板:可自定义邮件样式和内容

更新日志

2026-01-22

  • 实现用户名-评论联合检测
  • 用户名不合规且未留邮箱时直接移入回收站
  • 用户名不合规但留了邮箱时自动修改并通知
  • 创建用户名变更通知邮件模板
  • 生成唯一8位标识码
  • 兼容旧版 API 响应格式
  • 改为立即同步执行检测
  • 管理员可查看原用户名
  • 添加前台删除评论功能