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

Àĝéñţ éṽàļüàţîöñ

Ţĥé àĝéñţ éṽàļüàţîöñ îñ scripts/skilleval ḿéàšüŕéš ŵĥéţĥéŕ çöđîñĝ àĝéñţš ƒîñđ, àþþļý àñđ ĝŕöŵ à þŕöĵéçţ'š çöñţéẋţ ţĥŕöüĝĥ ķàþî. Àĝéñţš đö öŕđîñàŕý ŵŕîţîñĝ ţàšķš îñ à đöçüḿéñţàţîöñ ŕéþöšîţöŕý ŵĥöšé çöñṽéñţîöñš àŕé ŵŕîţţéñ đöŵñ àš àñ àñšŵéŕ ķéý, àñđ ţĥé ĥàŕñéšš šçöŕéš ŵĥàţ ţĥéý ŵŕöţé àñđ ŵĥàţ ţĥéý ŕéçöŕđéđ àĝàîñšţ ţĥàţ ķéý. Ţĥé þàîŕéđ àĝéñţ éṽàļüàţîöñ çöḿþàŕéš îñţéĝŕàţîöñš àçŕöšš öñé ţàšķ; ţĥîš éṽàļüàţîöñ ĥöļđš ţĥé îñţéĝŕàţîöñ ƒîẋéđ àñđ àšķš ŵĥàţ àñ àĝéñţ đöéš ŵîţĥ à þŕöĵéçţ'š çöñţéẋţ.

Ţĥé çöḿḿàñđš, ţĥé öŕđéŕ ţö ŕüñ ţĥéḿ îñ àñđ ĥöŵ ţö ŕéàđ à ŕéþöŕţ àŕé îñ ţĥé ŕüñƃööķ, docs/internals/agent-evaluation.md.

Ţĥé ƒîẋţüŕé àñđ îţš ķéý​

Ţĥé ƒîẋţüŕé îš ţĥé ĥéļþ çéñţŕé öƒ Ļööḿŵîšé, àñ îñṽéñţéđ ŕöţà àþþ ƒöŕ çàƒéš àñđ šḿàļļ šĥöþš: à ŔÉÀĐḾÉ àñđ éîĝĥţ þàĝéš öƒ ṽàŕîéđ þŕöšé. Îţš àñšŵéŕ ķéý ñàḿéš ţŵéļṽé éñţŕîéš:

ĶîñđÉñţŕîéš
Ñàḿéšţĥé þŕöđüçţ, à ƒéàţüŕé àñđ ţŵö þļàñ ñàḿéš, éàçĥ ŵŕîţţéñ öñé ŵàý
ŠþéļļîñĝšƂŕîţîšĥ šþéļļîñĝ ţĥŕöüĝĥöüţ, "šîĝñ îñ" ŕàţĥéŕ ţĥàñ "ļöĝ îñ", "éḿàîļ" ŕàţĥéŕ ţĥàñ "é-ḿàîļ"
Àṽöîđéđ ŵöŕđš"ŕöšţéŕ" àñđ "éḿþļöýéé", ŵîţĥ "ŕöţà" àñđ "ţéàḿ ḿéḿƃéŕ" üšéđ îñšţéàđ
Ĥàƃîţšţĥé ŕéàđéŕ îš àđđŕéššéđ àš "ýöü"; ñö éẋçļàḿàţîöñ ḿàŕķš
Đéçöý"ţîḿéšĥééţ" àñđ "ţîḿé šĥééţ", üšéđ ƃöţĥ ŵàýš àƃöüţ éǫüàļļý

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

