Skip to content

Repository files navigation

Minor Detection

面向 AI 拟人化互动的自进化未成年人识别智能体

简体中文 | English

Social Subset Knowledge Subset ClawHub Skill Skillhub Skill Demo Video

离线自进化工具链 × 轻量化未成年人检测 Skill × 多维证据链系统

为 AI 陪伴、教育、客服、社区审核等对话产品提供未成年人识别、证据链输出、风险分级与可持续优化能力。


项目概览

Minor Detection 不是一次性的年龄猜测模型,而是一套面向 AI 拟人化互动场景的可嵌入式风险治理能力层。

它解决的是一条完整链路:

  • 什么时候该触发未成年人识别
  • 如何结合多维证据做出判断
  • 如何输出可审计的证据链与风险等级
  • 如何衔接未成年人模式、人工复核和风险运营
  • 如何围绕真实边界样本持续优化能力

更具体地说,项目希望回答一个现实而尖锐的问题:

当用户不会直接说出年龄,只会在持续对话里留下“晚自习、补课、班主任、宿舍、家长管控、考试安排、校园作息”等隐性线索时,系统能否稳定识别疑似未成年人,并把判断结果转化为真正可执行的保护动作?

因此,Minor Detection 的定位不是“再做分类器”,而是把识别、解释、干预、复核、迭代连成一套可上线的工程闭环。


系统演示

工作台上传文件
workbench upload
输入预览
input preview
多会话识别中
multi session processing
识别结果
result overview
未成年人概率曲线
minor probability curve
多维证据链与外部上下文注入
evidence and context

政策驱动与现实必要性

从国家层面的 AI 治理规则到未成年人网络保护制度,再到专门面向拟人化互动服务的正式办法,相关监管路径已经越来越清晰。本项目所涉及的疑似未成年人识别、模式切换、风险预警与可解释证据链能力,均属于这一路径中的关键落地环节。

其中,国家网信办等五部门于2026年4月10日联合公布的《人工智能拟人化互动服务管理暂行办法》与本项目最直接相关的要求已经进一步明确:

  • 第十三条:要求在保护隐私前提下及时识别用户安全风险,对极端情绪、重大财产损失、自残自杀等情境采取干预与联络措施
  • 第十四条:明确不得向未成年人提供虚拟亲属、虚拟伴侣等虚拟亲密关系服务,并要求建立未成年人模式
  • 第十四条:同时要求在保护隐私前提下采取有效措施识别未成年人用户身份,识别后切换至未成年人模式并提供申诉渠道
  • 第十八条:要求显著提示用户正在与 AI 互动,并对过度依赖、沉迷倾向及连续使用超 2 小时进行动态提醒
  • 第二十三条:将未成年人、老年人等网络保护措施建设情况纳入安全评估重点

这意味着,对于 AI 陪伴与拟人化互动产品,真正的问题已经不再是“要不要做”,而是:

如何在不依赖实名、人脸或平台级账户体系的前提下,仅基于对话内容与行为线索,做出可解释、可落地、可持续优化的疑似未成年人识别?

现实案例与风险信号

项目特色

Minor Detection 关注的不是单点“年龄猜测”,而是一套面向 AI 拟人化互动场景的完整治理能力。

  • 完整治理链路:覆盖触发判断、深度识别、证据链输出、人工复核与后续衔接,而不是只给出一次性分类结果。
  • 多维证据融合:同时利用单会话、多会话、时间线索、长期画像与 RAG 相似案例,更适合处理隐性校园信号和组合证据。
  • 持续优化能力:围绕固定数据集执行评测、诊断、优化、版本对比与人审门禁,不依赖人工零散改规则。
  • 工程可接入性:提供 Skill、工作台、运行时桥接与版本化迭代链路,适合直接接入已有文本对话产品。

从产品与工程视角看,这带来三个直接收益:

  • 更容易接入现有业务:可直接进入已有文本对话流,接入成本更低
  • 更容易解释与复核:不仅输出标签,还输出画像、证据链、风险等级与建议
  • 更容易持续提升:优化过程以真实边界样本与人审门禁为核心

方案链路

