Back to home@988hj7tczd-oss

dsh-math-olympiad

DSH skill bundle: competition math (IMO/Putnam/USAMO/AIME) solved with pure reasoning, adversarial verification in a fresh subagent, and calibrated confidence

Stars
0
Language
TypeScript
Created
Aug 24, 2026
Updated
Aug 24, 2026

Introduction

dsh-math-olympiad

[!IMPORTANT] 依赖前置:相邻 dsh-src 检出(link: 依赖) 本项目在开发形态下使用 link: 依赖指向相邻的 DeepSeek Harness 源码检出(dsh-src), 与当前仓库保持同一父目录布局(<parent>/dsh-src)。克隆本仓库后:

  1. 先把官方 deepseek-ai/deepseek-harness 检出到与本仓库同级的 dsh-src/ 目录,并执行其 pnpm install && pnpm run build
  2. 再按下方「安装」一节执行本仓库的 pnpm install --offline && pnpm build 与测试。 发布到 npm 的版本会尽量把 link: 依赖替换为 registry 真实版本;无法替换的内部包保持 link:,见各包 README 说明。

DSH 技能插件:竞赛数学解题(对抗验证 + 校准信心)。 面向 IMO / Putnam / USAMO / AIME 及各类数学竞赛题,流程为 "纯推理求解 → 剥离思考链 → 新鲜上下文 subagent 对抗验证 → 校准信心输出 (high / medium / 诚实 'no confident solution')",可选用 LaTeX 编译 PDF。

定位:这是严谨流程 + 诚实弃权的技能,不承诺正确率。 输出总是"解 + 验证结论 + 信心"三位一体;不确定就直说,不硬编答案。

目录结构

dsh-math-olympiad/
├── package.json                  # dsh.bundle 声明(发布为可安装 profile bundle)
├── cordis.yml                    # 开发期补丁覆盖层(scratch-plugin 风格,引用本机 src)
├── cordis.patch.yml              # 发布用 bundle 层(引用安装后的 lib 入口)
├── tsconfig.json                 # src/ → lib/ 构建配置
├── src/locator.ts                # Host 插件:提供 mathOlympiadSkills 服务(定位 skills/)
├── skills/dsh-math-olympiad/
│   ├── SKILL.md                  # frontmatter(触发词) + 5 红旗启发式 + 五步流程
│   ├── references/
│   │   ├── solver_heuristics.md      # Pólya 六板斧(中文重写)
│   │   ├── verifier_patterns.md      # 验证器失败模式清单(真实攻击面)
│   │   └── presentation_prompts.md   # 输出/讲解模板与数学排版约定
│   └── scripts/
│       ├── check_latex.sh            # TeX 引擎探测(无引擎给出各平台安装提示)
│       └── compile_pdf.sh            # LaTeX → PDF(两遍编译,退出码语义明确)
├── tests/smoke.e2e.ts            # 离线冒烟:结构/触发词/5 原则/subagent 协议/弃权路径/脚本行为
├── README.md
└── LICENSE                       # MIT

安装(发布形态:profile bundle)

技能以 @deepseek-ai/dsh-skill-filesystemcustomSkillDirs 挂载 (PROMPT 指定的 DSH 侧集成方式):

