Šķîþ ţö ḿàîñ çöñţéñţ

Þàîŕéđ àĝéñţ éṽàļüàţîöñ

Ţĥé þàîŕéđ ḿöđé îñ scripts/skilleval ḿéàšüŕéš ţĥé çöñţŕîƃüţîöñ öƒ éàçĥ ķàþî îñţéĝŕàţîöñ ŵîţĥîñ à ƒîẋéđ àĝéñţ àñđ ḿöđéļ. Îţ ŕüñš îđéñţîçàļ ţàšķš ŵîţĥ öŕđîñàŕý ƒîļé ţööļš, ţĥé šĥîþþéđ ÇĻÎ šķîļļ, ḾÇÞ, àñđ ţĥé éđîţ çöḿḿàñđš ŵîţĥöüţ à þŕöĵéçţ. Éàçĥ çöñđîţîöñ ŕéçéîṽéš ţĥé šàḿé ƒîļéš àñđ šţàŕţîñĝ çöñţéñţ. Ţĥé çöḿþàŕîšöñ çöṽéŕš éàçĥ îñţéĝŕàţîöñ àš à þàçķàĝé, îñçļüđîñĝ îţš îñšţŕüçţîöñš àñđ ţööļ îñţéŕƒàçé.

Ţĥé éẋîšţîñĝ skill-eval, skill-eval-completion àñđ mcp-eval ţàŕĝéţš ḿéàšüŕé ţĥéîŕ öŵñ šçéñàŕîö šéţš. Üšé ţĥé þàîŕéđ ţàŕĝéţš ƒöŕ à çöḿþàŕîšöñ àçŕöšš ţĥé šàḿé ţàšķš. Šéé Š-03 ƒöŕ ţĥé îñţéŕƒàçéš àñđ À-01 ƒöŕ ţĥé éṽîđéñçé þöļîçý.

Çöñđîţîöñš​

ÇöñđîţîöñÀṽàîļàƃļé ķàþî îñţéĝŕàţîöñÖŕđîñàŕý ƒîļé ţööļš
baselineÑöñéÀṽàîļàƃļé
skill-cliŠĥîþþéđ šķîļļ àñđ ÇĻÎ, ŵîţĥöüţ ķàþî ḾÇÞÀṽàîļàƃļé
mcpķàþî ḾÇÞ àñđ ţĥé ÇĻÎ öñ ÞÀŢĤ, ŵîţĥöüţ ţĥé šķîļļÀṽàîļàƃļé
project-freeŢĥé šàḿé ƃîñàŕý üñđéŕ àñ éṽàļüàţîöñ-öñļý ḿüļţî-çàļļ ñàḿé ţĥàţ öƒƒéŕš inspect, apply, formats àñđ ţĥé ţööļƃöẋ ŵîţĥ þŕöĵéçţ đîšçöṽéŕý öƒƒ, àñđ à šķîļļ ţĥàţ çàŕŕîéš ţĥé šĥîþþéđ šķîļļ'š éđîţ àñđ ţööļƃöẋ ĝüîđàñçé ŵîţĥ ţĥé ñàḿéš çĥàñĝéđ àñđ ţĥé þŕöĵéçţ þàŕţš ļéƒţ öüţÀṽàîļàƃļé

Ţĥé ḿàñîƒéšţ îđéñţîƒîéš éàçĥ àĝéñţ ĥöšţ, ḿöđéļ àñđ 郃öŕţ šéţţîñĝ. Çöḿþàŕîšöñš ķééþ ţĥéšé šéţţîñĝš ƒîẋéđ ŵîţĥîñ éàçĥ ĥöšţ. Ƀƒöŕţ ļàƃéļš àçŕöšš þŕöṽîđéŕš đö ñöţ ŕéþŕéšéñţ éǫüîṽàļéñţ çöḿþüţàţîöñ. Þŕéšéŕṽé šéþàŕàţé ŕéšüļţš ƒöŕ đéŕéñţ ḿöđéļš àñđ đöçüḿéñţ ƒàḿîļîéš.

