Skip to main content

Everything, One Tool Call Away

The lean context system puts a coverage map in the prompt, not the content. What makes that work is the retrieval toolset: model-callable tools, served by the always-loaded introspect capability over a CortexHost bridge, that reach the cortex index in milliseconds. All of them are read-only except memory_save. The primary retrieval tool: ranked FTS across everything indexed. Returns snippets with refs — follow up with memory_get or conversation_read for full content.
Search is exact-word based. If the first query misses, rephrase — don’t repeat. The doctrine requires 2–3 differently-worded attempts before concluding something was never recorded.

memory_get

Fetches the full content behind a memory_search ref: a whole episode day, a knowledge file, a task transcript with its detail log, or all records of a conversation. file: refs return the actual file — workspace-confined, with a head+tail excerpt past 12K characters.

Ref Formats

conversation_list

Enumerates past conversations, newest first: id, channel, title, message count, last-updated. This has never existed before v1.0.203 — the model previously had no way to see its own conversation history as a list. It’s served from the index’s conversations table, so enumeration is instant.

conversation_read

Reads a specific conversation — the messages and the tool calls/results inside it — with pagination. It also recovers turns of the current conversation that were folded into a rolling summary and are no longer in the model’s context (see Context Compaction). Output is excerpted; the tool prints a file: ref alongside, and memory_get on that ref returns the complete untruncated bytes.

memory_save

The one write tool: durably saves a single self-contained fact to the long-term knowledge files, deduplicated. Use it for preferences, decisions, project facts, or people details — not transient task state. Episodes and task logs are recorded automatically.

usage_report

Wolffish’s own LLM spend, read from the structured usage ledger: requests, tokens (in/out/cache), and cost — total and per model.

wolffish_recall

Kept as a stable alias with simpler ergonomics — search by keyword and/or pin to a single day. It now rides the same index as memory_search (it used to be a linear scan over ~80 files on disk; that path is gone).
The introspect capability also carries the status tools — wolffish_status, wolffish_performance, wolffish_memory, wolffish_list_files — unchanged in this redesign, plus channel_status for live Telegram/WhatsApp/in-app connectivity (fixed in v1.0.203; it was previously defined but unroutable).

Example: “Send me the flight plan”

A definite reference to something not in context — the model searches first, then follows the ref, then delivers:
More patterns:
  • “What did Sana say on WhatsApp?” → memory_search — inbound channel messages are indexed too.
  • “What did we do on the 18th?” → wolffish_recall with date: "2026-06-18".
  • “Did that backup task finish?” → memory_search with sources: "task".
  • “What did today cost?” → usage_report.
  • “What was the confirmation number I gave you earlier?” (long conversation) → conversation_read on the current conversation.

The Recall Doctrine

Retrieval is unprompted — the operating contract (agents.core.md) instructs the model to decide recall from the intent of your message, not to wait for “search your memory”:
  • Definite references to things not in context — “the flight plan”, “that file”, “the email I sent her”, “like last time” — mean you know it has it. Search first, whether it’s from an hour ago or months ago.
  • Repeat-task smell — “send an email to Sarah”, “post the update”, “do the weekly report” — quick search for prior instances first: there may be an established pattern, template, or recipient list you expect it to reuse.
  • Anything touching preferences (tone, format, recipients, schedules, naming) — check the learned-preferences digest in the prompt; if that doesn’t cover it, search before guessing.
  • Pure-present tasks — weather, a calculation, a fresh web lookup — need no recall. Just act.
And the hard rules: never claim ignorance about its own past without at least two differently-worded searches, and a search miss — like the memory map itself — is a coverage statement, never evidence of absence.

What Is Indexed

The cortex indexes 11 sources, at section/message granularity: Excluded by design: config.json (secrets), whatsapp/auth, Telegram state, .debug, dot-directories, and node_modules. Binary files are indexed as metadata only, never content. The index is schema-versioned: a full rebuild happens only on a version bump (~1.3s for a 2GB workspace); a normal launch runs an incremental mtime/size diff in ~22ms.

The Lean Context System

Why the prompt carries a map instead of the content.

How Memory Works

Episodes, consolidation, and knowledge — the memory tiers behind the index.