把「苏格拉底式四科辅导 + 错题间隔重复复习 + 变式巩固 + 学情报告 + 学习习惯档案」打包成开箱即用的 DSH 插件。源自一个真实四年级孩子的学习知识库,本地优先、纯 Markdown、零网络依赖。
装上即用:插件加载时自动把自带的 8 个技能注册为 DSH runtime skills(ctx.skills.register)——不需要再跑任何安装脚本。项目 .agents/skills 里有同名技能时,自动优先使用项目版本。
分层理念:教学法(怎么引导、怎么批改)在
skills/的 SKILL.md——模型读的指令文本;基建(沉淀/复习/报告脚本、工具、定时提醒)在插件层。改教法不用动代码,改基建不用动教法。
- 四科苏格拉底式辅导:数学 / 语文 / 英语 / 作文——永远用提问引导孩子自己想,不直接给答案
- 错题沉淀:辅导完自动写入 Obsidian 知识库,带知识点(
knowledge)与跨学科习惯(habit)标记 - 间隔重复复习(SRS):答对间隔翻倍(1→2→4→8…封顶 30 天),连续答对 3 次标「已掌握」,答错回到 1 天
- 变式巩固:复习后按同一知识点现场生成 2-3 道同类变式题
- 每日一练:按薄弱知识点主动出题
- 学情报告:科目掌握度 / 知识点分布 / 错因分类 / 每周趋势 / 薄弱点 Top N
- 学习习惯档案:按习惯聚合错题,同一习惯跨科目出现会高亮为「通用习惯问题」——市面产品没有的维度
- 成就系统:复习连击 streak、徽章、已攻克知识点,自动记入成长档案
- 多孩子:每个孩子独立子库,互不干扰
- 拍照入库:拍一张卷子/默写本,逐题判定对错后沉淀(多模态)
- 每日复习提醒(可选):19:30 cron 推送到期复习清单
前置要求:Node.js ≥ 20、pnpm(npm i -g pnpm)、DeepSeek Harness(dsh)。
npm 不是必须的。
dsh plugin add本质是 pnpm 转发,支持 npm 包名 / Git 仓库 / 本地路径等多种来源。本插件已发布 npm,但直接从 GitHub 安装完全等价;社区插件中心(如 DSH Plugin Hub)也按 GitHubdsh-plugin主题收录本插件。
dsh plugin --profile web add https://github.com/farmarguan/dsh-learning-plugin.git或用 pnpm 的 GitHub 简写:
dsh plugin --profile web add github:farmarguan/dsh-learning-pluginNPM_BLOCK
dsh plugin --profile web add D:/code/dsh-learning-plugin安装后重启 dsh web,8 个技能即出现在技能目录中。验证:对孩子说「复习错题」,应触发 review-tutor。
卸载:dsh plugin --profile web remove dsh-learning-plugin
非 DSH 宿主兜底:想让其他本地 Agent(如 Claude Code)也用这套技能,可把技能落盘到用户级目录:node scripts/install-skills.mjs(DSH 下不需要跑)。
安装后直接对 DSH 里的 Agent 说话(不用记任何命令):
| 你说 | 触发 | 会发生什么 |
|---|---|---|
| "这道题孩子做错了:25×4=90" | 学科技能 | 引导式讲解 → 自动沉淀错题(带知识点+习惯) |
| "帮我看看这页卷子" + 照片 | photo-import | 逐题判定对错,错题逐条入库 |
| "复习错题" / "今天复习什么" | review-tutor | 列出今日到期错题,逐题间隔重复 |
| "出几道题练练" | review-tutor | 按薄弱知识点出每日一练 |
| "学习习惯怎么样" | review-tutor | 生成/展示学习习惯档案 |
| "这段时间学得如何" | review-tutor | 学情量化报告 |
习惯使用后,知识库长这样:
错题集/<科目>/<日期>_<编号>_<摘要>.md # 错题笔记
作文/<日期>_<编号>_<题目>.md # 作文(保存孩子原文)
学情报告/总览.md # 量化报告(自动刷新)
学习习惯档案/总览.md # habit 专属视图
成长档案/成就.md + gamification.json # 连击/徽章/已攻克
children/<孩子>/ # 多孩子独立子库
INDEX.md # 全库总览
每道错题的 frontmatter 携带完整 SRS 状态:
| 字段 | 说明 |
|---|---|
status |
待复习 → 复习中 → 已掌握 |
next_review_at / due_date |
下次到期日 |
interval_days |
当前间隔(1→2→4→8…封顶 30 天) |
consecutive_correct |
连续答对次数(3 次 → 已掌握) |
knowledge |
知识点(四科 PEP 词表见 references/knowledge-map.md) |
habit |
跨学科习惯:检查/读题/专注/书写/记忆 |
状态流转:
stateDiagram-v2
[*] --> 待复习: 沉淀错题
待复习 --> 复习中: 答对(间隔×2)
复习中 --> 已掌握: 连对3次
复习中 --> 复习中: 答对(间隔×2)
待复习 --> 待复习: 答错(回1天)
复习中 --> 待复习: 答错(回1天)
- 沉淀时 JSON 加
"child":"朵朵",或脚本加--child 朵朵,或环境变量LEARNING_CHILD init_child.ts --name 朵朵建独立子库(含该孩子的 soul.md 与目录骨架)- 各孩子的复习清单 / 报告 / 习惯档案完全隔离
| 环境变量 | 默认 | 说明 |
|---|---|---|
LEARNING_BASE |
当前工作目录 | 知识库(Obsidian vault)根目录 |
LEARNING_CHILD |
空 | 默认孩子名 |
插件同时注册 5 个工具,供 Agent 直接调用(也可被其他编排引用):
| 工具 | 对应脚本 | 说明 |
|---|---|---|
learning_save |
save_learning_note.ts | 沉淀错题/作文 |
learning_review_today |
review_today.ts | 今日到期清单(--all 全部) |
learning_mark_reviewed |
mark_reviewed.ts | 记录复习结果,推进 SRS |
learning_drill |
drill.ts | 每日一练计划 |
learning_report |
report.ts + habit_report.ts | 学情报告 + 习惯档案 |
社区里 DSH 插件的主流分发方式有三种,任选其一即可,可组合:
| 渠道 | 是否需要 npm 账号 | 用户安装方式 | 收录/发现 |
|---|---|---|---|
| GitHub 仓库(本插件主渠道) | ❌ 不需要 | dsh plugin add https://github.com/farmarguan/dsh-learning-plugin.git 或 github:farmarguan/dsh-learning-plugin |
社区插件市场(DSH Plugin Hub / dsh-plugin-mall / dsh-find-plugin 等)按 GitHub dsh-plugin 主题聚合搜索 |
| npm 包(可选加分项) | ✅ 需要 | dsh plugin add dsh-learning-plugin(一键,自动跟随版本) |
npm 搜索、各插件市场的 npm 源 |
| 本地路径(开发调试) | ❌ | dsh plugin add D:/code/dsh-learning-plugin |
无 |
本仓库的发布流程(README「发布新版本」一节同款):git push 即完成 GitHub 渠道发布;npm publish 是可选的额外动作(dsh plugin update 才能自动升级 npm 渠道的用户)。两个渠道装的是同一份代码,功能完全一致。
想被更多插件市场收录:在 GitHub 仓库页 About ⚙️ 里给仓库加上主题标签 dsh-plugin 和 dsh(仅仓库主人能在网页上操作),各市场工具即会索引本仓库。
lib/index.js 插件入口:技能自动注册 + 工具注册 + 提醒事件
cordis.patch.yml cordis 补丁:挂载入口 + 可选 cron
skills/<技能>/ SKILL.md(教法)+ references/ + scripts/
scripts/ install-skills.mjs(非 DSH 兜底)
- 改教法:编辑
skills/*/SKILL.md,重启 dsh 生效(runtime 技能在插件加载时读取) - 改脚本:
skills/learning-tutor/scripts/*.ts,零依赖(Node 20 + npx tsx),可独立运行 - 本地测试:
dsh plugin --profile web add D:/code/dsh-learning-plugin+ 重启;或直接跑单个脚本:echo '{"type":"错题",...}' | npx tsx skills/learning-tutor/scripts/save_learning_note.ts
把 skills/learning-tutor/references/soul.md(模板)替换为孩子真实档案:年龄/年级/性格/各科学情定位。Agent 辅导前会读它来调整说话方式与出题难度。
# 1. 改 package.json 的 version
# 2. 提交并打 tag
git add -A && git commit -m "release: vX.Y.Z"
git tag vX.Y.Z && git push origin master --tags
# 3.(可选)发布 npm —— 包名未被占用,npm login 后即可
npm publish
# 4. 用户侧更新
dsh plugin --profile web update dsh-learning-plugin- 提示 pnpm not found:
npm i -g pnpm(dsh plugin是 pnpm 转发器) - 想换知识库位置:设
LEARNING_BASE指向你的 Obsidian vault - 项目里已有同名技能:项目
.agents/skills(rank 200)优先于插件 runtime 注册(rank 250),可自由覆盖 - 数据会上传吗:不会。全部本地 Markdown,脚本纯本地运行,无任何网络调用
- 和直接拷 skills 目录有什么区别:拷贝是散装文件、更新靠手工;插件走 pnpm 依赖管理,
dsh plugin update一键升级,且基建工具/定时提醒只有插件层能提供
MIT