wjs-evaling-voicedrop-prompts
Installation
SKILL.md
VoiceDrop 挖矿 prompt 评估
harness = 本 skill(协议)+ jianshuo.dev agent/eval/(脚本/数据)。运行时 = 本地 Claude Code。
被测对象 = agent/src/prompts/mine.js 的 MINE_SYSTEM(git 即版本库)。
何时用
用户改了挖矿 prompt(MINE_SYSTEM),想用数据判断改好了还是改坏了,而不是凭感觉看一两次。
流程(按序)
- 拿候选 prompt:把候选版
MINE_SYSTEM文本写到一个临时文件(如/tmp/cand-prompt.txt);冠军 = 当前mine.js的MINE_SYSTEM(脚本自动读)。 - 跑产出:
cd ~/code/jianshuo.dev/agent && CLAUDE_API_KEY=$CLAUDE_API_KEY node eval/run-eval.mjs /tmp/cand-prompt.txt <runId>。产出落eval/runs/<runId>/。先看终端有没有「确定性回退」警告——有就先停,多半是候选 prompt 破坏了 JSON 输出。 - 成对盲评:对每条 fixture,dispatch 一个 subagent,喂
references/judge-rubric.md+ 该 fixture 的 transcript + 两份产出。A/B 顺序随机(一半 fixture 把 candidate 放 A、一半放 B,记录映射,收到结果后还原成 champion/candidate)。裁判模型用与生成(opus)不同家族的模型。收每条的{winner, dims, reason}。 - 聚合:把还原后的
verdicts(winner ∈ candidate/champion/tie)+ 候选 proxyFails 喂aggregate(),渲染renderReport()→ 写eval/runs/<runId>/report.md。 - 人工终审:把胜负最接近、分歧最大的 1–2 条产出并排摆给用户。机器只筛掉明显更差的,文风最后一票是用户。
- 晋级:仅当
decision==="promote"(胜率 ≥70% 且无回退)且用户点「认可」——把候选写回agent/src/prompts/mine.js的MINE_SYSTEM,commit(message 附 runId 与胜率),并跑npm test确认没破坏。否则保留报告、不动生产版。