聊天窗口 / 多会话历史 / 上游任务请求
                |
         Trigger 边界判断
                |
      Minor Detection Pipeline
 (时间特征 + RAG相似案例 + 分类器 + Schema修复)
                |
  结构化输出:未成年人概率 / 用户画像 / 证据链 / 风险等级 / 下一步建议
                |
 未成年人模式切换 / 人工复核 / 家长侧提醒 / 审核中台 / 风险运营
                |
      离线自进化闭环持续优化
离线自进化工具链 + 轻量化判定 Skill + 多维证据链系统 = 数据驱动、自适应演进的未成年人风险监测智能体

Minor Detection 全局总览

  • Trigger 边界判断:决定当前窗口或任务请求是否已经值得启动未成年人深度识别
  • 多维证据融合:综合当前对话、历史画像、时间特征、相似案例检索与反向信号进行判断
  • 结构化输出:输出未成年人概率、用户画像、证据链、风险等级与下一步建议
  • 长期用户建模:支持从单轮判断扩展到多会话趋势与持续性风险识别
  • 离线自进化:围绕固定数据集执行 评测 → 诊断 → 优化 → 晋级 / 回滚,再对冠军版本进行人审与测试集复核
  • 多场景下游衔接:可继续接到未成年人模式切换、人工复核、家长侧提醒、审核中台与风险运营

理论基础

1. ICBO:从“像不像未成年人”到“为什么这么判断”

本项目中的 ICBO 并非对原始 ICBO/TIC 定义的逐字复现,而是基于其“通过多维可观测线索理解可信意图”的思想,面向未成年人识别任务做出的操作化扩展。

在这一任务化表达中,IB 基本承接原意,C 从内容相关线索进一步推进为可审计的认知特征提炼,O 则将观察视角下可利用的上下文信息具体化为时间机会窗等结构化变量。因此,本项目用如下四个维度来组织用户画像与证据解释:

  • I - Intention:用户当前的直接意图,例如作业求助、校园压力倾诉、考试安排讨论
  • C - Cognition:以克制、可审计的方式描述其认知特点,而非过度心理诊断
  • B - Behavior Style:关注语言与行为风格,例如表达方式、校园化措辞、情绪起伏
  • O - Opportunity Time:保留原始时间线索,并追加结构化时间标签,用于时段机会窗口分析

ICBO

上图展示的是原始 TIC/ICBO 关系示意;本项目采用的是其面向未成年人识别任务的工程化展开版本。因此,图中的 Content / Observer 与本文使用的 Cognition / Opportunity Time 不是逐字等同关系,而是“原始理论 -> 任务化表征”的继承与扩展关系。

2. Trigger-Eval:先解决触发时机,再做深度判别

Trigger-Eval 回答的问题不是“这个人是不是未成年人”,而是“当前输入是否已值得调用 minor-detection 这个 Skill”。

它直接对应 skills/minor-detection/SKILL.mddescription 的触发边界优化,而不是最终分类器能力本身。
当前这套 description 触发数据集共 160 条,专门用于训练和评估:

维度 含义 规模
window_scan 窗口扫描场景,判断当前聊天窗口是否已经值得触发 120
direct_request 直接请求场景,判断上游请求是否明确指向未成年人识别 40
should_trigger 必须触发的正样本 80
should_not_trigger 不能误触发的负样本 80

它重点优化三个问题:

  • 当前聊天窗口是否已经出现足够的未成年人信号
  • 上游请求是否真的在要求未成年人识别
  • 哪些样本属于强触发边界,哪些样本只是“看起来像”但还不该触发

这种“先做触发边界,再做深度判别”的两阶段设计,可以显著降低误触发与乱触发。

3. 自迭代链条:评测、诊断、优化、晋级/回滚、冠军版评估

我们的核心不是一次性写出一份规则,而是构建一条可重复运行的离线演化链路:

  1. 基于固定数据集评测当前版本 Skill
  2. judge 生成失败样本、护栏样本与结构化报告
  3. optimizer 针对性改写触发边界或描述
  4. 新旧版本对比,只根据内环硬门禁决定 promote 或 rollback
  5. 若本轮 promote,则升级 accepted_version;若本轮 rollback,则保留当前 accepted_version 并继续下一轮,直到达到 max_rounds 或遇到结构性阻塞
  6. 多轮结束后得到 champion_version
  7. champion_version 进行人工审核
  8. 人审通过后,用现有测试集一次性跑出 final_validation_metrics 与合同检查指标
  9. 输出 contract_gate_all_green 提醒是否全绿,供人工综合判断

