关于 deterministic-metric-design
这项参考技能指导研究者和开发者设计可计算、确定、有效且不易被操纵的指标,涵盖从定义构念到证明、验证和采用的流程。
主要功能
- 01涵盖八类共 44 条规则
- 02定义构念与代理指标
- 03指导可计算性与可处理性
- 04证明指标属性
- 05检查确定性与可复现性
- 06验证效度并防范投机
适用场景
- 01设计新的评分或指数
- 02严格审查拟议指标
- 03为 Agent 设定优化目标
- 04让研究指标可复现且可采用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill deterministic-metric-design安装后在 Claude Code 中输入/deterministic-metric-design确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdagg-report-uncertainty-not-false-precision.mdagg-respect-scale-in-aggregation.mdagg-ship-reference-impl-and-test-vectors.mdagg-version-the-metric-publicly.mdcomp-bound-approximation-error-explicitly.mdcomp-choose-a-decidable-observational-equivalence.mdcomp-design-a-proxy-with-a-proven-error-direction.mdcomp-do-not-define-metric-as-uncomputable-ideal.mdcomp-keep-the-metric-tractable.mdcomp-prefer-monotone-confluent-transformations.mdcomp-respect-rices-theorem-for-semantic-properties.mddef-anchor-to-the-decision.mddef-fix-unit-of-analysis.mddef-name-the-latent-construct.mddef-operationalize-behavior-and-size.mddef-separate-construct-from-proxy.mddef-write-falsifiable-operational-definition.mddet-control-floating-point-and-accumulation.mddet-make-the-metric-a-pure-function.mddet-pin-iteration-and-tie-break-order.mddet-pin-the-input-representation.mddet-version-and-record-the-toolchain.mdgame-detect-reward-hacking-with-audits.mdgame-hard-block-construct-violating-wins.mdgame-make-cheapest-improvement-the-right-one.md详细介绍
dot-skills 确定性指标设计最佳实践
设计确定、可计算、可证明且有效的指标,让 Agent 能够信赖这些指标,并据此优化,而不会钻空子。8 个类别中的 44 条规则,能将模糊的构念转化为可采用、可由机器检验的数值:定义构念,用可靠的代理指标应对可计算性限制,以测量理论为依据,证明其性质,明确其确定性,通过实证加以验证,使其能够抵御优化压力,并将其打包以供采用。
贯穿所有类别的示例是——一种确定性指标,用于衡量在保持行为不变的前提下缩减代码库规模的效果(缩减代码,同时不改变应用的运行方式)。这是理想的压力测试,因为其理想形式在理论上无法实现(Kolmogorov 复杂度不可计算;根据 Rice 定理,程序等价性不可判定),因此整个设计工作就是构建一个确定、易于处理且具有已证明保证的代理指标。
这是 *-algorithms 技能所应用(Big-O、NDCG、cyclomatic、MoJoFM)而从不讲授的测量设计层。
适用时机
在以下情况下使用此技能:
- 设计新指标、分数或指数,或审查他人提出的指标是否严谨
- 被要求“量化”“测量”“评分”或“排序”一个尚无公认度量的属性
- 构建一个确定性的优化目标,供 Agent 持续优化(例如,在不改变行为的前提下缩减代码规模)
- 审查一项现有指标,发现它“感觉不对劲”——它似乎只是在跟踪 LOC、每次运行结果都不同,或容易被钻空子
- 将研究构想或公式转化为可计算、可复现且可采用的方案
工作流:定义 → 转化为可计算形式 → 证明 → 验证 → 加固
这些类别按级联影响的严重程度排序——上游的错误会污染下游的一切。请从上到下逐步处理,也可以根据下表直接跳到某个类别:
| 如果你…… | 从这里开始 | 第一条规则 |
|---|---|---|
| 从模糊的属性着手 | def- | def-name-the-latent-construct |
| 担心理想形式不可计算/不可判定 | comp- | comp-do-not-define-metric-as-uncomputable-ideal |
| 不确定是否可以取平均值或计算比率 | meas- | meas-declare-the-scale-type |
| 声称指标具有某种行为 | prop- | prop-prove-monotonicity |
| 每次运行得到的数值都不同 | det- | det-pin-iteration-and-tie-break-order |
| 不确定它是否测量了真正想测的东西 | valid- | valid-discriminant-not-just-loc |
| 让 Agent 优化该指标 | game- | game-hard-block-construct-violating-wins |
| 将指标发布给他人使用 | agg- | agg-ship-reference-impl-and-test-vectors |
每个参考文件都是一个 {category}-{slug}.md 文件,包含:说明其重要性的 WHY、标注失败原因的 Incorrect 示例、展示最小修正的 Correct 示例,以及参考资料。Incorrect/Correct 示例是指标的定义和流程,而非应用代码——两者对比展示的是设计不佳的度量与修正后的度量。
按优先级划分的规则类别
| # | 类别 | 前缀 | 影响 | 规则数 |
|---|---|---|---|---|
| 1 | 构念定义与操作化 | def- | 严重 | 6 |
| 2 | 可计算性与可处理性 | comp- | 严重 | 7 |
| 3 | 测量理论基础 | meas- | 高 | 5 |
| 4 | 度量属性的证明 | prop- | 高 | 6 |
| 5 | 确定性与可复现性 | det- | 高 | 5 |
| 6 | 构念效度与校准 | valid- | 中高 | 6 |
| 7 | 优化安全与反博弈 | game- | 中 | 5 |
| 8 | 聚合、报告与采用 | agg- | 中低 | 4 |
完整的排序依据请参阅 references/_sections.md。
快速参考
1. 构念定义与操作化(严重)
def-name-the-latent-construct— 编写任何公式之前,先为不可观测属性命名def-separate-construct-from-proxy— 区分构念、代理指标及两者之间假定的联系def-write-falsifiable-operational-definition— 明确说明得出该数值的具体步骤def-fix-unit-of-analysis— 明确分析单位和测量边界def-anchor-to-the-decision— 明确该度量指标所驱动的决策和行动阈值def-operationalize-behavior-and-size— 定义“行为”(≈)和“大小”,确保格式化程序无法改变它们
2. 可计算性与可处理性(严重)
comp-do-not-define-metric-as-uncomputable-ideal— 不要将度量指标定义为 Kolmogorov 复杂度comp-respect-rices-theorem-for-semantic-properties— 对不可判定的语义事实使用可靠的近似方法comp-choose-a-decidable-observational-equivalence— 用可检验的 ≈ 替代不可判定的等价关系comp-design-a-proxy-with-a-proven-error-direction— 为代理指标提供可靠的界限,确保它不会高估comp-keep-the-metric-tractable— 选择近线性代理指标,而非 NP-hard 的最优解comp-bound-approximation-error-explicitly— 量化并报告代理指标与理想值之间的差距comp-prefer-monotone-confluent-transformations— 合流且终止的重写可得出唯一的不动点
3. 测量理论基础(高)
meas-declare-the-scale-type— 在使用任何统计量之前,声明尺度类型:名义、顺序、区间或比率meas-only-admissible-statistics— 只使用在该尺度变换下保持不变的统计量meas-establish-meaningful-zero-and-unit— 要声称是比率尺度,必须给出真实的零点和明确的单位meas-preserve-the-empirical-relation— 验证该度量指标对已知锚定案例的排序是否正确meas-avoid-ad-hoc-weighted-sums— 不要使用任意权重将不可通约的尺度相加
4. 证明度量属性(高)
prop-prove-monotonicity— 证明当构念发生变化时,分数会朝正确方向变化prop-prove-invariance-under-irrelevant-transforms— 证明对重命名和格式调整具有不变性prop-ensure-sensitivity-to-relevant-change— 确保仍具备区分能力(不会饱和)prop-check-weyuker-briand-axioms— 检查适用于该度量类型的已发表公理prop-prove-boundedness-and-handle-empty— 证明取值范围;定义空值/分母为零时的处理方式prop-prove-or-disclaim-composability— 聚合前证明可加性,否则拒绝求和
5. 确定性与可复现性(高)
det-make-the-metric-a-pure-function— 不依赖隐藏的时间、网络或全局状态det-pin-iteration-and-tie-break-order— 按全序键排序;对任何随机性设置种子det-pin-the-input-representation— 明确固定要度量的表示形式(AST 阶段)det-control-floating-point-and-accumulation— 固定求和顺序和舍入精度det-version-and-record-the-toolchain— 输出度量版本、工具版本和输入哈希
6. 构念效度与校准(中高)
valid-converge-with-accepted-measure— 展示与可信的构念度量趋于一致valid-discriminant-not-just-loc— 证明除了 LOC/规模之外,还能提供增量信号valid-predictive-validity-against-outcome— 展示该度量能在样本外预测真实结果valid-beat-the-trivial-baseline— 报告相较于简单基线的提升幅度valid-calibrate-thresholds-to-ground-truth— 根据数据推导阈值,而非使用整数valid-validate-out-of-sample— 使用留出集/时间切分,避免对语料过拟合
7. 优化安全与反博弈(中)
game-make-cheapest-improvement-the-right-one— 确保成本最低的得分提升确实是正确的提升game-recognize-goodhart-variants— 预判回归型/极值型/因果型 Goodhart 效应game-pair-with-guardrail-metrics— 添加反向指标,否决导致退步的“胜利”game-hard-block-construct-violating-wins— 以不变量作为门槛;绝不使用可被权衡抵消的软惩罚game-detect-reward-hacking-with-audits— 对高分结果进行抽查;监控代理指标与结果之间的偏移
8. 聚合、报告与采用(低—中)
agg-respect-scale-in-aggregation— 按照尺度允许的方式进行聚合(序数尺度不得取平均值)agg-report-uncertainty-not-false-precision— 报告区间/边界,而非虚假的精确度agg-version-the-metric-publicly— 使用语义化版本和变更日志,确保使用者能够进行比较agg-ship-reference-impl-and-test-vectors— 发布测试向量,确保实现结果一致
使用方法
- 使用 工作流 表确定当前所处阶段,并打开匹配的首条规则。
- 按顺序自上而下处理各类别——
def-和comp-至关重要,因为模糊的构念或无法计算的理想会让所有后续内容变得嘈杂或无法使用。 - 提出或评审指标时,引用规则的文件路径,以便评审者核查推理过程。
- 对于新指标,编写一页规格说明,列明:构念、代理指标、尺度 + 单位 + 零点、已证实的属性、确定性保证、有效性证据、护栏和版本——本页面中的每个类别各占一行。
- 有关排序依据,请参阅
references/_sections.md;添加规则时,请参阅assets/templates/_template.md。
参考文件
| 文件 | 说明 |
|---|---|
| references/_sections.md | 类别定义、影响级别和排序依据 |
| assets/templates/_template.md | 添加新规则的模板 |
| metadata.json | 学科、类型和来源参考 |
相关技能
same-results-less-code、code-simplifier、complexity-optimizer、knip-deadcode— 提供指导性代码精简的技能。本技能补足它们缺少的测量层:一种确定性且保持行为的精简指标,用于设定目标并进行验证。algorithmic-complexity-review、computer-science-algorithms— 应用现有度量方法(Big-O)。本技能讲解如何设计新度量方法。opensearch-function-scoring-algorithms— 应用型排序指标(NDCG、A/B 测试)。本技能是其eval-类别背后的基础方法论。