claude-memory-layer 1.0.26 → 1.0.28
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.
- package/.env.example +7 -0
- package/AGENTS.md +11 -0
- package/README.md +184 -41
- package/benchmarks/replay/anonymized-real-sessions.json +48 -0
- package/dist/cli/index.js +10097 -6003
- package/dist/cli/index.js.map +4 -4
- package/dist/core/index.js +9745 -5587
- package/dist/core/index.js.map +4 -4
- package/dist/hooks/post-tool-use.js +6545 -5270
- package/dist/hooks/post-tool-use.js.map +4 -4
- package/dist/hooks/semantic-daemon.js +6646 -5354
- package/dist/hooks/semantic-daemon.js.map +4 -4
- package/dist/hooks/session-end.js +6618 -5347
- package/dist/hooks/session-end.js.map +4 -4
- package/dist/hooks/session-start.js +6619 -5354
- package/dist/hooks/session-start.js.map +4 -4
- package/dist/hooks/stop.js +6614 -5325
- package/dist/hooks/stop.js.map +4 -4
- package/dist/hooks/user-prompt-submit.js +6702 -5356
- package/dist/hooks/user-prompt-submit.js.map +4 -4
- package/dist/index.js +13537 -0
- package/dist/index.js.map +7 -0
- package/dist/mcp/index.js +20770 -0
- package/dist/mcp/index.js.map +7 -0
- package/dist/server/api/index.js +6632 -5319
- package/dist/server/api/index.js.map +4 -4
- package/dist/server/index.js +6667 -5340
- package/dist/server/index.js.map +4 -4
- package/dist/services/memory-service.js +6568 -5350
- package/dist/services/memory-service.js.map +4 -4
- package/dist/ui/assets/js/bootstrap.js +244 -0
- package/dist/ui/assets/js/chat.js +373 -0
- package/dist/ui/assets/js/disclosure.js +232 -0
- package/dist/ui/assets/js/modals.js +298 -0
- package/dist/ui/assets/js/overview.js +655 -0
- package/dist/ui/assets/js/state.js +72 -0
- package/dist/ui/assets/js/views.js +468 -0
- package/dist/ui/index.html +43 -1
- package/dist/ui/index.ts +3 -0
- package/dist/ui/style.css +222 -0
- package/docs/ARCHITECTURE_COMPARISON_AND_RECOMMENDATIONS.md +627 -0
- package/docs/HERMES_MEMORY_INGESTION_ANALYSIS.md +440 -0
- package/docs/MEMORY_USEFULNESS_AUDIT.md +371 -0
- package/docs/MEMORY_USEFULNESS_AUDIT_RAW.json +80 -0
- package/docs/MEMSEARCH_PROJECT_STRUCTURE_ANALYSIS.md +333 -0
- package/docs/PRODUCT_VALIDATION_MATRIX.md +82 -0
- package/docs/PROJECT_STRUCTURE_ANALYSIS.md +421 -0
- package/docs/REFACTORING_MILESTONES_AND_ISSUES.md +501 -0
- package/docs/REFACTORING_PLAN_THIN_CORE.md +414 -0
- package/docs/REFERENCE_PROJECT_ANALYSES.md +25 -0
- package/docs/SUPERLOCALMEMORY_PROJECT_STRUCTURE_ANALYSIS.md +452 -0
- package/docs/TARGET_ARCHITECTURE_AND_FOLDER_STRUCTURE.md +446 -0
- package/docs/architecture/comparison-index.md +47 -0
- package/docs/reports/codex-real-data-validation-20260505T040447Z.md +46 -0
- package/package.json +9 -5
- package/scripts/build.ts +25 -8
- package/scripts/generate-session-qrels.ts +126 -0
- package/scripts/replay-retrieval-benchmark.ts +69 -0
- package/specs/thin-core-refactor/context.md +275 -0
- package/specs/thin-core-refactor/plan.md +536 -0
- package/specs/thin-core-refactor/spec.md +465 -0
- package/src/adapters/claude/capture/index.ts +3 -0
- package/src/adapters/claude/context/index.ts +3 -0
- package/src/adapters/claude/hooks/index.ts +21 -0
- package/src/adapters/claude/hooks/post-tool-use.ts +239 -0
- package/src/adapters/claude/hooks/prompt-injection-policy.ts +104 -0
- package/src/adapters/claude/hooks/semantic-daemon-client.ts +209 -0
- package/src/adapters/claude/hooks/semantic-daemon.ts +283 -0
- package/src/adapters/claude/hooks/session-end.ts +59 -0
- package/src/adapters/claude/hooks/session-start.ts +73 -0
- package/src/adapters/claude/hooks/stop.ts +128 -0
- package/src/adapters/claude/hooks/user-prompt-submit.ts +361 -0
- package/src/adapters/claude/index.ts +4 -0
- package/src/adapters/claude/transcript/index.ts +4 -0
- package/src/adapters/claude/transcript/transcript-reader.ts +57 -0
- package/src/adapters/claude/transcript/turn-reconstructor.ts +65 -0
- package/src/apps/cli/claude-settings-hooks.ts +138 -0
- package/src/apps/cli/codex-import-runner.ts +125 -0
- package/src/apps/cli/codex-validation-output.ts +95 -0
- package/src/apps/cli/hermes-import-runner.ts +130 -0
- package/src/apps/cli/hermes-validation-output.ts +91 -0
- package/src/apps/cli/index.ts +1731 -0
- package/src/apps/cli/mcp-install.ts +106 -0
- package/src/apps/cli/retrieval-disclosure-output.ts +196 -0
- package/src/apps/dashboard/assets/js/bootstrap.js +244 -0
- package/src/apps/dashboard/assets/js/chat.js +373 -0
- package/src/apps/dashboard/assets/js/disclosure.js +232 -0
- package/src/apps/dashboard/assets/js/modals.js +298 -0
- package/src/apps/dashboard/assets/js/overview.js +655 -0
- package/src/apps/dashboard/assets/js/state.js +72 -0
- package/src/apps/dashboard/assets/js/views.js +468 -0
- package/src/{ui → apps/dashboard}/index.html +43 -1
- package/src/apps/dashboard/index.ts +3 -0
- package/src/{ui → apps/dashboard}/style.css +222 -0
- package/src/apps/index.ts +5 -0
- package/src/apps/server/api/chat.ts +244 -0
- package/src/apps/server/api/citations.ts +105 -0
- package/src/apps/server/api/events.ts +137 -0
- package/src/apps/server/api/health.ts +53 -0
- package/src/apps/server/api/index.ts +26 -0
- package/src/apps/server/api/projects.ts +74 -0
- package/src/apps/server/api/search.ts +184 -0
- package/src/apps/server/api/sessions.ts +115 -0
- package/src/apps/server/api/stats.ts +723 -0
- package/src/apps/server/api/turns.ts +143 -0
- package/src/apps/server/api/utils.ts +65 -0
- package/src/apps/server/index.ts +111 -0
- package/src/cli/index.ts +2 -1311
- package/src/cli/retrieval-disclosure-output.ts +2 -0
- package/src/compat/index.ts +5 -0
- package/src/core/derive/fact-deriver.ts +170 -0
- package/src/core/derive/index.ts +2 -0
- package/src/core/derive/summary-deriver.ts +76 -0
- package/src/core/embedder.ts +4 -152
- package/src/core/engine/embedding-maintenance-service.ts +187 -0
- package/src/core/engine/endless-memory-services.ts +4 -0
- package/src/core/engine/index.ts +19 -0
- package/src/core/engine/memory-engine-services.ts +170 -0
- package/src/core/engine/memory-ingest-service.ts +317 -0
- package/src/core/engine/memory-query-service.ts +173 -0
- package/src/core/engine/memory-runtime-service.ts +162 -0
- package/src/core/engine/memory-service-composition.ts +231 -0
- package/src/core/engine/retrieval-analytics-service.ts +181 -0
- package/src/core/engine/retrieval-disclosure-service.ts +420 -0
- package/src/core/engine/retrieval-orchestrator.ts +377 -0
- package/src/core/engine/retrieval-services.ts +176 -0
- package/src/core/engine/shared-memory-services.ts +4 -0
- package/src/core/entity-repo.ts +1 -3
- package/src/core/event-store.ts +3 -3
- package/src/core/evidence-aligner.ts +2 -2
- package/src/core/external-market-context.ts +582 -0
- package/src/core/graduation.ts +2 -3
- package/src/core/index.ts +21 -0
- package/src/core/matcher.ts +2 -4
- package/src/core/model/memory-fact.ts +30 -0
- package/src/core/model/memory-rule.ts +14 -0
- package/src/core/model/memory-summary.ts +21 -0
- package/src/core/model/raw-event.ts +28 -0
- package/src/core/model/retrieval-result.ts +35 -0
- package/src/core/privacy/filter.ts +21 -10
- package/src/core/product-validation-matrix.ts +314 -0
- package/src/core/progressive-retriever.ts +1 -2
- package/src/core/registry/project-path.ts +54 -0
- package/src/core/registry/session-registry.ts +69 -0
- package/src/core/replay-evaluator.ts +625 -0
- package/src/core/retrieval-benchmark.ts +117 -0
- package/src/core/retrieval-quality.ts +109 -0
- package/src/core/retriever.ts +53 -15
- package/src/core/session-qrels.ts +360 -0
- package/src/core/shared-event-store.ts +1 -1
- package/src/core/sqlite-event-store.ts +35 -11
- package/src/core/task/blocker-resolver.ts +2 -2
- package/src/core/task/task-resolver.ts +0 -1
- package/src/core/vector-outbox.ts +1 -10
- package/src/core/vector-worker.ts +1 -1
- package/src/extensions/endless-memory/endless-memory-services.ts +350 -0
- package/src/extensions/endless-memory/index.ts +1 -0
- package/src/extensions/index.ts +5 -0
- package/src/extensions/mcp/handlers.ts +960 -0
- package/src/extensions/mcp/index.ts +48 -0
- package/src/extensions/mcp/tools.ts +252 -0
- package/src/extensions/shared-memory/index.ts +1 -0
- package/src/extensions/shared-memory/shared-memory-services.ts +211 -0
- package/src/extensions/vector/embedder.ts +197 -0
- package/src/extensions/vector/index.ts +1 -0
- package/src/hooks/post-tool-use.ts +3 -236
- package/src/hooks/semantic-daemon-client.ts +1 -208
- package/src/hooks/semantic-daemon.ts +6 -271
- package/src/hooks/session-end.ts +4 -79
- package/src/hooks/session-start.ts +4 -73
- package/src/hooks/stop.ts +3 -173
- package/src/hooks/user-prompt-submit.ts +3 -338
- package/src/index.ts +13 -0
- package/src/mcp/handlers.ts +2 -212
- package/src/mcp/index.ts +3 -46
- package/src/mcp/tools.ts +2 -78
- package/src/server/api/chat.ts +2 -244
- package/src/server/api/citations.ts +2 -105
- package/src/server/api/events.ts +2 -137
- package/src/server/api/health.ts +2 -53
- package/src/server/api/index.ts +2 -26
- package/src/server/api/projects.ts +2 -74
- package/src/server/api/search.ts +2 -102
- package/src/server/api/sessions.ts +2 -115
- package/src/server/api/stats.ts +2 -724
- package/src/server/api/turns.ts +2 -143
- package/src/server/api/utils.ts +2 -46
- package/src/server/index.ts +2 -100
- package/src/services/bootstrap-organizer.ts +46 -26
- package/src/services/codex-session-history-importer.ts +521 -29
- package/src/services/hermes-session-history-importer.ts +733 -0
- package/src/services/memory-service-config.ts +36 -0
- package/src/services/memory-service-registry.ts +150 -0
- package/src/services/memory-service.ts +211 -1325
- package/src/services/session-history-importer.ts +58 -14
- package/tests/README.md +23 -0
- package/tests/adapters/claude/claude-semantic-daemon-adapter.test.ts +54 -0
- package/tests/adapters/claude/claude-transcript-reconstructor.test.ts +98 -0
- package/tests/adapters/claude-hook-prompt-injection-policy.test.ts +99 -0
- package/tests/apps/app-layer-boundary.test.ts +48 -0
- package/tests/apps/claude-settings-hooks.test.ts +107 -0
- package/tests/apps/cli-disclosure-output.test.ts +212 -0
- package/tests/apps/codex-import-runner.test.ts +99 -0
- package/tests/apps/codex-validation-output.test.ts +100 -0
- package/tests/apps/hermes-import-runner.test.ts +99 -0
- package/tests/apps/mcp-install-command.test.ts +59 -0
- package/tests/apps/package-build-entrypoints.test.ts +30 -0
- package/tests/apps/search-api-disclosure.test.ts +162 -0
- package/tests/apps/stats-api-lightweight.test.ts +67 -0
- package/tests/apps/ui-disclosure-output.test.ts +140 -0
- package/tests/{bootstrap-organizer.test.ts → core/bootstrap-organizer.test.ts} +1 -1
- package/tests/{canonical-key.test.ts → core/canonical-key.test.ts} +1 -1
- package/tests/core/codex-session-history-importer-validation.test.ts +185 -0
- package/tests/{consolidation-worker.test.ts → core/consolidation-worker.test.ts} +2 -2
- package/tests/core/embedding-maintenance-service.test.ts +282 -0
- package/tests/{evidence-aligner.test.ts → core/evidence-aligner.test.ts} +1 -1
- package/tests/core/external-market-context.test.ts +209 -0
- package/tests/core/fact-deriver.test.ts +79 -0
- package/tests/core/hermes-session-history-importer-validation.test.ts +609 -0
- package/tests/{ingest-interceptor.test.ts → core/ingest-interceptor.test.ts} +1 -1
- package/tests/{markdown-mirror.test.ts → core/markdown-mirror.test.ts} +2 -2
- package/tests/{matcher.test.ts → core/matcher.test.ts} +1 -1
- package/tests/{md-mirror.test.ts → core/md-mirror.test.ts} +2 -2
- package/tests/core/memory-engine-services.test.ts +240 -0
- package/tests/core/memory-ingest-service.test.ts +296 -0
- package/tests/core/memory-query-service.test.ts +129 -0
- package/tests/core/memory-runtime-service.test.ts +201 -0
- package/tests/core/memory-service-composition.test.ts +192 -0
- package/tests/core/memory-service-config.test.ts +41 -0
- package/tests/core/memory-service-facade.test.ts +30 -0
- package/tests/core/memory-service-registry.test.ts +206 -0
- package/tests/core/product-validation-matrix.test.ts +61 -0
- package/tests/core/project-registry.test.ts +78 -0
- package/tests/core/replay-evaluator.test.ts +181 -0
- package/tests/core/retrieval-analytics-service.test.ts +210 -0
- package/tests/core/retrieval-benchmark.test.ts +93 -0
- package/tests/core/retrieval-disclosure-service.test.ts +264 -0
- package/tests/core/retrieval-orchestrator.test.ts +403 -0
- package/tests/core/retrieval-quality.test.ts +31 -0
- package/tests/core/retrieval-services.test.ts +185 -0
- package/tests/{retriever-fallback-chain.test.ts → core/retriever-fallback-chain.test.ts} +3 -3
- package/tests/{retriever-strategy-scope.test.ts → core/retriever-strategy-scope.test.ts} +70 -3
- package/tests/{retriever.memu-adoption.test.ts → core/retriever.memu-adoption.test.ts} +3 -3
- package/tests/core/session-history-importer-filter.test.ts +78 -0
- package/tests/core/session-qrels.test.ts +250 -0
- package/tests/{sqlite-event-store-replication.test.ts → core/sqlite-event-store-replication.test.ts} +36 -1
- package/tests/core/summary-deriver.test.ts +66 -0
- package/tests/extensions/embedder-warning-suppression.test.ts +53 -0
- package/tests/extensions/endless-memory-extension-boundary.test.ts +17 -0
- package/tests/extensions/endless-memory-services.test.ts +325 -0
- package/tests/extensions/mcp-context-tools.test.ts +905 -0
- package/tests/extensions/mcp-extension-boundary.test.ts +21 -0
- package/tests/extensions/mcp-package-build.test.ts +22 -0
- package/tests/extensions/mcp-project-aware-tools.test.ts +102 -0
- package/tests/extensions/shared-memory-extension-boundary.test.ts +24 -0
- package/tests/extensions/shared-memory-services.test.ts +309 -0
- package/tests/extensions/vector-extension-boundary.test.ts +21 -0
- package/.claude/settings.local.json +0 -25
- package/.npm-cache/_cacache/content-v2/sha512/04/76/c098f88dfe584a2b80870bff7421b05d17d3d9ee1027f77772332a22d3f93a9a57101a2855107f6ad82077a818bba912b2bc317f2361b5ddb09ad284d9ce +0 -0
- package/.npm-cache/_cacache/content-v2/sha512/60/25/d2ecd39cfc7cab58351162814be77f935c6d6491c10c3745d456da7ddb2117ffd90c10e53fe3c0f1ed16b403307841543634504398b16ee4e6b6dd8e0c45 +0 -0
- package/.npm-cache/_cacache/index-v5/2b/9a/7f8f40206ed8a2e0a84efaa953ccaed1f5d001e14b931083f2e7a0738007 +0 -2
- package/.npm-cache/_cacache/index-v5/2e/d9/fcfa5c6a6abdc2a3644ab84a95936047298c465a2f47ee03db8f7fe1e946 +0 -3
- package/.npm-cache/_cacache/index-v5/a9/42/e519633356d12d3d2f19da66a8301016d496c8f5c3e0554124aaa62dc043 +0 -2
- package/.npm-cache/_logs/2026-02-26T12_04_52_729Z-debug-0.log +0 -256
- package/.npm-cache/_logs/2026-02-26T12_05_36_835Z-debug-0.log +0 -18
- package/.npm-cache/_logs/2026-02-26T12_05_45_982Z-debug-0.log +0 -32
- package/.npm-cache/_logs/2026-02-26T12_05_48_515Z-debug-0.log +0 -260
- package/.npm-cache/_logs/2026-02-26T12_05_53_567Z-debug-0.log +0 -69
- package/.npm-cache/_update-notifier-last-checked +0 -0
- package/bootstrap-kb/decisions/decisions.md +0 -244
- package/bootstrap-kb/glossary/glossary.md +0 -46
- package/bootstrap-kb/modules/.claude-plugin.md +0 -22
- package/bootstrap-kb/modules/agents.md.md +0 -15
- package/bootstrap-kb/modules/claude.md.md +0 -15
- package/bootstrap-kb/modules/context.md.md +0 -15
- package/bootstrap-kb/modules/docs.md +0 -18
- package/bootstrap-kb/modules/handoff.md.md +0 -15
- package/bootstrap-kb/modules/package-lock.json.md +0 -15
- package/bootstrap-kb/modules/package.json.md +0 -15
- package/bootstrap-kb/modules/plan.md.md +0 -15
- package/bootstrap-kb/modules/readme.md.md +0 -15
- package/bootstrap-kb/modules/scripts.md +0 -26
- package/bootstrap-kb/modules/spec.md.md +0 -15
- package/bootstrap-kb/modules/specs.md +0 -20
- package/bootstrap-kb/modules/src.md +0 -51
- package/bootstrap-kb/modules/tests.md +0 -42
- package/bootstrap-kb/modules/tsconfig.json.md +0 -15
- package/bootstrap-kb/modules/vitest.config.ts.md +0 -15
- package/bootstrap-kb/overview/overview.md +0 -40
- package/bootstrap-kb/sources/manifest.json +0 -950
- package/bootstrap-kb/sources/manifest.md +0 -227
- package/bootstrap-kb/timeline/timeline.md +0 -57
- package/claude-memory-layer-1.0.14.tgz +0 -0
- package/d.sh +0 -3
- package/deploy.sh +0 -3
- package/dist/ui/app.js +0 -2101
- package/memory/.claude-plugin/commands/2026-02-25.md +0 -263
- package/memory/_index.md +0 -418
- package/memory/agent_response/uncategorized/2026-02-26.md +0 -176
- package/memory/agent_response/uncategorized/2026-03-03.md +0 -14
- package/memory/agent_response/uncategorized/2026-03-04.md +0 -1421
- package/memory/agent_response/uncategorized/2026-03-05.md +0 -48
- package/memory/default/uncategorized/2026-02-25.md +0 -4839
- package/memory/session_summary/uncategorized/2026-02-26.md +0 -13
- package/memory/session_summary/uncategorized/2026-03-03.md +0 -5
- package/memory/session_summary/uncategorized/2026-03-04.md +0 -50
- package/memory/specs/20260207-dashboard-upgrade/2026-02-25.md +0 -142
- package/memory/specs/citations-system/2026-02-25.md +0 -1121
- package/memory/specs/endless-mode/2026-02-25.md +0 -1392
- package/memory/specs/entity-edge-model/2026-02-25.md +0 -1263
- package/memory/specs/evidence-aligner-v2/2026-02-25.md +0 -1028
- package/memory/specs/mcp-desktop-integration/2026-02-25.md +0 -1334
- package/memory/specs/post-tool-use-hook/2026-02-25.md +0 -1164
- package/memory/specs/private-tags/2026-02-25.md +0 -1057
- package/memory/specs/progressive-disclosure/2026-02-25.md +0 -1436
- package/memory/specs/task-entity-system/2026-02-25.md +0 -924
- package/memory/specs/vector-outbox-v2/2026-02-25.md +0 -1510
- package/memory/specs/web-viewer-ui/2026-02-25.md +0 -1709
- package/memory/tool_observation/uncategorized/2026-02-26.md +0 -209
- package/memory/tool_observation/uncategorized/2026-03-03.md +0 -21
- package/memory/tool_observation/uncategorized/2026-03-04.md +0 -1033
- package/memory/tool_observation/uncategorized/2026-03-05.md +0 -29
- package/memory/user_prompt/uncategorized/2026-02-26.md +0 -25
- package/memory/user_prompt/uncategorized/2026-03-04.md +0 -634
- package/specs/optional-duckdb/context.md +0 -77
- package/specs/optional-duckdb/plan.md +0 -142
- package/specs/optional-duckdb/spec.md +0 -35
- package/src/ui/app.js +0 -2101
package/.env.example
ADDED
package/AGENTS.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
이 저장소는 **Claude Code용 메모리 플러그인 + CLI + 로컬 대시보드 서버**입니다.
|
|
4
4
|
Codex(또는 다른 코딩 에이전트)가 작업할 때 아래 규칙을 우선으로 따르세요.
|
|
5
5
|
|
|
6
|
+
## Project Memory Bootstrap
|
|
7
|
+
|
|
8
|
+
작업 시작/재개 전에 Claude Memory Layer MCP 도구가 사용 가능하면 먼저 프로젝트 맥락을 가져오세요.
|
|
9
|
+
|
|
10
|
+
- 트리거: `continue`, `next`, `이어서`, `다음 단계`, 버그 수정, PR/merge/검증, 이전 결정/작업 맥락이 중요한 요청
|
|
11
|
+
- 우선 호출: `mem-context-pack` / Hermes 도구명 `mcp_claude_memory_layer_mem_context_pack`
|
|
12
|
+
- 권장 인자: `query=<현재 요청 요약>`, `projectPath=<현재 저장소 루트>`, `topK=5`, `recentLimit=30`, `sessionLimit=5`
|
|
13
|
+
- MCP 도구가 없으면 막히지 말고 기존 AGENTS.md 규칙대로 진행하세요.
|
|
14
|
+
- 결과는 배경 맥락으로만 사용하고, secret/token/credential 또는 transcript DB path 같은 민감한 metadata는 출력하지 마세요.
|
|
15
|
+
- live agent session id를 CML `sessionId`로 넘기지 마세요. source-session 필터가 명시된 경우에만 사용하세요.
|
|
16
|
+
|
|
6
17
|
## Quick Commands
|
|
7
18
|
|
|
8
19
|
```bash
|
package/README.md
CHANGED
|
@@ -93,10 +93,10 @@ npx claude-memory-layer search "배포 이슈"
|
|
|
93
93
|
### Advanced Features
|
|
94
94
|
|
|
95
95
|
- **Citations System**: 메모리 출처 추적 (`[mem:abc123]` 형식)으로 검색 결과의 원본 확인 가능
|
|
96
|
-
- **Endless Mode**: 세션 경계 없는 연속적 메모리 스트림, Biomimetic Memory Architecture 기반
|
|
96
|
+
- **Endless Mode**: 세션 경계 없는 연속적 메모리 스트림, Biomimetic Memory Architecture 기반 *(experimental extension)*
|
|
97
97
|
- **Entity-Edge Model**: entries/entities/edges 3-layer 모델로 데이터 관계 명시적 모델링
|
|
98
98
|
- **Evidence Aligner V2**: Quote 기반 3단계 정렬 (exact → normalized → fuzzy)
|
|
99
|
-
- **MCP Desktop Integration**: Claude Desktop용 MCP 서버로 CLI와 동일한 메모리 공유
|
|
99
|
+
- **MCP Desktop Integration**: Claude Desktop용 MCP 서버로 CLI와 동일한 메모리 공유 *(stdio server bin: `claude-memory-layer-mcp`)*
|
|
100
100
|
- **PostToolUse Hook**: 도구 실행 결과 (Read, Write, Bash 등) 캡처 및 저장
|
|
101
101
|
- **Private Tags**: `<private>` 태그로 민감 정보를 명시적으로 제외
|
|
102
102
|
- **Progressive Disclosure**: 3-Layer 검색 (인덱스 → 타임라인 → 상세)으로 토큰 효율화
|
|
@@ -104,9 +104,21 @@ npx claude-memory-layer search "배포 이슈"
|
|
|
104
104
|
- **Append-only Markdown Mirror**: 저장 이벤트를 `memory/<namespace>/<category...>/YYYY-MM-DD.md`에도 동기 append (기본값: `namespace=default`, `category=uncategorized`, 경로 세그먼트 sanitize)
|
|
105
105
|
- `memory/_index.md` 인덱스를 자동 갱신
|
|
106
106
|
- **Task Entity System**: Task를 Entity로 승격하여 세션 간 상태 추적
|
|
107
|
-
- **Vector Outbox V2**: Transactional Outbox 패턴으로
|
|
107
|
+
- **Vector Outbox V2**: Transactional Outbox 패턴으로 SQLite-LanceDB 정합성 보장
|
|
108
108
|
- **Web Viewer UI**: localhost:37777 대시보드로 실시간 메모리 모니터링
|
|
109
109
|
|
|
110
|
+
### 현재 feature status
|
|
111
|
+
|
|
112
|
+
| 영역 | 상태 | 비고 |
|
|
113
|
+
|------|------|------|
|
|
114
|
+
| Claude Code hooks / CLI / Dashboard | Stable | `install`, `search`, `import`, `stats`, `dashboard` 중심 |
|
|
115
|
+
| SQLite event store / project registry | Stable | canonical source of truth |
|
|
116
|
+
| LanceDB vector index / Embedder | Stable accelerator | `src/extensions/vector/embedder.ts`; VectorStore/VectorWorker는 아직 core compatibility path 유지 |
|
|
117
|
+
| Progressive disclosure search/API/CLI/dashboard | Implemented | `search --disclosure`, `expand`, `source` mental model |
|
|
118
|
+
| Shared memory / Endless mode | Experimental extension | 구현은 `src/extensions/shared-memory`, `src/extensions/endless-memory` 아래에 있고 기존 path는 shim 유지 |
|
|
119
|
+
| MCP Desktop integration | Implemented | 구현은 `src/extensions/mcp`; package bin은 `claude-memory-layer-mcp`; `claude-memory-layer mcp install`로 Claude Desktop config 자동 등록 |
|
|
120
|
+
| Mongo sync / Entity graph / Task entity | Experimental | 고급/운영 옵션으로 취급 |
|
|
121
|
+
|
|
110
122
|
## 설치 방법
|
|
111
123
|
|
|
112
124
|
### 1. 의존성 설치
|
|
@@ -124,13 +136,14 @@ npm run build
|
|
|
124
136
|
|
|
125
137
|
### 3. Claude Code에 플러그인 등록
|
|
126
138
|
|
|
127
|
-
|
|
139
|
+
Claude Code hook 설정은 CLI가 등록합니다:
|
|
128
140
|
|
|
129
141
|
```bash
|
|
130
|
-
|
|
131
|
-
cp -r dist/.claude-plugin ~/.claude/plugins/claude-memory-layer/
|
|
142
|
+
npx claude-memory-layer install
|
|
132
143
|
```
|
|
133
144
|
|
|
145
|
+
> 주의: `install` / `uninstall`은 `~/.claude/settings.json`을 수정합니다. 자동 테스트나 임의 실행 대신, 실제 사용자가 설치/해제를 원할 때만 실행하세요.
|
|
146
|
+
|
|
134
147
|
## 사용 방법
|
|
135
148
|
|
|
136
149
|
### 자동 동작 (Hooks)
|
|
@@ -334,7 +347,7 @@ SECRET_TOKEN=abc123
|
|
|
334
347
|
🔍 Search Results:
|
|
335
348
|
|
|
336
349
|
#1 [mem:a7Bc3x] (score: 0.94)
|
|
337
|
-
"
|
|
350
|
+
"SQLite/WAL을 사용하여 이벤트 소싱 패턴을..."
|
|
338
351
|
📅 2026-01-30 | 🔗 Session abc123
|
|
339
352
|
```
|
|
340
353
|
|
|
@@ -349,10 +362,10 @@ claude-memory-layer show mem:a7Bc3x
|
|
|
349
362
|
|
|
350
363
|
```bash
|
|
351
364
|
# Endless Mode 활성화
|
|
352
|
-
claude-memory-layer
|
|
365
|
+
claude-memory-layer endless enable
|
|
353
366
|
|
|
354
367
|
# 상태 확인
|
|
355
|
-
claude-memory-layer status
|
|
368
|
+
claude-memory-layer endless status
|
|
356
369
|
|
|
357
370
|
# 출력 예시:
|
|
358
371
|
# Mode: Endless
|
|
@@ -371,31 +384,75 @@ claude-memory-layer status
|
|
|
371
384
|
|
|
372
385
|
## MCP Desktop Integration
|
|
373
386
|
|
|
374
|
-
|
|
387
|
+
> 현재 상태: MCP server implementation은 `src/extensions/mcp/`로 이동되어 있고,
|
|
388
|
+
> `src/mcp/*`는 compatibility shim입니다. package bin으로
|
|
389
|
+
> `claude-memory-layer-mcp`가 제공됩니다.
|
|
390
|
+
|
|
391
|
+
Claude Desktop 설정은 CLI로 자동 등록할 수 있습니다:
|
|
375
392
|
|
|
376
393
|
```bash
|
|
377
|
-
# MCP 서버 설치
|
|
378
394
|
claude-memory-layer mcp install
|
|
395
|
+
# Config: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
|
|
396
|
+
```
|
|
379
397
|
|
|
380
|
-
|
|
398
|
+
이 명령은 Claude Desktop config의 기존 값을 보존하면서 다음 MCP server entry를 추가/갱신합니다:
|
|
399
|
+
|
|
400
|
+
```json
|
|
381
401
|
{
|
|
382
402
|
"mcpServers": {
|
|
383
403
|
"claude-memory-layer": {
|
|
384
|
-
"command": "
|
|
385
|
-
"args": [
|
|
404
|
+
"command": "claude-memory-layer-mcp",
|
|
405
|
+
"args": []
|
|
386
406
|
}
|
|
387
407
|
}
|
|
388
408
|
}
|
|
389
409
|
```
|
|
390
410
|
|
|
411
|
+
옵션:
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
claude-memory-layer mcp install --dry-run
|
|
415
|
+
claude-memory-layer mcp install --config-path /path/to/claude_desktop_config.json
|
|
416
|
+
claude-memory-layer mcp install --server-name claude-memory-layer --command claude-memory-layer-mcp
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
설정 후 Claude Desktop을 재시작하면 MCP 서버가 로드됩니다. Codex/Hermes처럼 MCP client가 있는 다른 agent에는 로컬 checkout의 built server를 직접 등록할 수 있습니다:
|
|
420
|
+
|
|
421
|
+
```bash
|
|
422
|
+
# Codex
|
|
423
|
+
codex mcp add claude-memory-layer -- node /path/to/claude-memory-layer/dist/mcp/index.js
|
|
424
|
+
|
|
425
|
+
# Hermes
|
|
426
|
+
hermes mcp add claude-memory-layer --command node --args /path/to/claude-memory-layer/dist/mcp/index.js
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
로컬 checkout에서 서버만 바로 테스트하려면 `npm run build` 후 다음처럼 직접 실행할 수도 있습니다:
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
node dist/mcp/index.js
|
|
433
|
+
```
|
|
434
|
+
|
|
391
435
|
### 제공되는 MCP 도구
|
|
392
436
|
|
|
393
437
|
| 도구 | 설명 |
|
|
394
438
|
|------|------|
|
|
395
|
-
| `mem-search` | 메모리 검색 |
|
|
396
|
-
| `mem-timeline` |
|
|
397
|
-
| `mem-details` | 상세 정보 조회 |
|
|
398
|
-
| `mem-stats` | 통계 조회 |
|
|
439
|
+
| `mem-search` | 메모리 검색 (`projectPath`를 주면 프로젝트별 저장소 검색) |
|
|
440
|
+
| `mem-timeline` | 특정 memory IDs 주변 chronological context 조회 (`projectPath` 지원) |
|
|
441
|
+
| `mem-details` | 상세 정보 조회 (`projectPath` 지원) |
|
|
442
|
+
| `mem-stats` | 통계 조회 (`projectPath` 지원) |
|
|
443
|
+
| `mem-context-pack` | 작업 시작용 compact context pack. query 관련 memory + 최근 project timeline + follow-up refs를 한 번에 반환 |
|
|
444
|
+
| `mem-project-timeline` | 최근 project memory를 session/source/event-count/safe-preview 기준으로 요약 |
|
|
445
|
+
| `mem-source-ref` | `mem:<citation>` 또는 `event:<id>`를 privacy-safe source reference와 redacted preview로 해석 |
|
|
446
|
+
|
|
447
|
+
예시 workflow:
|
|
448
|
+
|
|
449
|
+
```text
|
|
450
|
+
1. 새 작업 시작: mem-context-pack(projectPath, query)
|
|
451
|
+
2. 최근 흐름 확인: mem-project-timeline(projectPath)
|
|
452
|
+
3. 근거가 더 필요할 때: mem-source-ref(projectPath, ids=["mem:abc123"])
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
이 workflow는 Hermes/Codex/Claude Code가 같은 project-scoped memory backend를 공유할 때 특히 유용합니다. `mem-source-ref`는 raw transcript를 그대로 덤프하지 않고 allowlisted metadata와 privacy-filtered preview만 반환합니다.
|
|
399
456
|
|
|
400
457
|
## Web Viewer
|
|
401
458
|
|
|
@@ -451,6 +508,50 @@ Skipped duplicates: 0
|
|
|
451
508
|
Embeddings processed: 342
|
|
452
509
|
```
|
|
453
510
|
|
|
511
|
+
### Codex 세션 임포트
|
|
512
|
+
|
|
513
|
+
Codex CLI 기록(`~/.codex/sessions`)은 기본적으로 read-only validate/replay로 먼저 확인하고, 명시적 import 명령으로만 메모리에 저장합니다:
|
|
514
|
+
|
|
515
|
+
```bash
|
|
516
|
+
# 읽기 전용 검증/리포트
|
|
517
|
+
npx claude-memory-layer codex validate --project /path/to/project --format markdown
|
|
518
|
+
|
|
519
|
+
# 현재 프로젝트 Codex 세션을 프로젝트별 메모리로 import
|
|
520
|
+
cd /path/to/project
|
|
521
|
+
npx claude-memory-layer codex import
|
|
522
|
+
|
|
523
|
+
# 특정 세션만 import
|
|
524
|
+
npx claude-memory-layer codex import --project /path/to/project --session /path/to/session.jsonl
|
|
525
|
+
|
|
526
|
+
# 모든 Codex 세션 import (전역 저장소 사용; 필요할 때만)
|
|
527
|
+
npx claude-memory-layer codex import --all --verbose
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
옵션: `--sessions-dir`, `--limit`, `--force`, `--no-process-embeddings`.
|
|
531
|
+
|
|
532
|
+
### Hermes 세션 임포트
|
|
533
|
+
|
|
534
|
+
Hermes Agent 기록(`~/.hermes/state.db`)도 원본 DB를 read-only validate/replay로 먼저 확인하고, 명시적 import 명령으로만 프로젝트별 메모리에 저장합니다. 기본 전략은 live sync가 아니라 **SessionDB → CML explicit derived import**입니다:
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
# 읽기 전용 검증/리포트
|
|
538
|
+
npx claude-memory-layer hermes validate --project /path/to/project --format markdown
|
|
539
|
+
|
|
540
|
+
# 현재 프로젝트 Hermes 세션을 프로젝트별 메모리로 import
|
|
541
|
+
cd /path/to/project
|
|
542
|
+
npx claude-memory-layer hermes import
|
|
543
|
+
|
|
544
|
+
# 특정 Hermes session id만 import
|
|
545
|
+
npx claude-memory-layer hermes import --project /path/to/project --session 20260505_010203_abcd1234
|
|
546
|
+
|
|
547
|
+
# 모든 Hermes 세션 import (전역 저장소 사용; 필요할 때만)
|
|
548
|
+
npx claude-memory-layer hermes import --all --verbose
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
옵션: `--state-db`, `--limit`, `--force`, `--no-process-embeddings`.
|
|
552
|
+
|
|
553
|
+
Hermes import는 user/assistant turn만 저장하고 tool/system 메시지는 건너뜁니다. 검증 리포트에는 aggregate count만 포함되며 transcript 본문은 포함하지 않습니다.
|
|
554
|
+
|
|
454
555
|
### 중복 처리
|
|
455
556
|
|
|
456
557
|
임포트는 콘텐츠 해시 기반으로 중복을 자동 감지합니다. 여러 번 실행해도 같은 내용이 중복 저장되지 않습니다.
|
|
@@ -462,7 +563,7 @@ Embeddings processed: 342
|
|
|
462
563
|
```
|
|
463
564
|
사용자 프롬프트 입력
|
|
464
565
|
↓
|
|
465
|
-
EventStore에 저장 (
|
|
566
|
+
EventStore에 저장 (SQLite/WAL, append-only)
|
|
466
567
|
↓
|
|
467
568
|
Outbox에 임베딩 요청 등록
|
|
468
569
|
↓
|
|
@@ -530,7 +631,7 @@ Embeddings processed: 342
|
|
|
530
631
|
▼ ▼
|
|
531
632
|
┌───────────────┐ ┌───────────────┐
|
|
532
633
|
│ EventStore │ ──── Outbox ────▶ │ VectorStore │
|
|
533
|
-
│
|
|
634
|
+
│ (SQLite/WAL) │ (V2 Pattern) │ (LanceDB) │
|
|
534
635
|
└───────────────┘ └───────────────┘
|
|
535
636
|
```
|
|
536
637
|
|
|
@@ -583,12 +684,12 @@ Layer 1: Search Index (~50-100 tokens/result)
|
|
|
583
684
|
|
|
584
685
|
## AXIOMMIND 7 원칙
|
|
585
686
|
|
|
586
|
-
1. **Single Source of Truth**:
|
|
687
|
+
1. **Single Source of Truth**: SQLite/WAL EventStore가 유일한 진실의 원천
|
|
587
688
|
2. **Append-Only**: 이벤트는 수정/삭제 없이 추가만
|
|
588
689
|
3. **Idempotency**: dedupe_key로 중복 이벤트 감지
|
|
589
690
|
4. **Evidence Alignment**: 주장이 실제 소스에 기반했는지 검증
|
|
590
691
|
5. **Entity-Based Tasks**: canonical_key로 일관된 엔티티 식별
|
|
591
|
-
6. **Vector Store Consistency**:
|
|
692
|
+
6. **Vector Store Consistency**: SQLite outbox → LanceDB 단방향 흐름
|
|
592
693
|
7. **Standard JSON**: 모든 데이터는 이식 가능한 JSON 형식
|
|
593
694
|
|
|
594
695
|
## 저장 위치
|
|
@@ -629,15 +730,15 @@ npm run dev
|
|
|
629
730
|
|
|
630
731
|
## 기술 스택
|
|
631
732
|
|
|
632
|
-
- **
|
|
633
|
-
- **LanceDB**: 벡터 저장소 (
|
|
634
|
-
- **@
|
|
733
|
+
- **SQLite / WAL**: 이벤트 저장소 (canonical append/read model)
|
|
734
|
+
- **LanceDB**: 벡터 저장소 (derived acceleration index)
|
|
735
|
+
- **@huggingface/transformers**: 로컬 임베딩 생성 (lazy import; Embedder는 `src/extensions/vector/`)
|
|
635
736
|
- **Zod**: 런타임 타입 검증
|
|
636
737
|
- **Commander**: CLI 인터페이스
|
|
637
738
|
- **TypeScript**: 타입 안전한 코드
|
|
638
|
-
- **
|
|
739
|
+
- **Node.js + Hono**: HTTP 서버 / Web Viewer
|
|
639
740
|
- **Hono**: 경량 라우터
|
|
640
|
-
- **MCP SDK**: Claude Desktop 통합
|
|
741
|
+
- **MCP SDK**: Claude Desktop 통합 (`claude-memory-layer-mcp` stdio server)
|
|
641
742
|
|
|
642
743
|
## Specification Documents
|
|
643
744
|
|
|
@@ -660,30 +761,72 @@ npm run dev
|
|
|
660
761
|
## Roadmap
|
|
661
762
|
|
|
662
763
|
### Phase 1: Core (완료)
|
|
663
|
-
- [x] Event Store (
|
|
764
|
+
- [x] Event Store (SQLite/WAL)
|
|
664
765
|
- [x] Vector Store (LanceDB)
|
|
665
766
|
- [x] Memory Graduation (L0→L4)
|
|
666
767
|
- [x] Evidence Alignment
|
|
667
768
|
- [x] History Import
|
|
668
769
|
|
|
669
770
|
### Phase 2: Advanced Features (진행 중)
|
|
670
|
-
- [
|
|
671
|
-
- [
|
|
672
|
-
- [ ] Entity-Edge Model
|
|
673
|
-
- [
|
|
674
|
-
- [
|
|
771
|
+
- [x] Citations System
|
|
772
|
+
- [x] Endless Mode service boundary *(experimental extension)*
|
|
773
|
+
- [ ] Entity-Edge Model productization
|
|
774
|
+
- [x] Evidence Aligner V2
|
|
775
|
+
- [x] Private Tags
|
|
675
776
|
|
|
676
777
|
### Phase 3: Integration
|
|
677
|
-
- [
|
|
678
|
-
- [
|
|
679
|
-
- [
|
|
680
|
-
- [
|
|
681
|
-
|
|
682
|
-
### Phase 4: Optimization
|
|
683
|
-
- [
|
|
684
|
-
- [
|
|
778
|
+
- [x] MCP Desktop Integration *(stdio server bin exists; auto install command pending)*
|
|
779
|
+
- [x] Web Viewer UI
|
|
780
|
+
- [x] PostToolUse Hook
|
|
781
|
+
- [x] Progressive Disclosure
|
|
782
|
+
|
|
783
|
+
### Phase 4: Optimization / Extension Isolation
|
|
784
|
+
- [x] Vector Outbox V2
|
|
785
|
+
- [x] Embedder extension boundary
|
|
786
|
+
- [ ] VectorStore / VectorWorker extension boundary
|
|
787
|
+
- [ ] Task Entity System productization
|
|
685
788
|
- [ ] Performance Tuning
|
|
686
789
|
|
|
687
790
|
## License
|
|
688
791
|
|
|
689
792
|
MIT
|
|
793
|
+
|
|
794
|
+
## External Market Context (DART/FRED/Finnhub)
|
|
795
|
+
|
|
796
|
+
`claude-memory-layer market-context` fetches read-only external company and market data from environment-configured providers and returns a structured `MarketContextSnapshot` plus a Markdown analysis report.
|
|
797
|
+
|
|
798
|
+
Example:
|
|
799
|
+
|
|
800
|
+
```bash
|
|
801
|
+
export DART_API_KEY=... # env-only; never commit real keys
|
|
802
|
+
export FRED_API_KEY=...
|
|
803
|
+
export FINNHUB_API_KEY=...
|
|
804
|
+
claude-memory-layer market-context \
|
|
805
|
+
--company 삼성전자 \
|
|
806
|
+
--dart-corp-code 00126380 \
|
|
807
|
+
--symbol 005930.KS \
|
|
808
|
+
--providers dart,fred,finnhub \
|
|
809
|
+
--fred-series FEDFUNDS,CPIAUCSL \
|
|
810
|
+
--json
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
Security and behavior:
|
|
814
|
+
|
|
815
|
+
- API keys are read only from `DART_API_KEY`, `FRED_API_KEY`, and `FINNHUB_API_KEY`.
|
|
816
|
+
- `.env*` files are ignored; `.env.example` is placeholder-only.
|
|
817
|
+
- Missing provider keys produce skipped-provider statuses rather than hard failures.
|
|
818
|
+
- Provider requests use bounded timeouts; large FRED series lists are capped to the first 10 unique series.
|
|
819
|
+
- Empty Finnhub profile responses are treated as skipped-provider/no-data results, not profile evidence.
|
|
820
|
+
- Provider errors and rendered reports redact credential-bearing query params such as `crtfc_key`, `api_key`, and `token`.
|
|
821
|
+
- The MCP `external-market-context` tool is read-only and does not initialize or mutate memory storage.
|
|
822
|
+
- `--no-snapshot` / MCP `includeSnapshot: false` disables both `analysis.marketSnapshot` and the DART company snapshot.
|
|
823
|
+
|
|
824
|
+
`MarketContextSnapshot` includes:
|
|
825
|
+
|
|
826
|
+
- `schemaVersion: market-context-snapshot.v1`
|
|
827
|
+
- `subject`: company, DART corpCode, ticker symbol
|
|
828
|
+
- `coverage`: DART/FRED/Finnhub provider status and counts
|
|
829
|
+
- `bullCases`, `bearCases`, `risks`, `catalysts`: deterministic evidence-backed insights
|
|
830
|
+
- `watchlist` and `followUpQuestions`
|
|
831
|
+
|
|
832
|
+
The Markdown report includes a `### MarketContextSnapshot` section with **Bull case**, **Bear case**, **Risks**, and **Catalysts**. DART analysis uses all fetched filings; only the rendered filing list is truncated. If `dartCorpCode` is omitted, company-name fallback is marked low-confidence, so exact DART corp codes are recommended for customer-facing analysis.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "anonymized-real-session-replay-v1",
|
|
3
|
+
"description": "Anonymized real-session-style retrieval replay fixture for Precision@k / Recall@k / nDCG@k / no-match checks.",
|
|
4
|
+
"ks": [1, 3, 5],
|
|
5
|
+
"queries": [
|
|
6
|
+
{
|
|
7
|
+
"queryId": "q-cli-fast",
|
|
8
|
+
"query": "fast search should avoid embedding startup",
|
|
9
|
+
"expectation": "match",
|
|
10
|
+
"expectedIds": ["m-cli-fast", "m-runtime-light"],
|
|
11
|
+
"expectedRelevance": { "m-cli-fast": 3, "m-runtime-light": 2 },
|
|
12
|
+
"knownAnswer": "CLI search --strategy fast uses keyword retrieval and should not start embedding model initialization."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"queryId": "q-hook-policy",
|
|
16
|
+
"query": "hook should not inject weak keyword rescue",
|
|
17
|
+
"expectation": "match",
|
|
18
|
+
"expectedIds": ["m-hook-policy", "m-hook-threshold"],
|
|
19
|
+
"expectedRelevance": { "m-hook-policy": 3, "m-hook-threshold": 2 },
|
|
20
|
+
"knownAnswer": "Claude hook prompt injection has a separate conservative policy for high-confidence memories."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"queryId": "q-replay-bench",
|
|
24
|
+
"query": "precision recall replay benchmark output",
|
|
25
|
+
"expectation": "match",
|
|
26
|
+
"expectedIds": ["m-benchmark", "m-metrics"],
|
|
27
|
+
"expectedRelevance": { "m-benchmark": 3, "m-metrics": 2 },
|
|
28
|
+
"knownAnswer": "Replay benchmark reports Precision@k and Recall@k over anonymized session queries."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"queryId": "q-no-match-command-artifact",
|
|
32
|
+
"query": "local-command-stdout command-name opus",
|
|
33
|
+
"expectation": "no_match",
|
|
34
|
+
"expectedIds": [],
|
|
35
|
+
"expectedRelevance": {},
|
|
36
|
+
"forbiddenIds": ["m-cli-fast", "m-hook-policy", "m-benchmark"]
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"memories": [
|
|
40
|
+
{ "id": "m-cli-fast", "content": "CLI search --strategy fast uses keyword retrieval and should not start embedding model initialization." },
|
|
41
|
+
{ "id": "m-runtime-light", "content": "Lightweight read paths initialize SQLite event-store only and avoid vector/embedder workers." },
|
|
42
|
+
{ "id": "m-hook-policy", "content": "Claude hook prompt injection has a separate conservative policy for high-confidence memories." },
|
|
43
|
+
{ "id": "m-hook-threshold", "content": "Low-confidence keyword fallback can remain searchable but should not be injected into prompts." },
|
|
44
|
+
{ "id": "m-benchmark", "content": "Replay benchmark reports Precision@k and Recall@k over anonymized session queries." },
|
|
45
|
+
{ "id": "m-metrics", "content": "Metric summaries average per-query precision and recall for k values one three and five." },
|
|
46
|
+
{ "id": "m-noise", "content": "Unrelated dashboard styling note for visual spacing." }
|
|
47
|
+
]
|
|
48
|
+
}
|