自进化链路
4. 保留人工审核的必要性

未成年人识别具有明显的伦理与合规敏感性,因此本项目明确保留人工审核环节。

人工审核主要防止:

  • 优化器为了指标而偷换边界
  • 版本升级引入不可解释的误伤
  • 在高风险场景中把概率判断误当成确定身份

我们的立场是:模型负责发现风险与提供证据,人类负责最终治理决策。

5. 指标、通过性指标与测试集复核

自迭代链路里,只有内环使用硬门禁,因为它负责决定 candidate 是否能替代当前 accepted 版本。

而在冠军版本阶段,我们会在人审通过后,直接用现有测试集一次性跑出两类结果:

  • 效果指标:例如 accuracyprecisionrecallf1_scoreslice_stats
  • 通过性指标:例如 schema_validity_ratestep_compliance_rateevidence_trace_passfull_output_schema_perfect_pass

这一步还会额外给出一个汇总提示字段:

  • contract_gate_all_green 表示这些通过性指标是否全部为绿

这样做的目的不是把已经跑出来的冠军版本直接作废,而是让人审者在看到效果指标的同时,也能看到结构、执行、证据链和 full smoke 是否健康。

补充一点:在自迭代内环的 judge report 里,类似合同检查的结果如果被提前计算,只会作为 contract_check_preview 出现,表示“当前评测切片上的预览值”;真正人审后脚本对外输出时,才使用 release_contract_gate_results 这类正式字段。


数据与公开资源

公开资源

资源 入口 说明
社交对话数据集 Hugging Face / Social Subset 面向社交与心理场景的公开子集,涵盖生活中常见话题
知识对话数据集 Hugging Face / Knowledge Subset 面向知识场景的公开子集,覆盖K12课本与成人经典考试
ClawHub Skill ClawHub / minor-detection 可直接调用的轻量化能力形态,适用性强
Skillhub Skill Skillhub / minor-detection Skillhub 平台上的公开 Skill 入口,便于快速体验与分发
项目演示视频 Bilibili / 完整系统演示 完整系统演示视频

数据规模

数据模块 作用 主规模 细分构成
Benchmark 数据集 评估真实未成年人信号与成人近似样本之间的区分能力 8,328 社交/心理领域:2603 正 + 1735 负;知识领域:2004 正 + 1986
RAG 检索案例库 提供运行时相似案例辅助判断,也为离线优化提供参考证据 5,829 覆盖未成年人识别相关案例,用于运行时检索与离线优化参考
Trigger-Eval 触发边界数据集 优化“什么时候该启动深度识别”这一触发边界问题 160 window_scan = 120direct_request = 40

这三部分分别承担不同职责:Benchmark 负责评估区分能力,RAG 案例库负责支持运行时相似案例判断和离线优化参考,Trigger-Eval 负责优化触发边界。


同类方案对比

与常见路线相比,Minor Detection 更适合文本对话场景中的 B 端嵌入:

路线 代表方案 更适合的场景 与 Minor Detection 的差异
平台级年龄预测 / 账户治理 OpenAIMeta 自营平台、账号体系完备的消费级产品 我们不依赖平台账户体系,更适合已有文本对话流的外嵌接入
自拍 / 人脸年龄估计 Yoti 注册、支付、成人内容等高强校验场景 我们不采集生物特征,交互摩擦更低,更适合连续互动与隐私敏感场景
规则 / 关键词识别 常规风控规则库 简单初筛与基础风控 我们更能处理隐性校园信号、多会话趋势、时段异常和复杂证据链

从工程视角进一步概括:

  • 如果你的产品已经是平台级超级应用,账户治理路线可能更自然
  • 如果你的场景是强实名或成人内容门禁,人脸估龄路线可能更直接
  • 如果你的产品是 AI 陪伴、教育、客服或审核类对话系统,Minor Detection 这种低摩擦、可嵌入、可解释、可持续优化的方案通常更合适

下游落地场景

