← Back to PRs

#9415: Artifact-first memory: externalize tool outputs + deterministic recall

by jroth1111 open 2026-02-05 06:12 View on GitHub →
docs app: web-ui gateway agents stale
## Summary Externalizes large tool outputs into session-scoped artifact files with deterministic hash-based references. This keeps transcripts lean while preserving exact recall for large outputs. ## Motivation Large tool outputs inflate transcripts and prompt size. This change keeps transcripts slim while preserving exact recall via artifact references. ## How It Works 1. Tool result is written to an artifact file 2. A registry entry (hash + metadata) is appended 3. Transcript stores only `artifactRef` (no payload) 4. Read path optionally rehydrates payload on demand 5. Recall path injects top-K artifact summaries within a fixed budget ## Architecture ```mermaid graph LR; A[Tool Result] --> B[Artifact Externalizer]; B --> C[Artifact Store]; B --> D[Registry JSONL]; B --> E[Transcript Writer]; E --> F[Session Transcript w/ artifactRef]; F --> G[Session Reader]; G -->|rehydrate| H[Tool Payload]; F --> I[Recall Engine]; I --> J[Bounded Prompt Injection]; ``` ## Key Code Changes 1. **New Artifact System Files:** - `src/agents/tool-result-externalizer.ts` - Wraps tool results into artifact files before session persistence - `src/agents/artifact-store.ts` - Reads/writes tool-result artifacts with metadata (id, size, summary) - `src/agents/artifact-registry.ts` - Manages session-scoped registry entries (hash lookup) - `src/agents/session-artifacts.ts` - TypeScript types for `ArtifactRef` and `ToolResultArtifactDetails` - `src/agents/artifact-recall.ts` - Builds bounded recall sections for system prompts (top-K summaries) 2. **Context Pruning Integration:** - `src/agents/pi-extensions/context-pruning/artifacts.ts` - Tool result serialization and placeholder generation - `src/agents/pi-extensions/context-pruning/pruner.ts` - Filters artifacts during context pruning - `src/agents/pi-extensions/compaction-safeguard.ts` - Protects artifacts from compaction 3. **Session Migration Path:** - `src/agents/session-artifact-migration.ts` - Migrates legacy inline payloads to artifact refs - `src/gateway/session-utils.fs.ts` - Updated to handle artifact rehydration 4. **Config Types:** - `src/config/types.memory.ts` - New `memory.artifacts` config (`enabled`, `maxItems`, `maxChars`, `narrativeMaxChars`) ## Breaking Change (2026-02-05) Session transcripts no longer embed tool payloads. Tool results are now stored as files at `~/.openclaw/agents/<agentId>/sessions/artifacts/` and referenced by `details.artifactRef`. Custom readers must follow artifact references or run migration. ## Testing - Full unit test coverage for artifact store, registry, recall, and migration - `pnpm build && pnpm check && pnpm test`

Most Similar PRs