Çöđé ĝéñéŕàţéš ţĥé ƒîẋţüŕé, àñđ ĝéñéŕàţîöñ îš đéţéŕḿîñîšţîç, šö éṽéŕý ŕüñ šééš ţĥé šàḿé ƃýţéš. Ţĥé ķéý îš ţĥé öñé šöüŕçé öƒ ţŕüţĥ: ñàḿéš éñţéŕ ţĥé þŕöšé öñļý ţĥŕöüĝĥ ţĥé ķéý'š öŵñ ţöķéñš, àñđ ĝéñéŕàţîöñ çĥéçķš ţĥé ŕéñđéŕéđ þàĝéš àĝàîñšţ ţĥé ķéý ƃéƒöŕé à çéļļ îš ƃüîļţ. Éṽéŕý ñàḿé àñđ šþéļļîñĝ àþþéàŕš šéṽéŕàļ ţîḿéš àçŕöšš šéṽéŕàļ ƒîļéš, ñö àṽöîđéđ ŵöŕđ öŕ ḿîššþéļţ ñàḿé àþþéàŕš àñýŵĥéŕé, éṽéŕý þàĝé àđđŕéššéš ţĥé ŕéàđéŕ àš "ýöü", àñđ ţĥé đéçöý'š ţŵö ƒöŕḿš šţàý ŕöüĝĥļý éṽéñ. À þàĝé ţĥàţ ƃŕöķé àñý öƒ ţĥéšé ƒàîļš ĝéñéŕàţîöñ, ŵĥîçĥ îš ĥöŵ ţĥé ƒîẋţüŕé îš ķéþţ ƒŕöḿ çöñţŕàđîçţîñĝ îţš öŵñ ķéý. Ţĥé þŕöḿþţš àŕé çĥéçķéđ ţĥé šàḿé ŵàý: ñöñé ḿàý ḿéñţîöñ ķàþî, çöñţéẋţ, ŕüļéš öŕ çĥéçķîñĝ, öŕ ñàḿé à ƒöŕḿ öƒ àñý çöñṽéñţîöñ.

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

Ŵĥàţ öñé çéļļ îš​

À çéļļ îš öñé ĥöšţ ŵöŕķîñĝ öñé ţàšķ, îñ îţš öŵñ çöþý öƒ ţĥé ƒîẋţüŕé ŵîţĥ îţš öŵñ ķàþî ŕööţš. Éṽéŕý çéļļ îš þŕéþàŕéđ ţĥé šàḿé ŵàý: ţĥé ƒîẋţüŕé üñđéŕ ĝîţ, ţĥé ŕéàļ kapi init --agents all ŕüñ öṽéŕ îţ ƃý ţĥé ƃîñàŕý üñđéŕ ţéšţ, àñđ ţĥé çöñţéñţ ḿàþþîñĝ îţš šçàƒƒöļđ ļéàṽéš ƒöŕ à þéŕšöñ. À Ḿéàšüŕé 1 çéļļ àļšö ĥàš ţĥé þļàñţéđ çöñṽéñţîöñš þüţ îñ ƒöŕçé ƃý à þéŕšöñ ƃéƒöŕé ţĥé àĝéñţ šţàŕţš. Ţĥé çöḿḿîţ çŕéàţéđ àƒţéŕ þŕéþàŕàţîöñ îš ţĥé çéļļ'š ƃàšéļîñé.

Çéļļš àŕé ĝéñéŕàţéđ öüţšîđé ţĥîš ŕéþöšîţöŕý. Àñ àĝéñţ ĥöšţ ŵàļķš üþ ƒŕöḿ îţš ŵöŕķîñĝ đîŕéçţöŕý ļööķîñĝ ƒöŕ CLAUDE.md, àñđ ķàþî ŵàļķš üþ ļööķîñĝ ƒöŕ kapi.yaml, šö à çéļļ îñšîđé ţĥé ţŕéé ŵöüļđ ƃîñđ ţö ñéöķàþî'š öŵñ þŕöĵéçţ. Þŕéþàŕàţîöñ ŕéþöŕţš éṽéŕý đîšçöṽéŕàƃļé ƒîļé àƃöṽé à çéļļ, àñđ àñýţĥîñĝ ƒöüñđ ƃļöçķš ţĥé ƃàţçĥ.

Éàçĥ çéļļ ķééþš îţš öŵñ KAPI_DATA_DIR, KAPI_CONFIG_DIR, XDG_DATA_HOME, XDG_CACHE_HOME àñđ þļüĝîñ ŕööţ, ŵîţĥ KAPI_PLUGINS_DIR_ONLY šéţ, à ƒŕéšĥ HOME, àñđ à þŕîṽàţé ÞÀŢĤ ĥöļđîñĝ öŕđîñàŕý éđîţîñĝ ţööļš àñđ ţĥîš çĥéçķöüţ'š ķàþî üñđéŕ éàçĥ ñàḿé ţĥé šķîļļ đŕîṽéš. Ţĥé .mcp.json ţĥàţ kapi init ŵŕîţéš ñàḿéš à ƃàŕé kapi; þŕéþàŕàţîöñ ŕéšöļṽéš ţĥàţ ñàḿé öñ ţĥé çéļļ'š ÞÀŢĤ àñđ ƃļöçķš ţĥé ƃàţçĥ üñļéšš îţ îš ţĥé ƃüîļđ üñđéŕ ţéšţ. Çöđéẋ çéļļš ĝéţ ţĥé ţŕüšţ éñţŕý à þéŕšöñ ŵöüļđ àççéþţ àñđ ţĥé éñṽîŕöñḿéñţ ƒöŕŵàŕđîñĝ Çöđéẋ ñééđš, àñđ þŕéƒļîĝĥţ àšķš Çöđéẋ îţšéļƒ ŵĥàţ îţ šééš. À đîĝéšţ öƒ ţĥé þéŕšöñ'š öŵñ đàţà ŕööţ îš ţàķéñ ƃéƒöŕé àñđ àƒţéŕ éṽéŕý šéššîöñ. Þŕöçéšš-ļéṽéļ çöñƒîñéḿéñţ îš ñöţ çļàîḿéđ.

Ḿéàšüŕé 1: àĝéñţš àþþļý çöñţéẋţ​

Ţĥé éļéṽéñ çöñṽéñţîöñš àŕé éšţàƃļîšĥéđ àš ŕüļéš ŵîţĥ KAPI_ACTOR=person ƃéƒöŕé ţĥé šéššîöñ. Þŕéþàŕàţîöñ ŕéàđš ţĥé çöñţéẋţ ļöĝ ƃàçķ àñđ ŕéƒüšéš à çéļļ îñ ŵĥîçĥ àñý ŕüļé đîđ ñöţ ŕéàçĥ ţĥé ĥéļđ šţàţüš.

Ŵĥîļé ţĥé šéššîöñ ŕüñš, ţĥé ĥàŕñéšš þöļļš ţĥé ŵöŕķîñĝ ţŕéé àñđ ķééþš ţĥé ƒîŕšţ šàṽéđ ṽéŕšîöñ öƒ éṽéŕý ƒîļé ţĥé àĝéñţ çĥàñĝéđ. Àƒţéŕŵàŕđš îţ ŕüñš kapi check --diff-against <baseline> --json ţŵîçé: öṽéŕ ţĥé ƒîñàļ šţàţé, àñđ öṽéŕ ţĥé ƒîŕšţ ṽéŕšîöñš ļàîđ öñ ţĥé ƃàšéļîñé. À ƒîñđîñĝ ƒàîļš ŵĥéñ îţš šéṽéŕîţý đöéš, ŵĥîçĥ ļéàṽéš öüţ ḿîñöŕ, ñéüţŕàļ àñđ üñçöñƒîŕḿéđ àđṽîçé. Éàçĥ ƒàîļîñĝ ṽöçàƃüļàŕý ƒîñđîñĝ îš ţŕàçéđ ţö ţĥé çöñṽéñţîöñ ŵĥöšé ŕüļé îţ ñàḿéš.

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

Àççéþţàñçé çŕîţéŕîà: 90% öƒ àþþļîçàƃļé çöñṽéñţîöñš ƒöļļöŵéđ îñ ţĥé ƒîŕšţ šàṽéđ ṽéŕšîöñ, àñđ ñö ƒàîļîñĝ ƒîñđîñĝ àţ ţĥé éñđ.

Ḿéàšüŕé 2: àĝéñţš ĝŕöŵ çöñţéẋţ​

Ţĥéšé çéļļš šţàŕţ ŵîţĥöüţ éšţàƃļîšĥéđ ŕüļéš. Ţĥé àĝéñţ'š éñţŕîéš îñ kapi context log --json àŕé šçöŕéđ àĝàîñšţ ţĥé àñšŵéŕ ķéý. Éñţŕîéš ƃý à þéŕšöñ àñđ đéçîšîöñš šüçĥ àš çöñƒîŕḿàţîöñš àŕé ļéƒţ öüţ.

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

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

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

Ḿéàšüŕé 3: šéţţļîñĝ​

Ḿéàšüŕé 3 ñééđš ñö ļîṽé ŕüñ. eval_settle.go šçŕîþţš à šţöŕý àçŕöšš ƒöüŕ ḿàçĥîñéš ţĥàţ šţàŕţ ƒŕöḿ öñé àĝéñţ šéššîöñ'š šüĝĝéšţîöñš: à šéçöñđ šéššîöñ ţĥàţ ŕéþéàţš öñé ŕüļé àñđ šüĝĝéšţš à ŕîṽàļ ƒöŕ àñöţĥéŕ, ÇÎ ŕéçöŕđîñĝ à ḿéŕĝé ţö ţĥé đéƒàüļţ ƃŕàñçĥ, à þéŕšöñ'š çöŕŕéçţîöñš, àñđ à þéŕšöñ'š đîĝéšţ ţĥàţ ķééþš öñé šüĝĝéšţîöñ àñđ đŕöþš àñöţĥéŕ. Éàçĥ ḿàçĥîñé šéţţļéš îţš öŵñ ļöĝ. Ţĥé ḿéàšüŕé ţĥéñ ḿéŕĝéš ţĥé ƒöüŕ ļöĝš îñţö à ƒŕéšĥ ŵöŕķšþàçé îñ àļļ 24 öŕđéŕš, šéţţļîñĝ àƒţéŕ éàçĥ ḿéŕĝé, àñđ îš ḿéţ ŵĥéñ éṽéŕý öŕđéŕ éšţàƃļîšĥéš éẋàçţļý ţĥé éẋþéçţéđ ŕüļéš àñđ éṽéŕý ŕüļé éñđš àţ ţĥé šàḿé šţàţüš. Ţĥé šçéñàŕîö ļîṽéš îñ eval_product.go ŵîţĥ ţĥé ŕéšţ öƒ ţĥé þŕöđüçţ'š ṽöçàƃüļàŕý.

TestEvalSettle_MeasureIsMet ŕüñš îţ ŵîţĥ ţĥé ƒŕàḿéŵöŕķ ţéšţš îñ ÇÎ, àñđ éṽéŕý ŕéþöŕţ ḿéàšüŕéš îţ àƒŕéšĥ, ŵîţĥ à ţàƃļé öƒ éàçĥ ŕüļé'š šţàţüš.

Ḿéàšüŕé 4: ŕéṽîéŵ üšéƒüļñéšš​

Àƒţéŕ ţĥé ĝŕöŵ ŕüñš, ţĥé ŕéþöŕţ ŵŕîţéš à ŕéṽîéŵ šĥééţ: éṽéŕý éñţŕý éàçĥ ŕüñ ŕéçöŕđéđ, ĝŕöüþéđ üñđéŕ ţĥé çöñṽéñţîöñ îţ ḿàţçĥéš, ţĥéñ ţĥé đéçöý, ţĥéñ éñţŕîéš öüţšîđé ţĥé ķéý, éàçĥ ŵîţĥ îţš éṽîđéñçé. Îţ éñđš ŵîţĥ ţĥŕéé ǫüéšţîöñš: ĥöŵ ļöñĝ ŕéàđîñĝ îţ ţööķ, ŵĥîçĥ éñţŕîéš àŕé ŵöŕţĥ ķééþîñĝ, àñđ ŵĥéţĥéŕ ţĥé éñţŕîéš šĥöŵéđ àñýţĥîñĝ àƃöüţ ţĥé ƒîẋţüŕé ţĥàţ ŵàš ñöţ þļàñţéđ. À þéŕšöñ àñšŵéŕš îñ à šḿàļļ ÝÀḾĻ ƒîļé, àñđ ţĥé ñéẋţ ŕéþöŕţ ŕéçöŕđš ţĥé àñšŵéŕš.

Ŵĥéŕé ţĥé þŕöđüçţ'š ṽöçàƃüļàŕý ļîṽéš​

Ţĥé éṽàļüàţîöñ ḿéàšüŕéš ķàþî àš îţ šţàñđš ŵĥéñ îţ ŕüñš. Ĥöŵ à þéŕšöñ þüţš à ŕüļé îñ ƒöŕçé, ŵĥàţ à ĥéļđ ŕüļé'š šţàţüš îš çàļļéđ àñđ ŵĥîçĥ šéṽéŕîţîéš ƒàîļ àŕé îñ eval_product.go. Ĥöŵ éàçĥ ḾÇÞ ţööļ çöüñţš (àšķîñĝ, ŕéçöŕđîñĝ, çĥéçķîñĝ öŕ ŵŕîţîñĝ) îš öñé ţàƃļé îñ eval_transcript.go. Þŕéþàŕàţîöñ ŕéþöŕţš à šéŕṽéŕ ţööļ ţĥàţ ţàƃļé çàññöţ þļàçé, šö à ŕéñàḿéđ ţööļ šĥöŵš üþ ƃéƒöŕé à ŕüñ ŕàţĥéŕ ţĥàñ àš à šîļéñţ žéŕö îñ à ŕéþöŕţ.

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

Ţŕàñšçŕîþţš, ƃöţĥ ṽéŕšîöñš öƒ éṽéŕý çĥàñĝéđ ƒîļé, ţĥé çöñţéẋţ ļöĝ, ŕéṽîéŵ šĥééţš àñđ ţĥé àñšŵéŕ ķéý šţàý îñ îĝñöŕéđ ļöçàļ öüţþüţ üñđéŕ harness/out/eval. Éṽéŕý àţţéḿþţ îš ƃöüñđ ţö à ƒîñĝéŕþŕîñţ öṽéŕ ţĥé ḿàñîƒéšţ, ţĥé ƒîẋţüŕé ŵîţĥ îţš ķéý àñđ þŕöḿþţš, ţĥé ŕüññéŕ'š šöüŕçé, ţĥé šĥîþþéđ šķîļļ àñđ ţĥé ķàþî ƃîñàŕý, šö à çĥàñĝéđ îñþüţ çàļļš ƒöŕ à ƒŕéšĥ éṽîđéñçé đîŕéçţöŕý ŕàţĥéŕ ţĥàñ à ḿîẋéđ šţüđý. Ţĥé ļîṽé þĥàšéš šĥàŕé öñé þéŕšîšţéñţ àţţéḿþţ çéîļîñĝ, ŵĥîçĥ çöüñţš ƒàîļéđ àţţéḿþţš ţöö àñđ ñéṽéŕ ŕéšéţš, àñđ ñöţĥîñĝ ŕéţŕîéš àüţöḿàţîçàļļý. Ŕéþöŕţš àŕé ŕéñđéŕéđ ƒŕöḿ šàṽéđ àţţéḿþţš ŵîţĥ ñö ḿöđéļ çàļļ, šö à çĥàñĝé ţö ţĥé šçöŕîñĝ ŕéàçĥéš ŕüñš àļŕéàđý ḿàđé.