shuiiiiimu/dsh-selfharness ↗★ 0

dsh-selfharness

通过真实会话轨迹递归评估与改进Harness 适合需要对Harness进行自动化缺陷挖掘、版本评测与自进化的高级用户。

包名
dsh-selfharness
兼容性
待验证
Cordis 依赖范围
*
版本
0.1.0
最近更新
2026年9月26日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:shuiiiiimu/dsh-selfharness

3. 配置

所有字段可选,写在 profile 的 cordis.patch.yml 里:

- id: selfharness
  config:
    enabled: true
    toolApproval: mutating          # always | mutating | never
    pinnedRev: 0003-a1b2c3          # 钉住一个已知可用的版本
    agentModel: { provider: deepseek-official, model: deepseek-flash, reasoningEffort: high }
    budgets:
      maxRoundsPerDay: 4
      maxRolloutsPerRound: 400
      autoPauseAfterConsecutiveNoImprovement: 3
      phaseShares: { screen: 0.1, confirm: 0.8, recheck: 0.1 }   # 轮内预算按阶段硬闸
      noiseCalibrationTarget: 4           # 同一 rev 的基线样本数,够了才允许能力通道
      noiseCalibrationRepeatsPerRound: 2  # 每轮最多花几次基线重复来标定 δ
    gates:
      screenK: 1
      confirmK: 3
      noiseFloor: auto                    # auto = 由 (rev,model,suite,split,k) 池标定
      capabilityFloorTolerance: 0.03      # τ_cap:非劣边界(≠ δ_noise)
      capabilityAlpha: 0.05               # 单侧显著性水平
      minDiscordantPairs: 5               # 达不到就只能说「证据不足」
      targetMde: 0.05                     # 面板上的 MDE 目标
    risk: { requireHumanApprovalFor: [tool-policy, doctrine, skills, permissions, self-modification, request-policy, proposer-policy] }
    crossModel: { enabled: false, arm: { provider: xiaomi, model: mimo-v2.6-pro },
                  critic: { provider: xiaomi, model: mimo-v2.6-pro }, required: false }
    taskFactory: { enabled: true, stabilityRuns: 3, mainTaskTarget: 30 }
    population: { archiveLimit: 200, routingEnabled: false }
    requestPolicy: { enabled: false, audit: true }   # 审计始终开;策略默认关
    selfModification: { enabled: false, minStableRounds: 5 }
字段默认说明
rootDir/.dsh/selfharnessPack 仓库 + 台账;这个目录本身是一个 git 仓库
dataDir$DSH_HOME/storages/selfharnessselfharness.db
enabledtrue全局 kill switch:false 时读面照常、写面拒绝
toolApprovalmutating只读工具不申请批准;花钱/改 Harness 的三个(run / maintain / decide)强制申请。headless 部署把它设成 never(等于「这个部署自己有闸门」)
pinnedRev无钉住一个版本,忽略 ledger/active.json
budgets.maxRoundsPerDay4每日轮次上限;熔断只挡写操作
gates.confirmK3阶段 2 每任务重复次数
gates.minEvidenceCount3缺陷成案所需的独立证据条数
gates.noiseFloorautoauto = 由 (packRev, model, suite, split, k) 基线池标定;给数字可钉死(复现实验用)
gates.capabilityFloorTolerance0.03τ_cap:非劣边界(2–5pt)。它与 δ_noise 是两个旋钮:δ 回答「有没有变好」,τ_cap 回答「有没有明显变坏」
gates.capabilityAlpha / minDiscordantPairs0.05 / 5预注册的单侧能力检验;不一致对数不够时判决是 insufficient-evidence 而不是 reject
budgets.phaseShares0.1/0.8/0.1轮内 rollout 按阶段硬分配;超限抛 BudgetExhausted,候选记 insufficient-evidence
budgets.noiseCalibrationTarget4同一 rev 的基线样本少于它时,能力通道被禁用,本轮最多只能 defer
crossModel.*关闭F1:异族迁移臂 + 异族审查者。enabled 不等于泛化成立——无数据时门控报 undetermined
population.routingEnabledfalseF3:按任务族路由到不同 rev。默认关闭时行为与单 pack 完全一致
requestPolicy.enabledfalse面 D:按任务族覆盖 reasoningEffort/maxTokens。关闭时行为逐字节不变
evalPreset / proposerPresetselfharness-eval / selfharness-proposer打在这两类会话上,经验采集据此排除它们

预算、门控、路径与预设都是插件 Config,不是运行时状态:改它们要编辑 cordis.patch.yml 并重启 Harness,面板只做只读投影。