1jehuang / 1jehuang/jcode

Memory explainability & visibility: show why a memory was recalled, add memory status/dashboard

Open
#1,105 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

autonomous: no enhancement triage: needs-decision ux
Dominant language
Rust
Stars
19.9k
Forks
2.3k
Avg merge
2d 7h
Merged PRs (30d)
30

Description

Summary

memory recall/search return results without explaining why a memory surfaced. There's no per-result breakdown (which signal matched, how strongly, which graph edge connected it) and no global visibility into the memory store (counts, age, superseded, confidence, gaps).

Current behavior

  • Recall output shows only category, content, id, and a single relevance %.
  • No per-signal scores (lexical/dense/graph), no retrieval path (BM25 vs vector vs cascade), no rerank rationale.
  • No memory status/dashboard to inspect the store: how many entries, how many active vs superseded, age distribution, confidence decay, retrieval gaps.

Why it matters

  • Trust & verification: users and agents can't tell why a memory was recalled or whether to trust it.
  • Debugging: the near-literal miss and stale-memory problems (#960, #1103, #1104) are hard to diagnose without visibility into scores and paths.
  • For workflows that gate on memory presence (e.g. "is there a protected memory touching this file?"), knowing why a result did or didn't surface is essential.

Proposed enhancement

  1. Per-result breakdown in recall/search output:
    • Score per signal: lexical (BM25), dense (cosine), graph (cascade/edge weight).
    • Retrieval path: which retriever(s) found it, which graph edges connected it.
    • Rerank decision: whether the LLM reranker kept/dropped it and why (if rerank runs).
  2. memory status/dashboard:
    • Counts by category, scope, active vs superseded, age distribution.
    • Confidence/decay state per entry.
    • Retrieval gaps (context had no relevant memories — gap detection already exists in the architecture doc).

References

  • Parity: OpenMemory (explainable traces), agentmemory (per-signal hybrid with progressive disclosure), total-agent-memory (6-stage pipeline visibility).
  • crates/jcode-app-core/src/tool/memory.rs (recall/search output formatting)
  • crates/jcode-base/src/memory_rerank.rs (rerank rationale)
  • docs/MEMORY_ARCHITECTURE.md (gap detection, post-retrieval maintenance)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read crates/jcode-app-core/src/tool/memory.rs for recall/search output formatting, crates/jcode-base/src/memory_rerank.rs for rerank rationale, and docs/MEMORY_ARCHITECTURE.md for gap detection and post-retrieval maintenance. Define the scope of the per-result signals, retrieval paths, rerank explanation, and memory status/dashboard before implementation; done should provide the proposed visibility for recall/search and store status.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
ai, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.