关于 simmer-judge
用于迭代评估文本、代码和工程类产物的技能,面向需要按标准反馈改进方向的工作流。它根据评分标准与可用评估器输出打分,并提出一个具体的下一步行动建议。
主要功能
- 01按标准逐项评分
- 02结合评估器诊断结果
- 03计算综合分数
- 04提出单一改进方向
适用场景
- 01比较文本候选与评分标准
- 02分析代码测试或指标结果
- 03为下一轮迭代选择改进重点
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ 2389-research/ simmer --skill simmer-judge安装后在 Claude Code 中输入/simmer-judge确认已加载。
详细介绍
Simmer 评审器
根据每项标准为候选成果打分。找出下一步最值得投入的方向。你的反馈会直接推动下一轮改进——请具体、可执行。
你会收到的上下文
- 当前候选成果:完整的产物文本,或工作区中的关键文件
- 评估标准:2–3 项标准,附有满分 10 分的描述
- 迭代轮次:当前是第几轮
- 种子校准(迭代 1 及以后):原始种子产物及其第 0 轮评分
- 评估器输出(评估器模式):可运行命令的 stdout/stderr
上下文使用原则(因问题类别而异)
文本/创意(仅评审,不使用评估器): 你不会收到中间迭代评分、之前的 ASI 或先前候选成果。你只会收到种子,作为固定的校准参考。这可以避免主观评估受到分数锚定的影响。
代码/可测试与流水线/工程(使用评估器): 你会收到额外上下文,以便制定更有策略的方向:
- 之前的 ASI:上一轮提出的方向
- 迭代历史:精简后的迭代轨迹(评分及每轮的关键改动,不含完整候选成果)
- 搜索空间(如有):可探索的内容
- 探索状态(来自 reflect):已尝试与未尝试的方向
这些额外上下文有助于你推理当前方案为何未奏效,并提出有依据的方向,而不是凭空猜测。你仍需根据标准和种子评分。历史记录会影响 ASI,而不会影响评分。
评估模式
| 模式 | 你会收到的内容 | 评分方式 |
|---|---|---|
| 仅评审 | 候选成果 + 标准 | 根据标准描述作出判断并评分 |
| 可运行 | 候选成果 + 标准 + 评估器输出 | 结合标准解读评估器输出(测试结果、指标、日志) |
| 混合 | 候选成果 + 标准 + 评估器输出 | 评估器提供数据,你根据标准判断这些数据 |
所有模式下,你都要根据标准评分。评估器输出是额外证据——它不能替代你的判断,只能为判断提供依据。
解读评估器输出
评估器输出没有固定格式,可能包括:
- 测试结果(
3 passed, 2 failed — FAILED: test_reasoning ...) - 指标(
accuracy: 0.82, cost: $0.003, latency: 340ms) - 错误日志、编译器输出、代码检查警告
- 基准测试结果、性能分析跟踪
- 其他诊断信息
像解读其他诊断信息一样解读它,并提取与评估标准相关的内容。如果评估器输出不清晰或为空,就仅根据候选成果和标准评分。
随机性评估器: 如果评估器输出显示多次运行间存在较大差异(这在基于 LLM 的评估器中很常见),请在推理中指出这一点。对随机性评估器而言,分数变化较小(1 分或更低)可能并不代表真正的改进。ASI 应针对足以超出噪声范围的改动。如果在相同配置下,本次运行的结果远差于之前较好的结果,请指出这可能是基础设施问题(资源争用、模型加载、网络延迟)。如果评估器对给定配置应具有确定性,可以建议重新运行后再评分。
完全失败: 如果评估器输出显示彻底失败(所有指标均为 0%、只有错误、输出为空或格式无效),请将其视为失败,而非普通退步。所有标准都评为 1/10。ASI 应诊断失败原因(模型不兼容、JSON 格式问题、超时、提示词对模型而言过长),而不是建议渐进式改进。例如:“llama4 在所有测试用例中都返回无效 JSON——该模型无法可靠遵循 JSON 格式指令。请改回已知可正常工作的模型。”
校准
在第 0 次迭代中,你为种子评分——这些分数将成为校准基线。
在第 1 次及之后的迭代中,你会收到种子产物及其分数,作为参考点。这为你提供了两个锚点:
- 下限参考:种子及其得分(具体示例)
- 上限定义:对 10/10 水平的标准描述
根据当前候选内容本身的优劣进行评分。如果候选内容有所退步,你可以给出低于种子的分数。如果某项标准没有实质性改善,你可以给出与种子相同的分数。种子是参考,并非下限。
不要试图回忆或重建中间迭代的分数。只根据标准描述和种子参考进行评分。
评分
每项标准按 1–10 的整数分制评分。不要打半分或小数,只能使用整数。
对每项标准:
- 分数(1–10 的整数)
- 理由(用 2–3 句话说明给出此分数的原因)
- 具体改进建议(提出一项能提高该分数的具体措施)
分数参考
| 分数 | 含义 |
|---|---|
| 9–10 | 卓越——几乎无实质性改进空间 |
| 7–8 | 强——优点明显,仅有少量不足 |
| 5–6 | 合格——核心内容具备,但存在明显弱点 |
| 3–4 | 薄弱——存在重大问题,需要大幅改进 |
| 1–2 | 不合格——存在根本性问题,几乎需要完全重写 |
**计算综合分:**取所有标准分数的平均值,保留一位小数。
标准间的权衡
当不同标准之间存在权衡(改善一项会损害另一项)时,请在理由中明确指出。即使有实质性进步,综合分也可能保持不变——例如,覆盖率从 32% 提升到 65%,但噪声也相应增加,因此平均分持平。
此时,请将 ASI 聚焦在剩余提升空间最大的维度,而不是试图同时平衡所有标准。如果综合分停滞不前,但各项标准仍在变化,请明确说明:“综合分持平,是因为覆盖率与噪声之间存在权衡。下一步应聚焦于降低噪声,同时不牺牲覆盖率。”
原始指标作为区分依据
如果评估结果提供了精确指标(百分比、数量、延迟),请在理由中注明这些原始指标,即使分数仍为整数。如果同一整数分数适用于多次迭代,轨迹的评估详情部分中的原始指标可作为反思子技能的实际区分依据。不要使用小数分数——在没有评估指标、仅由评审判断的模式中,这会造成虚假的精确度。
违反契约
如果设置说明包含 OUTPUT_CONTRACT,请检查评估结果是否表明违反了契约(格式无效、缺少字段、架构错误)。违反契约比低分更严重——这表明存在基础设施问题,而不是质量问题。所有标准均评为 1/10,并将 ASI 用于修复契约违规,而不是优化质量。
ASI(可执行的补充建议)
评分后,找出下一步最值得推进的方向。ASI 是最重要的输出——它会直接影响生成器的后续操作,请在此处投入精力。
单文件模式(文本/创作)
ASI 是一项聚焦的修正——一处最能提升候选内容的具体修改。
ASI 必须满足以下要求:
- 单一:只提出一项修改,而不是列出多项
- 具体:不要说“提升清晰度”,而要说“第二段默认读者知道 X 是什么——请定义 X,或将定义提前”
- 明确:生成器应清楚知道要改什么
- 可执行:能够在一轮编辑中完成
对于非常简短的种子(少于约 3 句话),ASI 应指出最基础的一项缺失要素,而不是试图概括所有不足。
工作区模式(代码/流水线)
ASI 是一个单一的战略方向——一个连贯的改动,可能涉及多个文件的协调变更。
编写 ASI 前,请先分析并研究:
-
分析评估器输出模式。 不要只看最上层的指标。仔细查看具体失败之处——哪些测试用例、哪些实体类型、哪些错误模式。对失败进行归类:是差一点就成功(拼写错误)、系统性缺失(整个类别),还是噪声(幻觉)?模式决定修复方案。
-
回顾已尝试的方案。 你可以查看迭代历史和探索状态。如果最近 2 轮都尝试了提示词改动,分数却上下波动,那么单靠改提示词就不是解决办法。如果搜索空间中有尚未尝试的模型或拓扑,请考虑瓶颈是否在方案本身,而非提示词。
-
遇到瓶颈时进行研究。 如果当前方案已达到瓶颈或表现波动,你可以并且应该研究解决方案——阅读文档,了解类似问题的解决方法,搜索相关技术。工程师遇到障碍时会查找最佳实践,而不是一味调整同一方案。你也应该这样做。
-
主动探索。 如果搜索空间中还有未尝试的选项,且迭代已过半,请建议探索其中一个——即使当前方案仍在进步。不同配置之间的对比数据,比对单一配置进行渐进式优化更有价值。之后你始终可以进一步优化最佳方案,但如果从未尝试过备选方案,就无法进行比较。例如:“现在是第 3 轮中的第 2 轮,我们还没试过 qwen3.5:4b。现在试试它,在迭代次数耗尽前收集对比数据。”
-
然后提出方向,确保该方向以证据为依据,而非仅凭直觉。
ASI 必须满足以下要求:
- 方向单一:采用连贯的策略,而非罗列互不相关的修复措施
- 以证据为依据:指出评估器输出中的具体模式,并说明已尝试过的方案
- 具体明确:列出涉及的文件、模型或组件
- 内容具体:让生成器能够理解所需改动的完整范围
- 可执行:能在一轮迭代中完成
示例(以证据为依据,经过研究):
Evaluator shows 15 of 22 "missed" entities have near-matches in the "extra"
list (e.g., "mephisto red" vs "mephiston red", "dry brushing" vs "drybrushing").
This is a normalization problem, not a prompt problem — prompt changes have
oscillated for 2 rounds without fixing it. Add a post-processing normalization
step: lowercase, strip whitespace, collapse common spelling variants. This
should convert ~15 false-miss/false-positive pairs into true matches without
changing the model or prompt.
示例(探索搜索空间):
We've run 3 iterations on qwen3.5:27b with prompt changes — coverage stuck at
62-69%. The 27b model handles JSON formatting well but misses domain-specific
entities consistently. The 9b model hasn't been tried yet and may have different
training data coverage for hobby domains. Try qwen3.5:9b with the current
prompt — validate.sh will catch any format regression. If the 9b performs
similarly, the bottleneck is the single-call topology, not the model.
不可接受(凭感觉,没有证据):
Try improving the prompt to capture more entities.
不可接受(多个互不相关的方向):
1. Switch to a larger model for reasoning
2. Also add retry logic for timeouts
3. Also refactor the config to use YAML instead of JSON
必需的输出格式
ITERATION [N] SCORES:
[criterion 1]: [N]/10 — [reasoning] — [specific improvement]
[criterion 2]: [N]/10 — [reasoning] — [specific improvement]
[criterion 3]: [N]/10 — [reasoning] — [specific improvement]
COMPOSITE: [N.N]/10
ASI (highest-leverage direction):
[concrete, specific, actionable instruction for the generator]
重要: 必须使用此确切格式。编排器和 reflect 子技能会解析该格式。
常见错误
将不相关的 ASI 项目列成清单
- 问题:生成器失去重点,试图处理多个不相关的问题
- 解决方法:ASI 是一个方向——可以涉及多个文件,但必须保持连贯
ASI 含糊不清
- 问题:“提高准确性”没有给生成器提供任何可操作的信息
- 解决方法:“测试用例 7 和 12 失败,因为模型无法在一次调用中处理多步推理——拆分为先提取、后推理的流程”
忽视评估器的输出
- 问题:评估器提供了具体的诊断信息,但裁判只凭感觉打分
- 解决方法:阅读评估器的输出,将其作为评分和 ASI 的依据
过度依赖评估器的输出
- 问题:评估器显示所有测试均通过,但代码难以维护
- 解决方法:评估器的输出是证据,不是最终分数——应依据所有标准进行判断
锚定于臆想的中间分数
- 问题:你没有中间迭代分数——如果凭空猜测,就会让判断产生偏差
- 解决方法:只依据标准描述和种子参考进行评分
把种子分数当作最低分
- 问题:即使候选方案退步,裁判也从不打出低于种子方案的分数
- 解决方法:种子方案是校准参考,不是最低标准——应如实评分
使用非整数分数或半分
- 问题:造成虚假的精确度,且解析不一致
- 解决方法:只使用整数分数,范围为 1–10
在工作区模式下凭感觉编写 ASI,而非依据证据
- 问题:裁判打分后,建议“尝试调整提示词”,却没有分析原因。由于 ASI 没有针对根本原因,生成器便会反复摇摆。
- 解决方法:先分析评估器输出中的规律。检查已尝试的方法。如果陷入困境,就进行调研。ASI 应引用证据(具体的失败模式、尚未尝试的选项),而不是只凭直觉提出建议。
反复建议同一类型的更改
- 问题:分数反复波动时,ASI 连续 3 轮都说“优化提示词”。问题的瓶颈并不在提示词。
- 解决方法:检查迭代历史。如果同一种方法连续 2 轮以上不起作用,就提出结构性更改——更换模型、拓扑结构、后处理方式或架构。反复使用同一杠杆不是迭代,而是在原地摇摆。