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
匹配工具调用
ToolMatch 比较一条 LogicalToolOccurrence。calledTool 接收 ToolMatch,或只按名称选择的薄糖;第二参数只表达次数。notCalledTool 使用相同 selector 表达零匹配。
jsonMatch,路径用 referencesAnyPath,命令 token 用 commandMatch。输出不存在、材料不完整或 HITL 尚未完成时,Match 会成为 unavailable,不会伪装成普通不匹配。
完整签名、材料状态与三值计数规则见 Scoped assertions。
常见用法示例
组合与三态
and / or 里的 Match 必须属于同一 domain。布尔 Match 的内部结果是 matched、mismatched 或 unavailable:or 只有在没有子项命中且至少一项证据不完整时才返回 unavailable,不会把未知当成否定。Match 自身不持有判定、计分或控制流;.atLeast(n)、.score(n) 与 .orStop() 属于登记后的 AssertionHandle。
下面列出 Match 值本身的稳定字段。品牌和 evaluator 是模块私有实现,不属于作者 API。
Match
domain
name
BooleanMatch
kind
[matchRefinementBrand]
ScoreMatch
kind
atLeast
自定义 matcher
defineValueMatch,连续分数用 defineScoreMatch。两者只实现单候选比较;读取文件、扫描事件、决定 coverage 或修改判定仍由 Assertion 登记入口与 Runner 负责。