Éàçĥ àţţéḿþţ ĥàš à þŕîṽàţé çöḿḿàñđ þàţĥ, ƒŕéšĥ àĝéñţ çöñƒîĝüŕàţîöñ àñđ à ţéḿþöŕàŕý đîŕéçţöŕý öƒ îţš öŵñ, àñđ ķàþî ŕéçöŕđš éṽéŕý šĥéļļ çàļļ îñ à çéļļ àš àñ àĝéñţ'š. Ţĥé ŵöŕķšþàçé îš à ĝîţ ŕéþöšîţöŕý ŵîţĥ ţĥé þŕöĵéçţ çöḿḿîţţéđ, àñđ ţĥé ƃîñàŕý üñđéŕ ţéšţ îš ļîñķéđ îñţö ţĥé çéļļ, šö ñö çöḿḿàñđ ţĥé àĝéñţ šééš ñàḿéš à þàţĥ îñţö ţĥé çĥéçķöüţ. Ţĥé ţŕàñšçŕîþţ àüđîţ îñṽàļîđàţéš öƃšéŕṽéđ üšé öƒ ţĥé ŵŕöñĝ ķàþî îñţéŕƒàçé: àñ ḾÇÞ ţööļ öüţšîđé ţĥé ḾÇÞ çöñđîţîöñ, öŕ à ķàþî ƃîñàŕý ŕüñ ƃý à þàţĥ öüţšîđé ţĥé çéļļ, ŵĥîçĥ ŵöüļđ ŕüñ à ƃüîļđ öţĥéŕ ţĥàñ ţĥé öñé üñđéŕ ţéšţ. Îţ ŕéàđš ŵĥîçĥ þŕöĝŕàḿš à šĥéļļ çöḿḿàñđ ŕüñš, šö à çöḿḿàñđ ţĥàţ öñļý ñàḿéš à ķàþî þàţĥ, šüçĥ àš à ļîšţîñĝ öƒ ţĥé çöñđîţîöñ'š öŵñ šķîļļ ƒöļđéŕ, îš ñö ŕöüţé. À ƃàŕé ķàþî ñàḿé ţĥé çéļļ'š ÞÀŢĤ đöéš ñöţ ĥöļđ çàññöţ ŕüñ ţĥéŕé, àñđ à šķîļļ ţĥé çöñđîţîöñ đöéš ñöţ îñšţàļļ ļöàđš ñöţĥîñĝ; ţĥé àüđîţ ŕéçöŕđš ƃöţĥ àš àţţéḿþţš ŕàţĥéŕ ţĥàñ éñđîñĝ ţĥé šéššîöñ. Îţ àļšö ŕéçöŕđš éàçĥ þàţĥ à ţööļ çàļļ ñàḿéš öüţšîđé ţĥé çéļļ: àñöţĥéŕ àţţéḿþţ öŕ ţĥé šţüđý'š ŕéçöŕđš, ţĥé çĥéçķöüţ (àñđ ţĥé ŕéþöšîţöŕý'š ḿàîñ çĥéçķöüţ, ƒöŕ à šţüđý ŕüñ ƒŕöḿ à ŵöŕķţŕéé öƒ îţ), ţĥé ĥöḿé đîŕéçţöŕý öŕ à šĥàŕéđ ţéḿþöŕàŕý đîŕéçţöŕý. À ŕéṽîéŵéŕ ŕéàđš šüçĥ àñ àţţéḿþţ'š ţŕàñšçŕîþţ ƃéƒöŕé çöüñţîñĝ îţ. Ţĥîš çöñţŕöļš àççîđéñţàļ ḿîẋîñĝ öƒ îñţéĝŕàţîöñš; îţ îš ñöţ à ƃöüñđàŕý àĝàîñšţ ĥöšţîļé çöđé. Ķééþ ĥîđđéñ éṽàļüàţîöñ àŕţîƒàçţš öüţšîđé ţĥé àĝéñţ'š ŵöŕķšþàçé àñđ îñšþéçţ šḿöķé ţŕàñšçŕîþţš ƃéƒöŕé à šçöŕéđ šţüđý.

Çöđéẋ'š ƃüîļţ-îñ ḾÇÞ ŕéšöüŕçé ĥéļþéŕš çàñ àþþéàŕ üñđéŕ ţĥé ĥöšţ ñàḿé codex ŵĥéñ ļîšţîñĝ ŕéšöüŕçéš ŵîţĥöüţ à šéŕṽéŕ àŕĝüḿéñţ. Ţĥé ḾÇÞ çöñđîţîöñ þéŕḿîţš ţĥöšé đîšçöṽéŕý çàļļš àñđ ŕéàđš éẋþļîçîţļý ţàŕĝéţîñĝ kapi. Îţ šţîļļ ŕéĵéçţš ƒöŕéîĝñ šéŕṽéŕ ţàŕĝéţš àñđ ŕéšöüŕçé-ĥéļþéŕ üšé îñ öţĥéŕ çöñđîţîöñš.

Ţĥé ÇĻÎ ŵŕàþþéŕ ƃîñđš KAPI_PROJECT ţö ţĥé ƒîẋţüŕé'š àƃšöļüţé ŕéçîþé þàţĥ àñđ çļéàŕš KAPI_NO_PROJECT ƒöŕ ţĥàţ îñṽöçàţîöñ. Éẋþļîçîţ éñṽîŕöñḿéñţ ƃîñđîñĝ ŕéšöļṽéš ƃéƒöŕé đîŕéçţöŕý đîšçöṽéŕý. Ţĥîš šüþþöŕţš çöḿḿàñđš ŵîţĥöüţ à ŕéçîþé ƒļàĝ, šüçĥ àš ksed, ŵĥîçĥ ƒîñđš ţĥé þŕöĵéçţ öƒ ţĥé ƒîļéš îţ éđîţš. Ţĥé šüŕŕöüñđîñĝ àĝéñţ éñṽîŕöñḿéñţ ŕéţàîñš KAPI_NO_PROJECT=1, îšöļàţéđ çöñƒîĝüŕàţîöñ àñđ þļüĝîñ đîšçöṽéŕý. ḾÇÞ ƃîñđš ţĥé ŕéçîþé ţĥŕöüĝĥ îţš éẋþļîçîţ -p àŕĝüḿéñţ. Ţĥé þŕöĵéçţ-ƒŕéé çöñđîţîöñ ļîñķš ţĥé ƃîñàŕý üñđéŕ îţš ḿüļţî-çàļļ ñàḿé, ŵĥîçĥ ţüŕñš đîšçöṽéŕý öƒƒ àñđ ŕéƒüšéš -p.

Éṽéŕý Çļàüđé ŕüñ ŕéàđš öñļý ţĥé project šéţţîñĝ šöüŕçé, ŵĥîçĥ îš ŵĥéŕé à šķîļļ îñšţàļļéđ îñ ţĥé ŵöŕķšþàçé îš đîšçöṽéŕéđ, ŵîţĥ à šţŕîçţ, éẋþļîçîţ ḾÇÞ çöñƒîĝüŕàţîöñ ţĥàţ îš éḿþţý öüţšîđé ţĥé ḾÇÞ çöñđîţîöñ. Çöñđîţîöñš ŵîţĥöüţ à šķîļļ àļšö đîšàƃļé šķîļļ ļöàđîñĝ. Çļàüđé Çöđé'š ƃüñđļéđ šķîļļš àŕé öƒƒ îñ éṽéŕý çöñđîţîöñ, šö ţĥé çöñđîţîöñš đéŕ îñ ķàþî'š šķîļļ àļöñé; Çöđéẋ šĥöŵš îţš öŵñ šýšţéḿ šķîļļš àļîķé îñ éṽéŕý çöñđîţîöñ. Çļàüđé Çöđé öţĥéŕŵîšé ĝîṽéš éṽéŕý šéššîöñ ţĥé šàḿé ţéḿþöŕàŕý đîŕéçţöŕý, àñđ Çöđéẋ'š ŵöŕķšþàçé-ŵŕîţé šàñđƃöẋ ļéţš éṽéŕý šéššîöñ ŵŕîţé /tmp, šö à ƒîļé öñé šéššîöñ ļéƒţ ţĥéŕé çöüļđ ŕéàçĥ ţĥé ñéẋţ. Éàçĥ çéļļ'š TMPDIR îš ţĥéŕéƒöŕé à đîŕéçţöŕý öƒ îţš öŵñ, ŵĥîçĥ Çļàüđé Çöđé àļšö üšéš ƒöŕ îţš öŵñ ţéḿþöŕàŕý ƒîļéš, àñđ ţĥé Çöđéẋ šàñđƃöẋ ŵŕîţéš öñļý ţĥé ŵöŕķšþàçé àñđ ţĥàţ đîŕéçţöŕý. Ţĥé îšöļàţéđ Çöđéẋ ḾÇÞ çöñđîţîöñ šéţš ţĥé ƒîẋţüŕé šéŕṽéŕ'š default_tools_approval_mode ţö approve ŵĥîļé ŕéţàîñîñĝ àñ öṽéŕàļļ àþþŕöṽàļ þöļîçý öƒ never. À ţööļ ţĥàţ šţîļļ ŕéǫüîŕéš à þŕöḿþţ çàññöţ éẋéçüţé üñđéŕ ţĥàţ öṽéŕàļļ þöļîçý. Ţĥîš šéţţîñĝ àþþļîéš öñļý ţö ţĥé þŕéþàŕéđ ƒîẋţüŕé šéŕṽéŕ; ţĥé ŕüññéŕ đöéš ñöţ ḿöđîƒý ţĥé ḿàîñţàîñéŕ'š çöñƒîĝüŕàţîöñ. Šéé ţĥé ĥöšţ đöçš ƒöŕ Çļàüđé šķîļļ đîšçöṽéŕý àñđ Çöđéẋ ḾÇÞ ţööļ þöļîçý.

Ƃüîļđ àñđ þŕéƒļîĝĥţ​

Ƃüîļđ ķàþî öñçé ƃéƒöŕé þŕéþàŕîñĝ à šţüđý:

make build
make paired-eval-preflight

Ţĥé šţüđý ŕüñš bin/kapi ƒŕöḿ ţĥé çĥéçķöüţ àñđ ñéṽéŕ à ķàþî ƒöüñđ öñ ÞÀŢĤ; îţ ŕéƒüšéš ţö šţàŕţ ŵĥéñ ţĥàţ ƃîñàŕý îš ḿîššîñĝ öŕ ŵàš ƃüîļţ ƒŕöḿ àñöţĥéŕ çöḿḿîţ ţĥàñ ţĥé çĥéçķöüţ'š ĤÉÀĐ. Ŵĥéñ à šţüđý šţàŕţš, îţ çöþîéš ţĥé ƃîñàŕý àñđ ţĥé šĥîþþéđ šķîļļ îñţö ţĥé šţüđý đîŕéçţöŕý, àñđ éṽéŕý šéššîöñ ţàķéš ţĥéḿ ƒŕöḿ ţĥéŕé, šö à ŕéƃüîļđ öŕ àñ éđîţ îñ ţĥé çĥéçķöüţ đüŕîñĝ ţĥé šţüđý çĥàñĝéš ñöţĥîñĝ îţ ḿéàšüŕéš.

Çĥéçķ ţĥé ÇĻÎ ŵŕàþþéŕ àĝàîñšţ ţĥàţ ƃîñàŕý ŵîţĥöüţ ļàüñçĥîñĝ àñ àĝéñţ:

PAIRED_TEST_KAPI="$PWD/bin/kapi" go test ./scripts/skilleval -run TestPairedCLIWrapper

Þŕéƒļîĝĥţ þŕéþàŕéš çöñƒîĝüŕàţîöñš ŵîţĥöüţ îñƒéŕéñçé. Ţĥé đéƒàüļţ ḿàñîƒéšţ îš scripts/skilleval/testdata/paired-study.json; öüţþüţ đéƒàüļţš ţö kapi-paired-eval üñđéŕ ţĥé šýšţéḿ ţéḿþöŕàŕý đîŕéçţöŕý. Öṽéŕŕîđé ţĥéḿ ŵîţĥ PAIRED_EVAL_MANIFEST àñđ PAIRED_EVAL_DIR. Ţĥé çéļļš ļîṽé îñ ţĥé öüţþüţ đîŕéçţöŕý, šö ţĥé ŕüññéŕ ŕéƒüšéš öñé ţĥàţ ļîéš îñšîđé à çĥéçķöüţ öŕ üñđéŕ àñý îñšţŕüçţîöñ ƒîļé, ĥöšţ çöñƒîĝüŕàţîöñ öŕ ķàþî ŕéçîþé àñ àĝéñţ ŵöüļđ ƒîñđ ƃý ŵàļķîñĝ üþ ƒŕöḿ îţš çéļļ: ţĥé çĥéçķöüţ'š CLAUDE.md, AGENTS.md àñđ šķîļļš ŵöüļđ ŕéàçĥ éṽéŕý çöñđîţîöñ, àñđ à ĥöšţ ļîšţš ñö îñšţŕüçţîöñ ƒîļé îţ ļöàđéđ. ḿàçÖŠ ŕéḿöṽéš ţéḿþöŕàŕý ƒîļéš à ƒéŵ đàýš àƒţéŕ ţĥéîŕ ļàšţ üšé, šö çöþý ţĥé éṽîđéñçé šöḿéŵĥéŕé ļàšţîñĝ öñçé à šţüđý îš šçöŕéđ.

Ƒöŕ ḾÇÞ, þŕéþàŕàţîöñ àļšö šţàŕţš ţĥé îšöļàţéđ ķàþî šéŕṽéŕ, îñîţîàļîžéš îţš þŕöţöçöļ àñđ ļîšţš îţš ţööļš àñđ çöñţéẋţ ŕéšöüŕçéš. Ḿîššîñĝ éđîţ ţööļš, à ḿîššîñĝ çĥéçķ ţööļ öŕ ƒàîļéđ đîšçöṽéŕý ƃļöçķ îñƒéŕéñçé.

Þŕéþàŕàţîöñ ţĥéñ ŕéàđš éàçĥ çéļļ'š šüŕƒàçé ţĥŕöüĝĥ ţĥé àĝéñţ ĥöšţ, ŵîţĥ ţĥé éẋéçüţàƃļé, àŕĝüḿéñţš, éñṽîŕöñḿéñţ àñđ đîŕéçţöŕý ţĥé šéššîöñ üšéš àñđ ñö ḿöđéļ çàļļ. Ƒöŕ Çļàüđé îţ ŕéàđš ţĥé system/init éṽéñţ öƒ claude --print ŵîţĥ ţĥé ḿöđéļ éñđþöîñţ þöîñţéđ àţ à çļöšéđ ļöçàļ þöŕţ àñđ à þļàçéĥöļđéŕ çŕéđéñţîàļ, šö ţĥé šéššîöñ éñđš ƃéƒöŕé à ŕéǫüéšţ ļéàṽéš ţĥé ḿàçĥîñé. Ƒöŕ Çöđéẋ îţ ŕéàđš codex debug prompt-input, ŵĥîçĥ ļîšţš ţĥé šķîļļš ţĥé ḿöđéļ ŵöüļđ šéé ŵîţĥ éàçĥ šķîļļ'š ŕööţ àñđ ţĥé ƒöļđéŕš îţš šàñđƃöẋ ḿàý ŵŕîţé, àñđ codex mcp list. À çéļļ ƒàîļš ŵĥéñ îţ šĥöŵš àñöţĥéŕ çöñđîţîöñ'š šķîļļ, ḾÇÞ šéŕṽéŕ öŕ ķàþî çöḿḿàñđ, ļàçķš îţš öŵñ, šĥöŵš àñý šķîļļ ƃéýöñđ îţš öŵñ àñđ ţĥé ĥöšţ'š šýšţéḿ šķîļļš, šĥöŵš à þļüĝîñ öŕ ḾÇÞ šéŕṽéŕ öƒ ţĥé đéṽéļöþéŕ'š öŵñ, öŕ ļéţš ţĥé àĝéñţ ŵŕîţé öüţšîđé îţš ŵöŕķšþàçé àñđ ţéḿþöŕàŕý đîŕéçţöŕý. Þŕéƒļîĝĥţ þŕöƃéš öñé çéļļ þéŕ ĥöšţ àñđ çöñđîţîöñ àñđ éẋîţš ñöñ-žéŕö öñ àñý ƒîñđîñĝ, àñđ éàçĥ ļîṽé šéššîöñ þŕöƃéš îţš öŵñ çéļļ àĝàîñ ƃéƒöŕé îţ šţàŕţš. Ţĥéšé ŕéçöŕđš éšţàƃļîšĥ ŵĥàţ ţĥé ĥöšţ éẋþöšéš; ŵĥéţĥéŕ ţĥé ḿöđéļ üšéđ îţ îš à šéþàŕàţé öƃšéŕṽàţîöñ ƒŕöḿ ţĥé ļîṽé ţŕàñšçŕîþţ.

À šţüđý'š ƒîñĝéŕþŕîñţ çöṽéŕš îţš ḿàñîƒéšţ, îţš çöŕþüš, ţĥé ŕüññéŕ'š çöđé, ţĥé çĥéçķöüţ îţ ŕüñš ƒŕöḿ, éàçĥ àĝéñţ ĥöšţ'š ṽéŕšîöñ àñđ îţš çöþîéš öƒ ķàþî àñđ ţĥé šķîļļ, àñđ éṽéŕý ŕüñ çĥéçķš ţĥé çöþîéš ƃéƒöŕé éàçĥ šéššîöñ. À ŕüñ öƒ à šţüđý ŵĥöšé ƒîñĝéŕþŕîñţ đéŕš îš ŕéƒüšéđ ŕàţĥéŕ ţĥàñ šîļéñţļý çöḿƃîñîñĝ îñçöḿþàţîƃļé àţţéḿþţš: à ŕüñ ƒŕöḿ àñöţĥéŕ çĥéçķöüţ ñàḿéš ţĥé çĥéçķöüţ ţĥé šţüđý ŕüñš ƒŕöḿ, àñđ à ŕüñ ŵîţĥ àñ àĝéñţ ĥöšţ àţ àñöţĥéŕ ṽéŕšîöñ ñàḿéš ţĥé ṽéŕšîöñ ţĥé šţüđý šţàŕţéđ ŵîţĥ àñđ ŵĥéŕé ţĥàţ ĥöšţ ŕàñ ƒŕöḿ. Ŕüñ à ļöñĝ šţüđý ƒŕöḿ à ŵöŕķţŕéé ñö öţĥéŕ ŵöŕķ üšéš, ƃéšîđé ţĥé ḿàîñ çĥéçķöüţ ŕàţĥéŕ ţĥàñ îñšîđé îţ, àñđ ŕéšüḿé îţ ţĥéŕé; à ŕéšüḿé ñééđš ñö ƃüîļđ, ƃéçàüšé ţĥé šţüđý ŕüñš îţš öŵñ çöþý öƒ ķàþî. À ĥöšţ à þàçķàĝé ḿàñàĝéŕ üþĝŕàđéš îñ þļàçé, šüçĥ àš à Ĥöḿéƃŕéŵ çàšķ, ƃéļöñĝš îñ à çöþý öƒ îţš ṽéŕšîöñ đîŕéçţöŕý ƒîŕšţ öñ PATH ƒöŕ ţĥé ŵĥöļé šţüđý, ŵĥîçĥ ţĥé þŕéƒļîĝĥţ ŵàŕñš öƒ.

Šüƃšçŕîþţîöñ ƃàţçĥéš​

Ļîṽé ŕüñš üšé šîĝñéđ-îñ šüƃšçŕîþţîöñš. Ţĥéý çöñšüḿé ţĥé àççöüñţ'š àļļöŵàñçé; ţöķéñ çöüñţš öŕ ļöçàļļý éšţîḿàţéđ đöļļàŕ ƒîĝüŕéš đö ñöţ éšţàƃļîšĥ ţĥé ŕéḿàîñîñĝ šüƃšçŕîþţîöñ ǫüöţà. Çĥéçķ àççöüñţ üšàĝé ƃéƒöŕé çöḿḿîššîöñîñĝ à ƃàţçĥ. Ţĥé ŕüññéŕ đöéš ñöţ éñàƃļé éẋţŕà çŕéđîţš öŕ šŵîţçĥ ţö ÀÞÎ ƃîļļîñĝ.

Îñþüţ-ţöķéñ ţöţàļš îñçļüđé ŕéþöŕţéđ çàçĥé ŕéàđš àñđ ŵŕîţéš, ŵîţĥ ţĥöšé çöüñţš àļšö ŕéţàîñéđ šéþàŕàţéļý. Ĥöšţ ţöķéñîžàţîöñ àñđ šüƃšçŕîþţîöñ ŵéîĝĥţîñĝ đéŕ, šö ţĥéšé öƃšéŕṽàţîöñš đö ñöţ éšţàƃļîšĥ éǫüîṽàļéñţ àļļöŵàñçé çöñšüḿþţîöñ.

Ţĥé þŕéþàŕéđ éñṽîŕöñḿéñţ éẋçļüđéš ÀÞÎ ķéýš àñđ éñđþöîñţ öṽéŕŕîđéš. Çļàüđé üšéš ţĥé éẋîšţîñĝ šüƃšçŕîþţîöñ çŕéđéñţîàļ îñ ḿéḿöŕý, ŵîţĥ ţöķéñ ŕéđàçţîöñ öñ ŕéçöŕđéđ öüţþüţ. À çéļļ ŕéçéîṽéš ţĥé ţöķéñ àš à ƒîẋéđ ṽàļüé îţ çàññöţ ŕéƒŕéšĥ, šö à ķéýçĥàîñ ţöķéñ ḿüšţ šţàý ṽàļîđ ƒöŕ à šéššîöñ'š ļîḿîţ àñđ ƒîƒţééñ ḿîñüţéš ḿöŕé, öŕ ţĥé šéššîöñ îš ñöţ šţàŕţéđ; à ļöñĝ-ļîṽéđ ţöķéñ ƒŕöḿ claude setup-token, éẋþöŕţéđ àš CLAUDE_CODE_OAUTH_TOKEN, àṽöîđš ţĥé ǫüéšţîöñ ƒöŕ à ļöñĝ šţüđý. Çöđéẋ üšéš ţĥé šîĝñéđ-îñ àççöüñţ ƒŕöḿ à ƒŕéšĥ çöñƒîĝüŕàţîöñ đîŕéçţöŕý. Þŕéþàŕéđ ŕéþöŕţš öḿîţ çŕéđéñţîàļ-ƃéàŕîñĝ éñṽîŕöñḿéñţ ṽàļüéš. Ŕéṽîéŵ ļöçàļ ţŕàñšçŕîþţš ƃéƒöŕé šĥàŕîñĝ ţĥéḿ éṽéñ ŵĥéñ àüţöḿàţîç ŕéđàçţîöñ þàššéš.

make paired-eval-smoke
make paired-eval-score

Ţĥé đéƒàüļţ þéŕšîšţéñţ çéîļîñĝ îš šîẋ šţàŕţéđ àţţéḿþţš, îñçļüđîñĝ ƒàîļüŕéš. Ŕéṽîéŵ ţĥàţ ƃàţçĥ ƃéƒöŕé îñçŕéàšîñĝ PAIRED_EVAL_MAX_ATTEMPTS. Ŕé-ŕüññîñĝ à çöḿḿàñđ đöéš ñöţ éŕàšé àţţéḿþţš àļŕéàđý ŕéçöŕđéđ üñđéŕ ţĥé šţüđý đîŕéçţöŕý. Đîàĝñöšţîç, šḿöķé àñđ þîļöţ þĥàšéš šĥàŕé ţĥé çéîļîñĝ. Éàçĥ ļîṽé þĥàšé þŕîñţš îţš þļàññéđ šéššîöñ çöüñţ ƃéƒöŕé îţ šţàŕţš öñé.

Ţĥé þîļöţ ţàŕĝéţ ŕüñš ţĥé ḿàñîƒéšţ'š ŵĥöļé ĝŕîđ öƒ ţàšķš, ĥöšţš, çöñđîţîöñš àñđ ŕéþéţîţîöñš:

make paired-eval-pilot

PAIRED_EVAL_CONCURRENCY šéţš ĥöŵ ḿàñý šéššîöñš ŕüñ àţ öñçé, šþŕéàđ éṽéñļý öṽéŕ ţĥé ĥöšţš: ţĥé đéƒàüļţ öƒ 2 ŕüñš öñé šéššîöñ þéŕ šüƃšçŕîþţîöñ àţ à ţîḿé, ƒöŕ ţĥé ŵĥöļé ŕüñ. À ŕàţé ļîḿîţ þàüšéš öñļý ţĥé ĥöšţ îţ ŕéàçĥéš, àñđ šö đöéš à ŕéƒüšéđ öŕ éẋþîŕéđ ļöĝîñ, öŕ ţŵö šéššîöñš îñ à ŕöŵ ţĥàţ éñđ ŵîţĥîñ à ḿîñüţé ŵîţĥöüţ çöḿþļéţîñĝ. Ŕüññîñĝ ţĥé šàḿé çöḿḿàñđ àĝàîñ ŕéšüḿéš ţĥé þĥàšé ŵîţĥöüţ ŕéþéàţîñĝ à šţàŕţéđ àţţéḿþţ. Ţĥéŕé àŕé ñö àüţöḿàţîç ŕéţŕîéš: PAIRED_EVAL_RETRY=1 ŕüñš àĝàîñ ţĥé àţţéḿþţš à ŕàţé ļîḿîţ, àñ îñţéŕŕüþţ, à ƒàîļéđ ļàüñçĥ öŕ àñ îñƒŕàšţŕüçţüŕé ƒàîļüŕé (à ŕéƒüšéđ ļöĝîñ, àñ öṽéŕļöàđéđ ÀÞÎ, à ļöšţ ñéţŵöŕķ) çüţ šĥöŕţ, ķééþš ţĥé ƒîŕšţ ŕéçöŕđ àš šüþéŕšéđéđ, àñđ çöüñţš ƃöţĥ àĝàîñšţ ţĥé çéîļîñĝ. Ţĥé šüḿḿàŕý ļéàṽéš šüçĥ àţţéḿþţš öüţ üñţîļ ţĥéý ŕüñ àĝàîñ. À þàîŕéđ ŕüñ ĥàš ñö öṽéŕàļļ đéàđļîñé üñļéšš -timeout ñàḿéš öñé îñ PAIRED_EVAL_ARGS.

Ţĥé þîļöţ ŕéḿàîñš šüƃĵéçţ ţö ţĥé šàḿé çéîļîñĝ. Ŕàîšîñĝ ţĥé çéîļîñĝ àüţĥöŕîžéš àđđîţîöñàļ šüƃšçŕîþţîöñ üšé; šéļéçţ îţ đéļîƃéŕàţéļý àƒţéŕ ŕéṽîéŵîñĝ ţĥé þŕéçéđîñĝ ƃàţçĥ. PAIRED_EVAL_ARGS þàššéš àđđîţîöñàļ þàîŕéđ-ŕüññéŕ öþţîöñš. Ŕüñ ţĥé éṽàļüàţöŕ'š ĥéļþ ƒöŕ ţĥé àṽàîļàƃļé ƒļàĝš.

Ţàšķš àñđ šçöŕîñĝ​

Ţĥé çöŕþüš ĥöļđš öñé ţàšķ ƒöŕ éàçĥ ƒàḿîļý ţĥé éđîţ çöñţŕàçţ'š éṽàļüàţîöñ ñàḿéš: à ŵöŕđîñĝ àñđ ļîñķ éđîţ îñ ĤŢḾĻ àñđ Ḿàŕķđöŵñ, à þļüŕàļ ƃŕàñçĥ, à ñéŵ éđîţîöñ îñ àñöţĥéŕ ļàñĝüàĝé ţĥàţ ķééþš ţĥé ḿàŕķüþ, à ƃîļîñĝüàļ ÞÖ éđîţ, à ķéý àđđéđ ţö à ĴŠÖÑ çàţàļöĝ, ŕéçöṽéŕý ƒŕöḿ à šţàļé ŕéàđ, àñđ ŕéçöṽéŕý ƒŕöḿ à ŕéƒüšàļ ƃý ţĥé çĥéçķ àţ çöḿḿîţ. Éṽéŕý ţàšķ'š þŕöĵéçţ ƃîñđš öñé ṽöîçé ŵĥöšé ţéŕḿš ƒöŕƃîđ öñé ŵöŕđ, àñđ à šţýļé ĝüîđé îñ ţĥé ŵöŕķšþàçé šţàţéš ţĥé šàḿé ŕüļé.

Ţŵö ţàšķš àçţ öñ ţĥé šéššîöñ ŵĥîļé îţ ŕüñš. Îñ ţĥé šţàļé-ŕéàđ ţàšķ ţĥé ŕüññéŕ ŵàţçĥéš ţĥé ĥöšţ'š šţŕéàḿ àñđ, öñçé à ţööļ ŕéšüļţ ĥàš šĥöŵñ ţĥé àĝéñţ ţĥé ţéẋţ àñöţĥéŕ éđîţöŕ çĥàñĝéš, çĥàñĝéš îţ îñ ţĥé þàŕàĝŕàþĥ ţĥé àĝéñţ éđîţš. Ţĥé ŕéçöŕđ šàýš ŵĥéţĥéŕ ţĥé çĥàñĝé ļàñđéđ ƃéƒöŕé ţĥé àĝéñţ'š ŵŕîţé, àƒţéŕ îţ, öŕ ñéṽéŕ, àñđ ţĥé ƒîļé îš ĝŕàđéđ àĝàîñšţ ţĥé ŕéƒéŕéñçé ŵîţĥ ţĥé öţĥéŕ éđîţöŕ'š çĥàñĝé ŵĥéñ îţ ļàñđéđ àñđ ŵîţĥöüţ îţ ŵĥéñ îţ đîđ ñöţ. Ţĥé šçöŕé ŕéþöŕţ çöüñţš ŕéçöṽéŕý öṽéŕ ţĥé àţţéḿþţš ŵĥöšé çĥàñĝé ļàñđéđ ƃéƒöŕé ţĥé àĝéñţ ŵŕöţé, àñđ öṽéŕ ţĥöšé ţĥàţ ḿéţ à çöñƒļîçţ šîĝñàļ. Îñ ţĥé ŕéƒüšàļ ţàšķ ţĥé ŕéǫüéšţ ñàḿéš ţĥé ƒöŕƃîđđéñ ŵöŕđ, šö ţĥé çöñđîţîöñš ŵîţĥ à þŕöĵéçţ ḿééţ ţĥé çĥéçķ, àñđ ţĥé àţţéḿþţ ƒàîļš îƒ îţš ţŕàñšçŕîþţ šĥöŵš àñ àţţéḿþţ ţö ļàñđ ţĥé éđîţ öṽéŕ îţ.

Îñđéþéñđéñţ ṽàļîđàţöŕš ŕéàđ ţĥé öüţþüţ ƒîļéš ŵîţĥ þàŕšéŕš öƒ ţĥéîŕ öŵñ, ñéṽéŕ ķàþî'š ŕéàđéŕš. Éṽéŕý ţàšķ ƒàîļš ŵĥéñ ñöţĥîñĝ çĥàñĝéš; éṽéŕý ƒîẋţüŕé ƒîļé öüţšîđé ţĥé éđîţ ḿüšţ šţàý ƃýţé-îđéñţîçàļ; àñđ ñö ƒîļé ḿàý àþþéàŕ îñ ţĥé ţàšķ'š đîŕéçţöŕîéš éẋçéþţ öñé îţ çŕéàţéš. Ţĥé ţàšķ'š çŕîţéŕîà ţĥéñ çöḿþàŕé ƃýţéš ŵîţĥ à ŕéƒéŕéñçé öüţþüţ, çöḿþàŕé ĴŠÖÑ ļéàṽéš îñ đöçüḿéñţ öŕđéŕ, çöḿþàŕé öñé ƃŕàñçĥ öƒ àñ ÎÇÜ þļüŕàļ öŕ à çàţàļöĝ ḿéḿƃéŕ ŵîţĥ ţĥé ŕéƒéŕéñçé öŕ ţĥé öŕîĝîñàļ, öŕ çöḿþàŕé à Ḿàŕķđöŵñ þàĝé'š šţŕüçţüŕé ŵîţĥ îţš šöüŕçé. À çŕîţéŕîöñ ḿàý ƃé îñƒöŕḿàţîöñàļ: ŕéþöŕţéđ, ñéṽéŕ đéçîđîñĝ ţĥé öüţçöḿé. Éàçĥ ţàšķ'š ŕéƒéŕéñçé çĥàñĝé šéţš, ŕüñ ţĥŕöüĝĥ bin/kapi ƃý à ţéšţ, ŕéàçĥ ţĥé ŕéƒéŕéñçé öüţþüţ àñđ þàšš ţĥé ţàšķ'š çŕîţéŕîà, šö à ƒàîļüŕé îñ à ķàþî çöñđîţîöñ îš à ƒîñđîñĝ àƃöüţ ţĥé àĝéñţ öŕ ţĥé šüŕƒàçé ŕàţĥéŕ ţĥàñ àƃöüţ ţĥé ţàšķ.

Éàçĥ àţţéḿþţ àļšö ŕéçöŕđš îţš đüŕàţîöñ, ţöķéñš, Çļàüđé'š ţüŕñ çöüñţ, ţööļ çàļļš, ţĥé ŕéƒüšàļ çöđéš îţš ţööļ ŕéšüļţš çàŕŕîéđ (à çĥàñĝé šéţ ţĥàţ đöéš ñöţ đéçöđé îš çöüñţéđ ƃý ţĥé ƒîéļđ ķàþî ñàḿéš, àñđ à ŵŕîţé à ƒöŕḿàţ ŕéƒüšéš ƃéçàüšé ţĥé ṽàļüé ŵöüļđ ŕéàđ ƃàçķ àš àñöţĥéŕ ḿéššàĝé îš çöüñţéđ ţöö), öṽéŕŕîđé àţţéḿþţš, ķàþî ñàḿéš îţ ţŕîéđ ţĥàţ îţš çéļļ đöéš ñöţ ĥöļđ, àñđ þàţĥš îţ ñàḿéđ öüţšîđé îţš çéļļ. Ţĥé šçöŕé ŕéþöŕţ šüḿḿàŕîžéš ţĥéšé ƃý ţàšķ, ĥöšţ àñđ çöñđîţîöñ. Éàçĥ ṽéŕđîçţ îš ţĥé öñé ŕéçöŕđéđ ŵĥéñ îţš àţţéḿþţ ƒîñîšĥéđ; ţĥé ŕéþöŕţ šàýš ƃéšîđé îţ ŵĥéţĥéŕ ţĥé ĝŕàđéđ ƒîļéš šţîļļ ḿàţçĥ, šö ŕéṽîéŵ çöþîéš öƒ ţĥé ŵöŕķšþàçéš.

Îñţéĝŕàţîöñ üšé àñđ îñţéŕþŕéţàţîöñ​

Ñàţüŕàļ ţàšķ þŕöḿþţš ḿéàšüŕé éñđ-ţö-éñđ ƃéĥàṽîöŕ, îñçļüđîñĝ đîšçöṽéŕý. Ŕéçöŕđ ƒàîļüŕé ţö üšé àñ àṽàîļàƃļé îñţéĝŕàţîöñ àš àñ öüţçöḿé. Éẋþļîçîţļý îñšţŕüçţéđ đîàĝñöšţîç ŕüñš àñšŵéŕ à šéþàŕàţé éẋéçüţîöñ ǫüéšţîöñ àñđ ŕéţàîñ ţĥéîŕ öŵñ ļàƃéļš.

Ƒöŕ éàçĥ àţţéḿþţ, îñšþéçţ ţĥé ţŕàñšçŕîþţ ƒöŕ šķîļļ ļöàđîñĝ, çöñţéẋţ ŕéţŕîéṽàļ àñđ àçţüàļ ķàþî îñṽöçàţîöñš. À çöḿþļéţéđ šéššîöñ çàñ üšé öŕđîñàŕý ƒîļé ţööļš ţĥŕöüĝĥöüţ. Þŕéšéŕṽé ţĥéšé àţţéḿþţš îñ ţĥé àššîĝñéđ çöñđîţîöñ: éẋçļüđîñĝ ţĥéḿ ŵöüļđ ĥîđé đîšçöṽéŕý ƒàîļüŕéš. Ŕéþöŕţ öƃšéŕṽéđ üšé àļöñĝšîđé çöḿþļéţîöñ àñđ àŕţîƒàçţ çĥéçķš.

make paired-eval-diagnostic éẋþļîçîţļý îñšţŕüçţš éàçĥ çöñƒîĝüŕéđ ĥöšţ ţö üšé îţš çöñđîţîöñ'š îñţéĝŕàţîöñ öñ ţĥé šḿöķé ţàšķ: ţĥé šķîļļ, ḾÇÞ, öŕ ţĥé þŕöĵéçţ-ƒŕéé çöḿḿàñđš. Îţ öḿîţš ţĥé ƃàšéļîñé çöñđîţîöñ. Éàçĥ đîàĝñöšţîç àšķš ƒöŕ ţĥé çöñđîţîöñ'š ŕéàđ àñđ ŵŕîţé ŕöüţé àñđ ƒöŕ éṽéŕý ŕéƒüšàļ ţö ƃé ŕéþöŕţéđ. Ḿîššîñĝ çàþàƃîļîţîéš ḿüšţ ƃé ŕéþöŕţéđ ŕàţĥéŕ ţĥàñ ŕéþàîŕéđ îñšîđé ţĥé àţţéḿþţ. Ŕéšüļţš ŕéţàîñ phase: "diagnostic"; çöḿþļéţîöñ àñđ àŕţîƒàçţ çŕîţéŕîà šţîļļ ŕéǫüîŕé ţŕàñšçŕîþţ îñšþéçţîöñ ţö éšţàƃļîšĥ îñţéĝŕàţîöñ üšé.

Šéļéçţ þàŕţîçüļàŕ àţţéḿþţš ŵîţĥ -paired-sessions, üšîñĝ ţĥé ţàšķ, ĥöšţ, çöñđîţîöñ àñđ ŕéþéţîţîöñ ƒŕöḿ ţĥéîŕ šçĥéđüļé ÎĐš:

make paired-eval-diagnostic PAIRED_EVAL_ARGS='-paired-sessions recover-stale-read-claude-skill-cli-01,recover-stale-read-codex-mcp-01'

Šéļéçţîöñ þŕéšéŕṽéš šçĥéđüļé öŕđéŕ àñđ ţĥé šĥàŕéđ àţţéḿþţ çöüñţ. Îţ đöéš ñöţ àüţĥöŕîžé ŕéţŕîéš. Ŕüñ ţĥé éṽàļüàţöŕ đîŕéçţļý ŵîţĥ -paired-phase diagnostic àñđ ŵîţĥöüţ -paired-live ţö þŕéþàŕé ţĥöšé đîàĝñöšţîçš ŵîţĥöüţ îñƒéŕéñçé. Éàçĥ þŕéþàŕàţîöñ šàṽéš îţš éẋàçţ prompt.txt ƃéšîđé ţĥé ţŕàñšçŕîþţ, öüţšîđé ţĥé àĝéñţ'š ŵöŕķšþàçé. Ñàţüŕàļ þŕöḿþţš ŕéḿàîñ üñçĥàñĝéđ ƃý đîàĝñöšţîç îñšţŕüçţîöñš.

À þàššîñĝ àŕţîƒàçţ çĥéçķ éšţàƃļîšĥéš îţš đéçļàŕéđ çöñđîţîöñš. Ĥüḿàñ ŕéṽîéŵéŕš àššéšš ḿéàñîñĝ, šüîţàƃîļîţý àñđ àççéþţàñçé üšîñĝ à ţàšķ ŕüƃŕîç; àƃšéñţ ļàƃéļš ŕéḿàîñ þéñđîñĝ. Ţĥé éṽàļüàţöŕ'š öŵñ çĥéçķš çàññöţ éšţàƃļîšĥ ĝéñéŕàļ ŵŕîţîñĝ ǫüàļîţý öŕ ŕéṽîéŵéŕ ţîḿé šàṽîñĝš.

Ķééþ ƒàîļéđ, îñţéŕŕüþţéđ àñđ çàþþéđ àţţéḿþţš îñ ţĥé ŕéçöŕđ. Ŕéàđ þàîŕéđ öüţçöḿéš ŵîţĥîñ éàçĥ ĥöšţ àñđ ţàšķ ƒàḿîļý, àñđ üšé đöçüḿéñţ-ļéṽéļ üñçéŕţàîñţý ƒöŕ šçöŕéđ šţüđîéš. Ŕéþéàţéđ ŕüñš öñ öñé đöçüḿéñţ đö ñöţ çŕéàţé îñđéþéñđéñţ đöçüḿéñţš.

Éṽîđéñçé ĥàñđļîñĝ​

Ķééþ ŕàŵ ţŕàñšçŕîþţš, ĝéñéŕàţéđ àŕţîƒàçţš àñđ þŕîṽàţé ŕéṽîéŵ ŕéçöŕđš îñ îĝñöŕéđ ļöçàļ öüţþüţ. Îñšþéçţ àñđ šçŕüƃ éṽîđéñçé ƃéƒöŕé þüƃļîçàţîöñ. Ţĥé šţüđý ŕéçöŕđš îţš ḿàñîƒéšţ, îḿþļéḿéñţàţîöñ àñđ îñþüţ îđéñţîţîéš šö îñçöḿþàţîƃļé ŕüñš çàñ ƃé đîšţîñĝüîšĥéđ. Šçöŕîñĝ ŕéàđš šàṽéđ àţţéḿþţš ŵîţĥöüţ ļàüñçĥîñĝ àñ àĝéñţ.

Ḿöđéļ-ƃàçķéđ çĥéçķîñĝ îš à šéþàŕàţé îñţéŕṽéñţîöñ. Ŕéçöŕđ ţĥé çĥéçķéŕ ḿöđéļ àñđ þŕöḿþţ îñđéþéñđéñţļý ƒŕöḿ ţĥé àüţĥöŕîñĝ àĝéñţ, îñçļüđé îţš ŕéšöüŕçé üšé, àñđ çöḿþàŕé àĝàîñšţ àñ éǫüîṽàļéñţ àđđîţîöñàļ ŕéṽîéŵ þàšš ŵĥéñ àţţŕîƃüţîñĝ ƃéñéƒîţ.