niceeval/expect 只提供纯 Match factory。Match 比较一个候选值,不记录结果,也不决定判定或分数。t.check(value, match) 在调用时读取 value 并直接登记 Assertion;返回的 handle 只配置同一条 entry。
使用方式
Matchers
下面每个 matcher 的签名和说明从niceeval/expect 的源码生成,和当前实现保持同步。
and
or
not
includes
excludes
pattern
similarity
includesUrl
hasSections
isDefined
isTrue
isFalse
commandSucceeded
equals
matches
satisfies
defineValueMatch
defineScoreMatch
eventMatch
mapValue
mapEach
filterWhere
countWhere
defineMaterialMatch
defineContextMatch
匹配工具调用
ToolMatch 比较一条 LogicalToolOccurrence,并通过 .exactly(n)、.atLeast(n) 等方法表达 occurrence 数量。calledTool 接收名称、未量化 ToolMatch 或正向 occurrence Match;notCalledTool 使用未量化 selector 表达零匹配。
jsonMatch,路径用 referencesAnyPath,命令 token 用 commandMatch。输出不存在、材料不完整或 HITL 尚未完成时,Match 会成为 unavailable,不会伪装成普通不匹配。
完整签名、材料状态与三值计数规则见 Scoped assertions。
常见用法示例
组合与三态
and / or 里的 Match 必须属于同一 domain。布尔 Match 的内部结果是 matched、mismatched 或 unavailable:or 只有在没有子项命中且至少一项证据不完整时才返回 unavailable,不会把未知当成否定。Match 自身不持有判定、计分或控制流;continuous measurement 的 .gate(minimum)、.score(n) 与 .orStop(minimum) 都属于登记后的 AssertionHandle。
下面列出 Match 值本身的稳定字段。品牌和 evaluator 是模块私有实现,不属于作者 API。
Match
domain
name
BooleanMatch
kind
[matchRefinementBrand]
ScoreMatch
kind
集合中的先后条件
inOrder 可以把 2–64 个普通值 Match 组合成集合 Match,交给 t.check 或应用的集合断言方法。
它接受只读数组或带完整性状态的 MaterialCollection,按原位置寻找严格递增的子序列,不要求相邻。
and 约束同一事实。应用负责提供正式提交顺序;请求发出不代表操作采用或执行完成。
只要求双方都发言时,分别检查存在性即可。
不完整集合返回不可判定。完整集合有已知顺序证据时通过,没有可能的顺序时失败,只有依赖未知项才能成立时不可判定。
诊断保留原位置、材料 ID 和步骤判断。ToolMatch 与 EventMatch 的顺序组合保留各自的 Agent 范围,不能和普通值步骤混用。
自定义 matcher
defineValueMatch,连续分数用 defineScoreMatch。两者只实现单候选比较;读取文件、扫描事件、决定 coverage 或修改判定仍由 Assertion 登记入口与 Runner 负责。