Minor Detection 适合作为风险治理基础设施的一部分,用于:

  • 未成年人模式自动切换
  • 人工复核分流
  • 家长侧提醒与监护人控制联动
  • 审核中台接入
  • 风险运营与高风险用户预警
  • AI 陪伴、教育大模型、智能客服、社区审核等产品线

下一步计划

项目下一步会沿着“识别 -> 预警 -> 干预 -> 复核 -> 迭代”继续补齐风险治理闭环,重点包括:

  • 风险预警层:在现有疑似未成年人识别之外,增加对过度依赖、沉迷倾向、情绪极端化、越界关系诱导等风险信号的连续监测
  • 动态干预层:把模型输出进一步映射为现实提醒、未成年人模式切换建议、人工复核升级、监护人或紧急联系人联动建议
  • 运营与评测层:沉淀高风险案例库与时间线样本,支持规则和模型双轨验证、误报漏报复盘,以及版本化评测

仓库结构

.
├── src/                         # 核心运行时、loop、optimizer、models
├── scripts/                     # CLI 入口和维护脚本
├── skills/minor-detection/      # 当前 source-of-truth skill
├── test/                        # 运行时和 loop 测试
├── demo_inputs/                 # 最小 demo 输入
├── GIF/                         # README 动图演示
├── picture/                     # README 配图
├── video/                       # 项目演示视频
├── app_minor_detection.py       # Streamlit 前端演示页
└── requirements.txt             # 依赖列表

快速开始

建议按“环境准备 -> 配置密钥 -> 启动前端 -> 再看进阶链路”的顺序体验项目。

0. 环境准备与安装依赖

建议使用 Python 3.10+,并在独立虚拟环境中体验本项目。

可任选一种方式创建环境:

conda create -n minor-detection python=3.10
conda activate minor-detection

或:

python -m venv .venv
source .venv/bin/activate

Windows PowerShell:

python -m venv .venv
.venv\Scripts\Activate.ps1

安装依赖:

python -m pip install -r requirements.txt
1. 配置模型凭证

首次体验前,请先配置你自己的 API Key。
最简单的方式是配置一个统一的 OpenAI-compatible Key,项目会自动复用到分类与检索流程:

export AIHUBMIX_API_KEY="your-api-key"

如果你使用的是 OpenAI-compatible 网关,也可以配置:

export OPENAI_API_KEY="your-api-key"

Windows PowerShell:

$env:AIHUBMIX_API_KEY="your-api-key"

如果你希望分类器和 embedding 使用不同配置,也可以分别设置:

  • MINOR_DETECTION_CLASSIFIER_BASE_URL
  • MINOR_DETECTION_CLASSIFIER_API_KEY
  • MINOR_DETECTION_CLASSIFIER_MODEL
  • MINOR_DETECTION_EMBEDDING_BASE_URL
  • MINOR_DETECTION_EMBEDDING_API_KEY
  • MINOR_DETECTION_EMBEDDING_MODEL

如果没有配置分类器凭证,运行时不会静默调用未知远程接口,而是直接报错。

2. 前端演示:最推荐的首次体验方式
python -m streamlit run app_minor_detection.py

用于启动 Streamlit 前端工作台,查看系统演示效果。

启动后,建议直接加载以下示例输入体验完整流程:

  • demo_inputs/minor_detection_single_session_payload.json
  • demo_inputs/minor_detection_multi_session_payload.json
  • demo_inputs/minor_detection_demo_payload.json
3. Agent CLI 适配说明:Mode A / Description 线路通用

只有 Mode ADescription 主线Description 副线Description 最终验证 这几条 Agent 线路需要这一节。
Mode B 是纯 Python direct runner,不依赖外部 Agent CLI。

本项目现在支持两种 Agent 后端:

  • --agent-backend codex
    • 默认模式
    • 适合本机已经安装并登录 codex 的情况
  • --agent-backend cli
    • 适合接入其他厂商的 Agent CLI
    • 需要你显式传入 --agent-cmd,必要时再传 --agent-args-template

