EduGraph Learning:在 DSH 里跑通「资料 → 图谱 → 计划 → 练习 → 复习」

前言

在 DeepSeek Harness(DSH)里做智能体,常见做法是接工具、接检索、自己拼一轮「讲题」流程。真要带人学完一门课,往往还要另开笔记软件、刷题 App、复习卡片,资料和对话也容易脱节。EduGraph Learning(edugraph-learning)是社区维护者 yagami-lightzxy 发布的工作流类 DSH 插件:把上传资料、拆章节与知识点、排学习计划、讲解与出题批改、错题与间隔复习,以及面板内的 AI 导师,收进同一个本地工作区。电路图、波形等「文字层里没有」的内容,可通过 PDF 整页渲染等方式在界面里查看,导师侧还能通过工具读图讲解。

这是什么

插件 npm 包名为 edugraph-learning,当前版本 1.6.0,许可证 MIT,要求 Node.js ≥ 20。它不把学习流程做成独立 SaaS,而是注册 DSH 侧栏「学习」面板、本地 HTTP API 与 20 个 Agent 工具,数据落在 $DSH_HOME/storages/edugraph-learning/,无数据库。

目录与源码:

核心能力(与 README 一致)

资料解析与图示

支持 PDF、Word、PPT、Excel、Markdown、TXT、图片等格式上传;后台解析,关页面不中断。PDF 用 pdfjs-dist 取文字与结构;Office 走自写 OOXML 解析。电路图分两类处理:位图从 DOCX/PPTX 内嵌媒体抽取;PDF 矢量页用 pdfjs-dist + canvas(@napi-rs/canvas 或 canvas)整页渲染为 PNG 并缓存。未安装 canvas 时图示功能降级,其余不受影响。

界面提供「看这一页的图」「看原文图」等入口;Agent 可用 get_page_image,再配合 DSH 的 read_image 按图讲解或出题。

知识图谱与检索

自写规则引擎做标题识别、概念抽取、前置/相关关系;图谱为自绘 SVG 布局。全文检索为自写 BM25 + 中英分词。概念与定义主要来自确定性规则,印刷教材效果较好;手写、公式密集资料可能需要人工校对(README「已知限制」)。

学习计划与练习

计划按章节分组:一章内串联讲解、练习、复习、小测,学完一章再下一章,不按日历排日期;任务保留预计分钟。v1.6 起建课、设置与计划页不再询问「每天能学多久」。练习支持选择、填空、判断、简答等,做完即批改;错题按知识点归集,复习侧采用自写 FSRS-5 计算下次复习时间。

课程项目与面板内 AI 导师

每门课在当前工作区下创建独立 DSH 工作区:EduGraph - <课程名>(实现路径为 <当前工作区>/EduGraph/<课程>)。资料以插件 documents/ 为唯一源,项目 materials/ 为目录链接(junction),不占双份存储。每门课一条独立 DSH 会话,右侧嵌入原生 conversation.content:模型、工具、审批与主界面同一套;导师历史与主对话互不串线。「返回对话」回到进入学习前的主会话。

讲解卡片、错题、图谱节点等处的「问导师」会带上上下文发往该课导师会话。课程库在无选课时可使用当前工作区的全局导师会话。

外部 AI 课程包

无需把第三方 API 接进插件:在「AI 内容」中复制提示词给 ChatGPT / Claude / Gemini 等,让其返回 JSON;经「预览校验」后导入。同名概念可合并;也可由 DSH Agent 调用 export_course_pack / import_course_pack。导入以追加/补空为主,服务端校验格式与答案。

给 Agent 的工具一览

分类 工具
资料 list_courses、get_document_outline、read_source、search_materials
图示 get_page_image、list_document_images
图谱 upsert_concepts、upsert_relations
档案 get_student_profile、save_student_profile
计划 create_study_plan、update_study_plan
练习 create_quiz、grade_answer
进度 record_learning_event、get_learning_state、get_due_reviews、get_course_overview
外部 AI export_course_pack、import_course_pack

