junyi-growth-spark-recorder · diff
git:20260820.a834ba7 to git:20260903.c252894
162 added, 107 removed. Audit A to A.
---
name: junyi-growth-spark-recorder
- description: 孩子闪光瞬间三层复盘:记录→发展分析→思维模型复盘。家长发来孩子的日常观察、互动片段、闪光瞬间时自动触发。触发词:记录一下、闪光瞬间、今天XX做了、孩子今天、帮我复盘、帮我分析一下这个互动、用模型看看。也适用于家长描述了一个亲子场景并想理解"为什么有效/怎么更好"的情况。不适用:制定长期成长规划、生成周报/月报总结、纯学习内容生产。
+ description: 把真实亲子片段整理为证据受控的客观记录、发展观察和思维模型复盘。适用于家长说“记录一下”“闪光瞬间”“帮我分析这个互动”“用模型复盘”或提供孩子的具体言行;分析与保存分开授权,无配置时只分析不落盘。不适用于医学诊断、长期成长规划、周报月报或替家长公开发布。
---
- # Growth Spark Recorder · 闪光瞬间三层复盘
+ # 闪光瞬间三层复盘
- 把家长随手发来的一句观察,变成「记录 + 发展分析 + 思维模型复盘」三层结构,并自动归档,作为家庭成长 Agent 持续更新的日常材料。
+ 把家长亲眼看到或有明确来源的一个亲子片段,转成可回查的记录、克制的发展观察和下一次可以尝试的行动。先忠实保留事实,再解释;不把单次行为升级为稳定性格或发展结论。
- **定位说明:**本 Skill 适合已经决定建立长期成长档案、接受三层复盘与自动归档的家庭。它不是“三分钟优势觉察卡”的轻量体验流程,也不是搭建家庭成长 Agent 时必须首先安装的 Skill。
+ ## 0. 先判断本次授权
- ## 配置(可选,使用前看一眼)
+ 将请求归入一种模式:
- 这个 skill 开箱即用——**孩子的名字直接从家长的对话里识别**,不用预先设置。家长说"小明今天……",就用"小明"。
+ 1. **只分析**:用户说“分析、复盘、怎么看、为什么”等,但没有明确要求保存。只在对话中输出,不创建或修改文件。
+ 2. **保存事件**:用户明确说“记录一下、存下来、归档、写进档案”等。完成三层复盘后,按配置预览目标和写入内容,再保存一条事件记录。
+ 3. **更新长期档案**:只有用户单独确认“把它更新为里程碑/写入孩子长期档案”时才能执行。保存事件不等于允许修改长期画像。
+ 4. **对外分享**:单独授权。分析、保存和长期档案更新都不包含发布、发送、上传或公开真实家庭材料的权限。
- 如果想让发展分析更准,可以在这里登记孩子信息(也可以第一次用的时候直接告诉 AI,AI 会记进档案):
+ 无法确定授权时,默认只分析。
- - 孩子A:<名字>、<出生年月>
- - 孩子B:<名字>、<出生年月>(只有一个孩子就删掉这行)
+ ## 1. 读取私人配置
- > 归档默认写在项目下的 `growth-records/` 目录(相对路径,开箱即用)。用 Obsidian 等自己笔记系统的,可自行把路径改成你的库。
+ 按以下顺序寻找配置,只读取第一个明确存在的文件:
- ## 触发条件
+ 1. 用户在本次对话中给出的配置路径;
+ 2. 环境变量 `JUNYI_GROWTH_SPARK_CONFIG` 指向的文件;
+ 3. `~/.config/junyi-skills/junyi-growth-spark-recorder.json`。
- 家长发来的内容符合以下任一:
- 1. 描述了某个孩子的一个具体行为/表现/对话
- 2. 描述了一次亲子互动场景
- 3. 明确说"记录一下"/"帮我复盘"/"帮我分析"
- 4. 发来孩子的照片/视频/语音并附带描述
+ 配置格式见 `references/config.example.json`。不要扫描整台电脑寻找孩子资料,不要把配置内容复制回 Skill 目录,也不要在回复中展示私人绝对路径、完整生日或未被任务需要的家庭资料。
- ## 工作流
+ 没有配置也能做只分析模式。没有配置时:
- ### 步骤一:确认当事人
- - 如果内容明确提到某个孩子的名字 → 直接进入,用家长说的名字
- - 如果一次互动涉及两个或以上孩子(兄弟姐妹争抢、一起玩、共同出游等)→ 标注「孩子A × 孩子B」,进入多人模式(见步骤二说明)
- - 如果含糊("孩子""他/她")且无法从上下文判断 → 先问"是哪个孩子?还是几个孩子都有?"
- - 第一次遇到一个新名字时,顺便确认一下 ta 的年龄/出生年月并记进档案,后面的发展分析要用
+ - 不保存文件;
+ - 不声称记住了孩子资料;
+ - 缺少年龄时只做不依赖精确年龄的观察,或询问年龄阶段;
+ - 给出一份最小配置清单,但不要求用户修改 `SKILL.md`。
- ### 步骤二:三层复盘输出
+ ## 2. 建立事件证据账
- 按以下三层结构回复,每层都必须有实质内容:
+ 先从用户材料中分开四类信息:
- #### 📸 记录
- - 用一两句话还原场景,保留原始细节
- - 标注日期和当事人
- - 语气:客观记录,不加评价
+ | 类型 | 处理规则 |
+ |---|---|
+ | 直接观察 | 保留具体动作、原话、场景和明确时间,不润色成更戏剧化的故事 |
+ | 成人或环境支持 | 单独写出是谁提供了什么提醒、示范、边界、工具或机会 |
+ | 合理推断 | 必须使用“可能、提示、可以继续观察”等措辞,并说明依据 |
+ | 未知 | 明确标“待确认”,不得用常识、年龄刻板印象或想象补齐 |
- #### 🔬 发展分析
- - 从儿童发展角度解读这个行为/表现的意义
- - 结合孩子当前的年龄阶段(若配置或档案里有出生年月,基于当前日期动态计算;没有就根据家长描述判断,或直接问一句)
- - 指出这属于哪个发展维度(语言/社交情感/认知/运动/自我管理/创造力等)
- - 如果是进步,说明进步在哪里;如果是挑战,说明正常与否
- - 🔄 **纵向对比(可选)**:如果归档记录(见步骤四)里有相似场景的历史记录,主动做一句纵向对比("上次遇到类似情况是 XX,这次变化是 XX")。有历史数据时自动触发,没有则跳过,不强凑
- - 👥 **多人模式(两个及以上孩子)**:当步骤一判定为多娃互动场景时,发展分析分三段,(1) 孩子A 视角:这个互动对 ta 的发展意义;(2) 孩子B 视角:这个互动对 ta 的发展意义;(3) 互动动态:孩子之间的关系模式、角色分工、影响方向
+ 高频事实转换必须遵守:
- #### 🧠 模型复盘
- - 从 `references/models.md` 中选择 1-3 个最贴合的思维模型
- - 每个模型必须做到:
- 1. **说出模型名字**(一个词)
- 2. **用大白话解释这个模型在这个场景里怎么体现的**,不要抽象定义,要指着场景里的具体细节说
- 3. **给出"下次可以试"的具体建议**,必须是可直接执行的话术或行动,不要泛泛的方向
- - 禁止:只说"用了XX模型"但看不出模型在哪里;堆术语;给了模型定义但没连接到场景
+ | 材料中实际出现的内容 | 可以写 | 禁止写 |
+ |---|---|---|
+ | 孩子请成人扶住、提醒或示范 | 孩子提出了某项具体求助 | 孩子识别、诊断或理解了问题根因 |
+ | 成人支持后孩子完成任务 | 孩子本次在成人支持下完成 | 支持就是唯一障碍;孩子其他能力没有问题;孩子已经掌握 |
+ | 失败后又试了一次 | 孩子本次继续尝试 | 孩子有韧性、抗挫力强或形成成长型思维 |
+ | 两个孩子共同完成 | 本次出现了合作或分工行为 | 两人的关系很好;已经具备稳定合作能力 |
- #### 💡 下次可以试(可选)
- - 如果模型复盘中已经给了足够具体的行动建议,此层可省略
- - 如果有跨模型的综合建议,放在这里
+ 即使加上“可能、提示、表明”,也不能写禁止栏中的心理过程、因果或稳定能力;那不是措辞问题,而是缺少证据。
- ## 归档标准(统一 frontmatter)
+ 以下情况先澄清再保存:
- 每条闪光瞬间归档成独立文件时,文件最前面带这段自包含的 frontmatter:
+ - 不知道事件实际发生日;不得静默使用今天;
+ - 无法判断是哪位孩子,且配置中有多人;
+ - 原话的说话者不清楚;
+ - 用户提供的是转述,但来源和观察者会影响事实边界。
+ 只分析时可以带着“待确认”继续,但不得给出依赖缺失事实的确定性结论。
+
+ ## 3. 三层复盘
+
+ ### 📸 记录
+
+ - 写明事件日期;不确定时写“待确认”。
+ - 写明当事人;不确定时写“孩子身份待确认”。
+ - 用一到三句话还原具体场景,尽量保留孩子原话。
+ - 将成人支持或环境条件单列,避免把共同完成写成孩子独立完成。
+
+ ### 🔬 发展观察
+
+ - 先指出这段材料**实际支持**的一个或两个发展信号。
+ - 再写需要继续观察什么,避免由单次事件推断稳定能力、性格或亲子关系。
+ - 只有知道可靠年龄或出生日期时,才做年龄相关分析;年龄只是背景,不是诊断依据。
+ - 若存在可核验的历史记录,可做纵向对比,并同时给出历史事件日期或链接;没有证据就跳过。
+ - 涉及多个孩子时,分别写每个孩子可观察到的行为,再写互动动态;不要把一方的动机当成事实。
+
+ ### 🧠 模型复盘
+
+ - 从 `references/models.md` 选择 1—3 个真正贴合的模型;一个精准模型优于三个勉强模型。
+ - 每个模型必须包含:模型名、它对应场景里的哪个细节、下一次可直接尝试的一句话或一个动作。模型名必须逐字复制 `references/models.md` 或下方快速表中的标题(包括括号样式),不得自造或改写近义模型名。
+ - 模型只用于生成观察假设和行动选项,不是对孩子的标签或证明。
+ - 无法读取附属参考文件时,只能从下方核心模型快速表选择;仍无法可靠匹配时,明确说“这次不强配模型”,不得自造名称或为了完成格式硬套。
+
+ #### 核心模型快速表
+
+ | 真实模型名 | 最小适用情形 | 证据边界 |
+ |---|---|---|
+ | 最近发展区(维果茨基) | 孩子在有限帮助下完成暂时无法独立完成的部分 | 只能说明本次支持可能形成脚手架,不能证明已掌握 |
+ | 成长型思维(Dweck) | 失败后调整方法或继续尝试 | 单次继续尝试不等于稳定韧性或成长型人格 |
+ | 自主性理论(Deci & Ryan) | 选择权、胜任感、联结需要与内在动机有关 | 不能从一个选择推断长期内驱力 |
+ | 反馈循环 | 某种回应正在强化或削弱重复行为 | 需要重复证据才能说形成稳定循环 |
+ | 非暴力沟通(Rosenberg) | 对话可区分观察、感受、需要和请求 | 不代替对真实感受与需要的确认 |
+ | 情绪命名(Lieberman) | 明确出现情绪并需要帮助辨认 | 不推断未被表达的情绪 |
+ | 安全基地理论(Bowlby) | 孩子在获得安全支持后继续探索 | 不由一次求助判断依恋类型 |
+ | 峰终定律(Kahneman) | 一段活动的情绪高点或收尾影响回忆 | 不能预测孩子的长期偏好 |
+ | 关系修复(Gottman/Tronick) | 冲突、失联或失误之后重新连接 | 修复一次不代表关系问题已经解决 |
+ | 兄弟姐妹动态(Adler/Bank & Kahn) | 已确认是兄弟姐妹的竞争、合作或位置互动 | 未确认关系时不得使用 |
+
+ ### 💡 最小下一步
+
+ 最多给一到两个建议。优先延续有效环境与成人支持,不把每个闪光瞬间都变成训练任务。
+
+ ## 4. 安全与专业边界
+
+ - 不做医学、心理、神经发育或教育诊断,不替代专业评估。
+ - 遇到伤害风险、持续明显退步、长期功能受损或家长强烈担忧时,建议记录频率与情境并咨询合适的专业人员;不要仅靠模型库下结论。
+ - 不虚构孩子原话、日期、动作、动机、历史变化或家长感受。
+ - 不把“一次做到了”写成“已经掌握”,不把一次冲突写成固定关系模式。
+ - 孩子提出一种具体帮助,只能支持“提出了具体求助”;除非孩子说出原因或有其他直接证据,不得升级为“已经识别问题根因”。
+ - 成人提供某项支持后任务完成,只能说明“本次在该支持下完成”;不得据此断言这项支持就是唯一障碍、孩子其余能力没有问题,或孩子已经理解支持为什么有效。
+ - 不默认真实姓名可公开;示例、测试和对外材料使用虚构身份。
+
+ ## 4.1 输出前事实终审
+
+ 逐句检查发展观察和模型复盘:
+
+ 1. 含“识别、意识到、理解、知道、因为、说明能力、真正原因、关键障碍”的句子,是否有孩子原话或直接行为证据?没有就改成可观察事实或“仍待确认”。
+ 2. 是否把成人共同完成写成孩子独立完成?若是,补回成人支持并缩小结论。
+ 3. 是否把一次事件写成稳定品质、能力、关系或因果?若是,降为本次观察与后续验证问题。
+ 4. 模型名是否与参考标题逐字一致?不一致就纠正;无法确认就不使用。
+ 5. 是否出现上方高频事实转换表“禁止写”的内容?出现就删除,不得仅改成“可能”。
+
+ ## 5. 保存事件
+
+ 只有同时满足以下条件才允许写入:
+
+ - 用户明确授权保存;
+ - 配置通过 `scripts/validate_config.py`;
+ - 事件实际发生日与当事人已确认;
+ - 三层复盘完成;
+ - 目标路径位于配置的 `archive_root` 内。
+
+ 写入前先展示:保存模式、事件日期、当事人、目标相对路径、会修改的文件数量。用户已经在本轮明确说“记录一下/保存”时,不需要重复询问;否则先确认。
+
+ ### 单一事件源
+
+ 每个事件只创建一份主记录:
+
+ `events/<YYYY-MM-DD>_<subject-id>_<short-title>.md`
+
+ 多人事件使用稳定排序的多个 ID,例如:
+
+ `events/<YYYY-MM-DD>_<subject-a>+<subject-b>_<short-title>.md`
+
+ 不要为每个孩子复制一份不同版本的事实。需要分孩子浏览时,只在各自索引追加指向同一主记录的链接:
+
+ `subjects/<subject-id>/events.md`
+
+ ### 主记录格式
+
```yaml
---
- date: <事件发生日 YYYY-MM-DD,从材料提取,不确定则用当天>
- 孩子: <当事人名字>
- 类型: 闪光瞬间
- 标题: <一句话标题>
- 标签: [闪光瞬间]
- 来源: junyi-growth-spark-recorder
+ date: <事件实际发生日 YYYY-MM-DD>
+ subjects: [<subject-id>]
+ type: growth-spark
+ title: <一句话标题>
+ source: junyi-growth-spark-recorder
+ evidence_status: observed | reported | mixed
---
```
- 🔴 `date`、`孩子`、`类型` 必填且合法。结构化/衍生输出(如总结报告、金句摘录)不需要这段。
-
- ### 步骤三:归档前自检
-
- 🔴 **归档阻断门**:归档前必须确认「🧠 模型复盘」已完成。缺失模型复盘的记录不得归档,先补完再写入。无论来源是家长直接对话、批量导入,还是其他流程推送,此检查一律适用,不可跳过。原因:模型复盘是这个 skill 的核心价值,缺了它,归档的就只是一条流水账。
-
- ### 步骤四:归档
+ 正文依次包含:原始材料、成人或环境支持、三层复盘、待确认事项。原始材料要忠实保留;如包含不必要的敏感信息,先征求用户同意再脱敏,不能悄悄改写为另一件事。
- 复盘完成后自动执行,全部写在项目下的 `growth-records/` 目录(相对路径,开箱即用):
+ 写后必须回读,确认:
- 1. **单条建档**(每条闪光瞬间一个文件,这是历史记录的主索引):
- - 路径:`growth-records/sparks/<YYYY-MM-DD>_<孩子>_<短标题>.md`
- - `<短标题>` = 3-8 字,描述闪光点核心(如 `主动分享`、`说谢谢`),无空格,用下划线
- - 同一天多条:用不同 `<短标题>` 区分,不会文件名冲突
- - 内容:上面的统一 frontmatter + 正文(家长发来的原始描述,原样保留)
- - 写入后 `read` 验证 + 乱码检查(`U+FFFD`),有乱码立即报告
+ - 目标文件存在且在 `archive_root` 内;
+ - frontmatter 日期和当事人正确;
+ - 原始材料没有被分析文字替代;
+ - UTF-8 可读且不含 U+FFFD;
+ - 多人事件只有一份主记录。
- 2. **每日汇总**(方便快速回看,追加不覆盖):写入 `growth-records/diary/<YYYY-MM-DD>.md`
- ```markdown
- ### [时间] 闪光瞬间 - {当事人}
- **场景**:{一句话描述}
- **发展信号**:{关键发现}
- **模型洞察**:{用了哪些模型,一句话结论}
- **行动建议**:{最关键的一条}
- ```
+ ## 6. 长期档案与里程碑
- 3. **里程碑更新**:如果是里程碑级别的进步(首次出现的能力/突破性表现),同步更新 `growth-records/profiles/<孩子>.md`
+ 事件看起来可能是首次能力或重要变化时,只在回复里标记“里程碑候选”和判断依据。除非用户另行确认,不修改 `profiles/`、能力标签、长期画像或其他汇总文件。
- 4. **多人模式归档**:当标注为「孩子A × 孩子B」时,单条建档和每日汇总都分别为每个孩子各写一份(各自角度的摘要),里程碑也分别更新各自的 profile
+ 获得确认后,也必须写成带日期和事件链接的观察条目,而不是无来源的稳定人格判断。
- ## 模型选择指南
+ ## 7. 输出状态
- 不需要每次都用不同模型,根据场景匹配:
+ 回复结尾明确标注一种状态:
- | 场景类型 | 优先考虑的模型 |
- |---------|-------------|
- | 孩子自发做了好事/主动行为 | 激励机制、自主性理论 |
- | 家长表扬/批评了孩子 | 成长型思维、反馈循环、叙事身份 |
- | 孩子遇到困难/想放弃 | 能力圈、最近发展区、成长型思维、临界质量 |
- | 亲子冲突/情绪爆发 | 非暴力沟通、情绪命名、安全基地、关系修复 |
- | 学习/练习相关 | 复利效应、最近发展区、能力圈、反转思维 |
- | 活动/旅行/一天结束 | 峰终定律 |
- | 反复出现的行为问题 | 第一性原理、反馈循环、身体先于认知 |
- | 孩子探索新事物/冒险 | 安全基地、自主性理论、假装游戏 |
- | 兄弟姐妹互动/争抢 | 兄弟姐妹动态、生态位、康德式公平 |
- | 重大变化/升学/新环境 | 过渡仪式、安全基地、叙事身份 |
- | 孩子情绪崩溃/讲不通道理 | 身体先于认知、压力影响倾向 |
- | 角色扮演/假装游戏 | 假装游戏的发展价值、好奇心倾向 |
- | 家长发火后怎么办 | 关系修复、情绪命名 |
- | 日程/目标设定 | 安全边际、规模优势的反面 |
- | 长期坚持没看到效果 | 临界质量、复利效应、大数定律 |
- | 要不要报班/加课/换方向 | 沉没成本、机会成本、幸存者偏差、基准率忽视 |
- | 单次表现波动/家长情绪起伏 | 均值回归、正态分布、相关不等于因果 |
- | 教具/资源采购决策 | 折旧与摊销、机会成本、供需关系 |
- | 孩子身心状态盘点 | 资产负债表思维、安全边际 |
+ - `仅分析|未写入`
+ - `待确认|未写入:<缺失信息>`
+ - `事件已保存|<相对路径>`
+ - `事件已保存|里程碑候选未写入长期档案`
- 完整模型定义和识别信号见 `references/models.md`,仅在需要查阅具体模型细节时读取。
+ 只有真实回读成功后才能说“已保存”。
- ## 质量红线
+ ## 8. 参考资料读取
- 1. **说了就要看得见**:提到用了某个模型,复盘文字里必须能明确指出模型对应的那段分析
- 2. **大白话**:家长不需要知道模型术语也能完全理解
- 3. **连接场景**:每个模型分析必须指着场景里的具体细节说,不能抽象空谈
- 4. **可执行**:建议必须是"下次遇到类似情况,你可以说/做......",不是"注意培养XX能力"
- 5. **不强凑**:如果一个模型不贴合,不用。1个精准的比3个勉强的有价值
+ - 做模型匹配时读取 `references/models.md`。
+ - 初始化或验证私人配置时读取 `references/configuration.md` 和 `references/config.example.json`。
+ - 不要因为读取参考资料而扩大用户本次授权。