dsh-study-loop:先学再考、间隔换角度复习的 DSH 浮动学习循环

前言

在 DeepSeek Harness(DSH)里写代码、调智能体时,知识点往往来自文档片段和临时搜索,很少形成「学过 → 被考 → 过一阵再考」的闭环。常见刷题类工具默认你已经学过内容,直接出题;没学过容易挫败,学过了又没人追问,几天后同样会忘。

下面介绍社区工作流插件 dsh-study-loop(维护者 sunhailong123,GitHub:sunhailong123/dsh-study-loop)。它在 Web 端每隔可配置的 N 分钟弹出一张浮动卡片:学习 tab 先讲本轮要考的知识点,你看完切到 答题 tab 自评落盘;答过的内容会按固定间隔阶梯,在后续轮次里换提问角度再出现。不是「上来就考」的抽查,而是 学 → 答 → 记录 → 到点换角度再问。

这是什么

插件分类为工作流,面向使用 DSH Web profile 的开发者。简介原文:Learn first, then get quizzed — 先教一个主题,再围绕它提问,并在之后从新角度带回旧知识。

数据与节奏都在本机 JSON 里维护,零 npm 依赖;判分为 0–5 自评,不调模型打分(外部也可算好分数再 POST /submit)。

核心功能

四个 tab

tab 作用
学习(默认) 本轮知识点:摘要、正文、关键要点;复习卡只给标题,点「翻原卡」才展开全文
答题 每题 textarea(草稿存 localStorage)、0–5 自评、备注;可对照判分要点与参考答案;旧知识复习题带金色边与「旧知识复习」角标
题库 模型生成、导入(JSON / Excel .xlsx / CSV)、逐条删除与重置;支持导出 CSV 与下载模板
设置 间隔分钟、每轮题数、复习题配额、过关线;模型 baseUrl / 模型名 / key 环境变量名;出题提示词模板

间隔重复

不用完整 SM-2,采用固定分钟阶梯:

30 → 180 → 720 → 2880 → 10080 → 43200
(半小时 → 3 小时 → 12 小时 → 2 天 → 7 天 → 30 天)

自评 ≥ passScore(默认 3)则档位 +1;未过关回到第一档(30 分钟后)。每轮最多掺 reviewSlots(默认 2)道到期旧题,角度在原理 / 反例 / 应用 / 对比 / 排错 / 边界 / 类比 / 取舍间轮换。

主动打开与节拍

除每 intervalMinutes 分钟自动弹窗外,还有:

  • 右下角常驻胶囊按钮(浮层收起后显示「学习循环 · 还有 N 题」);
  • POST /study-loop/api/open:立刻弹当前轮,无轮次则先攒一轮;
  • 「收起」作废本轮(到点出新轮);「+10 分钟后」仅延后,同批题到点重弹。

题库维护(三种方式可混用)

  1. 模型生成:OpenAI 兼容 POST {baseUrl}/chat/completions,默认 https://api.deepseek.com/v1 与 deepseek-chat;key 优先环境变量(默认 DEEPSEEK_API_KEY),其次设置页;仅存本机 ~/.dsh-study-loop/settings.json,接口返回掩码为 ••••后4位。
  2. 导入 Excel / CSV:题目表头含 标题, 知识点, 题干, 判分要点, 提示, 参考答案, 常见错法, 类型, 角度 等(支持中英别名);学习卡表头含 标题, 摘要, 内容, 要点, 标签。
  3. 贴 JSON:支持题目数组、{ "questions": [...] }、{ "lessons": [...] } 等形状。

学习与答题正文支持 fenced 代码块与行内代码,轻量高亮与复制按钮;不做 Markdown 全量渲染。

数据与 HTTP

默认目录 ~/.dsh-study-loop/(可用 dataDir 覆盖):lessons.json、questions.json、progress.json(含最近 2000 条作答历史)、settings.json。写入采用临时文件 + rename。

API 前缀 /study-loop/api,仅允许回环地址访问。常用路径包括 GET /state、POST /submit(缺 score 返 400 且不落盘)、POST /bank/import、POST /generate/questions 等,详见仓库 README。

当前 package 版本为 0.3.0,许可证 MIT。

安装与启用

在已配置 DSH Web profile 的环境下执行:

dsh plugin --profile web add dsh-study-loop

本地改源码即时生效时,使用链接安装(路径按本机替换):

dsh plugin --profile web add link:D:\path\to\dsh-study-loop

装完后刷新页面(F5);下一轮倒计时到点会自动弹出浮层。

可选配置写在 profile 的 cordis.patch.yml,例如:

- insert:
    - id: study-loop
      name: 'dsh-study-loop'
      inject: [ webServer ]
      config:
        dataDir: '/custom/dir'
        legacyQuizDir: ''
        intervalMinutes: 10
        questionsPerRound: 5

典型用法

  1. 安装并刷新 Web 端,等待间隔到点或点击右下角胶囊按钮打开浮层。
  2. 在 学习 tab 阅读本轮知识点,切到 答题 tab 作答并用 0–5 自评提交。
  3. 在 题库 tab 用主题 + 题数调用模型生成,或导入 CSV / Excel / JSON;首次可从「下载模板」拿示例表头。
  4. 在 设置 tab 调整 intervalMinutes、questionsPerRound、reviewSlots、passScore 与模型端点;本地 Ollama 可将 baseUrl 设为 http://127.0.0.1:11434/v1(本地地址不校验 key)。

需要脚本或外部工具立刻拉起当前轮时,对本机 DSH 进程调用:

curl -X POST http://127.0.0.1:<port>/study-loop/api/open

(端口以当前 DSH Web 服务为准。)

适用场景与注意

适合:希望在写 DSH 相关代码的间隙,用同一张卡片完成「材料 + 自测 + 间隔复习」的开发者;题库可自建、可导入、也可用 OpenAI 兼容 API 批量生成。

注意:

  • 插件以当前 dsh 进程权限运行,安装前请自行查看 GitHub 源码与 MIT 许可证,确认数据目录与网络出站(模型生成)符合你的环境策略。
  • 浮层为自绘 DOM,未走 shell.overlay;卸载插件后浮层可能不会自动清除,刷新页面即可。
  • 社区目录页(skillhub.cn)与 dsh-plugin.org listing 为生态索引,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式。

结尾

dsh-study-loop 把「没学过就考」和「学过没人问」两条线收进一条 Web 侧学习循环:先学、再评、再按阶梯换角度复习。若要查看简介与安装入口,可打开目录页 skillhub.cn/plugins/sunhailong123/dsh-study-loop;完整 tab 说明、表头字段与 API 列表以仓库为准:github.com/sunhailong123/dsh-study-loop。

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

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

小夜