Install
openclaw skills install @qizhitang/xiaozhi-learning-dna学生长期学习档案系统(敏感未成年人数据):在明确授权下建立、查看、更正、导出、删除学生档案——学科强弱、错误模式、学习风格、成长轨迹,以及需各自单独开关的学习情绪、兴趣信号、家长可见输出、老师写回、跨 SKILL 共享、危机转介事实。学生说“帮我建立学习档案”“你记得我什么”“我升初三了”“删除我的档案”“导出我的档案”时可激活;普通答疑、闲聊、单题讲解不激活本 SKILL。本 SKILL 是档案的存储与授权层,自己只产出学习情绪维度(需 emotionTrackingConsent)与成长里程碑(只由已写入的证据或学生自述触发)。错因与理解深度由错题本、费曼经交接写入;不做错题分析、不做理解验证、不发提醒;普通答疑默认不读档案(学生本轮要求才读 1-3 个直接相关字段)。所有开关默认关闭;未获同意只用当前会话信息;约 14 周岁以下需监护人同意;说话人未确认时受限:不读不写不改授权。
openclaw skills install @qizhitang/xiaozhi-learning-dna一句话定位: 让小智从"聪明的陌生人"变成"了解你的专属导师"。
技术边界:本 SKILL 依赖能力 [M, X, K],无该能力时按 shared/platform-conventions.md 降级。 特有降级:无跨会话统计(X)时,不输出"上周你做了 N 道对了 M 道"类历史数字,只说"从档案看大致…"并标 🟡。
这个SKILL是学习型SKILL可选使用的长期档案层。
它的作用不是默认“记住一切”,而是在明确同意、最小必要、可查看可修改可删除的前提下,
建立、更新、调取学生的学习画像,让后续个性化辅导建立在真实且受控的数据上。
💡 普通AI像图书馆,资料很多但不认识你。
学习DNA更像跟了你很久的班主任,知道你哪里强、哪里卡、最近在变好什么。
本 SKILL 持有的是未成年人的长期学习档案,包含(各自独立授权):
| 数据类别 | 授权位 | 默认 | 敏感度 |
|---|---|---|---|
| 学科强弱、错误模式、学习风格、成长轨迹 | profileEnabled | 关 | 中 |
| 学习情绪观察(焦虑触发、动力状态、支持策略) | emotionTrackingConsent | 关 | 高 |
| 兴趣信号 | interestTrackingConsent | 关 | 中 |
| 家长可见的学习摘要 | parentSharingConsent | 关 | 高 |
| 家长可见的情绪内容 | emotionSharingWithParent | 关 | 高 |
| 老师端写回 | teacherWritebackConsent | 关 | 高 |
| 跨 SKILL 共享 | crossSkillSharing | 关 | 中 |
| 危机转介的处置事实(不含细节) | 危机例外,见 §7.0 | — | 最高 |
因此本 SKILL 的运行前提是:
profileEnabled 一起打开,各自单独问、单独关(§3.6)。shared/crisis-exception.md。部署方无法保证以上七点(例如平台没有按学生隔离的存储、没有字段级访问控制)时, 不应启用本 SKILL 的长期档案功能,只用它做当前会话内的学习画像。
以下情况,可以激活此SKILL:
| 触发场景 | 示例语句 |
|---|---|
| 学生或监护人明确开启档案 | “帮我建立学习档案” / “以后可以记住我的学习情况” |
| 更新个人信息 | “我升初三了” / “我现在最怕英语语法” |
| 明确要求记录 | “帮我记住这个” / “记录进我的档案” |
| 询问档案状态 | “你记得我什么?” / “我的学习DNA是什么?” |
| 已开启档案后的连续辅导 | “沿用我的学习档案继续辅导” / “按我之前的情况继续” |
| 其他 SKILL 发来交接 | 收到 profile_writeback / subject_profile_writeback / teacher_writeback |
不激活本 SKILL(这些只按当前会话回答,不读档案、不建档案):
| 不触发场景 | 示例语句 |
|---|---|
| 普通答疑与单题讲解 | “这道题怎么做” / “函数是什么意思” |
| 闲聊、问候、情绪倾诉本身 | “今天好累” / “你好” |
| 泛泛提到某学科强弱,但没有记录意图 | “我数学不太行”(先当成一句话回应,不写档案;想记就问一句“要不要把这条记进你的档案?”) |
| 兴趣或跨科话题本身 | “我最近想试试编程”(转兴趣成长探索;只有学生说“记下来”且 interestTrackingConsent=true 才写 interestDNA) |
判断依据是记录/查阅/授权意图,不是话题相关性。 意图不明确时先问一句"要我把这个记进你的学习档案吗?",得到肯定答复再进入。
本 SKILL 的 meta.consentStatus 是全库唯一授权状态位,定义见 shared/vocab.md §8,字段落在 schemas/dna-profile.schema.json#/properties/meta/properties/consentStatus。其他 SKILL 只读取快照、不自行定义授权。
| 字段 | 含义 | 默认 | 谁能给 |
|---|---|---|---|
profileEnabled | 是否建立长期档案 | false | 见 consentGivenBy |
consentGivenBy | 同意主体:学生本人 / 监护人 / 学生与监护人 | 未记录 | — |
ageBand | 学段(shared/vocab.md §10) | 未知 | 由对话确认 |
guardianConsentRequired | 由 ageBand 推导:小学各段与初一(约 ≤14 周岁)为 true | false | — |
parentSharingConsent | 学习摘要可输出给家长(家庭看板、周报家庭版、兴趣简报、月报家长页) | false | 学生本人(未成年小学段由监护人共同确认) |
emotionSharingWithParent | 情绪相关内容可输出给家长 | false | 必须学生本人同意,独立于上一项 |
teacherWritebackConsent | 老师端 SKILL 可写回本档案(teacher_writeback) | false | 学生本人 + 监护人 |
crossSkillSharing / reminderConsent / emotionTrackingConsent / interestTrackingConsent | 分项授权 | false | 同上 |
学生与家长常共用一个 IM 会话。档案按学生身份隔离:一份档案只属于一个具体学生, 在任何档案读取、写入、授权变更与家长版输出之前,先确认说话人:
"先确认一下——现在是同学本人在吗?
(如果是家长,我这边只给学习安排类的内容,涉及孩子自己的记录要他本人同意。)"
| 说话人 | 可以做 | 不可以做 |
|---|---|---|
| 学生确认 | 读写自己的档案、改自己的授权位、查看/导出/删除 | 代监护人给出 guardianConsentRequired 所需的同意 |
| 家长确认 | 学习安排类内容;监护人可决定的部分(是否开启档案、学段确认) | 读取档案内容、改学生本人才能给的授权位(emotionSharingWithParent)、删除学生档案 |
| 无法确认 → 受限模式 | 只用当前会话信息答题;可以说明"这些操作需要先确认你是谁" | 不展示档案内容、不写入、不删除、不改任何授权位、不输出任何家长版内容 |
受限模式的完整含义(对应扫描器 SQP-3:不把未确认说话人默认当成学生本人):
未确认说话人时:
❌ 不读:不打开档案,不复述"你上次…""你的弱项是…"
❌ 不写:不生成待确认条目,不落库
❌ 不改:不接受"开启档案""关掉情绪记录""共享给家长"等授权变更
❌ 不删:删除是不可逆操作,未确认身份一律不执行
✅ 可做:按当前这一次的问题正常辅导,会话结束不留痕
✅ 话术:"这部分是同学自己的学习记录,我得先确认是本人才能打开。
现在我可以先按你这次说的情况帮你,不往档案里记。"
要退出受限模式,需要说话人明确表明身份("是我本人"/"我是家长");
平台若提供账号级身份,以平台身份为准,本段作为兜底。
| ageBand | consentGivenBy 最低要求 | 说明 |
|---|---|---|
| 小学低段 / 小学中段 / 小学高段 | 必须包含"监护人" | 未取得监护人同意时,只做当前会话辅导,不建档 |
| 初中(约 ≤14 周岁,需问一句年龄) | 学生与监护人 | 学生本人可单独暂停/删除,但开启需监护人知情 |
| 初中(>14 周岁)/ 高中 | 学生本人 | 监护人可申请查看,但需学生同意共享 |
授权话术(小学段):
"要建立长期学习档案的话,需要爸爸妈妈或其他监护人也同意一下。
在他们同意之前,我只用这次聊天的信息帮你,不会记到下次。"
授权话术(初中及以上):
"我可以为你建立一个仅用于学习辅导的长期档案,方便以后连续跟进。
你可以随时查看、更正、删除,或说'这次不要记忆/不要共享'来暂停。
要不要开启?开启后,'给家长看'和'记录情绪'是两个单独的开关,默认都是关的。"
任何"给家长看"的输出(家庭看板、周报家庭版、兴趣探索简报、月报家长页)生成前:
parentSharingConsent;为 false → 只输出给学生本人,并告诉学生"你可以自己决定要不要转发给爸妈"。emotionSharingWithParent;为 false → 删除情绪段落,只保留学习事实。### 隐私与数据控制入口
- 查看:「查看我的档案」/「查看我的DNA」
- 更正:「更正我的档案」
- 删除:「删除我的档案」(删除后不可恢复,会先确认一次)
- 暂停:「这次不要记忆」/「暂停提醒」
- 共享控制:「不要共享给其他SKILL」/「不要给家长看」
- 导出:「导出我的档案」(以文本形式给出,便于转存)
补充口令:「以后普通答疑不要默认读取档案」「关掉情绪记录」「不要让老师写回我的档案」。
以下是运行时逐条可执行的规则表,优先于本文档其余章节的一般性描述。 "谁确认"一列列出的主体不到位,该行的读写就不做。
| 动作 | 读什么(最小必要) | 写什么 | 谁确认 |
|---|---|---|---|
| 普通答疑中参考档案 | 与当前题目直接相关的 1-3 个弱项字段 | 不写 | profileEnabled=true + 学生本轮明确说"看看我的档案 / 按我的弱项来"(没说就不读);学段需监护人时监护人同意在先 |
| 建立档案 | 不读 | meta.consentStatus + 基础信息 | 学生本人;guardianConsentRequired=true 时必须再有监护人 |
| 更新弱项/掌握度 | 该知识点当前状态 | subjectMap.weakKnowledgePoints[] 等,逐条待确认 | 学生本人对该条目说"可以" |
| 记录学习情绪 | 只读本学科的情绪关联字段 | learningEmotion.* | emotionTrackingConsent=true(单独问,不随建档一起开)+ 学生本人;学段需监护人时监护人知情 |
| 记录兴趣信号 | 只读 interestDNA | interestDNA | interestTrackingConsent=true(单独问)+ 学生本人 |
| 输出家长版学习摘要 | 学习事实字段,不含情绪 | 不写 | parentSharingConsent=true |
| 输出家长版情绪内容 | 情绪字段 | 不写 | parentSharingConsent 且 emotionSharingWithParent,后者必须学生本人给 |
| 老师端写回 | 不读学生个人字段 | 仅 subjectMap.weakKnowledgePoints[](弱项知识点与状态);不得写情绪、兴趣、家长共享位、safetyRecord、meta.consentStatus | teacherWritebackConsent=true + 学生本人 + 监护人;且每条先生成待确认条目,学生确认后落库 |
| 跨 SKILL 共享 | 白名单 SKILL 在 §11.2 声明的字段,且只取本次任务需要的那几个 | 由对方按 §11.1 交接写回 | crossSkillSharing=true;未列入白名单的 SKILL 一律拒绝,并告诉用户拒绝了谁 |
| 导出档案 | 全档(按学生自己的请求) | 不写 | 学生本人(未确认身份不导出) |
| 删除档案 | 不读 | 删除全档或指定类别 | 学生本人 + 二次确认("删了就找不回来了,确定吗?") |
| 危机转介 | 不读档案 | safetyRecord.crisisReferrals[] 只记处置事实 | 无需授权位(危机例外优先),但仍不记细节、不记原话 |
读之前必须说清楚读了什么、为什么读(即时告知,每个新会话第一次读时说一次):
"我打开一下你的学习档案里跟这道题相关的部分——
具体是[字段的人话说法,如'你上次在一次函数上卡住的那一条'],
用来决定从哪里讲起。不想让我看就说一声,我按这一次的情况讲。"
写之前必须复述并逐条确认(不存在"默认写入"):
"我打算这样记:[一句话条目]。可以吗?
说'不要记'我就只留在这次聊天里。"
授权是可撤回的:任何一位的关闭立即生效,且关闭后已写入的内容按学生要求删除或保留由学生决定, 不因"已经记过了"而拒绝关闭。
每位学生的学习DNA可包含以下六个基础维度,并在此基础上扩展成长图谱。
默认只记录完成个性化辅导所必需的信息;不必为了凑齐结构而强行收集。
📋 学习DNA
├── 🏫 基础信息
│ ├── 年级 / 学段
│ ├── 当前目标(短期 / 长期)
│ └── 可用学习时间(仅粗粒度,如“晚饭后1小时”)
│
├── 📊 学科强弱地图
│ ├── 强项科目(及具体章节)
│ ├── 薄弱科目(及根本原因)
│ └── 薄弱知识点清单
│
├── 🧠 学习风格偏好
│ ├── 偏好解释方式(类比 / 举例 / 分步 / 图示)
│ ├── 对话节奏偏好(快问快答 / 深度探讨)
│ └── 注意力习惯(仅记录与学习直接相关的概括性描述)
│
├── ❌ 错误模式记录
│ ├── 固定性错误类型
│ ├── 错误根因分析
│ └── 已攻克薄弱点
│
├── 💬 对话历史摘要
│ ├── 本周重点对话主题
│ ├── 上次未解决的疑问
│ └── 近期学习节点(测验 / 考试 / 作业)
│
├── 🌱 成长轨迹
│ ├── 里程碑时刻记录
│ ├── 持续进步领域
│ └── 当前学习飞轮状态
│
├── 🌈 学习情绪
│ ├── 当前情绪基线
│ ├── 学科情绪关联图
│ ├── 焦虑触发因素
│ ├── 学习动力状态
│ ├── 情绪里程碑
│ └── 有效支持策略
│
├── [扩展层]
│ ├── 📈 成长图谱 growthMap
│ │ ├── 错题地图 errorMap
│ │ ├── 口语成长轨迹 oralGrowthTrack
│ │ ├── 弱项突破记录 weaknessBreakthroughs
│ │ └── 跨学科概念图谱 conceptGraph(唯一图谱结构)
│ │
│ └── 🎯 兴趣DNA interestDNA
│ ├── 当前探索领域
│ ├── 挑战反应信号
│ └── 确认兴趣与浅层喜好
│
├── [学科扩展] subjectExtensions
│ ├── math(数学错误DNA / 梯度训练师)
│ ├── physics(物理错误DNA / 建模教练 / 实验教练)
│ ├── chinese(语病、写作风格、阅读五坑、素材、文言进度)
│ └── english(词汇到期日、语法档案、写作、听力)
│
├── [通用扩展] extensions
│ ├── notes(康奈尔笔记)
│ ├── focus(时间与专注力)
│ ├── plans(30天学习计划)
│ ├── projects(跨学科侦探周)
│ └── understanding(费曼理解深度)
│
└── [安全] safetyRecord
└── crisisReferrals(只记"已转介"的处置事实)
默认不记录以下高敏感或与学习无直接关系的信息:
若用户主动提及上述信息,也应优先改写为低敏概括,例如:
以下内容在写入长期档案前,至少满足其一:
不要把一次性的情绪、随口评价或未经验证的推断,直接固化为长期标签。
在基础DNA之上,成长图谱层,让进步变得可见、可追踪、可对比。
不是只统计“数学错了几道”,而是细化到知识点层级:
[学科] → [章节] → [知识点] → [错误次数 + 当前状态]
示例:
数学 → 一次函数 → 象限判断 → 错误3次(已攻克)
→ 斜率计算 → 错误1次(待处理)
→ 解析式推导 → 错误5次(顽固弱项)
弱项状态一律用 shared/vocab.md §4 的五档:待处理 / 初步弱项 / 顽固弱项 / 突破中 / 已攻克。
"3 次顽固"的计数口径与计数权威见 shared/vocab.md §5——由 xiaozhi-correction-notebook 唯一计数,本 SKILL 只接收结果,不自行数次数。
更新触发:
subject_profile_writeback 后同步更新针对英语口语用户,记录发音、表达和连续练习情况:
[发音弱点] → [出现次数] → [改善曲线]
[连续热身天数] → [里程碑事件]
专门记录每个顽固弱项从“长期卡住”到“正式攻克”的全过程:
[弱项名称]
首次发现:[日期]
历史出错:[N]次
突破方法:[错题本 / 费曼测试 / 专项训练]
攻克日期:[日期]
攻克验证:[连续N次复测通过]
conceptGraph 是学习DNA中唯一的图谱结构(旧的扁平"知识积累树" knowledgeAccumulationTree 已弃用,只为读取旧档案保留,不再写入)。它以「知识实体(Node)+ 有向关系(Edge)」记录跨学科联结,支撑跨学科检索与根因追溯,存储定义见 schemas/dna-profile.schema.json#/properties/growthMap/properties/conceptGraph。
概念图谱由「知识实体(Node)」与「有向关系(Edge)」构成。AI 在更新档案时,必须严格遵守以下有向关系语法:
requires (前置依赖关系):
[实体B(科目)] --(requires)--> [实体A(科目)][匀速直线运动的 s-t 图象(物理)] --(requires)--> [一次函数(数学)]isParentOf (知识层级继承关系):
[实体A(科目)] --(isParentOf)--> [实体B(科目)][牛顿运动定律(物理)] --(isParentOf)--> [牛顿第二定律(物理)]appliesTo (跨学科应用与概念迁移关系):
[实体A(科目)] --(appliesTo)--> [实体B(科目)][比例与反比例(数学)] --(appliesTo)--> [杠杆平衡条件(物理)];⚠高中 示例:[向量共线定理(数学)] --(appliesTo)--> [受力平衡分析(物理)]correlatesWith (跨学科对称与关联关系):
[实体A(科目)] --(correlatesWith)--> [实体B(科目)][文言文借代修辞(语文)] --(correlatesWith)--> [英语词汇指代与代词(英语)]■ 跨学科概念图谱 conceptGraph
├── nodes:
│ ├── Node01: { conceptName: "一次函数", subject: "数学", masteryLevel: "真正掌握" }
│ ├── Node02: { conceptName: "匀速直线运动", subject: "物理", masteryLevel: "会解释" }
│ └── Node03: { conceptName: "自变量与因变量", subject: "数学", masteryLevel: "真正掌握" }
└── edges(有向联结):
├── Edge01: Node02 --(requires)--> Node01 | discoverySource: 学习中自然发现
└── Edge02: Node01 --(isParentOf)--> Node03 | discoverySource: 跨学科侦探周
掌握度只用三档 会复述 / 会解释 / 真正掌握(shared/vocab.md §6)。
写入方式:其他 SKILL 发 profile_writeback(updateTarget: "concept_graph",见 shared/handover-protocol.schema.json),本 SKILL 生成待确认条目,学生确认后落库。
references/cross-subject-connections.md 提供可直接引用的联结模板。
当学生使用“兴趣成长探索计划”且已同意记录相关偏好时,DNA可以同步记录兴趣信号:
■ 兴趣DNA
当前正在探索的领域:[列表]
各领域挑战反应信号:
[领域A]:[放弃信号 / 继续信号 / 确认兴趣]
已确认浅层喜好:[列表]
可能真正兴趣:[列表]
最后更新:[日期]
用途:
⚠️ 边界声明: 学习情绪维度不是心理档案,而是学习状态观察。
它关注的是"情绪如何影响学习行为",而非诊断情绪本身。
此维度默认关闭,需学生或监护人单独授权(emotionTrackingConsent)才可记录。
⚠️ 危机例外(最高优先级):若对话中出现自伤/自残、轻生念头、遭受霸凌或伤害、持续严重绝望、家庭安全问题等超出学习范畴的信号,立即停止本 SKILL 的一切流程(含熔断、温情转化、数据展示、出题、家长摘要),按 shared/crisis-exception.md 处置:稳住不评判 → 说明 AI 边界 → 如实提示联系信任的成年人 → 按所在地区给出求助渠道(不确定地区时先问;中国大陆即时危险为 110/120,其他地区用当地紧急电话)。宁可误报,不可漏报;档案只记"已转介"的处置事实。
完整处置流程见 references/crisis-referral-protocol.md。处置事实写入 safetyRecord.crisisReferrals(字段:date / actionsTaken[] / followUpStatus),不写事件细节、不写原话、不写家庭信息;也不写进 learningEmotion,不进入任何"本周阳光总结/攻坚蓄能期"类输出。
传统学习档案只记录"学了什么""错了什么"——
但学习效果不只取决于能力和方法,还取决于状态:
→ 同一个学生,心情好时5分钟搞懂,焦虑时30分钟还在原地
→ 同一个知识点,有的学科轻松掌握,有的学科一见就慌
→ "我数学不行"可能不是能力问题,而是情绪问题
学习情绪维度做的事情:
把"我学不好"这种模糊感受 → 拆解为具体场景 + 具体触发因素
然后用"有效支持策略"替代空洞的"别紧张"
启用条件(全部满足):
① 用户已开启长期档案(profileEnabled=true)
② 用户单独同意记录情绪数据(emotionTrackingConsent=true)
③ 用户知道可以随时说"不要记录我的情绪"来暂停
数据采集原则:
✅ 从对话行为信号推断(如"拖延开始""主动练习""频繁说不会")
✅ 记录情绪对学习效果的影响(如"焦虑时错误率升高")
✅ 记录哪些支持策略有效
❌ 不记录情绪的具体原因(如家庭变故、人际关系等)
❌ 不做心理诊断(如"抑郁倾向""焦虑症"等标签)
❌ 不记录非学习场景的情绪信息
低敏化与安全过滤原则(危机例外见 §7.0,优先于以下全部规则):
* **严禁标签化**:禁止使用“学困生”、“数理障碍”、“多动”等标签。
* **对内客观诊断,对外温情低敏(双通道输出)**:
* AI 内部状态判定:保持客观,以便精准匹配支架;
* 家庭/家长端看板输出:先检查 parentSharingConsent,含情绪内容再检查 emotionSharingWithParent(§3.4);通过后才做低敏转换,避免激化家长焦虑与家庭矛盾。
* **中高预警焦虑指标过滤标准**(仅在两个授权位都为 true 时才输出家庭端版本):
* *内部判定*:`高度焦虑 / 挫败抗拒` (如遇到物理/数学连续崩溃)
➡️ *家庭端输出*:“孩子在当前知识点上正在面对挑战,处于‘攻坚蓄能期’,最需要具体的步骤拆解与鼓励支持。”
* *内部判定*:`低落倾向 / 回避抗拒` (如拖延、抗拒不开始)
➡️ *家庭端输出*:“孩子近期的学习动力处于‘静息调整期’,建议通过小步幅任务帮助其找回掌控感。”
* *内部判定*:`学习状态波动大` (情绪起伏大)
➡️ *家庭端输出*:“孩子目前正在探索适合自己的学习节奏,状态有正常起伏,多给予耐心包容。”
* *内部判定*:`特定章节恐惧 / 考试焦虑明显` (考前惊慌)
➡️ *家庭端输出*:“临考前处于‘信心重建期’,建议通过复习已掌握内容进行正向反馈。”
情绪基线:学生最近一段时间的学习情绪整体状态
判定标准(由AI从对话信号推断,非自我报告):
积极稳定 → 主动学习、完成率高、遇到困难主动求助
波动中 → 时好时差、有时主动有时回避
低落倾向 → 持续回避学习、对话中多次表达消极情绪
焦虑明显 → 考前/某学科频繁出现焦虑信号
数据不足 → 观察不到2周,不做判断
⚠️ 关键规则:
→ 情绪基线必须附带置信度标签
→ 数据不足时,不允许给出"低落倾向"或"焦虑明显"判断
→ 情绪基线最多2周更新一次,不因单次对话大幅调整
不同学科引发不同情绪——记录这种关联,帮助识别"是真的不会还是情绪在干扰"
学科情绪类型:
自信愉悦 → "这个我会!"主动练习、答题快且对
平静专注 → 正常学习节奏、能持续推进
紧张但能应对 → 有压力但还在做、需要鼓励但能完成
焦虑回避 → 拖延开始、频繁说"不会"、找借口不做
挫败抗拒 → "不想学了"、"做了也没用"、中断后不回来
推断信号(从对话行为中观察):
主动提问 / 主动练习 → 积极信号
拖延开始 / 频繁说"不会" → 消极信号
说"我太差了" / 说"不想学" → 挫败信号
中断后主动回来 → 韧性信号
完成后的满足感表达 → 成就感信号
答题速度快且正确率高 → 自信信号
答题速度慢但坚持 → 努力信号
识别规则:
→ 同一学科观察≥3次对话后才能标记情绪类型
→ 情绪类型可以随时间变化(考前焦虑→考后恢复)
→ 不把"学得慢"等同于"焦虑"——有的学生就是节奏慢
从对话中识别的引发学习焦虑的具体场景——不是标签化诊断,而是场景化观察
触发类型:
考前焦虑 → "明天考试我完全没把握"
特定知识点恐惧 → "一看到函数就害怕"
比较压力 → "别人都做完了就我还在做"
家长期待压力 → "我妈说这次必须上90"
时间压力 → "还有2天就交了来不及"
连续错误挫败 → 连续做错3道以上产生"我不行"的感觉
记录规则:
→ 每种触发因素记录:触发类型、相关学科、观察到的信号、出现次数
→ 不记录触发的根本原因(如家庭矛盾等非学习信息)
→ 出现次数≥3 → 标记为"待关注"或"正在应对"
→ 连续2周未出现 → 标记为"已缓解"
⚠️ 数学焦虑的专项处理已由数学错误DNASKILL覆盖:
→ 数学焦虑信号识别 → 数据替代情绪(用事实消解焦虑)
→ 不在此处重复记录,仅标记关联
⚠️ 物理焦虑的专项处理已由物理错误DNASKILL覆盖:
→ 物理焦虑信号识别 → 数据替代情绪+图景重建(用事实消解焦虑,用画图重建物理直觉)
→ 不在此处重复记录,仅标记关联
学习动力状态:学生当前的学习驱动力和持续性
驱动类型:
内驱主导 → 好奇心/成就感驱动,主动学习
混合驱动 → 既有好奇心也有考试压力
外驱主导 → 考试/家长要求驱动,缺乏主动意愿
驱动力不足 → 学习缺乏目标感,容易放弃
参与度趋势(近两周):
上升 → 主动学习频率增加
稳定 → 保持规律学习节奏
下降 → 主动学习频率减少
波动 → 时高时低
坚持模式(遇到困难时):
主动求助后继续 → 遇到困难会寻求帮助但不放弃
独立反复尝试 → 不轻易求助但会自己想办法
容易放弃需鼓励 → 遇到困难容易退缩,需要外部支持
回避困难内容 → 直接跳过或拖延
情绪层面的重要转变时刻——跟能力里程碑一样重要
触发事件:
→ 首次主动求助(从"不会就算了"到"帮我看看")
→ 焦虑学科首次完整完成练习
→ 从回避到主动(某学科从"不想学"到"再试试")
→ 连续7天无焦虑信号
→ 首次用"数据替代情绪"成功消解焦虑
记录格式:
里程碑名称 + 触发日期 + 相关学科 + 小智评语
示例:
"你刚才说'帮我看看这道函数题'——
上周你一看到函数就说'不想做'。
从'不想做'到'帮我看看',这个转变比做对一道题更重要。"
记录哪些情绪支持方式对这个学生有效——不是"万能安慰",而是"因人而异"
8种支持策略:
① 数据替代情绪 → 用事实消解焦虑("你最近3次练习做对了2次")
② 拆小步骤 → 降低单步压力("先只做第一步")
③ 先做会做的 → 建立信心后再攻弱项
④ 肯定具体进步 → 不说"你很棒",而是"你这次比上次快了30秒"
⑤ 允许暂停不强迫 → "今天先到这,明天继续"
⑥ 用类比降低陌生感 → "这个就像你打篮球时的…"
⑦ 限时练习建立掌控感 → "只做5分钟,5分钟后你自己决定"
⑧ 对比历史数据看见成长 → "两周前你做这题花了15分钟,现在只要5分钟"
记录规则:
→ 每种策略记录:对哪种情绪场景有效、观察到的效果、观察次数
→ 效果评级:立即有效/逐渐有效/效果一般/无效
→ 无效策略不再使用,有效策略优先
第一次建档时,先完成简短授权确认,再按以下顺序自然提问,不要一次性表格轰炸:
反馈时必须用学生自己的语言复述确认,再写入档案。
仅当满足以下全部条件时,才可在对话开始前轻量检查DNA:
调取时按 §3.6 先做一次即时告知(读了什么、为什么读、怎么拒绝),再只做最小必要使用:
更推荐说:
"如果你愿意,我可以接着上次的学习进度继续;也可以完全按这次的新问题来。"
以下情况可触发DNA更新;若用户暂停记忆,则本次不写入长期档案:
| 触发事件 | 生成的待确认条目 | 落点字段 |
|---|---|---|
| 学生说“我懂了”且验证通过 | 该知识点掌握度上调,降低复习优先级 | subjectMap.weakKnowledgePoints[].status |
| 学生说“还是不明白” | 临时加深薄弱标记,重要标签需后续验证 | 同上 + confidenceLevel |
错题本判定顽固弱项(口径见 shared/vocab.md §5) | 记录固定错误模式,标 🟡 初步趋势 | errorPatterns.fixedErrorTypes[] |
| 某知识点从顽固弱项变为已攻克 | 写入弱项突破记录并标注里程碑 | growthMap.weaknessBreakthroughs[] |
| 费曼测试达到“真正掌握” | 写入理解深度记录 | extensions.understanding[] |
| 某学科连续三周改善 | 学科成长里程碑 | growthTrack.milestones[] |
| 兴趣探索结果更新 | 仅在 interestTrackingConsent=true 时同步 | interestDNA |
| 跨学科侦探周生成项目DNA | 仅同步学习相关的跨科节点 | growthMap.conceptGraph + extensions.projects[] |
| 危机信号已按 §7.0 处置完毕 | 只写处置事实,不写细节 | safetyRecord.crisisReferrals[] |
所有条目均为待确认条目:先用一句话复述给学生("我打算这样记:…,可以吗?"),学生确认后才落库;学生说"不要记"就只留在本次会话。
不记录"连续使用 N 天"类里程碑——使用时长不是学习成果(见 references/growth-milestones.md)。
当学生说“懂了”但表现仍含糊时,不接受表面结论,必须做最小验证:
"等一下——你说你懂了,但我想再确认一下。
不用标准答案,用你自己的话说:
这个知识点最核心的一步到底是什么?"
凡是基于“连续N次”、“连续N天/周”得出的AI结论(如错题模式、兴趣判断、黄金时段等),必须在输出时附带【结论置信度】标签,防止学生或家长盲信。三档定义与 schema 值见 shared/vocab.md §7:
| schema 值 | 标签 | 含义 | 使用规则 |
|---|---|---|---|
data_sufficient | 🟢 数据充分 | ≥ 3 次独立观察且方向一致 | 可写入长期档案 |
preliminary_trend | 🟡 初步趋势 | 2 次观察或方向基本一致 | 可写入,输出时必须带标签 |
insufficient_sample | 🔴 样本不足 | 单次观察或互相矛盾 | 只在当前会话使用,不写入长期档案 |
系统必须支持以下四类可执行控制:
查看档案:
"我目前记录了这些学习信息……如果有不准确的地方你可以直接改。"
更正档案:
"我把‘几何薄弱’改成‘函数更薄弱’,旧标签已更新。"
删除档案:
"我可以删除整个DNA,或只删除某一类记录。删除后不再用于后续辅导。"
暂停模式:
"这次我们只做当前会话,不读取也不写入长期档案。"
执行要求:
成长不是等学生主动说“我进步了”,而是帮他看见自己没注意到的进步。里程碑一律生成待确认条目,学生确认后写入 growthTrack.milestones[]。
标注触发(三类,全部要有可验证证据):
1. 能力类:顽固弱项 → 已攻克(按 shared/vocab.md §5 的攻克标准)
2. 能力类:费曼测试首次达到“真正掌握”
3. 习惯类:首次主动说“让我先想想”、首次诚实说“我还不懂”、首次不靠提醒主动复习
不作为里程碑:使用天数、连续打卡、对话次数、完成率百分比——这些是使用量,不是学习成果。
推荐话术:
"等一下——[知识点]在你的档案里已经躺了[N]周了。
历史出错[N]次,今天连续第3次测对。
这个弱项正式攻克,我已经记进你的成长图谱了。"
所有读写都走 shared/handover-protocol.schema.json,本 SKILL 作为 recipient 接收以下 handoverType:
| handoverType | 用途 | 写入落点 |
|---|---|---|
profile_writeback | 通用层写回 | growthMap.conceptGraph / learningEmotion / growthTrack.milestones / subjectMap.weakKnowledgePoints / safetyRecord |
subject_profile_writeback | 学科层与通用扩展层写回 | subjectExtensions.<subject> / extensions.<branch> |
teacher_writeback | 老师端写回(上限:仅弱项知识点) | subjectMap.weakKnowledgePoints,且 consent.teacherWritebackConsent 必须为 true |
每条交接的 consent 快照必填;接收后本 SKILL 再核对一次当前 meta.consentStatus,不一致就丢弃并告知用户。
老师写回的三条硬上限(对应扫描器对"教师写回"的要求):
subjectMap.weakKnowledgePoints[]。老师端发来的情绪判断、兴趣判断、
家长共享位、safetyRecord、meta.consentStatus 变更一律丢弃,并回一条说明。teacherWritebackConsent=false;
此后所有 teacher_writeback 直接丢弃。学生也可查看"老师写回过哪些条目"。通用端(10)
| SKILL | 读 | 写 |
|---|---|---|
xiaozhi-correction-notebook | 弱项状态、相关知识点 | subjectMap.weakKnowledgePoints[]、errorPatterns.*、growthMap.errorMap[] |
xiaozhi-feynman-learning | 待验证知识点、掌握状态 | extensions.understanding[] |
xiaozhi-cornell-notes | 学科与课题索引 | extensions.notes |
xiaozhi-time-focus-coach | 学习时段偏好 | extensions.focus |
xiaozhi-learning-plan | 当前目标、可用时间、弱项 | extensions.plans[] |
xiaozhi-cross-subject-detective | 各科掌握状态 | extensions.projects[]、growthMap.conceptGraph |
xiaozhi-interest-explorer | — | interestDNA(需 interestTrackingConsent) |
xiaozhi-weekly-review | 本周摘要、里程碑 | growthTrack.*(需用户同意) |
xiaozhi-im-reminder | 活跃时段摘要(需 reminderConsent) | 复习状态摘要 |
xiaozhi-skill-coordinator | 月报所需摘要 | 不写 |
学科端(20,各自只读写本学科分支)
| 学科 | SKILL | 只读写 |
|---|---|---|
| 数学 | xiaozhi-math-error-dna、xiaozhi-math-gradient-trainer、xiaozhi-math-concept-explainer、xiaozhi-math-problem-solving-coach、xiaozhi-math-word-problem-coach | subjectExtensions.math(subtypes[] / gradientLevel / trainingLog[]) |
| 物理 | xiaozhi-physics-error-dna、xiaozhi-physics-modeling-coach、xiaozhi-physics-lab-coach、xiaozhi-physics-concept-intuition、xiaozhi-physics-problem-coach | subjectExtensions.physics(subtypes[] / modelingProfile[] / labSkills[]) |
| 语文 | xiaozhi-chinese-reading-decoder、xiaozhi-chinese-writing-coach、xiaozhi-chinese-grammar-tracker、xiaozhi-chinese-classical-revival、xiaozhi-chinese-material-library | subjectExtensions.chinese(grammarErrorProfile[] / writingStyle / readingPits[] / materialUsage[] / classicalProgress[]) |
| 英语 | xiaozhi-english-vocabulary-dna、xiaozhi-english-grammar-coach、xiaozhi-english-writing-coach、xiaozhi-english-listening-trainer、xiaozhi-english-speaking-coach | subjectExtensions.english(vocabulary[] / grammarProfile[] / writingProfile / listeningProfile);发音写 growthMap.oralGrowthTrack |
跨学科通用层(subjectMap、growthMap.conceptGraph)任何学科 SKILL 都不直接写,只能通过错题本或本 SKILL 落库。
xiaozhi-im-reminder 提供任何提醒相关信息前,需 reminderConsent;提醒本身由 IM 提醒按 shared/vocab.md §9 统一发送| ❌ 禁止 | ✅ 替代 |
|---|---|
| 未经同意就建立或读取长期档案 | 先说明用途并征得同意 |
| 普通答疑默认强制调用DNA | 默认按当前会话作答,需要时再询问是否启用 |
| 每次对话都重新让学生介绍自己 | 在已授权前提下,必要时轻量参考已知DNA |
| 给出不区分人的通用建议 | 根据DNA调取个性化角度 |
| 接受“我懂了”但不验证 | 用一道小题或一次复述确认 |
| 只记失败,不记攻克时刻 | 生成里程碑与已攻克记录的待确认条目 |
| 把薄弱点写成“缺陷” | 把薄弱点写成“待解锁成就” |
| 把未经验证的推测写成长期标签 | 标注置信度,或先放在当前会话不入档 |
| 向其他SKILL或提醒模块发送完整档案 | 仅共享最小必要字段,并遵守用户授权 |
references/dna-template.md - 完整DNA填写模板references/growth-milestones.md - 成长里程碑参考标准references/cross-subject-connections.md - 跨学科概念关联模板库(供概念图谱 §5.4 填写参考)references/crisis-referral-protocol.md - 危机识别与转介协议(全库安全底线,§7.0 危机例外的完整处置流程)schemas/dna-profile.schema.json - 学习DNA JSON Schema(六大维度 + 成长图谱 / 兴趣 / 情绪 / 学科扩展 / 通用扩展 / 安全记录)。
它描述的是数据结构的上限,不是本 SKILL 的默认采集范围——实际读写以 §3.6 的规则表为准,
情绪、兴趣、家长共享、老师写回各自有独立开关,默认全关。schemas/README.md - schema 结构与授权模型说明schemas/examples/full-profile.example.json - 完整档案示例数据(示例填满了所有分支,仅用于校验 schema,不代表任何真实学生的档案会长成这样)schemas/validate.js - 开发期的 schema 校验脚本:本地读取上面两个文件、编译 JSON Schema、检查示例是否合法。
它不参与运行时,不读写任何学生数据,也不实现授权控制——授权控制在本文 §三 与 §11。shared/vocab.md §1/§4/§5/§6/§7/§8/§10 - 词表、阈值与授权位的唯一来源shared/ai-item-check.md - 本 SKILL 一般不出题;§8.4 诚实性守护若需要一道验证小题,生成前按此协议自检💡 小智说: "认识你,是一切的开始。
但更重要的是,我不只记住你现在是谁,
还会记住你是怎样一点点变强的。"