dsh-problem-bank:结构化数学题库与变式出题

前言

在 DeepSeek Harness(DSH)里做数学相关智能体时,题目往往散落在对话或零散文件里:换数字就算「新题」、知识点和技巧没有索引,组卷时也很难按难度或方法约束选题。手工用表格或纯 Markdown 管题可以,但变式是否真增加了推理障碍、是否只是换皮,通常要靠人脑记,很难系统化。

下面介绍社区插件 dsh-problem-bank(维护者 ziyans2022,分类为工作流)。它把题目以 markdown + frontmatter 落盘,用知识点子图、题型骨架和技巧库做结构化存储,并围绕变式质量门、六维难度与多解法,辅助「同技巧、异题面」的出题与近重复检查。DSH 生态是「一切皆插件」;SkillHub 等目录页是社区站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-problem-bank 是面向数学题库建设与变式生成的 DSH 插件。当前 package 版本为 0.6.2(MIT 许可证),依赖 Node ≥18,peer 依赖 @deepseek-ai/cordis ~4.0.5。

插件不替代人工验题:机器检查不等于数学正确性或原创性的最终证明。它的定位是辅助题目组织、变式设计与质量检查。

核心功能

题目入库与多解法

  • 整理题面、解答、知识点、难度与审核状态;题目文件含 ## 题面、## 解析 等结构。
  • 一题可存多条解法(代数 / 几何 / 解析 / 组合等),每条解法独立审核;主解法仍在 ## 解析,额外解法用 ## 解法 SOL-xxx — 标题。content.solution 始终等于主解法正文,只读旧字段的调用方不必改。

知识图谱与技巧

  • 知识点关系分 学习层(prerequisite / part-of / application / contrast)与 数学层(equivalent / implies / generalizes 等);数学关系需带 evidenceStatus,kg_validate_graph 可查环、重复边等。
  • 解题技巧标注后可按技巧抽题(如 sample_by_technique),探索方法迁移。首次初始化会在 kg/techniques.json 为空时灌入 30 条技巧种子;一旦自行添加过技巧,种子不会再次覆盖。

变式质量门与创新审核

变式不能仅以「题面不同、答案正确」入库。插件要求声明变式类型与目标,并核对保留的核心难点、新增障碍、一般性是否被降低。类型包括 isomorphic、structural、harder、extension;simplified(降难)默认被 allowSimplified: false 拒绝。

典型流程包括:record_variation_intent 声明意图与难度剖面 → 独立求解核验 → audit_variation 提交 preserved / added / weakened → 通过后再 submit_for_review;commit_problem 会拦截未过门禁的题目。配置项 requireVariationGate 默认为 true。

六维难度与组卷

难度从单一星级扩展为六维剖面(各 1–5 分,且必须写 rationale):

维度 含义
conceptual 概念铺垫
technical 计算/构造执行难度
proofDepth 证明嵌套与引理
prerequisiteLoad 前置知识负担
ingenuity 关键洞察难度
generality 单个例子 / 有限情形 / 一般情形

模型初评(assessedBy: model)一律为 pending,需 review_difficulty_profile 才能变为 reviewed。组卷槽位可按维设上下界(如 generality ≥ 4),不满足即拒绝。

试卷与其它能力

  • 近重复检查:nearDuplicateThreshold 默认 0.75(子图相似度)。
  • 试卷分析与组卷:分析风格、规划结构并按约束组织试卷。
  • 从 v5 题库升级:migrate_bank(dryRun=true/false),备份到 <bankRoot>/migration/<时间>/,可用 rollbackMigration 回滚。

插件 README 称安装成功后工具列表可见 sample_by_technique、migrate_bank 等共 42 个工具。

安装与启用

DSH 插件通过插件管理器安装(npm 包名、git 仓库地址或本地目录),不要手改 profile 里的 cordis.patch.yml。本插件尚未发布到 npm,可用 git 或本地目录。

git 仓库(须填 40 位 commit,短哈希会被拒绝):

git+https://github.com/ziyans2022/dsh-problem-bank.git#d95c4c290277dcc7a084955d0d8f5a0f5360df42

本地目录(须同时含 package.json 与 cordis.patch.yml):

C:\tools\dsh-problem-bank

Windows 路径含空格时整段给出,不要加引号或转义。

装完建议确认三条:插件列表出现「题库插件」(来自 locale/zh.json 的 meta.title);工具列表含上述一类工具;日志有 [problem-bank] init ok. bankRoot=…, techniquesSeeded=30, schemaVersion=6。插件市场不支持原地升级,换版本需先移除再安装;数据在 bankRoot,不随卸载消失。从 0.5.x 升到 0.6.0 后,对旧库应先 migrate_bank({ dryRun: true }) 再看 migrate_bank({ dryRun: false })。

数据目录与配置

bankRoot 默认 ./problem-bank-data,相对路径按 DSH 进程工作目录解析,不是插件目录。正式使用建议绝对路径,例如:

bankRoot: 'D:/problem-bank-data'

目录结构示意:

problem-bank-data/
├── 2026/
│   └── ZH-0001.md
├── kg/
│   ├── nodes.json
│   ├── relations.json
│   └── techniques.json
├── papers/
├── migration/
└── .problem-bank-id-seq

常用配置(节选):

键 默认 说明
bankRoot ./problem-bank-data 题库根目录
idPrefix ZH 题号前缀
autoGitCommit false 入库时在 bankRoot 内自动 git commit
requireHumanReview true 须 pending_review 后才能 approve
requireVariationGate true 变式须过 audit
allowSimplified false 是否允许降难变式
nearDuplicateThreshold 0.75 近重复阈值

典型用法:变式质量门在考什么

README 用递推多项式原题说明:仅把 \(2^{n-1}\) 换成 \(3^{n-1}\) 并只问 \(g_3\) 的根,一般性从 general-n 掉到 finite-case,门禁会判不通过。合格的 harder 变式应保留求根完整性,并新增例如零点互异、与 \(g_{n-1}\) 零点交错等论证;对应 record_variation_intent 与 audit_variation 中类型、保留、新增、削弱与一般性字段需写全。该示例按插件数据组织思路编写,不代表已通过真实运行时的创新性审核。

入库相关工具链在质量门六步中有明确顺序:先声明意图与设计数学结构,再独立求解,再审计,最后提交审核与 commit。

适用场景与注意

适合需要长期积累数学题、按知识点/技巧/难度约束组卷、并对变式做结构化门禁的 DSH 用户或教研场景。题目纯文本可 git 管理;开启 autoGitCommit 时插件会在 bankRoot 内执行 git 操作。

务必注意:

  • 插件直接写文件系统到 bankRoot,不经过 DSH 工作区沙箱;bankRoot 指哪里就写哪里。
  • 插件自身不发起网络请求;推送远端需手动完成。
  • 安装前请自行查看 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH 进程权限运行。

结尾

dsh-problem-bank 把数学题库从「一堆 Markdown」推进到「知识点图谱 + 技巧索引 + 变式质量门 + 六维组卷约束」的工作流,适合在 DSH 里系统化建设题源并控制换皮式变式。

  • 社区目录页:https://www.skillhub.cn/plugins/ziyans2022/dsh-problem-bank
  • GitHub:https://github.com/ziyans2022/dsh-problem-bank
羽毛球分组比赛记分
小程序二维码

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

小夜