{{ theme.skipToContentLabel || 'Skip to content' }}

Integrácia s gitom ​

kontext používa ako vrstvu spolupráce samotný git: súbory pre pravdu, commity pre review, trailery pre odkazy, hooky pre vynucovanie.

Hooky ​

HookČo kontext robíMôže zablokovať?
pre-commitzvaliduje stagnuté znalosti a preskenuje ich na tajné údaje; znova vygeneruje .ai/README.md zo stagnutého stromu a stagne ho; pripomenie kandidátov z inboxu, ktorí sa týkajú stagnutých ciestáno, pri chybách
prepare-commit-msgpridá pre stagnuté záznamy trailery Decision:, Convention:, Learning:, Incident: (pri merge commitoch sa preskočí; amend sa meria od rodiča HEAD)nie
post-commitzaradí udalosti sync pre znalosti, ktoré sa zmenili v HEAD, odstráni povýšené položky inboxu, ktoré sú už commitnuté, spustí doručovanie na pozadínie
post-merge, post-rewritezaradí udalosti sync po pulle, merge a rebasenie

Jednorazovo obídeš cez KONTEXT_SKIP=1 git commit … alebo git commit --no-verify.

Pravidlá inštalácie ​

kontext hooks install (spúšťa ho aj kontext init) nikdy nenahradí tvoje hooky:

  • Cieľom je core.hooksPath, ak je nastavený (.husky/_ od husky sa mapuje na .husky/), inak .git/hooks (git rev-parse --git-path hooks, zdieľané všetkými worktree).
  • Do existujúceho shellového hooku sa vloží označený blok hneď za shebang, takže sa spustí, aj keby zvyšok skriptu skončil predčasne.
  • Hook, ktorý nie je shellový (napr. Node skript), sa premenuje na <hook>.kontext-chained a zavolá sa po bloku kontextu.
  • Každý blok hľadá kontext v PATH, v ~/.local/bin a ~/.cargo/bin a bez neho neurobí nič – zdieľané adresáre hookov teda nerozbijú kolegov, ktorí kontext nemajú.
  • Ak je adresár hookov sledovaný (napr. .githooks/), zmena sa ukáže v git status: commitni ju, aby hooky zdieľal celý tím.
  • Ak sledovaný adresár hookov existuje, ale ešte nie je aktívny (napríklad core.hooksPath nastaví až npm install), kontext ťa na to upozorní a kontext hooks install --dir .githooks ho pokryje.
  • Správcovia hookov, ktorí súbory hookov generujú znova (lefthook, pre-commit), sa rozpoznajú; namiesto toho pridaj kontext hook <name> do ich konfigurácie.

kontext hooks status ukáže, čo je nainštalované; kontext hooks uninstall bloky odstráni a obnoví zreťazené originály.

Trailery ​

Pre každý súbor znalostí stagnutý v commite pridá prepare-commit-msg trailer (git interpret-trailers --if-exists addIfDifferent):

text
fix(billing): round in cents

Decision: 2026-09-28-prices-are-integer-cents

Kľúče trailerov pochádzajú z store.kinds.<kind>.trailer. Obyčajný git s nimi odpovedá na otázky:

sh
git log --format='%h %s%n%(trailers:key=Decision,valueonly)' -- src/billing
git log --grep 'Decision: 0007'

kontext why zoradí commity s trailermi kontextu na prvé miesta.

Záznamy vyťažené cez kontext init žiadne nedostanú: pochádzajú zo starších commitov uvedených v ich poli commits.

Preformulovanie cez git commit --amend -m … trailery zachová: hook amend rozpozná (z argumentov alebo z commitujúceho procesu git) a to, čo commit pridáva, meria od rodiča HEAD. Commit z git merge --squash dostane trailery všetkého, čo nesie.

Udalosti sync ​

Po commite, merge alebo rebase porovná kontext súbory znalostí v HEAD so snapshotom poslednej synchronizácie (pre každý worktree) a zaradí udalosť sync pre každý pridaný alebo zmenený záznam. Prvé spustenie vo worktree snapshot len zapíše; kontext sync --all raz zrkadlí všetky záznamy. Nič sa nedeje, kým udalosť sync neodoberá žiadny adaptér.

Outbox ​

Hooky nikdy nekomunikujú so sieťou. Udalosti sa pripisujú do <git-common-dir>/kontext/outbox.jsonl a odpojený kontext outbox flush ich doručí. Doručenia sa sledujú pre každý adaptér a operáciu, skúšajú sa znova až osemkrát a v jednom klone beží naraz len jedno doručovanie. kontext outbox vypíše, čo čaká, a poslednú chybu.

Merge ​

  • Záznamy sú samostatné súbory: paralelné vetvy sa toho istého súboru dotknú len zriedka.
  • .ai/README.md sa generuje znova a je označený merge=union (v .ai/.gitattributes).
  • Sekvenčné čísla ADR môžu medzi vetvami kolidovať – rovnako ako pri akejkoľvek praxi s ADR; ID podľa dátumu (predvolené pre nové úložiská) sa tomu vyhnú.

Worktree ​

Všetko lokálne žije v spoločnom git adresári, takže všetky worktree klonu zdieľajú inbox, outbox a postup zavádzania, zatiaľ čo každý worktree má vlastný vyhľadávací index a snapshot synchronizácie (riadia sa checkoutnutou vetvou; commity, ktoré z histórie vypadnú cez amend alebo rebase, sa z indexu odstránia).

Každý kandidát v inboxe si pamätá worktree a vetvu, v ktorých vznikol. Pri paralelných agentoch v samostatných worktree (Superset, Codex, Claude Code) ponúkajú ctx_prepare_commit, pripomienka v pre-commit hooku a brief len vlastných kandidátov aktuálneho worktree; kandidáti iného živého worktree sa ukážu zvlášť ako „not for this commit“ a kandidátov zmazaného worktree si môže prevziať ktokoľvek. kontext inbox ukáže, odkiaľ ktorý pochádza.

Vydané pod licenciou MIT alebo Apache-2.0.