Repository navigation
README describes recall and config behavior the plugin no longer has #97
Description
Summary
I went through every claim in the README and checked it against the code on main (dee043f). Most of it is accurate, but several sections describe behavior from before recall moved to direct mode and containers were unified. The most important ones affect what users expect the agent to see. Line numbers below refer to README.md and src/ on main.
What the plugin actually injects (high impact)
- Features, "Context injection" (L128) says the first message injects "your profile, all project knowledge, and (if
autoRecallEveryPromptis on) a semantic search over personal memories". It injects only the profile (static facts plus "Recent Context"): both callers pass empty results toformatContextForPrompt(src/index.ts:229,src/v2/runtime.ts:950). - Features, "Reasoned recall" (L128) describes
advisorymode ("the agent is shown a directive... searches only when it decides to"). The default isdirect(src/config.ts:72), which the README's own "Direct Recall" section (L150) describes correctly, so the page contradicts itself. - Example output (L133-146) shows
Project Knowledge:andRelevant Memories:sections that are never produced. The real first-message block has◪markers andRecent Context:(src/services/context.ts), and direct recall injects a separate<supermemory-context>block (src/services/recall.ts:115). autoRecallEveryPrompt(L332-335) is described as adding a first-message personal search. It is now only a legacy switch that maps torecallModewhen that is unset (src/config.ts:116-117).CONFIG.autoRecallEveryPromptitself is never read.- In-chat commands (L42-44) list
/supermemory-initas the in-chatinstall. It's the codebase-index alias (src/cli.ts:340), and the README says so correctly in three other places. There is no in-chat install.
Config and tool reference (medium)
maxMemories, "Max memories injected per request": direct recall is hard-capped at 5 (MAX_RECALL_RESULTS,src/services/recall-results.ts:4).maxMemoriesis the per-search limit (src/services/client.ts:255).maxProjectMemories, "Max project memories listed": only used for compaction (src/services/compaction.ts:230,src/v2/runtime.ts:991).supermemorytool:searchacceptslimit(src/services/memory-tool.ts:198), and without a scope it searches both personal and project memories (:217-227). The README saysprojectis the default for all modes. The tool's ownhelpoutput also omitslimitforsearch(:99).- Container override precedence. The README presents
projectContainerTagas the override and saysSUPERMEMORY_REPO_TAGis "checked before the config value".getProjectTag(src/services/tags.ts:280) actually checks six sources:.claude/.supermemory-claude/config.json, thenSUPERMEMORY_REPO_TAG, then the Cursor config, thenprojectContainerTag, then~/.codex/supermemory.json, then the generated tag. So a Claude Code or Cursor project config silently overridesprojectContainerTag, and nothing in the docs says so. SUPERMEMORY_DEBUG, "enable debug logging": it only appends the[recall-decision]instruction in advisory mode (src/services/recall.ts:38). Logging is always on.- The generated
/supermemory-logincommand says "Start a local server on port 19877" (src/cli.ts:212), but the port is random (src/services/auth.ts:156). That text is written into users' command files, so agents repeat it.
Gaps (low)
filterPromptis a supported key (src/config.ts:29) but isn't documented. Worth confirming as intended: when the client connects, the plugin callssettings.update({ shouldLLMFilter: true, filterPrompt })(src/services/client.ts:170), so it changes the user's Supermemory settings. It would help if the docs said so.- The
captureEveryNTurnsdefault isn't stated. It's 0 on fresh installs, and 3 when a config file exists but omits the key (src/config.ts:201-204). - The LLM-agent Step 1 (L58-66) says
install"creates the/supermemory-indexcommand" and then repeats itself. It creates five commands and also writestui.jsoncand the Supermemory config file.
Checked and accurate
Installation commands, the Direct Recall section (5 results, 3 s fail-open, short prompts skipped, per-session dedupe), capture cadence and lifecycle events, privacy redaction, keyword detection, memory types, OpenCode 2 plugin ids and log lines, the other env vars, and the Oh My OpenCode flag.
Suggestion to prevent drift
Most of this crept in when behavior changed (direct recall, unified containers, OpenCode 2) without the Features table and config comments being updated. Two lightweight guards could help, and I'm happy to follow up if they're wanted:
- A small
bun testthat checks the README's config keys and defaults, tool modes and types, env var table, and command list against the source of truth in code. - Running
typecheckandbun teston pull requests. Today they only run inside the release workflow when the version changes.
Activity
Bring README in line with current behavior and run checks on PRs