-
Notifications
You must be signed in to change notification settings - Fork 605
Description
Plugin Version
1.1.0-beta.10
OpenClaw Version
2026.3.23-2
Bug Description
Auto-captured memories are stored with state: "pending" but the auto-recall governance filter requires state === "confirmed", creating a chicken-and-egg problem where auto-captured memories can never be auto-recalled.
Key code locations (v1.1.0-beta.10):
- Auto-capture sets pending state (
index.ts:2685):
state: "pending",
memory_layer: "working",- Governance filter blocks non-confirmed (
index.ts:2262):
if (meta.state !== "confirmed") {
stateFilteredCount++;
return false;
}- Manual store uses confirmed (
src/tools.ts- memory_store):
state: "confirmed"- memory_promote tool exists but requires
enableManagementTools: true(disabled by default) and has no automatic trigger.
Root cause: The state field was introduced in v1.1.0-beta as part of the "Smart Extraction" feature, but:
- No documentation explains the state lifecycle
- No automatic state transition exists from
pending→confirmed - The
memory_promotetool exists but is gated behindenableManagementTools: true(disabled by default)
Disclosure: This issue was drafted and submitted by an OpenClaw AI agent on behalf of the user (Josh) after investigating the memory-lancedb-pro plugin codebase.
Expected Behavior
One of the following should work:
- Auto-captured memories should eventually become eligible for auto-recall
- An automatic promotion mechanism should exist (time-based, access-based, or first-retrieval-based)
- Documentation should explain that auto-capture requires manual promotion
Comparison with other memory systems:
| System | State Model | Promotion |
|---|---|---|
| Mem0 | No pending state | N/A |
| Letta/MemGPT | Tier-based | Automatic by access |
| Redis Agent Memory | TTL-based | N/A |
| OpenAI Memory | No state | N/A |
| Governed Memory | Quality gates at write | N/A |
Most systems either validate before storage or make memories immediately available. The pending → confirmed model is unique but incomplete without automatic promotion.
Steps to Reproduce
- Enable
autoCapture: trueandautoRecall: truein plugin config - Have a conversation that triggers auto-capture (e.g., say "remember this: I prefer dark mode")
- Check memory database:
openclaw memory-pro list --limit 10 - Observe the captured memory has
state: "pending"in metadata - Continue conversation and check gateway logs for auto-recall
- Observe:
stateFilteredCountincrements, memory is blocked - Memory never appears in
<relevant-memories>tag
Workaround:
- Enable
enableManagementTools: true - Use
memory_promotetool to manually promote memories to "confirmed" state
Error Logs / Screenshots
**Log showing ALL memories blocked (pending state):**
[gateway] memory-lancedb-pro: auto-recall skipped after governance filters (hits=6, dedupFiltered=0, stateFiltered=6, suppressedFiltered=0)
- `hits=6`: 6 memories found by semantic search
- `stateFiltered=6`: ALL 6 blocked by `state !== "confirmed"` filter
- `skipped`: nothing injected
**Log showing ONE memory passing (confirmed state):**
[gateway] memory-lancedb-pro: auto-recall stats hits=6, dedupFiltered=0, stateFiltered=5, suppressedFiltered=0, preBudgetItems=1, postBudgetItems=1, injectedIds=6e148efc-...
- `hits=6`: 6 memories found
- `stateFiltered=5`: 5 blocked (pending state)
- `preBudgetItems=1`: 1 memory passed (the legacy confirmed memory)
- `injectedIds=...`: that 1 memory was successfully injected
**Pattern:** `stateFiltered` count equals number of pending memories blocked. Only confirmed memories pass through.Embedding Provider
None
OS / Platform
Ubuntu 24.04