前言¶
在 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/,无数据库。
目录与源码:
- 社区目录:https://www.skillhub.cn/plugins/yagami-lightzxy/edugraph-learning
- GitHub:https://github.com/yagami-lightzxy/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 推荐顺序操作即可复现全流程:
- 新建课程:名称、目标,考试日期可选。
- 传资料:多选或拖拽;等待后台解析完成。
- 看计划:按章节与前置关系查看讲解、练习、复习、小测;可改目标后重排,已完成进度保留。
- 学习:讲解页先回忆再对照;做题后看批改与解析。
- 补弱:错题页重练;复习页处理 FSRS 到期项。
- 看图:资料页或讲解卡片进入整页图/内嵌图查看器。
- 问导师:右侧 AI 导师即当前课的 DSH 会话;可收起或「在完整对话中打开」。
- 回对话:右上角返回主会话,权限与历史不变。
界面「现在做这个」只提示一个下一步,减少自行排程负担。
技术栈与数据布局(简表)¶
| 层 | 技术 | 用途 |
|---|---|---|
| 宿主 | 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 自检即可。