Files
memoryweave/docs/metrics-semantics.md
T
xiaoyi 9a4a734c19 fix(metrics): 计数器/率指标语义分清 + t8 阈值改由 Condition 承载(t_da03e910)
- 审计误读订正:deprecated_per_day 是计数器(无分母),不给 _samples/_valid 是对的
- 新增 deprecated_total:区分「今天 0 条」与「从未统计过」(0 的二义性)
- executor t8:原 Condition:0.1 从不生效(判据硬编码 >5)→ Condition:5.0 + 读 t.Condition,行为不变
- 单测钉住:RecordDeprecation 双计数、t8 阈值真的可配、计数器不带率键
- docs/metrics-semantics.md:counter/rate/mean 三种读法 + 0 的二义性铁律
2026-10-26 14:55:01 +08:00

2.3 KiB
Raw Blame History

织忆指标语义:counter / rate / mean(/api/v1/metrics)

2026-10-26 建立。起因:有效性审计把 deprecated_per_day(计数器)当成率指标, 报出「0 样本却判 valid=None ⇒ 缺最小样本门」。计数器没有分母,「样本门」对它无定义 —— 属探针模型错配,不是指标缺陷。本文件是给下游(审计脚本 / 看板 / 人)的唯一口径。

三类指标,三种读法

类型 命名特征 自带字段 怎么用 例子
counter 计数器 *_per_day / *_total / *_count 无 _samples / _valid 直接读绝对值,跨时间比大小;不要算比率、不要报「样本不足」 deprecated_per_day、deprecated_total、distill_success_count
rate 比率 *_rate _samples(分母)+ _valid(1=可判 / 0=不可判 / -1=N/A) _valid != 1 时不得当结论;_samples 小于门槛时只报「待积累」 auto_resolve_rate、recall_usefulness_rate
mean 均值 avg_* _samples + _valid 同上:无分母就不下判断 avg_distill_loss

铁律:0 永远有两种含义 —— 「今天确实没有」和「根本没在统计」。

  • 计数器必须配一个累计值来区分:deprecated_per_day=0 + deprecated_total=0 ⇒ 从未统计过; per_day=0 + total=137 ⇒ 统计活着,只是今天没发生。
  • 率指标必须配 _valid/_samples,分母退化时返回 metricNA(-1),不给 1(给 1 会被读成满分)。

触发器阈值也用同一套语义

internal/selfoptimize/executor.go 的 t8(TDecayCritical → archive_or_boost):

  • 判据读的是计数器 deprecated_per_day(条/天),阈值由 t8.Condition 承载,默认 5 条/天。
  • 2026-10-26 修正:原先 Condition: 0.1 但判据函数里硬编码 > 5,配置写了从不生效。 现改为 Condition: 5.0 + 判据读 t.Condition(行为不变,但配置真的能被改)。
  • 若要改成「率」语义,需要先有分母(当日活跃写入量),否则别动 —— 那会变成另一个探针错配。

已知遗留

  • 审计脚本侧对计数器发「样本不足」告警的白名单修复,归 t_44c07eca(脚本侧统一处理,避免多处各改一遍)。