claude_memory 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.claude/CLAUDE.md +1 -1
- data/.claude/memory.sqlite3 +0 -0
- data/.claude/memory.sqlite3-shm +0 -0
- data/.claude/memory.sqlite3-wal +0 -0
- data/.claude/settings.local.json +11 -1
- data/.claude-plugin/marketplace.json +1 -1
- data/.claude-plugin/plugin.json +1 -1
- data/.gitattributes +1 -0
- data/CHANGELOG.md +36 -0
- data/CLAUDE.md +1 -1
- data/README.md +1 -1
- data/docs/improvements.md +166 -22
- data/docs/influence/qmd.md +201 -130
- data/docs/quality_review.md +344 -56
- data/lib/claude_memory/commands/checks/database_check.rb +7 -0
- data/lib/claude_memory/commands/compact_command.rb +10 -0
- data/lib/claude_memory/commands/export_command.rb +14 -6
- data/lib/claude_memory/commands/git_lfs_command.rb +117 -0
- data/lib/claude_memory/commands/registry.rb +2 -1
- data/lib/claude_memory/commands/serve_mcp_command.rb +10 -1
- data/lib/claude_memory/commands/stats_command.rb +12 -1
- data/lib/claude_memory/configuration.rb +40 -1
- data/lib/claude_memory/core/snippet_extractor.rb +21 -19
- data/lib/claude_memory/index/lexical_fts.rb +88 -16
- data/lib/claude_memory/ingest/ingester.rb +1 -1
- data/lib/claude_memory/mcp/tool_definitions.rb +51 -21
- data/lib/claude_memory/mcp/tools.rb +13 -1
- data/lib/claude_memory/resolve/resolver.rb +22 -18
- data/lib/claude_memory/store/store_manager.rb +19 -24
- data/lib/claude_memory/sweep/sweeper.rb +11 -2
- data/lib/claude_memory/version.rb +1 -1
- data/lib/claude_memory.rb +7 -0
- metadata +6 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bfbba4c01acb3ad07b9114c6781ee7b6dbb197007ff61c72d7fa8b2ec164643e
|
|
4
|
+
data.tar.gz: 41df94bae4dc18bd00321ebca1fc80145faa6b180bb3ec00ff3d72a8cf091041
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f9e8278553ef1ba3c6d490304c9118c519612d5c6cd61230e94dc0dccca40ef653118e7c364e35ba2e58b2fb66d6b7fea39455f12723df6ddf8a8a9d55bc4d71
|
|
7
|
+
data.tar.gz: db870500e372150fbb6133ce43396aa57c2338e9aa392939219c4e2435d8bcaaac0724f858f387c97c3c9187a7b1409268b7246d91ad6018324935089daa149e
|
data/.claude/CLAUDE.md
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/.claude/settings.local.json
CHANGED
|
@@ -36,7 +36,17 @@
|
|
|
36
36
|
"Skill(study-repo)",
|
|
37
37
|
"WebFetch(domain:www.rubydoc.info)",
|
|
38
38
|
"Bash(git status:*)",
|
|
39
|
-
"WebFetch(domain:github.com)"
|
|
39
|
+
"WebFetch(domain:github.com)",
|
|
40
|
+
"mcp__memory__memory_stats",
|
|
41
|
+
"mcp__memory__memory_recall_index",
|
|
42
|
+
"Bash(mkdir -p /tmp/study-repos)",
|
|
43
|
+
"Read(//tmp/**)",
|
|
44
|
+
"Bash(ls:*)",
|
|
45
|
+
"Bash(sort -k2 -rn)",
|
|
46
|
+
"Bash(claude-memory recall:*)",
|
|
47
|
+
"Bash(claude-memory stats:*)",
|
|
48
|
+
"Bash(claude-memory search:*)",
|
|
49
|
+
"Bash(bundle exec:*)"
|
|
40
50
|
]
|
|
41
51
|
},
|
|
42
52
|
"enableAllProjectMcpServers": true
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"plugins": [
|
|
8
8
|
{
|
|
9
9
|
"name": "claude-memory",
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.7.0",
|
|
11
11
|
"source": "./",
|
|
12
12
|
"description": "Long-term self-managed memory for Claude Code with fact extraction, truth maintenance, and provenance tracking",
|
|
13
13
|
"repository": "https://github.com/codenamev/claude_memory"
|
data/.claude-plugin/plugin.json
CHANGED
data/.gitattributes
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.claude/memory.sqlite3* filter=lfs diff=lfs merge=lfs -text
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,42 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.7.0] - 2026-03-12
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
**FTS5 Contentless Mode**
|
|
12
|
+
- FTS5 tables now created with `content=''` for ~40% smaller databases
|
|
13
|
+
- Auto-detection: both legacy and contentless formats work seamlessly
|
|
14
|
+
- `compact` command rebuilds FTS index to contentless format
|
|
15
|
+
- `stats` command reports FTS format and optimization hints
|
|
16
|
+
|
|
17
|
+
**Worktree-Aware Project Paths**
|
|
18
|
+
- Project database now resolves to main repository root across git worktrees
|
|
19
|
+
- Prevents duplicate project databases when using `git worktree`
|
|
20
|
+
- Opt-out: set `CLAUDE_MEMORY_ISOLATE_WORKTREES=1` for per-worktree isolation
|
|
21
|
+
|
|
22
|
+
**MCP Enhancements**
|
|
23
|
+
- Tool annotations: `readOnlyHint`, `idempotentHint`, `destructiveHint` on all 21 tools
|
|
24
|
+
- Stdout protection: MCP server redirects `$stdout` to `$stderr` to prevent protocol corruption from accidental `puts`/`print` calls
|
|
25
|
+
- Self-excluding agent conversations via `SELF_CONTEXT_MARKER` to prevent meta-pollution
|
|
26
|
+
|
|
27
|
+
**New Commands**
|
|
28
|
+
- `git-lfs` command for setting up git-lfs tracking of project memory databases
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- Narrowed rescue clauses in `discover_other_projects` (was bare `rescue`, now catches specific `Sequel::DatabaseError`, `Extralite::Error`, `IOError`)
|
|
33
|
+
- FTS entries now cleaned up when content is pruned by sweeper (prevents orphaned index entries)
|
|
34
|
+
- FTS index rebuilt during `compact` for consistent state after upgrades
|
|
35
|
+
- Real evals CI: install gem and use correct release API
|
|
36
|
+
|
|
37
|
+
### Internal
|
|
38
|
+
- Resolver refactored to pass `project_path`/`scope` as parameters instead of instance variables (better thread safety)
|
|
39
|
+
- `SnippetExtractor` refactored to eliminate duplication between `extract` and `extract_with_lines`
|
|
40
|
+
- `StoreManager.promote_fact` inlined `copy_provenance` for single-transaction safety
|
|
41
|
+
- Influence study: QMD v2.0.1 SDK-first architecture analysis
|
|
42
|
+
|
|
7
43
|
## [0.6.0] - 2026-03-06
|
|
8
44
|
|
|
9
45
|
### Added
|
data/CLAUDE.md
CHANGED
|
@@ -133,7 +133,7 @@ Transcripts → Ingest → Index (FTS5)
|
|
|
133
133
|
- Each command is a separate class (HelpCommand, DoctorCommand, etc.)
|
|
134
134
|
- All commands inherit from BaseCommand
|
|
135
135
|
- Dependency injection for I/O (stdout, stderr, stdin)
|
|
136
|
-
-
|
|
136
|
+
- 22 commands total, each focused on single responsibility
|
|
137
137
|
|
|
138
138
|
- **`Configuration`**: Centralized ENV access (`configuration.rb`)
|
|
139
139
|
- Single source of truth for paths and environment variables
|
data/README.md
CHANGED
|
@@ -257,7 +257,7 @@ The benchmark dataset draws from real CLAUDE.md patterns and is designed specifi
|
|
|
257
257
|
|
|
258
258
|
- **Language:** Ruby 3.2+
|
|
259
259
|
- **Storage:** SQLite3 (no external services)
|
|
260
|
-
- **Testing:**
|
|
260
|
+
- **Testing:** 1435 examples, 100% core coverage
|
|
261
261
|
- **Code Style:** Standard Ruby
|
|
262
262
|
|
|
263
263
|
```bash
|
data/docs/improvements.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Improvements to Consider
|
|
2
2
|
|
|
3
|
-
*Updated: 2026-03-
|
|
3
|
+
*Updated: 2026-03-10 - Re-studied QMD (v2.0.1, up from v1.1.5). New findings: SDK-first architecture, dedicated Maintenance class, dynamic MCP instructions enhancement, embedded skill distribution, REST API endpoint. Other 5 repos unchanged since 2026-03-09.*
|
|
4
4
|
*Sources:*
|
|
5
|
-
- *[thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) - Memory compression system (v10.5.
|
|
6
|
-
- *[obra/episodic-memory](https://github.com/obra/episodic-memory) - Semantic conversation search (v1.0.15, studied 2026-03-
|
|
7
|
-
- *[yoanbernabeu/grepai](https://github.com/yoanbernabeu/grepai) - Semantic code search (
|
|
8
|
-
- *[supermemoryai/claude-supermemory](https://github.com/supermemoryai/claude-supermemory) - Cloud-backed persistent memory (v2.0.
|
|
9
|
-
- *[tobi/qmd](https://github.com/tobi/qmd) - On-device hybrid search engine (
|
|
10
|
-
- *[MadBomber/kbs](https://github.com/MadBomber/kbs) - Knowledge-Based System with RETE inference (v0.2.1, studied 2026-03-
|
|
5
|
+
- *[thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) - Memory compression system (v10.5.5, studied 2026-03-09)*
|
|
6
|
+
- *[obra/episodic-memory](https://github.com/obra/episodic-memory) - Semantic conversation search (v1.0.15, studied 2026-03-09)*
|
|
7
|
+
- *[yoanbernabeu/grepai](https://github.com/yoanbernabeu/grepai) - Semantic code search (latest, studied 2026-03-09)*
|
|
8
|
+
- *[supermemoryai/claude-supermemory](https://github.com/supermemoryai/claude-supermemory) - Cloud-backed persistent memory (v2.0.1, studied 2026-03-09)*
|
|
9
|
+
- *[tobi/qmd](https://github.com/tobi/qmd) - On-device hybrid search engine (v2.0.1, studied 2026-03-10)*
|
|
10
|
+
- *[MadBomber/kbs](https://github.com/MadBomber/kbs) - Knowledge-Based System with RETE inference (v0.2.1, studied 2026-03-09 — no changes)*
|
|
11
11
|
|
|
12
12
|
This document contains only unimplemented improvements. Completed items are removed.
|
|
13
13
|
|
|
@@ -23,11 +23,137 @@ Schema migration v12 with `facts_vec` virtual table (vec0, cosine distance). Two
|
|
|
23
23
|
|
|
24
24
|
Plugin packaging with `plugin.json` referencing MCP server, hooks, skills, commands, and output styles. Wrapper scripts (`scripts/serve-mcp.sh`, `scripts/hook-runner.sh`) handle gem detection gracefully. Initializers detect plugin mode via `CLAUDE_PLUGIN_ROOT` and skip hooks/MCP/output-style config. Version sync Rake task keeps plugin metadata in sync with gem version.
|
|
25
25
|
|
|
26
|
+
### 3. Intent Parameter for Recall ⭐
|
|
27
|
+
|
|
28
|
+
Source: QMD v1.1.5 study (2026-03-09)
|
|
29
|
+
|
|
30
|
+
- **Value**: Disambiguate ambiguous queries (e.g., "database" with intent "migration" vs "performance")
|
|
31
|
+
- **Implementation**: Add `intent` param to `Recall#query`, `DualQueryTemplate`, and MCP recall tools. Intent steers expansion/reranking but doesn't replace the query itself. Weight differently per stage (0.5x for chunk selection, 0.3x for snippets)
|
|
32
|
+
- **Evidence**: QMD `store.ts:3103-3110` — disables BM25 shortcut when intent provided; `llm.ts:993-994` — expansion prompt includes intent; `store.ts:2383-2384` — intent prepended to rerank query
|
|
33
|
+
- **Effort**: 2-3 days
|
|
34
|
+
- **Recommendation**: ADOPT
|
|
35
|
+
|
|
36
|
+
### ~~4. MCP Tool Annotations~~ ✅ Implemented 2026-03-09
|
|
37
|
+
|
|
38
|
+
Added `readOnlyHint`, `idempotentHint`, `destructiveHint` annotations to all 21 MCP tools via shared constants (READ_ONLY, WRITE, WRITE_IDEMPOTENT). 17 query tools marked read-only, store_extraction/sweep_now as write, promote as write-idempotent.
|
|
39
|
+
|
|
40
|
+
### 5. Retrieval Score Traces ⭐
|
|
41
|
+
|
|
42
|
+
Source: QMD v1.1.5 study (2026-03-09)
|
|
43
|
+
|
|
44
|
+
- **Value**: Transparency into why facts were retrieved — FTS score, vector similarity, RRF contribution, final blend
|
|
45
|
+
- **Implementation**: Add optional `explain: true` param to recall tools, return score breakdown per result. Enhances `memory.explain` and `memory.recall_details`
|
|
46
|
+
- **Evidence**: QMD `store.ts:2477-2540` — `--explain` flag with per-document RRF contribution traces
|
|
47
|
+
- **Effort**: 2 days
|
|
48
|
+
- **Recommendation**: ADOPT
|
|
49
|
+
|
|
50
|
+
### ~~6. MCP Stdout Protection Audit~~ ✅ Implemented 2026-03-09
|
|
51
|
+
|
|
52
|
+
ServeMcpCommand captures real stdout for MCP transport, redirects `$stdout` to `$stderr` during serve. Accidental puts/print from gems goes to stderr. Restore via ensure block.
|
|
53
|
+
|
|
54
|
+
### ~~7. Worktree-Aware Git Root Detection~~ ✅ Implemented 2026-03-09
|
|
55
|
+
|
|
56
|
+
Configuration#project_dir uses `git rev-parse --git-common-dir` to resolve main repo root across worktrees. `CLAUDE_MEMORY_ISOLATE_WORKTREES` env var opts into per-worktree isolation. Uses Open3.capture2 with graceful fallback to Dir.pwd.
|
|
57
|
+
|
|
58
|
+
### 8. Search Agent Delegation Pattern ⭐
|
|
59
|
+
|
|
60
|
+
Source: episodic-memory study (2026-03-09)
|
|
61
|
+
|
|
62
|
+
- **Value**: Save 50-100x main-agent context by delegating memory search to a subagent that chains recall → explain → fact_graph
|
|
63
|
+
- **Implementation**: Create `agents/memory-recall.md` subagent definition in plugin that chains our MCP tools and synthesizes results
|
|
64
|
+
- **Evidence**: episodic-memory `agents/search-conversations.md:1-162` — subagent-delegated search pattern
|
|
65
|
+
- **Effort**: 1-2 days
|
|
66
|
+
- **Recommendation**: ADOPT
|
|
67
|
+
|
|
68
|
+
### ~~9. Self-Excluding Agent Conversations~~ ✅ Implemented 2026-03-09
|
|
69
|
+
|
|
70
|
+
Added `SELF_CONTEXT_MARKER` constant (`claude-memory-self`) to ClaudeMemory module. Added to ingester EXCLUSION_TAGS. Transcripts containing `<claude-memory-self>` are skipped entirely, preventing meta-conversation pollution.
|
|
71
|
+
|
|
72
|
+
### 10. Dedicated Maintenance Class ⭐
|
|
73
|
+
|
|
74
|
+
Source: QMD v2.0.1 study (2026-03-10)
|
|
75
|
+
|
|
76
|
+
- **Value**: Clean separation of maintenance operations from main store with return counts. QMD's `Maintenance` class wraps 6 cleanup operations (vacuum, orphaned content/vectors, LLM cache, inactive docs, clear embeddings)
|
|
77
|
+
- **Implementation**: Extract `Sweep` module operations into a `Maintenance` class. Methods: `vacuum`, `cleanup_orphaned_vectors`, `cleanup_expired_facts`, `cleanup_superseded_facts`, `compact`. Return affected counts for reporting
|
|
78
|
+
- **Evidence**: QMD `src/maintenance.ts:1-54` — constructor takes internal store, each method returns affected count
|
|
79
|
+
- **Effort**: 1 day
|
|
80
|
+
- **Recommendation**: ADOPT
|
|
81
|
+
|
|
82
|
+
### 11. Dynamic MCP Instructions Enhancement ⭐
|
|
83
|
+
|
|
84
|
+
Source: QMD v2.0.1 study (2026-03-10)
|
|
85
|
+
|
|
86
|
+
- **Value**: QMD v2.0 builds rich MCP server instructions with collection stats, document counts, capability gaps, search examples, and retrieval workflow tips. Our MCP server has a static query guide prompt but no dynamic instructions
|
|
87
|
+
- **Implementation**: Add `build_instructions` to MCP server that generates dynamic instructions with: fact counts (global/project), active conflict count, recent decision count, convention count, database health, and usage tips
|
|
88
|
+
- **Evidence**: QMD `src/mcp/server.ts:92-152` — `buildInstructions()` with collections, counts, gaps, examples, tips
|
|
89
|
+
- **Effort**: 1 day
|
|
90
|
+
- **Recommendation**: ADOPT
|
|
91
|
+
|
|
92
|
+
### 12. Embedded Skill Distribution ⭐
|
|
93
|
+
|
|
94
|
+
Source: QMD v2.0.1 study (2026-03-10)
|
|
95
|
+
|
|
96
|
+
- **Value**: `qmd skill install` copies packaged skill files to `~/.claude/commands/` — zero-config setup. Skills are embedded as base64 in source code and extracted at install time
|
|
97
|
+
- **Implementation**: Add `claude-memory install-skill` command that writes our memory recall agent to `~/.claude/commands/memory-recall.md`. Embed skill content in a Ruby constant. Pairs with Search Agent Delegation Pattern (#8)
|
|
98
|
+
- **Evidence**: QMD `src/embedded-skills.ts:1-22` — base64-encoded SKILL.md + references; CLI `skill install` command
|
|
99
|
+
- **Effort**: 1-2 days
|
|
100
|
+
- **Recommendation**: ADOPT
|
|
101
|
+
|
|
102
|
+
### 13. Structured Error Classification
|
|
103
|
+
|
|
104
|
+
Source: claude-supermemory v2.0.1 study (2026-03-09)
|
|
105
|
+
|
|
106
|
+
- **Value**: Clean error handling in MCP server and hooks — benign errors silent, retryable logged, fatal with clear messages
|
|
107
|
+
- **Implementation**: Three-tier classification: benign (empty results, first use), retryable (rate limits, server errors), fatal (auth failures, schema corruption)
|
|
108
|
+
- **Evidence**: supermemory `src/lib/error-helpers.js:1-72` — error classification with user-friendly messages
|
|
109
|
+
- **Effort**: 1 day
|
|
110
|
+
- **Recommendation**: ADOPT
|
|
111
|
+
|
|
112
|
+
### 14. Entity Context Extraction Prompts
|
|
113
|
+
|
|
114
|
+
Source: claude-supermemory v2.0.1 study (2026-03-09)
|
|
115
|
+
|
|
116
|
+
- **Value**: Structured prompt templates for distiller defining what to extract (decisions, preferences, conventions) vs what to skip
|
|
117
|
+
- **Implementation**: Apply when replacing NullDistiller. Rich prompt with concrete examples in table format, separate personal vs repo context
|
|
118
|
+
- **Evidence**: supermemory `src/lib/supermemory-client.js:21-58` — extraction prompts with examples
|
|
119
|
+
- **Effort**: 1-2 days (when building real distiller)
|
|
120
|
+
- **Recommendation**: ADOPT — template for distiller replacement
|
|
121
|
+
|
|
26
122
|
---
|
|
27
123
|
|
|
28
124
|
## Medium Priority
|
|
29
125
|
|
|
30
|
-
###
|
|
126
|
+
### 15. Shell Completion for CLI
|
|
127
|
+
|
|
128
|
+
Source: grepai study (2026-03-09)
|
|
129
|
+
|
|
130
|
+
- **Value**: Tab completion for commands and flags in zsh/bash
|
|
131
|
+
- **Implementation**: Generate completion scripts from OptionParser. Dynamic completions for project names
|
|
132
|
+
- **Evidence**: grepai `cli/completion.go` — static + dynamic completions
|
|
133
|
+
- **Effort**: 1-2 days
|
|
134
|
+
- **Recommendation**: CONSIDER
|
|
135
|
+
|
|
136
|
+
### 16. Content-Addressed Deduplication for Embeddings
|
|
137
|
+
|
|
138
|
+
Source: grepai study (2026-03-09)
|
|
139
|
+
|
|
140
|
+
- **Value**: Skip re-embedding unchanged content using existing `text_hash` in `content_items`
|
|
141
|
+
- **Implementation**: Check `text_hash` before computing embeddings; reuse cached vectors for identical content
|
|
142
|
+
- **Evidence**: grepai `store/store.go:105-109` — EmbeddingCache interface
|
|
143
|
+
- **Effort**: 1 day
|
|
144
|
+
- **Recommendation**: CONSIDER — quick win, infrastructure already exists
|
|
145
|
+
|
|
146
|
+
### 17. Deduplication Before Vector Scoring
|
|
147
|
+
|
|
148
|
+
Source: QMD v1.1.5 study (2026-03-09)
|
|
149
|
+
|
|
150
|
+
- **Value**: Free performance win — deduplicate fact texts before computing cosine similarity, map scores back
|
|
151
|
+
- **Implementation**: In `VectorIndex#search`, group facts by text, score unique texts only, fan out results
|
|
152
|
+
- **Evidence**: QMD `llm.ts:1098-1109` — reranker deduplication (identical chunks scored once, fanned out)
|
|
153
|
+
- **Effort**: 1 day
|
|
154
|
+
- **Recommendation**: CONSIDER
|
|
155
|
+
|
|
156
|
+
### 18. Incremental Indexing with File Watching
|
|
31
157
|
|
|
32
158
|
Source: grepai study (reinforced 2026-03-02)
|
|
33
159
|
|
|
@@ -37,7 +163,7 @@ Source: grepai study (reinforced 2026-03-02)
|
|
|
37
163
|
- **Effort**: 2-3 days
|
|
38
164
|
- **Trade-off**: Background process ~10MB memory overhead
|
|
39
165
|
|
|
40
|
-
###
|
|
166
|
+
### 19. Document Chunking for Long Transcripts
|
|
41
167
|
|
|
42
168
|
Source: QMD study (updated 2026-03-02)
|
|
43
169
|
|
|
@@ -55,7 +181,18 @@ Source: QMD study (updated 2026-03-02)
|
|
|
55
181
|
|
|
56
182
|
## Low Priority / Defer
|
|
57
183
|
|
|
58
|
-
###
|
|
184
|
+
### 20. REST API Endpoint
|
|
185
|
+
|
|
186
|
+
Source: QMD v2.0.1 study (2026-03-10)
|
|
187
|
+
|
|
188
|
+
- **Value**: POST `/query` alongside MCP — enables search from curl, scripts, CI, and non-MCP clients without the full MCP protocol handshake
|
|
189
|
+
- **Implementation**: Add optional HTTP server mode to `claude-memory serve-mcp --http` with POST `/recall` endpoint. Accept `{ query, scope, limit }`, return JSON facts
|
|
190
|
+
- **Evidence**: QMD `src/mcp/server.ts:626-675` — `/query` and `/search` endpoints with structured JSON
|
|
191
|
+
- **Effort**: 2 days
|
|
192
|
+
- **Trade-off**: Requires WEBrick or similar Ruby HTTP server dependency
|
|
193
|
+
- **Recommendation**: CONSIDER — Useful for CI/scripting, but MCP covers primary use case
|
|
194
|
+
|
|
195
|
+
### 21. Signal-Based Ingestion Filtering
|
|
59
196
|
|
|
60
197
|
Source: claude-supermemory study (2026-03-02)
|
|
61
198
|
|
|
@@ -66,7 +203,7 @@ Source: claude-supermemory study (2026-03-02)
|
|
|
66
203
|
- **Trade-off**: May miss important but subtly-expressed facts. Our distiller already extracts structured facts, which inherently filters noise.
|
|
67
204
|
- **Recommendation**: DEFER — Distiller handles this naturally
|
|
68
205
|
|
|
69
|
-
###
|
|
206
|
+
### 22. HTTP MCP Transport
|
|
70
207
|
|
|
71
208
|
Source: QMD study (2026-03-02)
|
|
72
209
|
|
|
@@ -117,6 +254,13 @@ Added `claude-memory export` command. Dumps facts with entities and provenance t
|
|
|
117
254
|
- **KBS Redis Backend** — Redis store adds operational complexity; SQLite + Extralite is fast enough for our use case
|
|
118
255
|
- **KBS Message Queue** — Hook ordering already handles coordination; message queue adds unnecessary complexity
|
|
119
256
|
- **KBS Declarative Rule DSL** — Expressive but wrong paradigm for knowledge recall; our query/search approach is more appropriate
|
|
257
|
+
- **Mode/Domain System** — claude-mem v10.5.5 adds JSON-based mode profiles for domain-specific observation types. Our SPO fact model already generalizes across domains; only pursue if users request domain-specific support
|
|
258
|
+
- **Config Inheritance Pattern** — claude-mem's `parent--override` naming with deep merge. Not enough configuration variants to justify the complexity
|
|
259
|
+
- **HMAC Request Signing** — supermemory's `validate.js` uses HMAC but hardcodes the secret in a minified bundle. Security through obscurity, and we have no cloud API to protect
|
|
260
|
+
- **Codebase Indexing Command** — supermemory's `/index` actively explores codebases. Our hook-based passive capture is more appropriate; active indexing risks generating low-quality facts from code structure
|
|
261
|
+
- **SDK-First Architecture Refactor** — QMD v2.0 refactored to SDK-first with `QMDStore` interface consumed by CLI and MCP. Our gem + MCP architecture is already well-structured; major refactor for marginal gain
|
|
262
|
+
- **Write-Through YAML Config** — QMD v2.0 writes collection mutations to both SQLite and YAML. We don't use YAML config; dual-database is our config model
|
|
263
|
+
- **Multi-Session HTTP Transport** — QMD v2.0 supports concurrent MCP sessions via session map. Our MCP server is lightweight enough for stdio; no model loading latency to amortize
|
|
120
264
|
|
|
121
265
|
---
|
|
122
266
|
|
|
@@ -139,20 +283,20 @@ Added `claude-memory export` command. Dumps facts with entities and provenance t
|
|
|
139
283
|
## References
|
|
140
284
|
|
|
141
285
|
- [episodic-memory GitHub](https://github.com/obra/episodic-memory) - Semantic conversation search (v1.0.15)
|
|
142
|
-
- [claude-mem GitHub](https://github.com/thedotmack/claude-mem) - Memory compression system (v10.5.
|
|
143
|
-
- [grepai GitHub](https://github.com/yoanbernabeu/grepai) - Semantic code search (
|
|
144
|
-
- [claude-supermemory GitHub](https://github.com/supermemoryai/claude-supermemory) - Cloud-backed memory (v2.0.
|
|
145
|
-
- [QMD GitHub](https://github.com/tobi/qmd) - On-device hybrid search engine (
|
|
286
|
+
- [claude-mem GitHub](https://github.com/thedotmack/claude-mem) - Memory compression system (v10.5.5)
|
|
287
|
+
- [grepai GitHub](https://github.com/yoanbernabeu/grepai) - Semantic code search (latest)
|
|
288
|
+
- [claude-supermemory GitHub](https://github.com/supermemoryai/claude-supermemory) - Cloud-backed memory (v2.0.1)
|
|
289
|
+
- [QMD GitHub](https://github.com/tobi/qmd) - On-device hybrid search engine (v2.0.1)
|
|
146
290
|
- [KBS GitHub](https://github.com/MadBomber/kbs) - Knowledge-Based System with RETE inference (v0.2.1)
|
|
147
291
|
|
|
148
292
|
Influence documents:
|
|
149
|
-
- [docs/influence/qmd.md](influence/qmd.md) - Updated 2026-03-
|
|
150
|
-
- [docs/influence/episodic-memory.md](influence/episodic-memory.md) -
|
|
151
|
-
- [docs/influence/claude-mem.md](influence/claude-mem.md) -
|
|
152
|
-
- [docs/influence/grepai.md](influence/grepai.md) - Updated 2026-03-
|
|
153
|
-
- [docs/influence/claude-supermemory.md](influence/claude-supermemory.md) - Updated 2026-03-
|
|
154
|
-
- [docs/influence/kbs.md](influence/kbs.md) -
|
|
293
|
+
- [docs/influence/qmd.md](influence/qmd.md) - Updated 2026-03-10
|
|
294
|
+
- [docs/influence/episodic-memory.md](influence/episodic-memory.md) - Updated 2026-03-09
|
|
295
|
+
- [docs/influence/claude-mem.md](influence/claude-mem.md) - Updated 2026-03-09
|
|
296
|
+
- [docs/influence/grepai.md](influence/grepai.md) - Updated 2026-03-09
|
|
297
|
+
- [docs/influence/claude-supermemory.md](influence/claude-supermemory.md) - Updated 2026-03-09
|
|
298
|
+
- [docs/influence/kbs.md](influence/kbs.md) - Updated 2026-03-09 (no changes)
|
|
155
299
|
|
|
156
300
|
---
|
|
157
301
|
|
|
158
|
-
*Last updated: 2026-03-
|
|
302
|
+
*Last updated: 2026-03-10 - Re-studied QMD (v2.0.1). Added 3 new high-priority items: Dedicated Maintenance Class (#10), Dynamic MCP Instructions Enhancement (#11), Embedded Skill Distribution (#12). Added 1 medium-priority item: REST API Endpoint (#20). Previously: Implemented 4 features: MCP Tool Annotations (#4), MCP Stdout Protection (#6), Worktree-Aware Git Root (#7), Self-Excluding Conversations (#9). Re-studied all 6 influencer repos. Previous: Claude Code Plugin Distribution Format, sqlite-vec, Database Compact, Fact Export, Background Processing, MCP Discovery Tools.*
|