如果使用其他厂商 CLI,当前适配层的约定是:

  • Agent prompt 会由本项目通过 stdin 传入,不需要你自己重定向文件
  • 你的 CLI 最好直接把最终 JSON 打到 stdout
  • 如果该 CLI 支持把最终回答写到文件,也可以在模板里使用 {final_output_path}
  • 可用占位符包括:
    • {agent_cmd}
    • {workspace_dir}
    • {prompt_file}
    • {final_output_path}
    • {installed_skill_dir}
    • {output_schema_path}
    • {sandbox_mode}
    • {execution_mode}
    • {agent_model}

一个已经验证通过的通用 CLI 写法如下。它本质上走的是 cli 适配层,只是底层 CLI 仍然填写 codex,方便你参考如何替换成其他厂商:

--agent-backend cli \
--agent-cmd codex \
--agent-args-template '{agent_cmd} exec - --json --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox --cd {workspace_dir} --output-last-message {final_output_path} --add-dir {installed_skill_dir} --add-dir {workspace_dir}'

如果你已经安装并登录 codex,也可以直接不传上面这组三个参数,使用默认的 codex 后端。

4. 开发者进阶:主线能力迭代 Mode A / Mode B

这一部分更适合项目开发和能力优化,不是普通用户首次体验的必经步骤。 下面给出的命令是“先确认链路是否跑通”的 smoke 命令,不是一次性跑完整数据集。

Mode A:Agent 参与的主线迭代

python scripts/run_skill_iteration_loop.py \
  --baseline-version minor-detection-v0.1.0 \
  --baseline-source-dir skills/minor-detection \
  --dataset data/benchmark/val.jsonl \
  --max-rounds 1 \
  --max-samples 3 \
  --sample-strategy stratified \
  --sample-seed 42 \
  --workspace-root reports/skill_agent_loops \
  --execution-mode bypass \
  --timeout-sec 600
  • 入口:scripts/run_skill_iteration_loop.py
  • 使用数据集:data/benchmark/val.jsonl
  • 用途:运行 Agent 参与的 Skill 主线迭代流程
  • 默认前提:本机已安装并登录 codex
  • 如果要切换到其他厂商 Agent CLI,请在命令后追加上一节的 --agent-backend cli --agent-cmd ... --agent-args-template ...

Mode B:Direct Runner 主线迭代

python scripts/run_direct_iteration_loop.py \
  --baseline-version minor-detection-v0.1.0 \
  --baseline-source-dir skills/minor-detection \
  --refresh-baseline-version \
  --dataset data/benchmark/val.jsonl \
  --max-rounds 1 \
  --max-samples 5 \
  --sample-strategy stratified \
  --sample-seed 42 \
  --workspace-root reports/skill_direct_loops \
  --timeout-sec 600
  • 入口:scripts/run_direct_iteration_loop.py
  • 使用数据集:data/benchmark/val.jsonl
  • 用途:运行 direct runner 版本的主线迭代,用于对比 modeA / modeB 主链表现
5. 开发者进阶:Description 触发边界主线与副线

这一部分用于优化 skill 触发边界,适合研究或迭代阶段使用。 下面同样优先给出 smoke 命令,避免首次上手就直接跑完整数据集。

Description 主线:触发边界优化

python scripts/run_trigger_description_iteration_loop.py \
  --baseline-version minor-detection-v0.1.0 \
  --baseline-source-dir skills/minor-detection \
  --refresh-baseline-version \
  --optimization-set data/trigger_eval/minor_detection_trigger_eval_v1_optimization_set.json \
  --final-validation-set data/trigger_eval/minor_detection_trigger_eval_v1_final_validation_set.json \
  --max-rounds 1 \
  --max-samples 4 \
  --sample-strategy stratified \
  --sample-seed 42 \
  --workspace-root reports/trigger_description_loops \
  --execution-mode bypass \
  --timeout-sec 600
  • 入口:scripts/run_trigger_description_iteration_loop.py
  • 优化目标:skills/minor-detection/SKILL.md frontmatter 中的 description
  • 使用数据集:
    • data/trigger_eval/minor_detection_trigger_eval_v1_optimization_set.json
    • data/trigger_eval/minor_detection_trigger_eval_v1_final_validation_set.json
  • 默认前提:本机已安装并登录 codex
  • 如果要切换到其他厂商 Agent CLI,请在命令后追加上一节的 --agent-backend cli --agent-cmd ... --agent-args-template ...

