前言¶
在 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 分钟后」仅延后,同批题到点重弹。
题库维护(三种方式可混用)¶
- 模型生成:OpenAI 兼容
POST {baseUrl}/chat/completions,默认https://api.deepseek.com/v1与deepseek-chat;key 优先环境变量(默认DEEPSEEK_API_KEY),其次设置页;仅存本机~/.dsh-study-loop/settings.json,接口返回掩码为••••后4位。 - 导入 Excel / CSV:题目表头含
标题, 知识点, 题干, 判分要点, 提示, 参考答案, 常见错法, 类型, 角度等(支持中英别名);学习卡表头含标题, 摘要, 内容, 要点, 标签。 - 贴 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
典型用法¶
- 安装并刷新 Web 端,等待间隔到点或点击右下角胶囊按钮打开浮层。
- 在 学习 tab 阅读本轮知识点,切到 答题 tab 作答并用 0–5 自评提交。
- 在 题库 tab 用主题 + 题数调用模型生成,或导入 CSV / Excel / JSON;首次可从「下载模板」拿示例表头。
- 在 设置 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。