Skip to content

bug: memory_recall with includeFullText:true still returns L0 abstract instead of full content #333

@lamkacheong

Description

@lamkacheong

Plugin Version

1.1.0-beta.10

OpenClaw Version

2026.3+

Bug Description

memory_recall tool exposes an includeFullText parameter documented as "Return full memory text when true", but passing includeFullText: true still returns the L0 one-line abstract — identical to the default false behaviour.

Root cause: storeCandidate writes candidate.abstract (L0) into the text column of LanceDB:

// src/smart-extractor.ts:1184-1191
await this.store.store({
  text: candidate.abstract, // L0 used as the searchable text  ← stored here
  vector,
  ...
});

The memory_recall execute handler then reads back that column for both modes:

// src/tools.ts:606-608  (current — broken)
const base = includeFullText
  ? r.entry.text            // ← also L0, because text column = L0
  : metadata.l0_abstract || r.entry.text;

So includeFullText is effectively a no-op: L2 full content (metadata.l2_content) is stored in the metadata JSON but never surfaced to the agent.

Expected Behavior

When an agent explicitly calls memory_recall with includeFullText: true, it is signalling active intent to retrieve detailed memory content — the full narrative (L2), not just the one-line index. The tool should resolve content through the L2 → L1 → L0 fallback chain:

const base = includeFullText
  ? (metadata.l2_content || metadata.l1_overview || r.entry.text)
  : (metadata.l0_abstract || r.entry.text);

The same issue affects sanitizeMemoryForSerialization: the details.memories payload also only carries L0 via text: r.entry.text, so callers inspecting the structured response cannot access full content either.

Steps to Reproduce

  1. Enable smartExtraction: true and have the agent capture a multi-sentence memory (e.g. a cases or patterns entry — these tend to have rich L2 content)
  2. Call memory_recall with includeFullText: true
  3. Observe the returned text is a single-line abstract, not the full stored content

Impact

Most severe for cases (problem→solution pairs) and patterns (reusable workflows) categories, where L2 contains actionable step-by-step detail that L0 cannot summarise in one line.

Logs / Screenshots

N/A — reproducible by code inspection.

Embedding Provider

Any (not embedding-related)

OS / Platform

Any

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions