Üñđéŕšţàñđîñĝ ţĥé ÇĻÎ ļàýéŕš
Ḿöšţ üšéŕš ŕüñ kapi up àñđ šţöþ: îţ çàţçĥéš ţĥé ŵĥöļé þŕöĵéçţ üþ ţö îţš
šĥîþ ĝàţéš, àñđ ţĥé þöŕçéļàîñ ṽéŕƃš àŕöüñđ îţ (status, check, apply,
translate) çöṽéŕ ţĥé đàîļý ŵöŕķ. Üñđéŕñéàţĥ ţĥéḿ àŕé ţĥé ļàýéŕš ţĥöšé ṽéŕƃš
àŕé ḿàđé öƒ, ŵĥîçĥ ýöü çàñ ŕüñ öñé þîéçé àţ à ţîḿé.
Àţ ţĥé ƃöţţöḿ îš à ŕéĝîšţŕý
öƒ ţööļš: ţŕàñšļàţé, ŕéçýçļé, ǫà, ţéŕḿ-çĥéçķ, ŕéđàçţ, àñđ ţĥé ŕéšţ (ļîšţ
ţĥéḿ ŵîţĥ kapi tools list; ţĥé ţööļ ŕéƒéŕéñçé đöçüḿéñţš éàçĥ). À
ƒļöŵ çöḿþöšéš ţööļš îñţö à ñàḿéđ þîþéļîñé. Ţĥé þöŕçéļàîñ ṽéŕƃš àŕé
ŵöŕķƒļöŵš öṽéŕ ţĥöšé ţŵö ļàýéŕš: kapi translate ŵŕàþš ŕéçýçļé → ţŕàñšļàţé →
çĥéçķš, àñđ kapi up ļööþš à ƒļöŵ üñţîļ ţĥé þŕöĵéçţ'š ĝàţéš àŕé ḿéţ.
Éàçĥ ļàýéŕ çöḿþöšéš ţĥé öñé ƃéļöŵ: à ƒļöŵ îš àñ öŕđéŕéđ ļîšţ öƒ ţööļš; ķàþî üþ îš à ƒļöŵ îñ à ļööþ ŵîţĥ çöṽéŕàĝé, çĥéçķš, àñđ ĝàţéš àŕöüñđ îţ.
exec: öñé ţööļ, öñé þàšš
kapi exec <tool> éẋéçüţéš à šîñĝļé ŕéĝîšţŕý ţööļ öñ ţĥé ƒîļéš ýöü ñàḿé: öñé
ţööļ, öñé þàšš, ñö ĝüàŕđŕàîļš àŕöüñđ îţ. Ţĥéšé àŕé ţĥé šàḿé ţööļš à ƒļöŵ ŕüñš:
exec translate îš à ƃàŕé ÀÎ ţŕàñšļàţé ŵîţĥ ñö çöñţéñţ-ḿéḿöŕý þàšš ƃéƒöŕé îţ àñđ ñö çĥéçķš
àƒţéŕ îţ; exec term-check ŕüñš ĵüšţ ţĥé ţéŕḿîñöļöĝý çĥéçķ; exec recycle
ŕüñš ĵüšţ ţĥé çöñţéñţ-ḿéḿöŕý ļéṽéŕàĝé. Đîšçöṽéŕ à ţööļ'š öþţîöñš ŵîţĥ
kapi tools schema <name>.
kapi exec translate app.json --target-lang fr # bare translate, no memory, no checks
kapi exec term-check locales/en.json --target locales/fr.json --target-lang fr
kapi exec recycle app.json --target-lang fr # content-memory leverage only
À çĥéçķ ţĥàţ çöḿþàŕéš à ƃļöçķ'š šöüŕçé ŵîţĥ îţš ţŕàñšļàţîöñ ŕéàđš ƃöţĥ. À
ƒîļé ţĥàţ ĥöļđš ƃöţĥ, šüçĥ àš ẊĻÎƑƑ, ñééđš ñöţĥîñĝ ḿöŕé. Ŵĥéñ ţĥé ţŕàñšļàţîöñ
îš à ƒîļé öƒ îţš öŵñ, ñàḿé ţĥé šöüŕçé ƒîļé àñđ þàšš ţĥé ţŕàñšļàţîöñ ŵîţĥ
--target. Ţĥé ŕüñ ŕéàđš ţĥé ţŵö ƒîļéš àš öñé šéţ öƒ ƃļöçķš, þŕîñţš îţš
ƒîñđîñĝš, àñđ ŵŕîţéš ñö ƒîļé:
$ kapi exec qa docs/contacts.md --target docs/nb/contacts.md --target-lang nb
outcome rule location message
REPORTS qa.doubled-word docs/contacts.md:contacts/p#2 Target contains doubled word: "på"
0 failing, 1 reported · score 99/100
Ŕüñ öñ docs/contacts.md àļöñé, qa ƒîñđš ñö nb ţŕàñšļàţîöñ ţö çöḿþàŕé
ŵîţĥ. ķàþî ŕéþöŕţš ţĥàţ ţĥé çĥéçķ đîđ ñöţ ŕüñ, ñàḿéš --target, àñđ éẋîţš ŵîţĥ
çöđé 4, àš kapi check đöéš ŵĥéñ îţ çĥéçķš ñö çöñţéñţ. qa ŵŕîţéš à ƒîļé öñļý
ŵĥéŕé -o öŕ --output-dir ñàḿéš öñé.
review þàîŕš à ţŕàñšļàţîöñ ƒîļé ţĥé šàḿé ŵàý. Îţ àšķš à þŕöṽîđéŕ ţö ŕéṽîéŵ
éàçĥ ƃļöçķ'š ţŕàñšļàţîöñ, þŕîñţš ŵĥàţ ţĥé þŕöṽîđéŕ ƒöüñđ, àñđ çĥàñĝéš ñéîţĥéŕ
ƒîļé:
$ kapi exec review docs/contacts.md --target docs/nb/contacts.md --target-lang nb --provider demo
demo mode: illustrative output from a built-in stub rather than a real language model.
outcome rule location message
REPORTS review.review docs/contacts.md:contacts/p ⟦demo⟧ illustrative stub response (no real language model)
REPORTS review.review docs/contacts.md:h ⟦demo⟧ illustrative stub response (no real language model)
0 failing, 2 reported · score 98/100
Ţĥé đéḿö þŕöṽîđéŕ àñšŵéŕš éàçĥ ƃļöçķ îñ þŕöšé, šö éàçĥ ƃļöçķ çàŕŕîéš öñé
ƒîñđîñĝ ţĥàţ ĥöļđš ţĥé àñšŵéŕ. À þŕöṽîđéŕ ţĥàţ àñšŵéŕš ŵîţĥ ţĥé ŕéṽîéŵ'š
ƒîñđîñĝš ŕéþöŕţš öñé ŕöŵ þéŕ ƒîñđîñĝ, àñđ çöüñţš à çŕîţîçàļ öŕ ḿàĵöŕ öñé àš
ƒàîļîñĝ. Ŵĥéñ îţ ŕüñš ŵîţĥöüţ --target öñ à ƒîļé ţĥàţ ĥöļđš ñö nb ţŕàñšļàţîöñ,
review ŕéþöŕţš ţĥàţ îţ đîđ ñöţ ŕüñ àñđ éẋîţš ŵîţĥ çöđé 4, àš qa đöéš.
Ŕéàçĥ ƒöŕ exec ŵĥéñ ýöü ŵàñţ éẋàçţļý öñé ţööļ'š ƃéĥàṽîöŕ: îšöļàţîñĝ à šţéþ
ŵĥîļé đéƃüĝĝîñĝ à ƒļöŵ, öŕ à öñé-öƒƒ çĥéçķ öñ à ƒîļé. Šéé ţĥé
exec ŕéƒéŕéñçé.
Îñ à þŕöĵéçţ ţĥàţ đéçļàŕéš à ŕéđàçţîöñ þöļîçý,
exec þüţš redact ƃéƒöŕé à ţööļ ţĥàţ çàļļš à ḿöđéļ àñđ unredact àƒţéŕ îţ.
Éàçĥ ƒîļé îš ŕéđàçţéđ üñđéŕ ţĥé þöļîçý ţĥàţ çöṽéŕš îţ: îţš çöļļéçţîöñ'š öŕ
çöñţéñţ îţéḿ'š redaction:, éļšé defaults.redaction.
Ţĥé ḿöđéļ ŕéàđš þļàçéĥöļđéŕš îñ éṽéŕý ƃļöçķ, îñ éàçĥ ţŕàñšļàţîöñ ƃéšîđé îţ,
àñđ îñ éṽéŕýţĥîñĝ ţĥé ţööļ šéñđš ŵîţĥ ţĥéḿ: ţéŕḿ ŕüļéš, ţĥé ṽöîçé þŕöƒîļé,
ţĥé çöñţéñţ ḿéḿöŕý'š þŕéṽîöüš ṽéŕšîöñ àñđ ţĥé îñšţŕüçţîöñ. Ţĥé öüţþüţ çàŕŕîéš
ţĥé öŕîĝîñàļ ṽàļüéš. À þöļîçý ţĥàţ đéţéçţš éñţîţîéš
šţöþš ţĥé ŕüñ; ŕüñ ţĥé ţööļ îñ à ƒļöŵ ŵîţĥ entity-extract àĥéàđ öƒ redact
îñšţéàđ.
run: çöḿþöšé ţööļš îñţö à ƒļöŵ
kapi run <flow> ŕüñš à ñàḿéđ ƒļöŵ (àñ öŕđéŕéđ
çöḿþöšîţîöñ öƒ ţööļš) ƒöŕ öñé þàšš. Ƃüîļţ-îñ ƒļöŵš çöṽéŕ ţĥé çöḿḿöñ
çöḿþöšîţîöñš (translate, translate-qa, secure-translate; kapi flows
ļîšţš ŵĥàţ ýöüŕ ƃüîļđ šĥîþš), àñđ à þŕöĵéçţ ŕéçîþé đéƒîñéš îţš öŵñ üñđéŕ
flows:.
kapi run translate-qa -i app.xliff --target-lang fr # translate, then LLM-judged review
kapi run secure-translate -i notes.md --target-lang de # redact → translate → unredact
kapi run pseudo -p kapi.yaml # a project-defined flow
À ƒļöŵ ţĥé ŕéçîþé đéƒîñéš ŕüñš öṽéŕ ţĥé þŕöĵéçţ'š ƒîļéš, šö ĝîṽéñ à .kpz þàçķàĝé îţ šţöþš: kapi exec <tool> work.kpz ŕüñš öñé ţööļ öñ ţĥé þàçķàĝé, àñđ kapi merge work.kpz ƃŕîñĝš îţ îñţö ţĥé þŕöĵéçţ ƒîŕšţ.
À ƒļöŵ îš àļšö ŵĥàţ kapi up ļööþš: defaults.flow ñàḿéš ţĥé þŕöĵéçţ'š
đéƒàüļţ, àñđ ŵîţĥöüţ öñé up ŕüñš ţĥé ƃüîļţ-îñ đéƒàüļţ: çöñţéñţ-ḿéḿöŕý ŕéüšé
(ŕéçýçļé) ƒöļļöŵéđ ƃý ÀÎ ţŕàñšļàţé. run éẋéçüţéš ţĥé çöḿþöšîţîöñ öñçé àñđ šţöþš;
îţ ŕé-đéŕîṽéš ñö çöṽéŕàĝé àñđ çöñšüļţš ñö ĝàţéš. Šéé ţĥé
run ŕéƒéŕéñçé.
extract / merge: ţĥé ţŕàñšļàţöŕ ĥàñđ-öƒƒ
Ñöţ éṽéŕý þàšš îš à ţööļ ŕüñ. Ŵĥéñ à þéŕšöñ đöéš ţĥé ţŕàñšļàţîöñ, kapi extract éḿîţš öñé ƃîļîñĝüàļ ƒîļé þéŕ šöüŕçé → ţàŕĝéţ þàîŕ (ẊĻÎƑƑ 2.ẋ öŕ ÞÖ
ƒöŕ à ţĥîŕđ-þàŕţý ÇÀŢ ţööļ, à ļöššļéšš .kpz ƒöŕ à ŕéçîþîéñţ ŵöŕķîñĝ îñ ķàþî),
þŕé-ƒîļļéđ ƒŕöḿ ţĥé þŕöĵéçţ'š çöñţéñţ ḿéḿöŕý. kapi merge àþþļîéš ţĥé ŕéţüŕñéđ
ƒîļé ƃàçķ öñţö ţĥé þŕöĵéçţ, ŕéšţöŕîñĝ ţĥé öŕîĝîñàļ ƒöŕḿàţš ţĥŕöüĝĥ ţĥé šķéļéţöñ
çàþţüŕéđ àţ éẋţŕàçţ ţîḿé àñđ àƃšöŕƃîñĝ ţĥé çöŕŕéçţîöñš îñţö ḿéḿöŕý.
kapi extract --target-lang fr # → out/<name>.en-to-fr.xliff, memory pre-filled
kapi merge -i out/app.en-to-fr.xliff
Éẋţŕàçţ àñđ ḿéŕĝé šîţ àţ ţĥé šàḿé ļàýéŕ àš run: ţĥéý ḿöṽé ŵöŕķ ţĥŕöüĝĥ àñ
éẋţéŕñàļ þàšš îñšţéàđ öƒ à ţööļ þàšš, àñđ ţĥé ŕéšüļţ ļàñđš îñ ţĥé šàḿé þŕöĵéçţ
šţàţé ţĥé þöŕçéļàîñ ŕé-đéŕîṽéš. Ţĥé ŵöŕķƒļöŵ (çàŕŕîéŕš, ḿéḿöŕý þŕöṽéñàñçé,
ṽéñđöŕ ŕöüñđš) îš çöṽéŕéđ îñ Ĥàñđ öƒƒ ţö ţŕàñšļàţöŕš;
ţĥé ƒļàĝš àŕé îñ ţĥé extract àñđ
merge ŕéƒéŕéñçéš.
Ŵĥàţ kapi up àđđš
Šééñ ƒŕöḿ ţĥîš ļàýéŕ, kapi up îš ŕüñ ţĥé đéƒàüļţ ƒļöŵ, îñ à ļööþ, ŵîţĥ ţĥé
þŕöĵéçţ ḿàçĥîñéŕý àŕöüñđ îţ. Éàçĥ þàšš:
- ŕé-đéŕîṽéš çöṽéŕàĝé ƒŕöḿ ţĥé ŵöŕķîñĝ ţŕéé (ŕé-éẋţŕàçţîñĝ ŵĥéñ šöüŕçé ƒîļéš çĥàñĝéđ),
- ŕüñš ţĥé ƒļöŵ ƒöŕ ţĥé ļöçàļéš šţîļļ šĥöŕţ öƒ ţĥéîŕ ĝàţé: ţĥé šàḿé
çöḿþöšîţîöñ
runŵöüļđ éẋéçüţé öñçé, - ŕüñš ţĥé ƃöüñđ çĥéçķš öṽéŕ ŵĥàţ ŵàš þŕöđüçéđ, šö à ļöçàļé ŵîţĥ à ƒàîļîñĝ ƒîñđîñĝ đöéš ñöţ çļéàŕ îţš ĝàţé,
- éṽàļüàţéš ţĥé ĝàţéš àñđ éîţĥéŕ ļööþš, šţöþš ŵĥéñ ţĥé þŕöĵéçţ îš üþ ţö đàţé, öŕ ĥöļđš ƃàçķ ƒöŕ ŕéṽîéŵ ŵĥàţ ñééđš à þéŕšöñ.
run àñđ exec šķîþ ţĥé çöṽéŕàĝé đéŕîṽàţîöñ, ţĥé çĥéçķš àñđ ţĥé ĝàţéš. Ţĥé ƒüļļ
ḿöđéļ îš ţĥé ķàþî ļööþ.
Ŵĥéñ ţö ŕéàçĥ ƒöŕ éàçĥ
| Ýöü ŵàñţ | Ŕéàçĥ ƒöŕ |
|---|---|
| Ţĥé đàîļý çàţçĥ-üþ: éṽéŕýţĥîñĝ ţöŵàŕđ ţĥé ĝàţéš | kapi up |
| Öñé ĝüàŕđŕàîļéđ ţŕàñšļàţîöñ þàšš öṽéŕ ñàḿéđ ƒîļéš | kapi translate |
| À šþéçîƒîç çöḿþöšîţîöñ, öñé þàšš, ñö ĝàţé ļööþ | kapi run <flow> |
| Éẋàçţļý öñé ţööļ'š ƃéĥàṽîöŕ, ñöţĥîñĝ àŕöüñđ îţ | kapi exec <tool> |
| À þéŕšöñ ţŕàñšļàţéš: ĥàñđ ţĥé ŵöŕķ öüţ àñđ ţàķé îţ ƃàçķ | kapi extract / kapi merge |
Šéé àļšö
- Ţĥé ķàþî ļööþ: ţĥé ḿöđéļ ƃéĥîñđ
up,status, àñđ ţĥé ĝàţéš. - Ƒļöŵš: ĥöŵ à ƒļöŵ îš àüţĥöŕéđ àñđ éẋéçüţéđ.
- Ĥàñđ öƒƒ ţö ţŕàñšļàţöŕš: ţĥé ƃîļîñĝüàļ îñţéŕçĥàñĝé ŵöŕķƒļöŵ.
exec,run,extract,merge: çöḿḿàñđ ŕéƒéŕéñçé.