🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

课程知识地图 linner1224/dsh-video-coursemap

DeepSeek Harness
linner12240 天前有提交已提供中文文档扫描:含敏感能力

视频课程知识地图 AgentDeepSeek Harness 插件

38.1/100
综合分
5
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add linner1224/dsh-video-coursemap
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · platform
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-video-coursemap(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 15:15:43

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 19 处,展示前 17 条)
  • 读取本地文件
    lib/index.js:122
    function ensureDir(p) { if (!existsSync(p)) mkdirSync(p, { recursive: true }) }
  • 写入本地文件
    lib/index.js:122
    function ensureDir(p) { if (!existsSync(p)) mkdirSync(p, { recursive: true }) }
  • 写入本地文件
    lib/index.js:127
    writeFileSync(tmp, content, 'utf8')
  • 写入本地文件
    lib/index.js:128
    renameSync(tmp, file)
  • 读取本地文件
    lib/index.js:133
    const j = JSON.parse(readFileSync(p, 'utf8'))
  • 请求外部主机api.bilibili.com
    lib/index.js:237
    const r = await fetch('https://api.bilibili.com/x/frontend/finger/spi', { headers: { 'User-Agent': BILI_UA } })
  • 发起网络请求
    lib/index.js:237
    const r = await fetch('https://api.bilibili.com/x/frontend/finger/spi', { headers: { 'User-Agent': BILI_UA } })
  • 发起网络请求
    lib/index.js:251
    const res = await fetch(url, {
  • 读取本地文件
    lib/index.js:465
    for (const rt of readdirSync(runtimesDir)) {
  • 执行外部命令来自配置/变量
    lib/index.js:472
    const r = spawnSync(c, ['--version'], { timeout: 8000, windowsHide: true })
  • 写入本地文件
    lib/index.js:490
    writeFileSync(ps1Path, POLL_PS1, 'utf8')
  • 写入本地文件
    lib/index.js:501
    try { appendFileSync(logPath, `[${new Date().toISOString()}] ${msg}\n`, 'utf8') } catch { }
  • 读取本地文件
    lib/index.js:520
    const txt = readFileSync(pollOutPath, 'utf8').replace(/^ FEFF/, '')
  • 读取本地文件
    lib/index.js:551
    let text = readFileSync(p, 'utf8')
  • 读取本地文件
    lib/index.js:561
    const text = readFileSync(p, 'utf8').replace(/ +$/, '') + `\n\n---\n\n${md}\n`
  • 执行外部命令来自配置/变量
    lib/index.js:568
    const r = spawnSync(pythonPath, [MD2DOCX_PATH, mdPath, docxPath], { timeout: 60000, windowsHide: true, encoding: 'utf8' })
  • 写入本地文件
    lib/index.js:601
    renameSync(oldPath, newPath)
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.bilibili.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-video-coursemap · 视频课程知识地图 Agent 2.0 纯 DSH 插件:实时检测网页端 B 站视频课程 → 按关键词自动学科分类 → 抓取视频内容/弹幕/评论做知识总结 → 输出 Word 知识地图与学习手册。无需任何运行时依赖,无需修改 DSH 核心。 安装 方式一:Release 预构建包(推荐,无需 git、无需 npm) dsh plugin add "https://github.com/linner1224/dsh-video-coursemap/releases/download/v2.0.0/dsh-video-coursemap-2.0.0.tgz" 直接从 GitHub Release 下载打包好的产物,全程不调用 git,也不需要 npm 账号或构建工具。这是兼容性最好的方式,任何装了 DSH 的机器都能成功。 方式二:插件市场 在市场里搜索 dsh-video-coursemap 一键安装。市场能否免 git 安装,取决于索引里这条记录是否已带上 tarball 映射 —— 详见下方《装不上怎么排查》。
展开完整文档(README 剩余 1 节)
dsh-video-coursemap · 视频课程知识地图 Agent 2.0

纯 DSH 插件:实时检测网页端 B 站视频课程 → 按关键词自动学科分类 → 抓取视频内容/弹幕/评论做知识总结 → 输出 Word 知识地图与学习手册。无需任何运行时依赖,无需修改 DSH 核心。

安装

方式一:Release 预构建包(推荐,无需 git、无需 npm)

dsh plugin add "https://github.com/linner1224/dsh-video-coursemap/releases/download/v2.0.0/dsh-video-coursemap-2.0.0.tgz"

直接从 GitHub Release 下载打包好的产物,全程不调用 git,也不需要 npm 账号或构建工具。这是兼容性最好的方式,任何装了 DSH 的机器都能成功。

方式二:插件市场

在市场里搜索 dsh-video-coursemap 一键安装。市场能否免 git 安装,取决于索引里这条记录是否已带上 tarball 映射 —— 详见下方《装不上怎么排查》。

方式三:GitHub 地址(需要本机已装 git)

dsh plugin add github:linner1224/dsh-video-coursemap

此方式要求本机已安装 git 且在 PATH 中,并且能访问 github.com。缺任意一项都会失败。

装不上怎么排查

| 现象 | 原因 | 解决 |
| ERR_PNPM_GIT_RESOLVE_FAILED、git ls-remote failed: 'git' 不是内部或外部命令 | 本机没装 git,或 git 不在 PATH | 安装 Git for Windows 并重启 DSH,或改用方式一 |
| ETIMEDOUT、连接 github.com 超时 | 网络无法访问 GitHub | 给 git/pnpm 配代理,或改用方式一 |
| 市场里点安装失败,但手动 dsh plugin add 能装 | 市场索引尚未收录本插件的 tarball 映射,退化成了裸 github: 地址(必须走 git) | 改用方式一,或等索引刷新 |
| 装完 course_map_ 工具不出现 | 插件未被加载 | 重启 DSH(DSH 对插件模块做缓存,不会热重载) |
| 能装、能跑,但生成 Word 失败 | 缺少 Python 环境(scripts/md2docx.py 依赖本机 python) | 安装 Python,或先关闭 Word 输出 |

维护者:发版与「市场免 git 安装」

市场的安装目标由 installTargetFor 决定,优先级为:

1. npm 包(发布到 npm registry)
2. GitHub Release 上的 .tgz 资产(tarball 映射)
3. 兜底:github:owner/repo ← 要求用户本机有 git

本插件未发布到 npm,因此必须挂 Release 资产,市场才会生成免 git 的安装命令。发版步骤:

1. 打包:pnpm pack --pack-destination <输出目录>,得到 dsh-video-coursemap-<版本>.tgz
2. 在 GitHub 创建 Release,tag 与 package.json 的 version 保持一致(如 v2.0.0),把 .tgz 作为二进制资产上传
3. 等待聚合索引刷新(awesome-dsh-plugin.com,其 build-site 工作流每天 10:23(北京时间) 运行)
4. 验证映射是否生效:

$j = Invoke-RestMethod "https://awesome-dsh-plugin.com/plugins.json"
($j.plugins | Where-Object { $_.name -eq "dsh-video-coursemap" }) |
Select-Object npm, version, tarball, install

tarball 字段返回 Release 的 .tgz 地址即表示成功,此时市场按钮会走免 git 路径。

注意:package.json 里的 files 字段决定打包内容,增删文件时需同步更新;private 字段会阻止发布到 npm(不影响 Release 资产)。

2.0 三大功能

功能一:实时检测 & 静默去重

- 定时(默认每 15s)读取 Windows 前台窗口标题,识别浏览器/视频客户端中的视频。
- 新视频 → 连续 stablePolls 次(默认 2 次)稳定确认后自动生成知识地图;
- 已处理过的视频 → 保持静默,不重复生成(记录到 seen 去重表);
- 非知识内容(纯音乐、搞笑段子、无解说实况、直播、新闻、普通网页等)→ 静默忽略。

功能二:学科分类

- 由 LLM 根据视频标题 + 关键词判断所属学科(中文 ≤8 字);
- 旧学科 → 追加更新到已有的知识地图 / 学习手册;
- 新学科 → 自动新建该学科的学习手册。

功能三:内容知识总结 & Word 输出

- 按标题反查 B 站视频,抓取:视频简介、标签、字幕(如有)、弹幕(≤150 条)、热评(≤20 条);
- 基于真实内容 + 弹幕 + 评论提炼核心知识点(8~20 条、2~3 层)与思维导图(Mermaid mindmap);
- 输出为 Word(.docx):每个学科一本《学习手册.docx》+ 全局《课程总览.docx》;
- Mermaid 思维导图在 Word 里渲染为原生分级大纲(根加粗 + 分级项目符号),而非代码文本。

输出目录结构

<输出目录>(默认 C:\Users\<你>\课程知识地图,可用 outputDir 配置) ├── 课程总览.docx # 全局知识地图(学科总览 + 学科列表) ├── <学科A>/ │ └── 学习手册.docx # 该学科所有视频的知识总结 ├── <学科B>/ │ └── 学习手册.docx └── .state/ # 内部状态(state.json、manuals/.md 源、poll.log 调试日志)

配置项

| 配置 | 默认 | 说明 |
| enabled | true | 总开关 |
| pollIntervalMs | 15000 | 轮询间隔(毫秒) |
| stablePolls | 2 | 连续 N 次观察到同一新标题才处理(防标签切换抖动) |
| outputDir | null | 输出目录,null → <用户目录>/课程知识地图 |
| provider / model | null | LLM 服务商/模型,null → 跟随 DSH 默认模型 |
| maxTokens | 4096 | 生成知识地图的最大 token |
| titleMinLen | 4 | 标题最小长度(过滤空/短标题) |
| fetchContent | true | 是否抓取 B 站简介/字幕/弹幕/评论(失败自动降级为仅标题总结) |

提供的工具

| 工具 | 作用 |
| course_map_status | 查看智能体状态:是否启用、输出目录、已分类学科与视频数、最近观察标题 |
| course_map_scan | 立即执行一次前台窗口观察与知识地图生成(可传 title 直接指定视频标题,便于测试) |

技术要点 / 坑

- 改插件代码后必须重启 DSH 才生效(DSH 对插件模块做缓存,remove+reinstall 不会热重载)。
- B 站 API 需带浏览器 User-Agent + Referer(否则搜索返回 -412);通过 /x/frontend/finger/spi 取 buvid3 提升稳定性。
- 评论匿名接口封顶 3 条(sort=2 热评、ps 上限 20);AI 总结接口 /x/web-interface/view/conclusion/get 返回 -403 需登录,不可用。
- 多数 B 站视频无机器字幕(subtitle 为空),字幕是尽力抓取、失败静默降级。
- 前台窗口必须是浏览器/视频客户端才能识别;后台播放(窗口不在前台)属预期限制。

目录

dsh-video-coursemap/
├── package.json # dsh.bundle.patch → cordis.patch.yml
├── cordis.patch.yml # 把插件行 insert 进 profile 插件清单 ├── lib/index.js # Agent 主逻辑(轮询/分类/抓取/生成/Word 转换/工具) └── scripts/md2docx.py # Markdown → Word(含 mermaid mindmap → 原生分级大纲)
预览分享卡片长什么样 ↓linner1224/dsh-video-coursemap
分享 · DeepSeek Harness Hub
linner1224/dsh-video-coursemap

视频课程知识地图 AgentDeepSeek Harness 插件

回到顶部