// Package evalgold 是通用任务黄金集的最小回归夹具。 // 领域指标(阶段映射、相关性三态)留在下游仓;这里只锁住「规则层不得误触发」。 package evalgold import ( "encoding/json" "os" "strings" ) // Case 是一条黄金样本。Want 为空表示规则层必须保持沉默。 type Case struct { Input string `json:"input"` Want string `json:"want"` } // Classify 是可替换的规则层。当前实现只认识显式危险短语,避免闲聊误触发。 func Classify(input string) string { if strings.Contains(input, "删除全部") { return "danger" } return "" } // Load 读取黄金集。 func Load(path string) ([]Case, error) { raw, err := os.ReadFile(path) if err != nil { return nil, err } var cases []Case if err := json.Unmarshal(raw, &cases); err != nil { return nil, err } return cases, nil } // Check 返回第一条失配。空字符串表示通过。 func Check(cases []Case) string { for _, c := range cases { if got := Classify(c.Input); got != c.Want { return c.Input + ": got " + got + " want " + c.Want } } return "" }