package harness import "regexp" // secretPatterns 是输出里疑似密钥/令牌的特征(命中即脱敏,防模型把密钥回吐给用户)。 var secretPatterns = []*regexp.Regexp{ regexp.MustCompile(`sk-[A-Za-z0-9_-]{16,}`), // OpenAI/DeepSeek 风格 key regexp.MustCompile(`AKIA[0-9A-Z]{16}`), // AWS Access Key ID regexp.MustCompile(`eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{4,}`), // JWT regexp.MustCompile(`(?i)bearer\s+[A-Za-z0-9._-]{16,}`), // Bearer 令牌 } const redactMark = "[已脱敏]" // RedactSecrets 把文本里疑似密钥/令牌替换为脱敏标记,返回脱敏后文本与命中次数。 // 输出护栏:在 token 发射前对每个分片调用(流式无法回收已发,故逐片脱敏 + 最终标记)。 func RedactSecrets(s string) (string, int) { n := 0 for _, re := range secretPatterns { s = re.ReplaceAllStringFunc(s, func(string) string { n++ return redactMark }) } return s, n }