DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

sony6490 /

sony6490/dsh-course-notes

Verified

DSH 插件:实时视频课程知识笔记。读取 dsh-video-coursemap 的检测结果,为每个新视频生成独立 Word 并自动投递到新的 DSH 会话(摘要 + Word 文件卡),同时写入 dsh-memory-evolve 项目记忆。

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@7a89091b

dsh-course-notes · 实时视频课程知识笔记

一个纯 DSH 宿主插件:把 dsh-video-coursemap 检测到的每个新视频课程,生成独立 Word 知识笔记,并自动投递到一个新的 DSH 会话对话框里;同时把知识要点写进 dsh-memory-evolve 的项目长期记忆。

  • 不修改 dsh-video-coursemap / dsh-memory-evolve 的任何代码;
  • 不新建客户端界面;
  • 投递不触发模型回合(会话里直接出现摘要 + Word 文件卡,不额外消耗 token)。

工作方式

浏览器 B 站视频(前台窗口)
   │ dsh-video-coursemap 每 15s 观察前台窗口
   ▼
学科分类 + 抓取简介/字幕/弹幕/热评 → 学科 Markdown → 学习手册.docx
   │ 落盘:<输出目录>/.state/state.json、.state/manuals/<学科>.md
   ▼
dsh-course-notes
   ├─ 监视 state.json,发现台账里没有的 (学科, 视频)
   ├─ 从学科 Markdown 抽出该视频章节 → scripts/md2docx.py → <学科>/<视频标题>.docx
   ├─ ctx.agents.create 新建标准会话(默认 Agent 预设 + 默认模型 + cwd=输出目录)
   ├─ attachments.saveFile(docx) → session.append 用户消息(摘要 + Word 文件块)
   ├─ sessionTitle.rename(会话标题「📚 视频标题」)
   ├─ workspaceRegistry 挂到「课程知识地图」项目分组
   └─ memory 工具(dsh-memory-evolve,target=project)写一条课程笔记

安装

要求:DSH Desktop 已初始化 desktop profile,且已安装 dsh-video-coursemap 与 dsh-memory-evolve。

cd path/to/dsh-course-notes
node scripts/install.mjs --dry-run   # 预览
node scripts/install.mjs             # 安装 / 更新

安装脚本会:

  1. 把插件复制到 C:/Users/<你>/.dsh/profiles/desktop/node_modules/dsh-course-notes(覆盖旧副本);
  2. 幂等登记到 profile package.json 的 dsh.profile.bundles(首次会备份 package.json)。

然后 完全退出并重启 DeepSeek Harness(宿主插件不热加载)。重启后插件自动开始轮询;首次启动默认补投当前已有的视频。

从 GitHub 安装

dsh plugin --profile desktop add github:sony6490/dsh-course-notes

dsh plugin add 只负责把包放进 profile;装完确认 profile 的 package.json 里两处都在:

  • dependencies:"dsh-course-notes": "github:sony6490/dsh-course-notes"
  • dsh.profile.bundles:数组里有一项 "dsh-course-notes"

缺 dependencies 时,之后任何一次 pnpm install(例如用 dshmarket 装/卸别的插件)都会把这份副本当多余包删掉——本插件 2026-11 就踩过,安装脚本已改成同时写依赖与 bundles。

工具

工具 说明
course_notes_status 查看启用状态、输出目录、coursemap 状态、学科/视频数、已投递/待投递/失败、最近投递的会话与文档
course_notes_deliver 立即投递某个已在 coursemap 状态里的视频;缺省取最近处理的视频;force=true 可重复投递

重启后验收:

course_notes_status
course_notes_deliver { "title": "<某个已有视频标题>", "force": true }

期望:侧边栏「课程知识地图」分组下出现「📚 <视频标题>」会话,对话里是摘要文字 + Word 文件卡,点击可打开/下载。

配置

全部可缺省。需要覆盖时在 profile 的 cordis.patch.yml 里按 id 覆盖:

- id: dsh-course-notes
  config:
    coursemapOutputDir: 'C:/Users/你的用户名/课程知识地图'
    writeMemory: true
    backfill: false
键 默认 说明
enabled true 总开关
watchIntervalMs 15000 扫描间隔(毫秒)
initialDelayMs 20000 重启后首次扫描延迟
coursemapOutputDir C:/Users/<你>/课程知识地图 必须与 coursemap 的 outputDir 一致
sessionCwd null → 输出目录 新会话工作目录(决定项目记忆归属与左侧分组)
writeMemory true 是否写 dsh-memory-evolve 项目记忆
backfill true 首次启动是否补投历史视频
maxPerTick 2 每轮最多投递数
provider / model null 覆盖新会话模型;缺省跟 DSH 默认模型
sessionTitlePrefix 📚 会话标题前缀
stateDir C:/Users/<你>/.dsh/course-notes 台账、日志、临时 Markdown
md2docxScript <插件>/scripts/md2docx.py Word 转换脚本
python null → 自动探测 Python 解释器(需 python-docx)
maxAttempts 3 单个视频自动重试上限

状态与产物

  • 台账:/delivered.json(按 学科+标题 去重;记录 sessionId 与 docx)
  • 日志:/course-notes.log(每次投递/失败一行)
  • 单视频 Word:<输出目录>/<学科>/<视频标题>.docx
  • 学科学习手册:<输出目录>/<学科>/学习手册.docx(由 coursemap 维护)

排障

现象 排查
工具没出现 是否完全重启 DSH;node_modules 下是否有 dsh-course-notes;profile bundles 是否登记
status 显示「coursemap 状态:未找到」 coursemap 是否启用、输出目录是否与 coursemapOutputDir 一致
会话出现但只有文字没有文件 见日志里的「生成单视频 Word 失败」;确认 python / python-docx 可用
会话没有出现在项目分组 日志里的「挂接工作区失败」;不影响会话本身
视频没被新会话 看日志「投递失败」;或 coursemap 判定为非课程(纯音乐/直播/新闻等会静默忽略)

第三方代码

  • scripts/md2docx.py 来自 dsh-video-coursemap(MIT),文件头保留了原始来源说明;本插件只改了调用方式。

限制

  • 检测能力继承 coursemap:仅前台浏览器/视频客户端窗口,后台播放检测不到;
  • 新会话初始只有一条归档消息 + Word 卡,不会自动跑模型;用户可以继续在该会话里提问;
  • 若 coursemap 未来修改 Markdown 结构,章节抽取失败会降级用学科学习手册 Word;
  • 插件升级:重新执行 node scripts/install.mjs 并重启 DSH。
—/ 5

No ratings yet

Verified DSH bundle

Commit 7a89091b24ac

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout