Skip to content

Latest commit

 

History

History
53 lines (45 loc) · 2.87 KB

README.md

File metadata and controls

53 lines (45 loc) · 2.87 KB

Scribe: optional catch-up recording

The live agent records during the turn. Scribe extracts missed qualifying records from Claude Code transcripts and appends them to existing Books through the guarded writer. It cannot create Books, replace claims, change trails, or claim manual input or human approval.

The runner uses the installed claude CLI and its authenticated session. This can incur model usage. It requires CLI support for the flags used in _ask, including --safe-mode, --effort, --tools, --strict-mcp-config, and --no-session-persistence. An unsupported flag fails the call; it does not silently relax the restrictions. Live recording itself works without Scribe. Codex transcripts are not parsed by this extractor.

Run

memex scribe /path/to/session.jsonl --dry
memex scribe /path/to/session.jsonl

--dry previews whether capture would run. It does not call a model, invent extracted records, or write receipts. --pending uses a transcript named by a hook payload when present; otherwise it can scan Claude transcripts under the home directory. It also retries queued jobs. Scope this deliberately before wiring the optional hooks. Nothing installs them for you.

Bounds and recovery

  • Input retains spoken user and assistant text, excluding tool results and wrapper records. Reports must stay attributed because an assistant's report alone does not independently establish a measurement.
  • Each extraction receives at most 24,000 conversation characters and emits at most three records. Long transcripts advance through line and character cursors.
  • Defaults allow eight attempted model calls per local day and a 30-minute per-transcript interval. MEMEX_SCRIBE_CALLS_PER_DAY and MEMEX_SCRIBE_INTERVAL configure those limits; failed calls count.
  • The child uses low effort, a 1,200-token output ceiling, no tools or persistent session, and safe mode. A recursion marker, separate working directory, transcript self-detection, call limits, and locking bound repeated execution.
  • MEMEX_LOCK_WAIT defaults to five seconds. Losing the lock queues the job rather than dropping it. The per-run target limit includes queued retries.
  • Completed extractions are cached before delivery. A failed write retains the cursor and cached work; retrying delivery does not repeat the model call.
  • Short tails below 300 characters wait for more conversation. Legacy receipts with unknown coverage require explicit recovery with --from-line N on a named transcript; do not replay a corpus blindly.

Receipts live in state/scribe-receipts.jsonl, cached extractions in state/scribe-extractions/, and deferred jobs in state/scribe-queue.txt. A receipt is evidence of processing, not proof that the selected record is true. The shared criterion is appended to PROMPT.md at runtime.