cd dsh-math-olympiad 的父目录
dsh plugin --profile <name> add ./dsh-math-olympiad
dsh --profile <name>
  • 前置:profile 需含 @deepseek-ai/dsh-base(默认第一个 bundle,提供 skill 注册表与 @deepseek-ai/dsh-skill-filesystem 包)。

  • package.jsondsh.bundle.patch 指向 cordis.patch.yml;该层插入两个 行:dsh-math-olympiad-locator(把技能目录暴露为 mathOlympiadSkills 服务,构造时从 import.meta.url 定位包内 skills/)与 dsh-math-olympiad-skill(独立的 providerName: math-olympiad skill-filesystem 提供者,避免与 base 行冲突;配置 includeDefaultRoots: false,只扫本包的 customSkillDirs,不重复扫描 默认根)。

  • git 直装只取源码prepare 负责构建 lib/(自包含 tsc,无需 monorepo 上下文)。但 pnpm ≥10 默认拒绝运行 git 依赖的 prepare, 首次 add 会失败——先允许构建再重跑 add:在 profile 的 pnpm-workspace.yaml 里加

    allowBuilds:
      dsh-math-olympiad: true
    

    (或用交互式 pnpm approve-builds)。注意这是"允许该包源码在安装期于你 的机器上执行"的授权,只对信任的包放开。若不想走这一步,直接 dsh plugin add ./dsh-math-olympiad-0.1.0.tgzpnpm pack 产物)或从 npm 安装——这两种分发自带 lib/ 构建产物,无需任何构建许可。

本地开发接法(无需发布)

dsh --profile <name> --patch ./cordis.yml     # 引用 ./src/locator.ts

cordis.yml 采用 scratch-plugin 风格,把本机 checkout 的 src/locator.ts 直接作为插件行;DSH 可直接运行 TS。

验证

node tests/smoke.e2e.ts          # Node ≥ 23.6 直接跑;22.6–23.5 加 --experimental-strip-types
# 或
npx tsx tests/smoke.e2e.ts

冒烟覆盖(对照验收标准):

  1. 交付物结构完整、shell 脚本可执行、bash -n 语法合法;
  2. frontmatter 触发词覆盖 IMO / Putnam / USAMO / olympiad / competition math / 数学竞赛 / 证明校验 等;
  3. 5 条红旗启发式原样保留(含 no confident solution 弃权条款);
  4. 验证器协议:SKILL.md 明示 subagent + 新鲜上下文 + 不共享推理轨迹; 测试断言验证器(stub)被调用,并做结构断言"verify 入参只有 proof 一个 字段"(思考链无转发通道——该保证由 harness 只转发 .proof 构造,真正的 防泄漏依赖 SKILL.md 正文纪律,详见 smoke 文件内的构造性说明);
  5. 弃权路径:构造坏题 → 2 轮重解仍失败(修复链用例验证第二轮确实拿到新解) → 输出 no confident solution 与卡点,不硬编;
  6. 脚本行为(与机器布局无关):check_latex.sh 无引擎退出码 1 并打印安装 提示(有引擎退出码 0 并声明引擎);compile_pdf.sh 的"无引擎"分支用构造 的引擎隔离 PATH 在任何机器上确定性触发(exit 1 提示先跑 check),引擎 参数白名单外 exit 3;引擎可用时用 node:test 真实调用 compile_pdf.sh 验证退出码 0 与 PDF 产物存在、坏 tex exit 2(引擎不可用时该用例显式 skip 并打印原因,不假绿);流程回退 Markdown 数学不崩。

用法摘要(技能运行时)

  1. 解(纯推理,Pólya 六板斧);
  2. 剥离思考链,只留证明正文;
  3. subagent 新鲜上下文对抗验证(verifier_patterns 失败模式逐条攻击, 含"这能证 RH 吗?"开放问题特化测试);
  4. 致命缺口 → 回到 1,最多 2 轮;仍失败 → 诚实弃权;
  5. 输出 解 + 验证结论 + 信心(high / medium / no confident solution); check_latex.sh 通过则 compile_pdf.sh 出 PDF,否则 Markdown 数学。

局限

  • 正确率无承诺:验证增强严谨性,不消除出错可能;
  • subagent 验证器的质量取决于其模型与新鲜上下文的隔离纪律——思考链一旦 混入正文,验证即失效(红旗第 1 条);
  • 弃权是特性不是失败:no confident solution 附卡点与所需条件, 便于用户补充条件或交给更强模型。

许可

MIT。启发式与方法论借鉴自上游公开方法论(Pólya、对抗验证模式), 本项目内全部正文为独立中文重写,shell 脚本自写;不含上游专有源码副本。