Files
wehub-resource-sync f99010fae1
CI / lint (push) Failing after 1s
CI / frontend (push) Failing after 1s
CI / scripts (push) Failing after 1s
CI / Go Test (ubuntu-latest) (push) Failing after 0s
CI / frontend-node-25 (push) Failing after 1s
CI / docs (push) Failing after 0s
CI / coverage (push) Failing after 0s
CI / e2e (push) Failing after 0s
Docker / build-and-push (push) Failing after 1s
CI / integration (push) Failing after 4m43s
CI / Go Test (windows-latest) (push) Has been cancelled
CI / Desktop Unit Tests (Windows) (push) Has been cancelled
Desktop Artifacts / Desktop Build (Linux (arm64)) (push) Has been cancelled
Desktop Artifacts / Desktop Build (Linux) (push) Has been cancelled
Desktop Artifacts / Desktop Build (Windows) (push) Has been cancelled
Desktop Artifacts (macOS) / Desktop Build (macOS (aarch64)) (push) Has been cancelled
Desktop Artifacts (macOS) / Desktop Build (macOS (x86_64)) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:30:36 +08:00

195 lines
10 KiB
Markdown

---
title: Recall (Experimental)
description: Experimental, provenance-linked durable knowledge over the local session archive
---
!!! warning "Active research"
Recall's schema, scoring, trust policy, and workflows may change. Treat its
entries and measurement rows as a rebuildable research corpus. Until Recall
stabilizes, upgrades may require rebuilding its new tables instead of migrating
them. The session archive remains authoritative and must not be deleted,
truncated, or recreated to reset Recall.
Recall is an experimental layer for durable, provenance-linked knowledge from
past agent sessions. It stores compact facts, procedures, preferences, and
warnings as entries that can be listed, queried, and packed into a task brief.
This is different from [semantic search](/semantic-search/). Semantic search
finds relevant passages in the transcript archive. Recall searches a separate
set of distilled entries and keeps the transcript region supporting each entry
as evidence. Recall entry retrieval is lexical today; it does not use the
embedding index.
## Current surface
The current implementation is local and SQLite-only. The CLI provides:
- `recall list`, `get`, and `stats` for inspection;
- `recall query` for ranked lexical retrieval;
- `recall brief` for a packed, trusted task briefing;
- `recall extract --dry-run` for previewing deterministic session chunks; and
- `recall import --dry-run` for validating reviewed JSONL candidates.
There is no automatic model-backed distillation yet. The extraction command does
not write entries, and reviewed JSONL import is a guarded laboratory inlet, not
a stable or recommended end-user workflow. Use an isolated `AGENTSVIEW_DATA_DIR`
for experiments. The import command refuses the default data directory unless
the operator explicitly overrides that guard.
Recall is not available through PostgreSQL or DuckDB stores. It also has no web
UI and no semantic retrieval over Recall entries.
The daemon exposes the same inspection and query operations over its HTTP API.
Ordinary queries record measurement data when the SQLite store is writable, but
read-only archives remain queryable without recording.
## Evidence and trust
Each durable entry identifies a source session. Its evidence records exact
message ordinals, stable message identities when available, the selected tool
uses, and a digest of the model-visible content. When a transcript is reparsed
or rewritten, AgentsView verifies that evidence mechanically.
If an anchored message disappears, becomes ambiguous, or its selected content
changes, the entry's provenance is revoked. Revocation is sticky: later parser
output does not automatically restore trust or replace the stored digest.
Experimental users should expect parser improvements to require regeneration of
some or all of the Recall corpus.
Evidence authorization is host-owned. A model or importer may narrow a window,
but it cannot select another session, cite messages outside the supplied window,
or manufacture stable message IDs and digests. Evidence must belong to the same
source session as its entry. These checks run through the shared insertion and
reviewed-import boundaries rather than through a separate model write path.
Entries have one of four review states:
| Review state | Meaning |
| ----------------- | ------------------------------------------------------- |
| `human_reviewed` | Explicitly accepted through the reviewed import surface |
| `unreviewed_auto` | Generated or omitted review decision |
| `calibrated_auto` | Automated output from a calibrated future policy |
| `eval_raw` | Quarantined evaluation material |
A trusted-only read requires an accepted, `human_reviewed` entry that is both
transferable and provenance-valid. Automated labels cannot confer
`human_reviewed`. Raw evaluation entries are deliberately excluded; an eval
harness inspecting `eval_raw` material must request `trusted_only=false`. The
build-tagged eval-ingest response returns a versioned `corpus_id`; pass it as
`source_session_id` when querying so changed trajectory content or source
versions do not mix with earlier corpus versions from the same run.
An omitted review state fails closed to `unreviewed_auto`. Archived entries are
never trusted, and a trusted-only request with an explicit non-accepted status
is rejected instead of returning a misleading empty result.
## Reviewed imports and supersession
Reviewed JSONL import is the current laboratory population inlet. Candidate IDs
are immutable import identities: re-importing an existing ID is an idempotent
skip, even if its transcript has subsequently been reparsed. A new candidate
still must pass current session, evidence, and supersession validation.
A replacement may supersede only an active accepted entry that has no existing
successor. AgentsView archives that entry and links it to the replacement in the
same transaction. This prevents two accepted replacements from branching from
one historical entry. Imports that use placeholder sessions have unverified
provenance: they may replace other unverified entries for evaluation, but cannot
supersede a provenance-valid entry or remove it from trusted recall.
Run the import command with `--dry-run` first. A write requires `--yes`, and a
remote write also requires `--allow-remote-import`. Local import refuses the
default production data directory unless `--allow-production-import` is supplied
explicitly. These confirmations acknowledge the risk; they do not relax
evidence, review-state, or supersession validation.
## Measurement and data lifecycle
Completed Recall queries record an append-only measurement event with the
surface, serialized filters, result and packed counts, miss reason, and the
ranked entries exposed to the caller. This ledger supports retrieval calibration
without changing the source session archive.
The response returns an opaque query ID when recording succeeds. Initial miss
reasons distinguish no ranked results from results that could not fit in the
requested context. Ranked and packed exposure is not treated as proof that an
answer used the entry or that the entry was helpful.
Ordinary recording is best effort so a ledger failure does not hide useful
Recall output. Calibration callers can require strict recording. Events and
their ranked exposure snapshots survive full resync even if a referenced Recall
entry no longer exists.
The experimental ledger is currently append-only and has no pruning policy.
Before running calibration at volume, the project must define bounded request
sizes plus retention and export behavior.
During this research phase, Recall entries and measurement rows may need to be
rebuilt when schemas, parsers, scoring, or extraction policies change. Reset
only the experimental Recall corpus through an explicit future workflow. Never
delete or recreate the session archive as a Recall reset strategy.
## Research direction
The current branch is the population foundation. It deliberately does not ship a
model runner, automatic write-through, bulk extraction, automatic promotion, or
per-session generated summaries. The next work is intended to earn those
capabilities in stages.
### Local extractor calibration
Calibration will run against isolated laboratory copies of real session rows and
exact host-built ordinal windows. One frozen, tools-disabled local model
configuration will extract structured candidates at a time. Each run should
record model and prompt versions, schema and decoding settings, input digests,
latency, and token or resource cost.
Independent judge models will evaluate correctness, semantic evidence support,
scope, transferability, harmfulness, and candidate duplication. Judges are local
by default, preferably from a different model family than the extractor. Small
blind human audits estimate judge error; the user is not expected to hand-label
the primary evaluation corpus.
A remote frontier judge is permitted only after an explicit per-run opt-in names
the endpoint and model and states that candidate text and supporting transcript
material will leave the machine. There is no automatic cloud fallback. Synthetic
or otherwise non-sensitive sessions can be selected for remote runs.
Calibration reports yield and abstention alongside keeper precision, harmful
output, transferability, semantic provenance, duplicate detection quality, and
local resource cost. Exposure records alone are not usefulness labels. Model
generation or judging never confers `human_reviewed`; automated entries remain
outside trusted Recall until a separate promotion policy is approved.
### Explicit write-through pilot
The first population pilot is an explicit callback after an answered Recall
miss, not an invisible side effect of reading:
1. `recall query` or `recall brief` returns a query ID and mechanical miss
reason.
1. The agent or user finds supporting transcript regions with archive search and
message reads.
1. A future proposal command submits the query ID and selected ordinal windows.
1. The host rebuilds and verifies those windows, runs the local distiller, and
applies calibrated duplicate detection.
1. Candidates are stored as `unreviewed_auto`; the pilot requires an explicit
promotion decision before they enter trusted Recall.
This bounds model cost to explicitly answered misses and keeps the actor, input,
evidence, and output auditable.
### Earned automation and benchmarks
Demand-driven backfill over sessions surfaced by recorded misses comes before
end-of-session extraction. Broad extraction is deferred until measured
precision, provenance, duplicate control, yield, cost, and explicit helpfulness
outcomes justify it. Semantic or hybrid retrieval over Recall entries is a
separate later experiment rather than part of population.
LongMemEval-v2 is planned as a complementary long-horizon benchmark once the
local extraction and population interfaces stabilize. It can measure whether a
populated corpus answers questions over time, but it does not replace
candidate-level provenance, harmfulness, and duplication evaluation.