HTTP 前缀:/plugins/edugraph-learning/api,面板与 Agent 共用。

安装与启用

插件为纯 ESM + 预构建浏览器 bundle,不提供 dsh plugin add github:... 一类一键命令;官方 README 给出 profile link 方式。

方式一:写入 profile(日常)

在 ~/.dsh/profiles/<profile>/package.json 中声明依赖与 bundle:

// ~/.dsh/profiles/<profile>/package.json
{
  "dependencies": { "edugraph-learning": "link:<插件绝对路径>" },
  "dsh": { "profile": { "bundles": [ /* … */ , "edugraph-learning" ] } }
}

在插件目录安装解析依赖,在 profile 目录建立 link,并跑健康检查:

cd <插件目录>; npm install                    # 装 pdfjs-dist 与 canvas
cd <profile>; pnpm install --prefer-offline   # 建 link
node <插件目录>\scripts\health.mjs            # 安装自检(依赖/链接/canvas)
# 重启 DSH,侧栏出现「学习」

装完后必须重启 DSH:profile 的插件列表在启动时读取。重启后再执行 scripts/health.mjs,六项全 OK 即表示就绪。

方式二:临时实例(不改用户 profile)

node <dsh>/lib/bin.js --profile web --patch dev-patch.example.yml --port 3900 --no-open

典型用法

按 README 推荐顺序操作即可复现全流程:

  1. 新建课程:名称、目标,考试日期可选。
  2. 传资料:多选或拖拽;等待后台解析完成。
  3. 看计划:按章节与前置关系查看讲解、练习、复习、小测;可改目标后重排,已完成进度保留。
  4. 学习:讲解页先回忆再对照;做题后看批改与解析。
  5. 补弱:错题页重练;复习页处理 FSRS 到期项。
  6. 看图:资料页或讲解卡片进入整页图/内嵌图查看器。
  7. 问导师:右侧 AI 导师即当前课的 DSH 会话;可收起或「在完整对话中打开」。
  8. 回对话:右上角返回主会话,权限与历史不变。

界面「现在做这个」只提示一个下一步,减少自行排程负担。

技术栈与数据布局(简表)

层 技术 用途
宿主 Node ESM + Cordis HTTP 路由与 20 个工具
面板 React 18 + TSX + esbuild 学习 UI,惰性 CJS bundle
存储 本地 JSON,原子写 + 键锁 课程知识 / 个人状态分离

课程数据目录结构(节选):

$DSH_HOME/storages/edugraph-learning/
├── index.json
├── profile.json
├── state.json
└── courses/<courseId>/
    ├── meta.json
    ├── blocks.json
    ├── documents/
    └── figures/

适用场景与注意

适合:已在用 DSH 做开发或智能体实验、希望把「一门课」的资料、图谱、计划、练习、复习和对话放在同一本地工作区的用户;尤其需要 PDF 电路图/波形与导师读图联动的场景。

与同类产品的差异(插件自述):NotebookLM 等强于资料问答与出处,但不覆盖计划、练习与间隔复习;Quizlet 等强于测验,但缺少本地资料解析与可执行 Agent 工具;Anki 等强于间隔重复,但卡片整理与 AI 对话往往不是主界面。本插件的差异在于把完整链路与 DSH 原生会话叠在同一工作区。

安全与权限:插件以当前 DSH 进程权限读写本地文件与会话;安装前请阅读源码与 MIT 许可证,确认 link 路径与 profile 配置可信。删除课程项目仅移除 materials/ 链接时不动插件内原件;在项目目录内改资料会直接影响源文件。

结尾

EduGraph Learning 把「传资料 → 拆结构 → 图谱 → 章节计划 → 讲解练习 → FSRS 复习 → 面板导师」做成 DSH 内可安装的工作流,并靠课程项目与独立导师会话避免和主对话抢上下文。若要在本机启用,按 README 的 profile link 与 health.mjs 自检即可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