Description 副线:standalone full smoke

python scripts/run_trigger_eval.py \
  --version minor-detection-v0.1.0 \
  --dataset data/trigger_eval/minor_detection_trigger_eval_v1.json \
  --workspace reports/trigger_eval_runs \
  --max-samples 4 \
  --sample-strategy stratified \
  --sample-seed 42 \
  --execution-mode bypass \
  --timeout-sec 600
  • 入口:scripts/run_trigger_eval.py
  • 使用数据集:data/trigger_eval/minor_detection_trigger_eval_v1.json
  • 用途:验证 trigger 判断、skill 激活与完整 minor-detection JSON 输出
  • 默认前提:本机已安装并登录 codex
  • 如果要切换到其他厂商 Agent CLI,请在命令后追加上一节的 --agent-backend cli --agent-cmd ... --agent-args-template ...

Description 最终验证

python scripts/run_trigger_description_validation.py \
  --version minor-detection-v0.1.0 \
  --dataset data/trigger_eval/minor_detection_trigger_eval_v1_final_validation_set.json \
  --workspace reports/trigger_description_validations \
  --max-samples 4 \
  --sample-strategy stratified \
  --sample-seed 42 \
  --execution-mode bypass \
  --timeout-sec 600
  • 入口:scripts/run_trigger_description_validation.py
  • 使用数据集:data/trigger_eval/minor_detection_trigger_eval_v1_final_validation_set.json
  • 用途:对最终 description 版本执行独立 validation
  • 默认前提:本机已安装并登录 codex
  • 如果要切换到其他厂商 Agent CLI,请在命令后追加上一节的 --agent-backend cli --agent-cmd ... --agent-args-template ...
6. 测试与常用参数

运行测试:

python -m unittest discover -s test

常用参数:

  • --max-rounds
  • --max-samples
  • --sample-strategy sequential|random|stratified
  • --execution-mode sandbox|bypass
  • --sandbox-mode read-only|workspace-write|danger-full-access
  • --codex-model
  • --agent-backend codex|cli
  • --agent-cmd
  • --agent-args-template
  • --agent-model
  • --timeout-sec
7. 最短复现路径

如果你只想确认“从 GitHub clone 后能否复现并体验项目”,建议按以下顺序执行:

python -m pip install -r requirements.txt
export AIHUBMIX_API_KEY="your-api-key"
python -m streamlit run app_minor_detection.py

环境变量

bundled skill 主要读取以下环境变量:

  • AIHUBMIX_API_KEY
  • OPENAI_API_KEY
  • MINOR_DETECTION_CLASSIFIER_BASE_URL
  • MINOR_DETECTION_CLASSIFIER_API_KEY
  • MINOR_DETECTION_CLASSIFIER_MODEL
  • MINOR_DETECTION_EMBEDDING_BASE_URL
  • MINOR_DETECTION_EMBEDDING_API_KEY
  • MINOR_DETECTION_EMBEDDING_MODEL

如果没有配置分类器凭证,运行时不会静默调用未知远程接口,而是直接报错。


伦理与使用声明

请在引用、部署或二次开发前阅读
  • 本项目面向未成年人保护、风险识别与产品安全治理,不用于法律意义上的年龄认证
  • 基于对话内容的未成年人判断本质上是概率推断,而非身份事实确认
  • 项目不鼓励将模型输出直接用于惩罚性、歧视性或不可申诉的自动化决策
  • 涉及高风险处置、模式切换、账号限制或监护人联动时,应保留人工复核与申诉机制
  • 数据集公开部分遵循保守边界,不发布可追溯真实个体身份的信息

引用

@misc{minor_detection_github_2026,
  title        = {Minor Detection: Self-Evolving Minor-User Identification Agent for Anthropomorphic AI Interaction},
  author       = {Xiaohan Zhang and Yukun Wei and Kaibo Huang and Zhongliang Yang and Linna Zhou},
  year         = {2026},
  howpublished = {https://github.com/xiaohanzhang2005/Minor-Detection},
  note         = {GitHub repository}
}

About

Self-evolving minor-user identification agent for anthropomorphic AI interaction, with trigger evaluation, evidence chains, and deployable protection workflows.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages