Prevents bad outputs using two independent reviewers who must both pass before release. Loops through fixes until convergence.
How this skill is triggered — by the user, by Claude, or both
Slash command
/everything-claude-code:santa-methodThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
多智能体对抗性验证框架。列个清单,检查两次。如果是坏的,修复它直到变好。
多智能体对抗性验证框架。列个清单,检查两次。如果是坏的,修复它直到变好。
核心洞察:单个智能体审查自己的输出会共享产生该输出时相同的偏见、知识盲区和系统性错误。两个没有共享上下文的独立审查者可以打破这种失败模式。
在以下情况调用此技能:
请勿用于内部草稿、探索性研究或具有确定性验证的任务(对于这些,请使用构建/测试/lint 流水线)。
┌─────────────┐
│ 生成器 │ 阶段 1:列个清单
│ (智能体 A) │ 生成交付物
└──────┬───────┘
│ 输出
▼
┌──────────────────────────────┐
│ 双独立审查 │ 阶段 2:检查两次
│ │
│ ┌───────────┐ ┌───────────┐ │ 两个智能体,相同评分标准,
│ │ 审查者 B │ │ 审查者 C │ │ 无共享上下文
│ └─────┬─────┘ └─────┬─────┘ │
│ │ │ │
└────────┼──────────────┼────────┘
│ │
▼ ▼
┌──────────────────────────────┐
│ 判决门 │ 阶段 3:好还是坏
│ │
│ B 通过 且 C 通过 → 好 │ 两者都必须通过。
│ 否则 → 坏 │ 无例外。
└──────┬────────┬─────────┘
│ │
好 坏
│ │
▼ ▼
[ 发布 ] ┌─────────────┐
│ 修复循环 │ 阶段 4:修复直到变好
│ │
│ iteration++ │ 收集所有标记。
│ if i > MAX: │ 修复所有问题。
│ 上报 │ 重新运行两个审查者。
│ else: │ 循环直到收敛。
│ 跳到阶段2 │
└──────────────┘
执行主要任务。不改变你正常的生成工作流。Santa 方法是生成后验证层,不是生成策略。
# 生成器正常运行
output = generate(task_spec)
并行启动两个审查智能体。关键不变量:
REVIEWER_PROMPT = """
你是一个独立的质量审查者。你还没有看到对此输出的任何其他审查。
## 任务规格
{task_spec}
## 被审查的输出
{output}
## 评估评分标准
{rubric}
## 指示
针对每个评分标准评估输出。对于每个标准:
- PASS:标准完全满足,没有问题
- FAIL:发现具体问题(引用确切的问题点)
以结构化 JSON 返回你的评估:
{
"verdict": "PASS" | "FAIL",
"checks": [
{"criterion": "...", "result": "PASS|FAIL", "detail": "..."}
],
"critical_issues": ["..."], // 必须修复的阻碍问题
"suggestions": ["..."] // 非阻塞性改进建议
}
要严格。你的工作是发现问题,不是批准。
"""
# 并行启动审查者(Claude Code 子智能体)
review_b = Agent(prompt=REVIEWER_PROMPT.format(...), description="Santa 审查者 B")
review_c = Agent(prompt=REVIEWER_PROMPT.format(...), description="Santa 审查者 C")
# 两者同时运行 — 互不可见
评分标准是最重要的输入。模糊的评分标准产生模糊的审查。每个标准必须有客观的通过/失败条件。
| 标准 | 通过条件 | 失败信号 |
|---|---|---|
| 事实准确性 | 所有声明可对照源材料或常识验证 | 虚构的统计数据、错误的版本号、不存在的 API |
| 无幻觉 | 没有捏造的实体、引言、URL 或参考文献 | 指向不存在页面的链接、无法溯源的引言归属 |
| 完整性 | 规范中的每个需求都已处理 | 缺失的章节、跳过的边界情况、不完整的覆盖 |
| 合规性 | 通过所有项目特定约束 | 使用了禁用术语、语调违规、监管不合规 |
| 内部一致性 | 输出中没有矛盾 | A 节说 X,B 节说非 X |
| 技术正确性 | 代码可编译/运行,算法合理 | 语法错误、逻辑错误、错误的复杂度声明 |
内容/营销:
代码:
any 泄漏,正确的 null 处理)合规敏感(受监管、法律、金融):
def santa_verdict(review_b, review_c):
"""两个审查者都必须通过。没有部分积分。"""
if review_b.verdict == "PASS" and review_c.verdict == "PASS":
return "NICE" # 发布
# 合并两个审查者的标记,去重
all_issues = dedupe(review_b.critical_issues + review_c.critical_issues)
all_suggestions = dedupe(review_b.suggestions + review_c.suggestions)
return "NAUGHTY", all_issues, all_suggestions
为什么两者都必须通过:如果只有一个审查者发现了问题,那个问题是真实存在的。另一个审查者的盲点正是 Santa 方法存在的意义——消除它。
MAX_ITERATIONS = 3
for iteration in range(MAX_ITERATIONS):
verdict, issues, suggestions = santa_verdict(review_b, review_c)
if verdict == "NICE":
log_santa_result(output, iteration, "passed")
return ship(output)
# 修复所有关键问题(建议是可选的)
output = fix_agent.execute(
output=output,
issues=issues,
instruction="只修复被标记的问题。不要重构或添加未请求的更改。"
)
# 在修复后的输出上重新运行两个审查者(新智能体,无前几轮记忆)
review_b = Agent(prompt=REVIEWER_PROMPT.format(output=output, ...))
review_c = Agent(prompt=REVIEWER_PROMPT.format(output=output, ...))
# 迭代次数耗尽 — 上报
log_santa_result(output, MAX_ITERATIONS, "escalated")
escalate_to_human(output, issues)
关键:每一轮审查使用全新的智能体。审查者不得携带前几轮的记忆,因为先前的上下文会产生锚定偏见。
子智能体提供真正的上下文隔离。每个审查者是一个独立的进程,无共享状态。
# 在 Claude Code 会话中,使用 Agent 工具启动审查者
# 两个智能体并行运行以提高速度
# Agent 工具调用的伪代码
reviewer_b = Agent(
description="Santa 审查 B",
prompt=f"审查此输出的质量...\n\n评分标准:\n{rubric}\n\n输出:\n{output}"
)
reviewer_c = Agent(
description="Santa 审查 C",
prompt=f"审查此输出的质量...\n\n评分标准:\n{rubric}\n\n输出:\n{output}"
)
当子智能体不可用时,通过显式上下文重置模拟隔离:
子智能体模式严格更优 — 内联模拟有审查者之间上下文泄漏的风险。
对于大批量(100+ 项),对每个项目运行完整 Santa 方法成本过高。使用分层采样:
import random
def santa_batch(items, rubric, sample_rate=0.15):
sample = random.sample(items, max(5, int(len(items) * sample_rate)))
for item in sample:
result = santa_full(item, rubric)
if result.verdict == "NAUGHTY":
pattern = classify_failure(result.issues)
items = batch_fix(items, pattern) # 修复匹配模式的所有项
return santa_batch(items, rubric) # 重新采样
return items # 清洁样本 → 发布批量
| 失败模式 | 症状 | 缓解措施 |
|---|---|---|
| 无限循环 | 审查者在修复后不断发现新问题 | 最大迭代上限(3次)。上报。 |
| 橡皮图章 | 两个审查者都通过一切 | 对抗性提示:"你的工作是发现问题,不是批准。" |
| 主观漂移 | 审查者标记风格偏好而非错误 | 严格的评分标准,仅包含客观的通过/失败条件 |
| 修复回归 | 修复问题 A 引入问题 B | 每轮使用新审查者来捕获回归 |
| 审查者一致性偏见 | 两个审查者遗漏同一问题 | 通过独立性缓解,但不能完全消除。对于关键输出,添加第三个审查者或人工抽查。 |
| 成本爆炸 | 大型输出上迭代次数过多 | 批量采样模式。每个验证周期的预算上限。 |
| 技能 | 关系 |
|---|---|
| 验证循环 | 用于确定性检查(构建、lint、测试)。Santa 用于语义检查(准确性、幻觉)。先运行验证循环,再运行 Santa。 |
| 评估工具 | Santa 方法结果反馈到评估指标。跟踪跨 Santa 运行的 pass@k 以随时间衡量生成器质量。 |
| 持续学习 v2 | Santa 发现成为经验。在相同标准上的重复失败 → 学习到的行为以避免该模式。 |
| 战略压缩 | 在压缩之前运行 Santa。不要在验证中途丢失审查上下文。 |
跟踪这些指标以衡量 Santa 方法的有效性:
Santa 方法每个验证周期的 token 成本约为单独生成成本的 2-3 倍。对于大多数高风险输出,这是划算的:
Santa 成本 = (生成 token) + 2×(每轮审查 token) × (平均轮数)
不用 Santa 的成本 = (声誉损害) + (纠正工作) + (信任流失)
对于批量操作,采样模式将成本降低到完整验证的约 15-20%,同时捕获 >90% 的系统性问题。
npx claudepluginhub aaione/everything-claude-code-zhVerifies high-stakes outputs via multi-agent adversarial review: dual independent agents apply same rubric, both must pass before shipping, with fix iterations to convergence.
Multi-agent adversarial verification framework that uses two independent reviewers to validate LLM output before publishing or deployment. Useful for hallucination detection and quality assurance.
Orchestrates multi-agent adversarial reviews with fan-out finders and three-prism verification (exploitability/correctness/refutation). Use for high-trust security audits, code review, research synthesis, or migration tasks.