Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

majordomus capture

Zaznamená surové prompty uživatele z hooku providera jako záznam s jeho vykresleními, odvodí hranici epizody z vlastních hooků životního cyklu providera, nainstaluje tyto hooky, sladí a pročistí archiv a ohlásí, co který provider zde skutečně dělá.

Zaznamená surové prompty uživatele z hooku providera jako záznam s jeho vykresleními, odvodí hranici epizody z vlastních hooků životního cyklu providera, nainstaluje tyto hooky, sladí a pročistí archiv a ohlásí, co který provider zde skutečně dělá.

  • generated-output-mutating
  • paměť
  • --json

Každý prompt se uchovává třikrát pod jedním základem názvu: záznam .json je vlastní rozsahy providera, formátované a beze změny, vedle něj .md je tentýž záznam vykreslený pro člověka a .yaml totéž pro stroj. 'capture render' znovu vytvoří chybějící vykreslení ze záznamu a nikdy nezapisuje záznam. Identifikátor schématu se rozliší na share/schemas/<vendor>/<name>/<name>.v<n>, jako .schema.json pro záznam a .proto pro dokument. 'capture prompt' a 'capture session' nikdy neskončí kódem 2: běží uvnitř hooku providera, kde tento exit kód může odmítnout prompt uživatele. Žádný nezapisuje na stdout při události startu, protože provider ji přidává do kontextu modelu. install odmítne přepsat konfiguraci, kterou nezapsal, a vypíše položky k přidání. Záznam nese epizodu, do které patří, relaci providera, repozitář a worktree, s původem tohoto propojení: mapování z relace providera na epizodu existuje jen po dobu, kdy je epizoda otevřená, takže záznam, který by ho nenesl, by nešel později přiřadit. 'capture reconcile' propojí záznam z důkazů, které přežily uzavření, a zbytek označí jako nepropojený, místo aby hádal; 'capture prune' uplatní prompts.retention_max_days a prompts.retention_max_bytes tím, že odebere tělo a ponechá záznam, jeho identitu a náhrobek. Tvary přihlašovacích údajů se nahradí dřív, než se cokoli uloží, a archiv má režim 0600.

Syntaxe

majordomus capture status [--json]

Životní cyklus

  1. Nastavit
  2. Začít
  3. Pracovat
  4. Ověřit
  5. Uzavřít
  6. Prozkoumat

Další příkazy v této fázi:context, checkpoint, decision, question, prompt, evidence, skills.

Čte

  • .claude/settings.json
  • .ai/repo/policy.yaml

Zapisuje

  • .ai/local/prompts/
  • .ai/local/session-contexts/
  • .claude/hooks/majordomus-capture
  • .claude/settings.json
  • .claude/skills/majordomus-handover/

Návratové kódy

Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.

  • 0 ok
  • 2 použití
  • 10 kontrakt nesplněn
  • 12 chybějící artefakt
  • 13 interní chyba
  • 15 odmítnuto

Surová historie promptů zachycená pod modelem

Worker nemůže zaznamenávat vlastní prompty: nikdy nevidí, co člověk napsal, a záznamu závislému na tom, že se model rozhodne ho napsat, chybí právě ty prompty, na kterých záleželo. Zachytávání proto běží v hooku poskytovatele a stav, v němž poskytovatel je, se rozhoduje spuštěním toho hooku, ne nalezením souboru.

Než je cokoli zapojeno

hook nainstalován
ne

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

Spustit

$ majordomus capture status

Výstup obsahuje

  • claude-code
  • nenakonfigurováno

ukončení 0

Adaptér pro Claude Code existuje, ale tento repozitář ho nezapojuje a příkaz to říká, místo aby prázdný archiv hlásil jako úspěch.

Po instalaci hooku

hook nainstalován
ano

Pro tento repozitář platí

# Installed, with the prompt-capture hook in place and majordomus on PATH, which is how a
# repository that is not the tool's own checkout reaches it.
. "$FIXTURE_SETUP/installed.sh"
PATH="$(dirname "$MJ"):$PATH"; export PATH
"$MJ" capture install >/dev/null

Spustit

$ majordomus capture status

Výstup obsahuje

  • ověřeno
  • syntetický payload

ukončení 0

verified není přítomnost souboru. Příkaz provedl payload přes shim, který by provider spustil, do vlastního archivu a přečetl záznam zpět.

Poskytovatel, jehož prompty nelze pozorovat

adaptér existuje
ne

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

Spustit

$ majordomus capture prompt --provider codex

Výstup obsahuje

  • žádný adaptér
  • claude-code

ukončení 12

Exit 12 je MISSING_ARTIFACT a zpráva pojmenovává providery, kteří jeden mají. Všimněte si, čím není: capture prompt běží uvnitř hooku providera, kde exit 2 odmítá prompt uživatele, takže tento kód nevrací nikdy, ať je cokoli špatně.

Reference

Zaznamenávat surové prompty člověka z hooku poskytovatele — jako záznam JSON s jeho vykreslením v Markdownu a YAML — vést hranici epizody z vlastních hooků životního cyklu poskytovatele, tyto hooky instalovat a hlásit, co každý poskytovatel v tomto repozitáři skutečně dělá.

Proč hook a ne instrukce. Po pracovníkovi nelze chtít, aby zaznamenával vlastní prompty. Nikdy nevidí bajty, které člověk napsal, jen to, co z nich provider sestavil, a záznam napsaný modelem postrádá právě ty prompty, na kterých záleželo: první z relace, který přijde dřív, než byla přečtena jakákoli instrukce, a každý, při němž byl model zaneprázdněn tím, o co byl požádán. Řádek v AGENTS.md je žádost, ne mechanismus, a žádný behaviorální test nemůže dokázat, že byla žádost splněna. Zachycení proto probíhá pod modelem, v hooku samotného providera, kde je jeho spuštění důkazem, že funguje.

capture install zapíše shim pro každou událost a odpovídající položky do .claude/settings.json a odmítne kterýkoli z nich přepsat: majordomus-capture pro UserPromptSubmit, majordomus-session-start pro SessionStart a majordomus-session-end pro SessionEnd. Když konfigurace existuje a jednu z nich nejmenuje — včetně konfigurace, kterou tento nástroj zapsal dřív, než znal události životního cyklu — příkaz vypíše položky k přidání, jednu na každou chybějící událost, a skončí kódem 15 místo přepsání souboru, který nezapsal. Shim najde repozitář ze svého vlastního umístění: provider dosazuje svůj adresář projektu do řetězce příkazu textově, takže prostředí repozitář nijak nejmenuje a pracovní adresář, v němž hook běží, není zaručen.

capture prompt čte jeden JSON payload ze stdin a zapíše jeden záznam. Nikdy nekončí kódem 2, protože v UserPromptSubmit tento kód ukončení odmítne prompt uživatele a rozbitý archiv nesmí nikoho stát jeho vstup; payload, který nelze přečíst, se místo toho zapíše do vlastního logu archivu — a doctor selže, dokud je tento log neprázdný, protože neúspěšný záchyt znamená ztracené prompty. Tento log je jediné, co zachytí selhání, na kterém záleží: pokud provider přejmenuje pole, v němž prompt přichází, hook stále běží a self test stále projde, protože posílá payload vyrobený samotným nástrojem. Přečtěte log a smažte ho; je to diagnostika a na rozdíl od záznamu se jeho odstraněním nic neztratí. Samotný text promptu je surový úsek z payloadu, zkopírovaný stále v escapované podobě, takže žádný krok dekódování a opětovného kódování nemůže ztratit znak.

Jeden prompt jsou dva soubory pod jedním kmenem, .ai/local/prompts/YYYYMMDDHHMMSS-<slug>.json a .md, kde slug je začátek samotného promptu:

.ai/local/prompts/
  20260905113342-why-arent-prompts-saved-automatically.json
  20260905113342-why-arent-prompts-saved-automatically.md
  20260905114501-make-it-a-file-per-prompt.json
  20260905114501-make-it-a-file-per-prompt.md

Vždy oba formáty, a nejsou alternativami. .json je záznam: vlastní úseky providera, stále escapované, pěkně vypsané po jednom členu na řádek — to, z čeho se odvozuje vše ostatní a co záchyt nesmí ztratit. Záznam čtou i lidé a jediný čtyřicetikilobajtový řádek žádný editor ani diff užitečně nezobrazí; odsazení leží mimo úseky řetězců, takže bajty promptu zůstávají nedotčeny. .md je tento záznam vykreslený pro člověka v jediném tvaru, který mají všechna vykreslení: pole jako YAML front matter, tatáž pole znovu jako tabulka a prompt nakonec pod ## PROMPT, dekódovaný a v ohrazeném bloku.

---
schema: 'majordomus.capture/v1'
ts: '2026-09-05T12:48:55Z'
provider: 'claude-code'
event: 'UserPromptSubmit'
id: 'bb6f8c96'
session: '5b13785c-728f'
source: 'user'
cwd: '~/src/your-repo'
repository: '~/src/your-repo'
branch: 'feature/prompt-capture-markdown'
head: 'a0ccbc9e25d6ec7f6bb754f3515affb9b1cc4014'
record: '20260905124855-make-it-a-file-per-prompt.json'
---

# Prompt — 2026-09-05 12:48:55 UTC

| | |
|---|---|
| **Started** | `2026-09-05T12:48:55Z` |
| **Provider** | `claude-code` · `UserPromptSubmit` |
| **Session** | `5b13785c-728f` |
| **Prompt** | `bb6f8c96` |
| **Source** | `user` |
| **Repository** | `~/src/your-repo` |
| **Branch** | `feature/prompt-capture-markdown` · `a0ccbc9` |
| **Directory** | `~/src/your-repo` |
| **Schema** | `majordomus.capture/v1` · `share/schemas/majordomus/capture/capture.v1.proto` |
| **Record** | `20260905124855-make-it-a-file-per-prompt.json` |

Důkazy

Každý případ níže běží v CI na Linuxu i macOS. Web se odmítne sestavit, pokud veřejný příkaz nemá behaviorální případ, negativní případ nebo ukázku.

Záruky, které tento příkaz nese

Prohledává názvy a popisy všech stránek, které tento web publikuje.