claude-memory-layer 1.0.27 → 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 -419
- 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 -157
- 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 -33
- package/memory/user_prompt/uncategorized/2026-02-26.md +0 -25
- package/memory/user_prompt/uncategorized/2026-03-04.md +0 -634
- package/memory/user_prompt/uncategorized/2026-03-05.md +0 -6
- 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
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
# claude-memory-layer 프로젝트 구조 분석
|
|
2
|
+
|
|
3
|
+
## 한 줄 요약
|
|
4
|
+
`claude-memory-layer`는 단순한 “메모리 플러그인”을 넘어, **Claude Code용 훅 기반 메모리 수집기 + 로컬 저장소 + 벡터 검색 + 대시보드 + 일부 공유/협업 기능**까지 포함한 **로컬 메모리 플랫폼**에 가깝다.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. 프로젝트 목적과 현재 포지셔닝
|
|
9
|
+
|
|
10
|
+
이 저장소의 중심 목적은 다음이다.
|
|
11
|
+
|
|
12
|
+
- Claude Code 세션/턴/툴 사용 기록을 구조적으로 수집
|
|
13
|
+
- 프로젝트 단위로 메모리를 격리 저장
|
|
14
|
+
- 과거 대화/툴 결과를 이후 세션에서 재활용
|
|
15
|
+
- 대시보드/API를 통해 메모리 상태를 관찰
|
|
16
|
+
- 필요 시 shared memory, Mongo sync, MCP 같은 확장 경로를 제공
|
|
17
|
+
|
|
18
|
+
즉, 이 프로젝트는 **로컬 우선(local-first)** 철학 위에서,
|
|
19
|
+
|
|
20
|
+
1. **수집(Capture)**
|
|
21
|
+
2. **저장(Store)**
|
|
22
|
+
3. **임베딩/색인(Index)**
|
|
23
|
+
4. **검색/회상(Retrieve)**
|
|
24
|
+
5. **관찰/운영(Observe/Operate)**
|
|
25
|
+
|
|
26
|
+
까지 한 번에 다루는 구조다.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 2. 기술 스택
|
|
31
|
+
|
|
32
|
+
### 런타임 / 언어
|
|
33
|
+
- Node.js 18+
|
|
34
|
+
- TypeScript (ESM)
|
|
35
|
+
- esbuild 기반 빌드
|
|
36
|
+
|
|
37
|
+
### 주요 라이브러리
|
|
38
|
+
- CLI: `commander`
|
|
39
|
+
- 서버/API: `hono`, `@hono/node-server`
|
|
40
|
+
- 로컬 DB: `better-sqlite3`
|
|
41
|
+
- 벡터 저장소: `@lancedb/lancedb`
|
|
42
|
+
- 로컬 임베딩: `@xenova/transformers`
|
|
43
|
+
- 선택적 동기화: `mongodb`
|
|
44
|
+
|
|
45
|
+
### 대표 엔트리 포인트
|
|
46
|
+
- CLI: `src/cli/index.ts`
|
|
47
|
+
- 대시보드/REST 서버: `src/server/index.ts`
|
|
48
|
+
- 훅들: `src/hooks/*.ts`
|
|
49
|
+
- 메모리 오케스트레이션: `src/services/memory-service.ts`
|
|
50
|
+
- 핵심 검색/저장 계층: `src/core/*`
|
|
51
|
+
- MCP 관련 코드: `src/mcp/*`
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 3. 디렉터리 구조 분석
|
|
56
|
+
|
|
57
|
+
### `src/core/`
|
|
58
|
+
가장 중요한 도메인 계층이다. 실질적인 메모리 모델과 검색 로직 대부분이 여기 있다.
|
|
59
|
+
|
|
60
|
+
핵심 역할:
|
|
61
|
+
- 이벤트 저장소
|
|
62
|
+
- 벡터 저장소
|
|
63
|
+
- 임베딩 큐/워커
|
|
64
|
+
- 검색기(retriever)
|
|
65
|
+
- 매처(matcher)
|
|
66
|
+
- 점진적 검색(progressive retrieval)
|
|
67
|
+
- 엔티티/엣지/태스크 관련 구조
|
|
68
|
+
- markdown mirror
|
|
69
|
+
- shared store
|
|
70
|
+
- privacy filter
|
|
71
|
+
- endless/consolidation 관련 구조
|
|
72
|
+
|
|
73
|
+
대표 파일:
|
|
74
|
+
- `sqlite-event-store.ts`
|
|
75
|
+
- `vector-store.ts`
|
|
76
|
+
- `vector-worker.ts`
|
|
77
|
+
- `retriever.ts`
|
|
78
|
+
- `progressive-retriever.ts`
|
|
79
|
+
- `matcher.ts`
|
|
80
|
+
- `entity-repo.ts`
|
|
81
|
+
- `edge-repo.ts`
|
|
82
|
+
- `working-set-store.ts`
|
|
83
|
+
- `consolidated-store.ts`
|
|
84
|
+
- `markdown-mirror.ts`
|
|
85
|
+
- `shared-event-store.ts`
|
|
86
|
+
|
|
87
|
+
### `src/services/`
|
|
88
|
+
실질적인 애플리케이션 서비스 계층이다.
|
|
89
|
+
|
|
90
|
+
대표 파일:
|
|
91
|
+
- `memory-service.ts`: 전체 메모리 시스템의 중심 오케스트레이터
|
|
92
|
+
- `session-history-importer.ts`: 기존 Claude transcript import
|
|
93
|
+
- `codex-session-history-importer.ts`: Codex 계열 import
|
|
94
|
+
- `bootstrap-organizer.ts`: 초기 지식 부트스트랩/정리
|
|
95
|
+
|
|
96
|
+
### `src/hooks/`
|
|
97
|
+
Claude Code 훅 기반 자동 수집의 진입점이다.
|
|
98
|
+
|
|
99
|
+
대표 파일:
|
|
100
|
+
- `session-start.ts`
|
|
101
|
+
- `user-prompt-submit.ts`
|
|
102
|
+
- `post-tool-use.ts`
|
|
103
|
+
- `stop.ts`
|
|
104
|
+
- `session-end.ts`
|
|
105
|
+
- `semantic-daemon.ts`
|
|
106
|
+
- `semantic-daemon-client.ts`
|
|
107
|
+
|
|
108
|
+
이 구조 덕분에 Claude Code lifecycle에 깊게 붙을 수 있다.
|
|
109
|
+
|
|
110
|
+
### `src/server/`
|
|
111
|
+
로컬 서버 + REST API 계층이다.
|
|
112
|
+
|
|
113
|
+
주요 API:
|
|
114
|
+
- `/sessions`
|
|
115
|
+
- `/events`
|
|
116
|
+
- `/search`
|
|
117
|
+
- `/stats`
|
|
118
|
+
- `/citations`
|
|
119
|
+
- `/turns`
|
|
120
|
+
- `/projects`
|
|
121
|
+
- `/chat`
|
|
122
|
+
- `/health`
|
|
123
|
+
|
|
124
|
+
### `src/ui/`
|
|
125
|
+
정적 HTML/CSS/JS 기반 로컬 대시보드다.
|
|
126
|
+
프론트엔드 프레임워크 없이 단일 앱 스타일로 구성되어 있어 배포는 단순하지만, UI가 커질수록 유지보수 난도가 올라갈 수 있다.
|
|
127
|
+
|
|
128
|
+
### `src/mcp/`
|
|
129
|
+
MCP 서버 관련 코드가 존재한다.
|
|
130
|
+
다만 현재 패키징/빌드/문서와의 정합성이 완전히 맞아 떨어지지는 않아 보이며, 일부는 “준비 중/부분 구현” 상태로 해석하는 것이 안전하다.
|
|
131
|
+
|
|
132
|
+
### 기타
|
|
133
|
+
- `.claude-plugin/`: Claude plugin manifest / hook 설정
|
|
134
|
+
- `tests/`: 핵심 로직 단위 테스트
|
|
135
|
+
- `scripts/`: 운영/빌드/헬스체크/버전업 스크립트
|
|
136
|
+
- `specs/`: 기능별 설계 문서와 구현 계획
|
|
137
|
+
- `docs/`: 운영 및 비교 문서
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 4. 데이터 저장 구조
|
|
142
|
+
|
|
143
|
+
이 프로젝트는 생각보다 훨씬 많은 저장 계층을 가진다.
|
|
144
|
+
|
|
145
|
+
### 4.1 프로젝트 격리 저장
|
|
146
|
+
프로젝트별 경로 해시를 기준으로 저장소를 분리한다.
|
|
147
|
+
|
|
148
|
+
예상 구조:
|
|
149
|
+
- `~/.claude-code/memory/projects/<project-hash>/...`
|
|
150
|
+
|
|
151
|
+
장점:
|
|
152
|
+
- 프로젝트간 contamination 방지
|
|
153
|
+
- 검색 범위 제어가 쉬움
|
|
154
|
+
|
|
155
|
+
### 4.2 세션 레지스트리
|
|
156
|
+
세션 ID → 프로젝트 매핑을 별도 registry에 유지한다.
|
|
157
|
+
|
|
158
|
+
장점:
|
|
159
|
+
- 훅이 현재 어느 프로젝트 저장소를 써야 하는지 빠르게 판단 가능
|
|
160
|
+
|
|
161
|
+
### 4.3 SQLite primary store
|
|
162
|
+
핵심 사실: README 일부는 DuckDB 중심처럼 보이지만, 실제 구현의 중심은 **SQLite(WAL)** 이다.
|
|
163
|
+
|
|
164
|
+
SQLite 내부 테이블은 단순 events 수준이 아니라 꽤 확장되어 있다.
|
|
165
|
+
예:
|
|
166
|
+
- `events`
|
|
167
|
+
- `sessions`
|
|
168
|
+
- `embedding_outbox`
|
|
169
|
+
- `memory_levels`
|
|
170
|
+
- `entries`
|
|
171
|
+
- `entities`
|
|
172
|
+
- `entity_aliases`
|
|
173
|
+
- `edges`
|
|
174
|
+
- `vector_outbox`
|
|
175
|
+
- `working_set`
|
|
176
|
+
- `consolidated_memories`
|
|
177
|
+
- `continuity_log`
|
|
178
|
+
- `memory_helpfulness`
|
|
179
|
+
- `retrieval_traces`
|
|
180
|
+
- `sync_positions`
|
|
181
|
+
|
|
182
|
+
즉, 단순 로그 저장소가 아니라 **이벤트 + 파생 메모리 + 그래프 + 운영 telemetry**가 한 DB에 공존한다.
|
|
183
|
+
|
|
184
|
+
### 4.4 LanceDB vector index
|
|
185
|
+
벡터 검색용 테이블 `conversations` 를 별도로 유지한다.
|
|
186
|
+
|
|
187
|
+
흐름:
|
|
188
|
+
- 이벤트 저장
|
|
189
|
+
- 임베딩 outbox 기록
|
|
190
|
+
- background worker가 임베딩 생성
|
|
191
|
+
- LanceDB에 upsert
|
|
192
|
+
|
|
193
|
+
### 4.5 Markdown mirror
|
|
194
|
+
일부 메모리는 markdown 형태로도 mirror 된다.
|
|
195
|
+
|
|
196
|
+
의미:
|
|
197
|
+
- 사람이 읽기 쉬움
|
|
198
|
+
- git 연동/백업/감사 측면 유리
|
|
199
|
+
- 하지만 저장 계층이 또 하나 늘어남
|
|
200
|
+
|
|
201
|
+
### 4.6 Shared / Mongo sync
|
|
202
|
+
공유 메모리, 다중 장치/다중 프로젝트 공유를 위한 구조가 이미 들어가 있다.
|
|
203
|
+
이건 장점이지만 복잡도를 크게 올리는 요인이다.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 5. 수집 파이프라인
|
|
208
|
+
|
|
209
|
+
이 프로젝트의 가장 큰 강점 중 하나는 **hook-based capture pipeline** 이다.
|
|
210
|
+
|
|
211
|
+
### `SessionStart`
|
|
212
|
+
- 세션 등록
|
|
213
|
+
- 최근 메모리 요약 주입
|
|
214
|
+
- semantic daemon 시작 시도
|
|
215
|
+
|
|
216
|
+
### `UserPromptSubmit`
|
|
217
|
+
- 사용자 프롬프트 저장
|
|
218
|
+
- retrieval gate 판단
|
|
219
|
+
- semantic retrieval / fallback retrieval 수행
|
|
220
|
+
- trace/helpfulness 기록
|
|
221
|
+
|
|
222
|
+
### `PostToolUse`
|
|
223
|
+
- 의미 있는 툴 출력만 선택 수집
|
|
224
|
+
- privacy 필터 적용
|
|
225
|
+
- turn과 연결
|
|
226
|
+
|
|
227
|
+
### `Stop`
|
|
228
|
+
- transcript JSONL에서 마지막 assistant 출력 복원
|
|
229
|
+
- 응답 저장
|
|
230
|
+
- helpfulness/summary 계산
|
|
231
|
+
|
|
232
|
+
### `SessionEnd`
|
|
233
|
+
- 세션 마무리 요약/정리
|
|
234
|
+
|
|
235
|
+
이 구조는 “Claude Code가 실제로 어떤 작업을 했는지”를 비교적 풍부하게 재현할 수 있다는 장점이 있다.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 6. 검색 구조
|
|
240
|
+
|
|
241
|
+
검색은 단순 벡터 검색이 아니라 여러 층으로 되어 있다.
|
|
242
|
+
|
|
243
|
+
### 주요 구성요소
|
|
244
|
+
- `retriever.ts`
|
|
245
|
+
- `matcher.ts`
|
|
246
|
+
- `progressive-retriever.ts`
|
|
247
|
+
- `semantic-daemon.ts`
|
|
248
|
+
|
|
249
|
+
### 특징
|
|
250
|
+
- vector + keyword 조합
|
|
251
|
+
- fallback chain
|
|
252
|
+
- retrieval trace 기록
|
|
253
|
+
- confidence band
|
|
254
|
+
- progressive disclosure
|
|
255
|
+
- 필요 시 shared scope 확장
|
|
256
|
+
|
|
257
|
+
즉, “한 번 검색해서 끝”이 아니라,
|
|
258
|
+
**빠른 후보 → 더 깊은 후보 → 범위 확장 → 요약 fallback** 식의 다단계 검색으로 설계되어 있다.
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 7. 서버/API/대시보드 구조
|
|
263
|
+
|
|
264
|
+
### 서버
|
|
265
|
+
`src/server/index.ts` 에서 로컬 서버를 띄워 API와 정적 UI를 함께 제공한다.
|
|
266
|
+
|
|
267
|
+
### API 역할
|
|
268
|
+
- 검색
|
|
269
|
+
- 세션/이벤트 조회
|
|
270
|
+
- 통계
|
|
271
|
+
- citations
|
|
272
|
+
- 프로젝트 정보
|
|
273
|
+
- health
|
|
274
|
+
- chat proxy
|
|
275
|
+
|
|
276
|
+
### UI
|
|
277
|
+
`src/ui/app.js` 단일 스크립트에 기능이 많이 몰려 있는 편이다.
|
|
278
|
+
|
|
279
|
+
장점:
|
|
280
|
+
- 프레임워크 의존이 적음
|
|
281
|
+
- 빌드가 단순함
|
|
282
|
+
|
|
283
|
+
단점:
|
|
284
|
+
- 커질수록 모듈성/테스트/상태관리 한계가 생김
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## 8. 테스트 / 품질 신호
|
|
289
|
+
|
|
290
|
+
대략적인 성격:
|
|
291
|
+
- 핵심 로직 단위 테스트는 존재
|
|
292
|
+
- retriever / matcher / mirror / consolidator 쪽은 확인 가능
|
|
293
|
+
- 하지만 end-to-end 훅 흐름, 대시보드 UI, MCP 서버 전체가 아주 탄탄하게 검증되는 구조는 아직 아님
|
|
294
|
+
|
|
295
|
+
즉,
|
|
296
|
+
- **core 로직 신뢰도는 중상**
|
|
297
|
+
- **전체 운영 플로우 신뢰도는 추가 E2E 보강 필요**
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## 9. 아키텍처 강점
|
|
302
|
+
|
|
303
|
+
### 강점 1: 실제 사용 흐름에 밀착한 hook 중심 구조
|
|
304
|
+
Claude Code lifecycle에 직접 붙기 때문에 “기억할 만한 작업”을 비교적 자연스럽게 수집할 수 있다.
|
|
305
|
+
|
|
306
|
+
### 강점 2: `MemoryService` 중심 오케스트레이션
|
|
307
|
+
메모리 시스템 전체를 서비스 계층 하나로 묶어둔 점은 구조적으로 좋다.
|
|
308
|
+
|
|
309
|
+
### 강점 3: 다층 검색 전략
|
|
310
|
+
vector-only보다 훨씬 실용적이다.
|
|
311
|
+
|
|
312
|
+
### 강점 4: 프로젝트 격리 + 관찰성
|
|
313
|
+
project-local memory, retrieval traces, helpfulness, dashboard까지 있어 운영 관점에서 강하다.
|
|
314
|
+
|
|
315
|
+
### 강점 5: 확장성의 씨앗이 많다
|
|
316
|
+
shared store, entity-edge model, task 모델, MCP, bootstrap import 등이 이미 존재한다.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## 10. 구조적 리스크 / 약점
|
|
321
|
+
|
|
322
|
+
### 약점 1: 시스템이 무거워지고 있다
|
|
323
|
+
현재는 다음이 동시에 있다.
|
|
324
|
+
- hooks
|
|
325
|
+
- semantic daemon
|
|
326
|
+
- vector worker
|
|
327
|
+
- dashboard server
|
|
328
|
+
- SQLite
|
|
329
|
+
- LanceDB
|
|
330
|
+
- markdown mirror
|
|
331
|
+
- shared store
|
|
332
|
+
- optional Mongo sync
|
|
333
|
+
- entity/task graph
|
|
334
|
+
- endless/consolidation
|
|
335
|
+
|
|
336
|
+
이 정도면 “plugin” 수준을 넘어선다.
|
|
337
|
+
|
|
338
|
+
### 약점 2: 문서와 구현의 drift
|
|
339
|
+
분석상 아래와 같은 drift가 보인다.
|
|
340
|
+
- README 상 DuckDB vs 실제 SQLite
|
|
341
|
+
- README 상 Bun 서술 vs 실제 Hono node-server
|
|
342
|
+
- MCP 문서 vs 실제 packaging/entry wiring 간 어긋남
|
|
343
|
+
|
|
344
|
+
이건 신규 기여자/미래의 본인에게 큰 비용이다.
|
|
345
|
+
|
|
346
|
+
### 약점 3: 기능 간 중첩 가능성
|
|
347
|
+
- event store
|
|
348
|
+
- markdown mirror
|
|
349
|
+
- shared store
|
|
350
|
+
- consolidated store
|
|
351
|
+
- working set
|
|
352
|
+
- continuity log
|
|
353
|
+
이런 계층이 많아지면 “어떤 것이 source of truth인지”가 흐려질 위험이 있다.
|
|
354
|
+
|
|
355
|
+
### 약점 4: 운영 프로세스 수 증가
|
|
356
|
+
daemon/worker/server/hook 조합은 디버깅 난이도를 높인다.
|
|
357
|
+
|
|
358
|
+
### 약점 5: 일부 기능은 아직 덜 닫혀 보임
|
|
359
|
+
MCP, shared, 일부 spec-driven 기능은 코드는 있으나 제품 surface는 덜 정리된 인상이 있다.
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## 11. 유지보수 관점 평가
|
|
364
|
+
|
|
365
|
+
이 프로젝트는 **기술적으로 흥미롭고 강한 기반**을 갖고 있지만,
|
|
366
|
+
현재 구조를 그대로 계속 확장하면 다음 문제가 생길 가능성이 높다.
|
|
367
|
+
|
|
368
|
+
- 기능 추가 속도는 느려짐
|
|
369
|
+
- 버그 원인 추적이 어려워짐
|
|
370
|
+
- 데이터 정합성 이슈가 생길 수 있음
|
|
371
|
+
- 문서 부채가 빨리 증가함
|
|
372
|
+
- “코어 메모리”보다 주변 기능 운영 비용이 더 커질 수 있음
|
|
373
|
+
|
|
374
|
+
즉, 지금 시점에서 필요한 건 “기능 더 추가”보다 **코어/확장/실험 계층 분리**다.
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## 12. 가장 중요한 구조적 해석
|
|
379
|
+
|
|
380
|
+
이 저장소는 현재 사실상 3개의 제품이 한곳에 들어있다.
|
|
381
|
+
|
|
382
|
+
1. **코어 메모리 엔진**
|
|
383
|
+
- 이벤트 저장
|
|
384
|
+
- retrieval
|
|
385
|
+
- embedding/index
|
|
386
|
+
|
|
387
|
+
2. **Claude 통합 제품**
|
|
388
|
+
- hooks
|
|
389
|
+
- plugin manifest
|
|
390
|
+
- transcript import
|
|
391
|
+
|
|
392
|
+
3. **실험/확장 플랫폼**
|
|
393
|
+
- shared store
|
|
394
|
+
- Mongo sync
|
|
395
|
+
- MCP
|
|
396
|
+
- entity/task graph
|
|
397
|
+
- endless/consolidation
|
|
398
|
+
- dashboard analytics
|
|
399
|
+
|
|
400
|
+
이 셋을 명확히 분리하지 않으면 관리비가 계속 오른다.
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## 13. 결론
|
|
405
|
+
|
|
406
|
+
`claude-memory-layer`는 이미 **작고 예쁜 유틸리티**가 아니라,
|
|
407
|
+
**강한 기능을 가진 로컬 메모리 플랫폼**이다.
|
|
408
|
+
|
|
409
|
+
좋은 점은:
|
|
410
|
+
- 실제 사용 가치가 있는 구조를 이미 많이 갖췄고
|
|
411
|
+
- 검색/수집/운영 관점이 모두 살아 있으며
|
|
412
|
+
- 발전 가능성이 매우 크다.
|
|
413
|
+
|
|
414
|
+
하지만 동시에:
|
|
415
|
+
- 구조가 빠르게 비대해지고 있고
|
|
416
|
+
- 문서/구현 drift가 생기고 있으며
|
|
417
|
+
- 앞으로는 “무엇을 더 넣을지”보다 “무엇을 코어에서 분리할지”가 더 중요하다.
|
|
418
|
+
|
|
419
|
+
이 프로젝트는 충분히 더 강해질 수 있다.
|
|
420
|
+
다만 그 방향은 **기능 추가형 비대화**보다,
|
|
421
|
+
**얇은 코어 + 선택형 확장 모듈** 구조로 가는 것이 더 유리해 보인다.
|