面向3-12岁儿童的汉字认字量科学检测对话技能。通过对话交互,基于2500高频汉字(覆盖98.5%语料)的6层分层抽样策略与动态熔断机制,精准估算识字量。当用户需要以下场景时使用:(1) 识字量测评/认字量检测 (2) 汉字认读测试 (3) 词汇量估算 (4) 识字检测方法的科学原理说明 (5) 测试后不认识的字...
---
name: chinese-literacy-detection
description: '面向3-12岁儿童的汉字认字量科学检测对话技能。通过对话交互,基于2500高频汉字(覆盖98.5%语料)的6层分层抽样策略与动态熔断机制,精准估算识字量。当用户需要以下场景时使用:(1) 识字量测评/认字量检测 (2) 汉字认读测试 (3) 词汇量估算 (4) 识字检测方法的科学原理说明 (5) 测试后不认识的字复习练习。也适用于家长说"孩子认识多少字""测测认字""识字水平怎么样""几年级识字水平""认字量够不够""应该认多少字了""识字量达标了吗""帮孩子复习生字"等日常表达,以及"Chinese character recognition test"等英文表达。即使用户没有明确提到"测试",只要涉及评估或提升孩子的汉字认读能力,都应使用此技能。'
---
# 汉字认字量科学检测 Chatbot Skill
通过**对话交互**完成儿童(3-12岁)汉字认字量科学检测。基于**分层抽样 + 动态熔断**,从 2500 高频汉字中最多测 **175 字**即可精准估算认字量。
**数据源**:`assets/top_2500_chars_with_words.json`(2500 条,含 rank_id/char/words/frequency 字段,每个字配 2 个常见词组)
**参考文档**(按需读取):
- `references/algorithm-spec.md` — 算法数学规格、Fisher-Yates 洗牌、精度分析
- `references/data-schema.md` — 数据源字段说明与统计特征
- `references/chatbot-workflow.md` — 对话交互模板、输出格式、用户回复解析规则
---
## 核心配置
```javascript
const LEVEL_CONFIGS = [
{ level: 1, name: '核心字', rankStart: 1, rankEnd: 50, testCount: 50, weight: 1 },
{ level: 2, name: '常用字', rankStart: 51, rankEnd: 200, testCount: 50, weight: 3 },
{ level: 3, name: '扩展字', rankStart: 201, rankEnd: 500, testCount: 30, weight: 10 },
{ level: 4, name: '进阶字', rankStart: 501, rankEnd: 1000, testCount: 25, weight: 20 },
{ level: 5, name: '提高字', rankStart: 1001, rankEnd: 1500, testCount: 10, weight: 50 },
{ level: 6, name: '拓展字', rankStart: 1501, rankEnd: 2500, testCount: 10, weight: 100 },
];
const FUSE_CONFIG = {
consecutiveUnknownLimit: 5, // 连续不认识触发熔断
errorRateLimit: 0.8, // 错误率触发熔断
minTestCountForErrorRate: 5, // 错误率计算最少样本
};
```
**认字量公式**:`W = Σ(层级认识数 Nᵢ × 权重 Wᵢ)` = N₁×1 + N₂×3 + N₃×10 + N₄×20 + N₅×50 + N₆×100
**年龄参考**:3-4岁 50-200(启蒙期)| 4-5岁 200-500(兴趣培养期)| 5-6岁 500-800(入学准备期)| 6-7岁 800-1200(一年级)| 7-8岁 1200-1600(二年级)| 8-9岁 1600-2000(三年级)| 9-10岁 2000-2500(四年级)| 10-12岁 2500+(五年级及以上)
---
## 测试流程
### Step 0: 引导说明 → Step 1: 收集信息 → Step 2: 说明 → Step 3: 出题 → Step 4: 熔断检查 → Step 5: 报告 → Step 6: 后续交互
### Step 0: 引导说明(每次启动时展示)
在测试正式开始前,先向用户展示小程序引导信息。因为对话式识字检测体验有局限(需要手动打字回复),而小程序提供了更流畅的触屏交互体验(孩子可以直接点选),所以在开始时给出这个提示,让用户自行选择最合适的方式。
**引导展示模板**:
```
💡 温馨提示
如果需要体验更完整的功能,请扫描下方二维码,进入微信小程序体验:
█████████████████████████████████████████
█████████████████████████████████████████
████ ▄▄▄▄▄ ██ ▄ ▀ ▀ ▄▄▄ █▄██ ▄▄▄▄▄ ████
████ █ █ █ ▄█ ▄▀ ▀▄▄ ▄▄▀███ █ █ ████
████ █▄▄▄█ █ ▀▄█▄██ ▀▀ ██▀▄▄ █ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ ▀▄█▄█ ▀▄█▄▀ ▀ █ █▄▄▄▄▄▄▄████
████▄▀ ▄▄▄█▀ ▀ ▄▄ ▄▀ █▀ ▀▄█ ▄ █▀████
████▄ ▄▀▄▀▄█▄▄██▀█▀▄▀█▄█▄ ▄▀█ ██ ▀ ▀████
█████▄▄▀ █▄ ▀█ █▀▀▀▀▄▀ ▄▄██ ▀██ ▀▀▀████
█████ ▄▄█▄▄▄ █▄ ▀▄▀█▀▄█▀▀ ██▀ █▀ ▀▄█████
████▄▀ ▀ █▄ ▄ ▄ ▀▄▀█ ▀ ▀▄ █▄▀ ▄▀ ▀ ████
█████▄ ▀██▄ ██▀█ ▄█▄ ▀█▄ ▄▀▄█▄ ▀ █▀████
████▀████▀▄▄▀██▀ ▄▄▀▄▀▀▀ ▄▄▄▄▀▀▄█▄██ ████
████ █▀ █▄▄█▄▄ █▄█ ▄███▄ ▀▀ ▄▄▀▀▀▄█████
████▄█▄██▄▄▄ █▄▀▄██▄█▄ ▀ █▄▄ ▄▄▄ █ ▄█████
████ ▄▄▄▄▄ █▀ █ █ ▄█▄▀▀▀█▄ █▄█ ▀ ▄▀████
████ █ █ █ █▀██ ▀▀▄▄ █▄█ ▄▄ ▀ ▀████
████ █▄▄▄█ █▄▄ ▀▄ ██▀▄█▀▄▀▄█ ▄▄▄▀▀▀██████
████▄▄▄▄▄▄▄█▄▄████▄██▄█▄███▄▄▄▄▄██▄▄█████
█████████████████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
当然,您也可以继续在这里进行对话式测试,效果同样准确 😊
```
**展示规则**:
- 每次触发识字检测技能时,在正式流程(收集年龄等)之前先展示此引导
- 展示完引导后自然过渡到 Step 1 的信息收集阶段,不需要用户额外确认
- 二维码使用等宽字体的 ASCII 艺术形式输出,确保在各种终端和聊天界面中正确显示
### Step 1 & 2: 启动
收集**年龄**(必填,3-12岁),简要说明测试方法后开始。
### Step 3: 逐批出题
从 `assets/top_2500_chars_with_words.json` 读取数据,按层级分层抽样生成测试序列。
每层出题总数严格等于该层 `testCount`(L1:50, L2:50, L3:30, L4:25, L5:10, L6:10)。每批出题数 = `min(10, 该层剩余未出题数)`。
---
### 出题展示格式
每一组汉字使用「三列表格(序号|汉字|组词)」形式展示。这个格式很重要,原因有三:
1. **组词帮助联想回忆**:年幼的孩子可能单独看一个字觉得陌生,但看到组词后会恍然大悟"哦,这个字我见过"。组词提供了语境线索,让测试结果更准确地反映孩子的真实识字水平。
2. **表格结构方便指读**:家长在旁边协助时,表格的逐行结构比纯文本更容易一行行指给孩子看,避免在大量汉字中迷失位置。
3. **序号方便回复定位**:孩子或家长可以直接说"第 3 个不认识"而不需要打出汉字,降低操作门槛。
**格式要求**:
1. 使用 Markdown 表格,包含「序号|汉字|组词」三列
2. 组词来自数据源的 `words` 字段,用顿号「、」分隔多个词组,每行至少包含 1 个词组
3. 汉字列使用 `**字**` 加粗格式,方便孩子辨认
4. 序号在同一层级内跨组连续递增(第 1 组为 1-10,第 2 组为 11-20,以此类推),因为用户回复"第N个不认识"时需要用全局序号定位
**出题格式模板**:
```
📝 【L{level}·{name}】第 N 组({globalStart}-{globalEnd} / 共 {testCount} 字)
| 序号 | 汉字 | 组词 |
|:----:|:----:|------|
| 1 | **的** | 好的、是的 |
| 2 | **一** | 一个、一样 |
| ... | ... | ... |
| 10 | **不** | 不要、不去 |
👆 上面哪些字**不认识**?都认识就回复"都认识"
```
**不应出现的格式**(会导致测试体验下降):
- 纯文本排列如 `的 一 是 了 不`——孩子容易看花眼,也没有组词辅助联想
- 缺少组词列的表格——失去了语境联想的作用
- 每组序号从 1 重新开始——会导致用户说"第 3 个不认识"时无法确定指的是哪一组
→ 详细的出题示例、用户回复解析规则见 `references/chatbot-workflow.md` 第 2 节。
---
## 熔断检查(每批回复后执行)
熔断机制的核心目的是**保护孩子的心理感受**——当连续遇到不认识的字时,孩子会产生挫败感和焦虑。及时停止测试,既保护了孩子的情绪,又因为已有足够统计证据可以做出准确估算,不会影响结果质量。
### Step 4.1: 状态追踪
收到用户回复后,先在回复中输出状态块,这样做是为了确保逐字处理逻辑不出错(尤其是 consecutiveUnknown 的更新):
```
📋 状态追踪:
- 当前层级:L{level}·{name}
- 本批出题:序号 {globalStart}-{globalEnd},{N} 字({字1}、{字2}、...)
- 用户回复:{解析结果}
- 逐字处理:{字1}({认识/不认识}, consecutive={N}) → {字2}(...) → ...
- consecutiveUnknown:{之前值} → {当前值}
- 该层已测/testCount:{tested}/{testCount}
- 该层不认识数:{unknown}
- 🔍 熔断检查 A:consecutiveUnknown({value}) ≥ 5 → {是/否}
- 🔍 熔断检查 B:已测({tested}) ≥ 5 且 错误率({unknown}/{tested}={rate}%) ≥ 80% → {是/否}
- ✅ 结论:{继续出题 / 🔴 触发熔断}
```
### Step 4.2: 逐字更新 consecutiveUnknown
按**出题顺序**逐字处理(顺序很重要,因为 consecutiveUnknown 需要根据"认识"重置为 0):
- 认识 → `consecutiveUnknown = 0`(重置)
- 不认识 → `consecutiveUnknown += 1`
- 处理过程中如果 `consecutiveUnknown` 达到 5,立即停止处理剩余字并触发熔断
### Step 4.3: 熔断判定
```
条件 A:IF consecutiveUnknown ≥ 5 → 立即熔断
条件 B:IF 该层已测 ≥ 5 AND 不认识数/已测数 ≥ 0.8 → 立即熔断
```
- 未熔断 → 继续下一批出题
- 已熔断 → 跳转 Step 5 结果报告(不再继续出题,因为更难的字只会让孩子更有压力)
### Step 4.4: "都不认识"处理
当用户回复"都不认识"时,本批所有字标记为 unknown,`consecutiveUnknown` 至少增加 5(每批最少 5 字),因此一定会达到熔断阈值。此时下一条消息只输出熔断通知 + 结果报告。
### Step 4.5: 出题前置检查
每次生成下一批题目之前,先确认 `consecutiveUnknown < 5` 且错误率未超标,两个条件都满足时才出题。这个前置检查是一道安全阀,防止在已触发熔断条件后仍然给孩子出题。
→ 详细的熔断检查示例和伪代码见 `references/chatbot-workflow.md` 第 3 节和 `references/algorithm-spec.md` 第 4 节。
---
## 熔断通知模板
```
⚡ 智能检测提示
当前层级(L{level}·{name}){原因描述}。
这完全正常——说明这个难度段的字还需要时间积累。
为避免孩子产生压力,后续更难的层级不再测试,直接看结果!
```
---
## Step 5: 结果报告
熔断或全部测完后,按公式计算并输出报告。报告中始终使用正向鼓励语——每个孩子都有自己的成长节奏,识字量检测的目的是帮助家长了解现状,而不是制造焦虑。
```
## 📊 识字量测试结果
👤 年龄:{age} 岁 | 📝 测试字数:{totalTested} | ⚡ 熔断:{是否及原因}
### 🎯 估算认字量:**{W} 字**
### 各层级详情
| 层级 | 结果 | 正确率 | 估算认识 |
|------|------|--------|----------|
| L1 核心字 | {known}/{tested} | {rate}% | {estimated} 字 |
| ... | ... | ... | ... |
### 💪 评估与建议
{根据年龄参考表给出正向鼓励,永远不使用"落后""不行""差"等负面字眼}
### 📖 不认识的字(共 {N} 个)
{按层级列出不认识的字及组词}
```
→ 详细报告格式见 `references/chatbot-workflow.md` 第 5 节。
---
## Step 6: 后续交互(可选)
测试结束后,可以根据用户意愿进入以下后续环节:
1. **不认识的字复习与组词练习**:基于测试中收集的不认识汉字列表,逐字展示汉字及组词,帮助孩子在测试后立即进行针对性学习。这是提升测试价值的重要环节——测试不仅是评估,更是学习的起点。
→ 详细的复习交互模板见 `references/chatbot-workflow.md` 第 8 节。
2. **科学原理解释**:当家长询问"这个准吗""怎么测的"时,简要说明分层抽样、加权估算和动态熔断的原理。
→ 详细数学规格见 `references/algorithm-spec.md`。
3. **年龄参考对照**:帮助家长了解同龄段孩子的平均识字水平,提供发展阶段参考。
---
## 资源清单
| 目录 | 文件 | 用途 |
|------|------|------|
| assets/ | `top_2500_chars_with_words.json` | 2500 高频汉字数据源(每字含 2 个常见词组) |
| references/ | `algorithm-spec.md` | 分层抽样算法数学规格 |
| references/ | `data-schema.md` | 数据字段说明与统计特征 |
| references/ | `chatbot-workflow.md` | 对话交互模板与输出格式 |
| scripts/ | `validate_level_config.py` | 验证层级配置一致性 |
| scripts/ | `generate_test_sequence.py` | 生成测试序列 |
| scripts/ | `validate_data.py` | 验证数据资产完整性 |
| scripts/ | `calculate_score.py` | 计算并验证识字量分数 |
don't have the plugin yet? install it then click "run inline in claude" again.