memento-mcp-server 1.6.0 → 1.7.2
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/INSTALL.en.md +303 -303
- package/INSTALL.md +303 -303
- package/README.en.md +331 -330
- package/README.md +432 -432
- package/dist/algorithms/hybrid-search-engine.d.ts +114 -44
- package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
- package/dist/algorithms/hybrid-search-engine.js +261 -235
- package/dist/algorithms/hybrid-search-engine.js.map +1 -1
- package/dist/algorithms/search-engine.d.ts +2 -14
- package/dist/algorithms/search-engine.d.ts.map +1 -1
- package/dist/algorithms/search-engine.js +43 -35
- package/dist/algorithms/search-engine.js.map +1 -1
- package/dist/algorithms/vector-search-engine-migration.d.ts +67 -0
- package/dist/algorithms/vector-search-engine-migration.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine-migration.js +196 -0
- package/dist/algorithms/vector-search-engine-migration.js.map +1 -0
- package/dist/algorithms/vector-search-engine-refactored.d.ts +56 -0
- package/dist/algorithms/vector-search-engine-refactored.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine-refactored.js +101 -0
- package/dist/algorithms/vector-search-engine-refactored.js.map +1 -0
- package/dist/algorithms/vector-search-engine.d.ts +9 -2
- package/dist/algorithms/vector-search-engine.d.ts.map +1 -1
- package/dist/algorithms/vector-search-engine.js +245 -121
- package/dist/algorithms/vector-search-engine.js.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +34 -11
- package/dist/client/index.js.map +1 -1
- package/dist/config/environment.d.ts +26 -0
- package/dist/config/environment.d.ts.map +1 -0
- package/dist/config/environment.js +103 -0
- package/dist/config/environment.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +29 -50
- package/dist/config/index.js.map +1 -1
- package/dist/config/vector-search.config.d.ts +25 -0
- package/dist/config/vector-search.config.d.ts.map +1 -0
- package/dist/config/vector-search.config.js +40 -0
- package/dist/config/vector-search.config.js.map +1 -0
- package/dist/database/init.d.ts.map +1 -1
- package/dist/database/init.js +154 -17
- package/dist/database/init.js.map +1 -1
- package/dist/database/migrate.d.ts +2 -1
- package/dist/database/migrate.d.ts.map +1 -1
- package/dist/database/migrate.js +191 -18
- package/dist/database/migrate.js.map +1 -1
- package/dist/database/schema.sql +234 -159
- package/dist/factories/hybrid-search.factory.d.ts +20 -0
- package/dist/factories/hybrid-search.factory.d.ts.map +1 -0
- package/dist/factories/hybrid-search.factory.js +57 -0
- package/dist/factories/hybrid-search.factory.js.map +1 -0
- package/dist/factories/spaced-repetition.factory.d.ts +48 -0
- package/dist/factories/spaced-repetition.factory.d.ts.map +1 -0
- package/dist/factories/spaced-repetition.factory.js +187 -0
- package/dist/factories/spaced-repetition.factory.js.map +1 -0
- package/dist/factories/vector-search.factory.d.ts +25 -0
- package/dist/factories/vector-search.factory.d.ts.map +1 -0
- package/dist/factories/vector-search.factory.js +47 -0
- package/dist/factories/vector-search.factory.js.map +1 -0
- package/dist/interfaces/database.interface.d.ts +36 -0
- package/dist/interfaces/database.interface.d.ts.map +1 -0
- package/dist/interfaces/database.interface.js +6 -0
- package/dist/interfaces/database.interface.js.map +1 -0
- package/dist/interfaces/spaced-repetition.interface.d.ts +63 -0
- package/dist/interfaces/spaced-repetition.interface.d.ts.map +1 -0
- package/dist/interfaces/spaced-repetition.interface.js +6 -0
- package/dist/interfaces/spaced-repetition.interface.js.map +1 -0
- package/dist/repositories/vector-performance.repository.d.ts +25 -0
- package/dist/repositories/vector-performance.repository.d.ts.map +1 -0
- package/dist/repositories/vector-performance.repository.js +134 -0
- package/dist/repositories/vector-performance.repository.js.map +1 -0
- package/dist/repositories/vector-search.repository.d.ts +43 -0
- package/dist/repositories/vector-search.repository.d.ts.map +1 -0
- package/dist/repositories/vector-search.repository.js +377 -0
- package/dist/repositories/vector-search.repository.js.map +1 -0
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +25 -24
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -7
- package/dist/server/index.js.map +1 -1
- package/dist/services/alert-notification-service.d.ts +16 -0
- package/dist/services/alert-notification-service.d.ts.map +1 -0
- package/dist/services/alert-notification-service.js +44 -0
- package/dist/services/alert-notification-service.js.map +1 -0
- package/dist/services/async-optimizer.d.ts +62 -8
- package/dist/services/async-optimizer.d.ts.map +1 -1
- package/dist/services/async-optimizer.js +137 -8
- package/dist/services/async-optimizer.js.map +1 -1
- package/dist/services/batch-scheduler.d.ts +6 -0
- package/dist/services/batch-scheduler.d.ts.map +1 -1
- package/dist/services/batch-scheduler.js +59 -19
- package/dist/services/batch-scheduler.js.map +1 -1
- package/dist/services/cache-service.d.ts +32 -0
- package/dist/services/cache-service.d.ts.map +1 -1
- package/dist/services/cache-service.js +81 -6
- package/dist/services/cache-service.js.map +1 -1
- package/dist/services/database-optimizer.js +63 -63
- package/dist/services/database-optimizer.js.map +1 -1
- package/dist/services/embedding-migration-service.d.ts +24 -0
- package/dist/services/embedding-migration-service.d.ts.map +1 -0
- package/dist/services/embedding-migration-service.js +360 -0
- package/dist/services/embedding-migration-service.js.map +1 -0
- package/dist/services/embedding-provider-factory.d.ts +12 -5
- package/dist/services/embedding-provider-factory.d.ts.map +1 -1
- package/dist/services/embedding-provider-factory.js +107 -26
- package/dist/services/embedding-provider-factory.js.map +1 -1
- package/dist/services/forgetting-policy-service.js +17 -17
- package/dist/services/gemini-embedding-service.d.ts +1 -1
- package/dist/services/gemini-embedding-service.d.ts.map +1 -1
- package/dist/services/gemini-embedding-service.js +25 -18
- package/dist/services/gemini-embedding-service.js.map +1 -1
- package/dist/services/memory-embedding-service.d.ts +8 -0
- package/dist/services/memory-embedding-service.d.ts.map +1 -1
- package/dist/services/memory-embedding-service.js +180 -71
- package/dist/services/memory-embedding-service.js.map +1 -1
- package/dist/services/migration-history-service.d.ts +14 -0
- package/dist/services/migration-history-service.d.ts.map +1 -0
- package/dist/services/migration-history-service.js +270 -0
- package/dist/services/migration-history-service.js.map +1 -0
- package/dist/services/migration-monitor-service.d.ts +24 -0
- package/dist/services/migration-monitor-service.d.ts.map +1 -0
- package/dist/services/migration-monitor-service.js +93 -0
- package/dist/services/migration-monitor-service.js.map +1 -0
- package/dist/services/model-availability-service.d.ts +22 -0
- package/dist/services/model-availability-service.d.ts.map +1 -0
- package/dist/services/model-availability-service.js +140 -0
- package/dist/services/model-availability-service.js.map +1 -0
- package/dist/services/openai-embedding-service.d.ts +36 -0
- package/dist/services/openai-embedding-service.d.ts.map +1 -0
- package/dist/services/openai-embedding-service.js +192 -0
- package/dist/services/openai-embedding-service.js.map +1 -0
- package/dist/services/performance-monitor.d.ts +154 -10
- package/dist/services/performance-monitor.d.ts.map +1 -1
- package/dist/services/performance-monitor.js +446 -60
- package/dist/services/performance-monitor.js.map +1 -1
- package/dist/services/spaced-repetition/interval-calculation.service.d.ts +38 -0
- package/dist/services/spaced-repetition/interval-calculation.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/interval-calculation.service.js +105 -0
- package/dist/services/spaced-repetition/interval-calculation.service.js.map +1 -0
- package/dist/services/spaced-repetition/optimal-interval.service.d.ts +56 -0
- package/dist/services/spaced-repetition/optimal-interval.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/optimal-interval.service.js +163 -0
- package/dist/services/spaced-repetition/optimal-interval.service.js.map +1 -0
- package/dist/services/spaced-repetition/performance-analysis.service.d.ts +48 -0
- package/dist/services/spaced-repetition/performance-analysis.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/performance-analysis.service.js +174 -0
- package/dist/services/spaced-repetition/performance-analysis.service.js.map +1 -0
- package/dist/services/spaced-repetition/priority-calculation.service.d.ts +53 -0
- package/dist/services/spaced-repetition/priority-calculation.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/priority-calculation.service.js +161 -0
- package/dist/services/spaced-repetition/priority-calculation.service.js.map +1 -0
- package/dist/services/spaced-repetition/recall-probability.service.d.ts +36 -0
- package/dist/services/spaced-repetition/recall-probability.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/recall-probability.service.js +88 -0
- package/dist/services/spaced-repetition/recall-probability.service.js.map +1 -0
- package/dist/services/spaced-repetition/review-scheduling.service.d.ts +43 -0
- package/dist/services/spaced-repetition/review-scheduling.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/review-scheduling.service.js +130 -0
- package/dist/services/spaced-repetition/review-scheduling.service.js.map +1 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.d.ts +69 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.d.ts.map +1 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.js +136 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.js.map +1 -0
- package/dist/services/unified-embedding-service.d.ts +3 -0
- package/dist/services/unified-embedding-service.d.ts.map +1 -1
- package/dist/services/unified-embedding-service.js +58 -62
- package/dist/services/unified-embedding-service.js.map +1 -1
- package/dist/services/vector-compatibility-service.d.ts +68 -0
- package/dist/services/vector-compatibility-service.d.ts.map +1 -0
- package/dist/services/vector-compatibility-service.js +373 -0
- package/dist/services/vector-compatibility-service.js.map +1 -0
- package/dist/services/vector-search/vector-index-manager.d.ts +27 -0
- package/dist/services/vector-search/vector-index-manager.d.ts.map +1 -0
- package/dist/services/vector-search/vector-index-manager.js +66 -0
- package/dist/services/vector-search/vector-index-manager.js.map +1 -0
- package/dist/services/vector-search/vector-performance-tester.d.ts +30 -0
- package/dist/services/vector-search/vector-performance-tester.d.ts.map +1 -0
- package/dist/services/vector-search/vector-performance-tester.js +87 -0
- package/dist/services/vector-search/vector-performance-tester.js.map +1 -0
- package/dist/services/vector-search/vector-search-container.d.ts +41 -0
- package/dist/services/vector-search/vector-search-container.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-container.js +74 -0
- package/dist/services/vector-search/vector-search-container.js.map +1 -0
- package/dist/services/vector-search/vector-search-facade.d.ts +63 -0
- package/dist/services/vector-search/vector-search-facade.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-facade.js +91 -0
- package/dist/services/vector-search/vector-search-facade.js.map +1 -0
- package/dist/services/vector-search/vector-search-result-normalizer.d.ts +6 -0
- package/dist/services/vector-search/vector-search-result-normalizer.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-result-normalizer.js +65 -0
- package/dist/services/vector-search/vector-search-result-normalizer.js.map +1 -0
- package/dist/services/vector-search/vector-search.service.d.ts +33 -0
- package/dist/services/vector-search/vector-search.service.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search.service.js +149 -0
- package/dist/services/vector-search/vector-search.service.js.map +1 -0
- package/dist/tools/forget-tool.js +14 -14
- package/dist/tools/pin-tool.js +14 -14
- package/dist/tools/unpin-tool.js +21 -21
- package/dist/types/alerts.types.d.ts +26 -0
- package/dist/types/alerts.types.d.ts.map +1 -0
- package/dist/types/alerts.types.js +2 -0
- package/dist/types/alerts.types.js.map +1 -0
- package/dist/types/embedding-provider-monitoring.types.d.ts +24 -0
- package/dist/types/embedding-provider-monitoring.types.d.ts.map +1 -0
- package/dist/types/embedding-provider-monitoring.types.js +2 -0
- package/dist/types/embedding-provider-monitoring.types.js.map +1 -0
- package/dist/types/embedding.types.d.ts +36 -1
- package/dist/types/embedding.types.d.ts.map +1 -1
- package/dist/types/migration.types.d.ts +131 -0
- package/dist/types/migration.types.d.ts.map +1 -0
- package/dist/types/migration.types.js +6 -0
- package/dist/types/migration.types.js.map +1 -0
- package/dist/types/spaced-repetition.types.d.ts +61 -0
- package/dist/types/spaced-repetition.types.d.ts.map +1 -0
- package/dist/types/spaced-repetition.types.js +6 -0
- package/dist/types/spaced-repetition.types.js.map +1 -0
- package/dist/types/vector-search.types.d.ts +96 -0
- package/dist/types/vector-search.types.d.ts.map +1 -0
- package/dist/types/vector-search.types.js +2 -0
- package/dist/types/vector-search.types.js.map +1 -0
- package/dist/utils/configuration-validator.d.ts +23 -0
- package/dist/utils/configuration-validator.d.ts.map +1 -0
- package/dist/utils/configuration-validator.js +102 -0
- package/dist/utils/configuration-validator.js.map +1 -0
- package/dist/utils/database.d.ts.map +1 -1
- package/dist/utils/database.js +101 -95
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/environment-check.d.ts +8 -0
- package/dist/utils/environment-check.d.ts.map +1 -0
- package/dist/utils/environment-check.js +25 -0
- package/dist/utils/environment-check.js.map +1 -0
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +33 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +139 -125
- package/scripts/auto-setup.js +233 -233
- package/scripts/backup-daily.bat +28 -28
- package/scripts/backup-embeddings.js +108 -108
- package/scripts/check-db-integrity.js +93 -93
- package/scripts/debug-embeddings.js +184 -184
- package/scripts/direct-sql-migration.sql +36 -36
- package/scripts/docker-migration.sh +105 -105
- package/scripts/fix-migration.js +93 -93
- package/scripts/fix-vector-dimensions.js +206 -206
- package/scripts/migrate-embedding-data.js +307 -307
- package/scripts/regenerate-embeddings.js +144 -144
- package/scripts/restore-legacy.ps1 +60 -60
- package/scripts/run-migration.js +122 -122
- package/scripts/safe-migration.js +150 -150
- package/scripts/simple-migrate.js +41 -41
- package/scripts/simple-update.js +123 -123
- package/src/database/schema.sql +234 -159
- package/.cursor/rules/cache-management.mdc +0 -171
- package/.cursor/rules/database-schema.mdc +0 -344
- package/.cursor/rules/deployment.mdc +0 -596
- package/.cursor/rules/error-logging.mdc +0 -298
- package/.cursor/rules/forgetting-algorithms.mdc +0 -426
- package/.cursor/rules/http-server.mdc +0 -432
- package/.cursor/rules/hybrid-search.mdc +0 -424
- package/.cursor/rules/implementation.mdc +0 -369
- package/.cursor/rules/lightweight-embedding.mdc +0 -178
- package/.cursor/rules/mcp-client-development.mdc +0 -0
- package/.cursor/rules/mcp-server-development.mdc +0 -0
- package/.cursor/rules/mcp-tools-architecture.mdc +0 -205
- package/.cursor/rules/memento-memory-rule.mdc +0 -8
- package/.cursor/rules/memento-project-overview.mdc +0 -0
- package/.cursor/rules/memory-algorithms.mdc +0 -502
- package/.cursor/rules/monitoring.mdc +0 -622
- package/.cursor/rules/performance-alerts.mdc +0 -537
- package/.cursor/rules/performance-monitoring.mdc +0 -345
- package/.cursor/rules/performance-optimization.mdc +0 -563
- package/.cursor/rules/project-structure.mdc +0 -310
- package/.cursor/rules/testing.mdc +0 -473
- package/.dockerignore +0 -15
- package/.eslintrc.json +0 -34
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -51
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -45
- package/.github/ISSUE_TEMPLATE/question.md +0 -31
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -97
- package/AGENTS.md +0 -28
- package/CHANGELOG.md +0 -416
- package/CODE_OF_CONDUCT.md +0 -62
- package/CONTRIBUTING.md +0 -165
- package/DOCKER_SETUP_GUIDE.md +0 -84
- package/Dockerfile +0 -90
- package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +0 -1068
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +0 -46
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +0 -48
- package/dist/server/index-backup.d.ts +0 -5
- package/dist/server/index-backup.d.ts.map +0 -1
- package/dist/server/index-backup.js +0 -793
- package/dist/server/index-backup.js.map +0 -1
- package/dist/server/index-refactored.d.ts +0 -6
- package/dist/server/index-refactored.d.ts.map +0 -1
- package/dist/server/index-refactored.js +0 -206
- package/dist/server/index-refactored.js.map +0 -1
- package/dist/services/performance-monitoring-integration.d.ts +0 -77
- package/dist/services/performance-monitoring-integration.d.ts.map +0 -1
- package/dist/services/performance-monitoring-integration.js +0 -177
- package/dist/services/performance-monitoring-integration.js.map +0 -1
- package/dist/test/debug-http-v2.d.ts +0 -5
- package/dist/test/debug-http-v2.d.ts.map +0 -1
- package/dist/test/debug-http-v2.js +0 -28
- package/dist/test/debug-http-v2.js.map +0 -1
- package/dist/test/performance-benchmark.d.ts +0 -57
- package/dist/test/performance-benchmark.d.ts.map +0 -1
- package/dist/test/performance-benchmark.js +0 -427
- package/dist/test/performance-benchmark.js.map +0 -1
- package/dist/test/test-alerts-direct.d.ts +0 -7
- package/dist/test/test-alerts-direct.d.ts.map +0 -1
- package/dist/test/test-alerts-direct.js +0 -101
- package/dist/test/test-alerts-direct.js.map +0 -1
- package/dist/test/test-batch-scheduler.d.ts +0 -2
- package/dist/test/test-batch-scheduler.d.ts.map +0 -1
- package/dist/test/test-batch-scheduler.js +0 -156
- package/dist/test/test-batch-scheduler.js.map +0 -1
- package/dist/test/test-client.d.ts +0 -5
- package/dist/test/test-client.d.ts.map +0 -1
- package/dist/test/test-client.js +0 -86
- package/dist/test/test-client.js.map +0 -1
- package/dist/test/test-embedding.d.ts +0 -6
- package/dist/test/test-embedding.d.ts.map +0 -1
- package/dist/test/test-embedding.js +0 -142
- package/dist/test/test-embedding.js.map +0 -1
- package/dist/test/test-error-logging.d.ts +0 -7
- package/dist/test/test-error-logging.d.ts.map +0 -1
- package/dist/test/test-error-logging.js +0 -105
- package/dist/test/test-error-logging.js.map +0 -1
- package/dist/test/test-forgetting.d.ts +0 -6
- package/dist/test/test-forgetting.d.ts.map +0 -1
- package/dist/test/test-forgetting.js +0 -154
- package/dist/test/test-forgetting.js.map +0 -1
- package/dist/test/test-gemini-embedding.d.ts +0 -7
- package/dist/test/test-gemini-embedding.d.ts.map +0 -1
- package/dist/test/test-gemini-embedding.js +0 -134
- package/dist/test/test-gemini-embedding.js.map +0 -1
- package/dist/test/test-http-server-v2-simple.d.ts +0 -6
- package/dist/test/test-http-server-v2-simple.d.ts.map +0 -1
- package/dist/test/test-http-server-v2-simple.js +0 -131
- package/dist/test/test-http-server-v2-simple.js.map +0 -1
- package/dist/test/test-http-server-v2.d.ts +0 -7
- package/dist/test/test-http-server-v2.d.ts.map +0 -1
- package/dist/test/test-http-server-v2.js +0 -529
- package/dist/test/test-http-server-v2.js.map +0 -1
- package/dist/test/test-lightweight-embedding.d.ts +0 -6
- package/dist/test/test-lightweight-embedding.d.ts.map +0 -1
- package/dist/test/test-lightweight-embedding.js +0 -189
- package/dist/test/test-lightweight-embedding.js.map +0 -1
- package/dist/test/test-m1-completion.d.ts +0 -7
- package/dist/test/test-m1-completion.d.ts.map +0 -1
- package/dist/test/test-m1-completion.js +0 -124
- package/dist/test/test-m1-completion.js.map +0 -1
- package/dist/test/test-memory-injection-prompt.d.ts +0 -2
- package/dist/test/test-memory-injection-prompt.d.ts.map +0 -1
- package/dist/test/test-memory-injection-prompt.js +0 -299
- package/dist/test/test-memory-injection-prompt.js.map +0 -1
- package/dist/test/test-performance-alerts.d.ts +0 -7
- package/dist/test/test-performance-alerts.d.ts.map +0 -1
- package/dist/test/test-performance-alerts.js +0 -109
- package/dist/test/test-performance-alerts.js.map +0 -1
- package/dist/test/test-performance-monitor.d.ts +0 -2
- package/dist/test/test-performance-monitor.d.ts.map +0 -1
- package/dist/test/test-performance-monitor.js +0 -182
- package/dist/test/test-performance-monitor.js.map +0 -1
- package/dist/test/test-performance-monitoring.d.ts +0 -6
- package/dist/test/test-performance-monitoring.d.ts.map +0 -1
- package/dist/test/test-performance-monitoring.js +0 -156
- package/dist/test/test-performance-monitoring.js.map +0 -1
- package/dist/test/test-search.d.ts +0 -5
- package/dist/test/test-search.d.ts.map +0 -1
- package/dist/test/test-search.js +0 -141
- package/dist/test/test-search.js.map +0 -1
- package/dist/test/test-simple-alerts.d.ts +0 -6
- package/dist/test/test-simple-alerts.d.ts.map +0 -1
- package/dist/test/test-simple-alerts.js +0 -106
- package/dist/test/test-simple-alerts.js.map +0 -1
- package/dist/test/test-vector-search-engine.d.ts +0 -2
- package/dist/test/test-vector-search-engine.d.ts.map +0 -1
- package/dist/test/test-vector-search-engine.js +0 -225
- package/dist/test/test-vector-search-engine.js.map +0 -1
- package/docker-compose.dev.yml +0 -50
- package/docker-compose.prod.yml +0 -77
- package/docker-compose.yml +0 -43
- package/docs/en/Memento-Goals.md +0 -217
- package/docs/en/Memento-M1-DetailSpecs.md +0 -130
- package/docs/en/Memento-Milestones.md +0 -135
- package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +0 -177
- package/docs/en/api-reference.md +0 -658
- package/docs/en/architecture.md +0 -1302
- package/docs/en/developer-guide.md +0 -1005
- package/docs/en/user-manual.md +0 -595
- package/docs/ko/Memento-Goals.md +0 -217
- package/docs/ko/Memento-M1-DetailSpecs.md +0 -130
- package/docs/ko/Memento-Milestones.md +0 -134
- package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +0 -177
- package/docs/ko/api-reference.md +0 -658
- package/docs/ko/architecture.md +0 -1302
- package/docs/ko/developer-guide.md +0 -1006
- package/docs/ko/embedding-api-reference.md +0 -122
- package/docs/ko/embedding-configuration.md +0 -62
- package/docs/ko/embedding-performance-benchmark.md +0 -62
- package/docs/ko/embedding-service-guide.md +0 -314
- package/docs/ko/user-manual.md +0 -595
- package/env.example +0 -49
- package/install.sh +0 -191
- package/mcp-http-client.js +0 -218
- package/mcp.json +0 -0
- package/packages/mcp-client/docs/API-REFERENCE.md +0 -560
- package/packages/mcp-client/docs/BEST-PRACTICES.md +0 -564
- package/packages/mcp-client/docs/MIGRATION-GUIDE.md +0 -344
- package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +0 -476
- package/packages/mcp-client/docs/TROUBLESHOOTING.md +0 -564
- package/packages/mcp-client/package-lock.json +0 -907
- package/packages/mcp-client/package.json +0 -58
- package/packages/mcp-client/performance-optimizer.js +0 -428
- package/packages/mcp-client/test-basic.js +0 -65
- package/packages/mcp-client/test-integration.js +0 -366
- package/src/algorithms/forgetting-algorithm.spec.ts +0 -538
- package/src/algorithms/forgetting-algorithm.ts +0 -243
- package/src/algorithms/hybrid-search-engine.spec.ts +0 -484
- package/src/algorithms/hybrid-search-engine.ts +0 -489
- package/src/algorithms/search-engine.spec.ts +0 -429
- package/src/algorithms/search-engine.ts +0 -392
- package/src/algorithms/search-ranking.spec.ts +0 -293
- package/src/algorithms/search-ranking.ts +0 -407
- package/src/algorithms/spaced-repetition.spec.ts +0 -510
- package/src/algorithms/spaced-repetition.ts +0 -238
- package/src/algorithms/vector-search-engine.ts +0 -505
- package/src/client/index.spec.ts +0 -427
- package/src/client/index.ts +0 -222
- package/src/config/index.spec.ts +0 -339
- package/src/config/index.ts +0 -106
- package/src/database/init.spec.ts +0 -239
- package/src/database/init.ts +0 -130
- package/src/database/migrate.spec.ts +0 -293
- package/src/database/migrate.ts +0 -94
- package/src/database/migrations/001_add_embedding_metadata.sql +0 -29
- package/src/npm-client/context-injector.spec.ts +0 -335
- package/src/npm-client/context-injector.ts +0 -412
- package/src/npm-client/index.spec.ts +0 -108
- package/src/npm-client/index.ts +0 -96
- package/src/npm-client/memento-client.spec.ts +0 -549
- package/src/npm-client/memento-client.ts +0 -501
- package/src/npm-client/memory-manager.spec.ts +0 -374
- package/src/npm-client/memory-manager.ts +0 -414
- package/src/npm-client/types.spec.ts +0 -427
- package/src/npm-client/types.ts +0 -296
- package/src/npm-client/utils.spec.ts +0 -355
- package/src/npm-client/utils.ts +0 -423
- package/src/scripts/copy-assets.js +0 -37
- package/src/server/http-server.spec.ts +0 -648
- package/src/server/http-server.ts +0 -1030
- package/src/server/index-backup.ts +0 -875
- package/src/server/index-refactored.ts +0 -237
- package/src/server/index.spec.ts +0 -281
- package/src/server/index.ts +0 -347
- package/src/server/simple-mcp-server.spec.ts +0 -207
- package/src/server/simple-mcp-server.ts +0 -173
- package/src/services/async-optimizer.spec.ts +0 -569
- package/src/services/async-optimizer.ts +0 -484
- package/src/services/batch-scheduler.ts +0 -759
- package/src/services/cache-service.spec.ts +0 -372
- package/src/services/cache-service.ts +0 -434
- package/src/services/database-optimizer.spec.ts +0 -344
- package/src/services/database-optimizer.ts +0 -450
- package/src/services/embedding-provider-factory.ts +0 -173
- package/src/services/embedding-service.spec.ts +0 -342
- package/src/services/embedding-service.ts +0 -333
- package/src/services/error-logging-service.spec.ts +0 -416
- package/src/services/error-logging-service.ts +0 -383
- package/src/services/forgetting-policy-service.spec.ts +0 -140
- package/src/services/forgetting-policy-service.ts +0 -334
- package/src/services/gemini-embedding-service.spec.ts +0 -463
- package/src/services/gemini-embedding-service.ts +0 -283
- package/src/services/lightweight-embedding-service.spec.ts +0 -458
- package/src/services/lightweight-embedding-service.ts +0 -324
- package/src/services/memory-embedding-service.spec.ts +0 -417
- package/src/services/memory-embedding-service.ts +0 -289
- package/src/services/minilm-embedding-service.spec.ts +0 -104
- package/src/services/minilm-embedding-service.ts +0 -262
- package/src/services/performance-alert-service.spec.ts +0 -517
- package/src/services/performance-alert-service.ts +0 -477
- package/src/services/performance-monitor.spec.ts +0 -401
- package/src/services/performance-monitor.ts +0 -532
- package/src/services/performance-monitoring-integration.spec.ts +0 -478
- package/src/services/performance-monitoring-integration.ts.bak +0 -276
- package/src/services/unified-embedding-service.spec.ts +0 -224
- package/src/services/unified-embedding-service.ts +0 -255
- package/src/test/debug-http-v2.ts +0 -30
- package/src/test/embedding-integration-test.spec.ts +0 -295
- package/src/test/embedding-integration-test.ts +0 -295
- package/src/test/embedding-performance-benchmark.spec.ts +0 -354
- package/src/test/embedding-performance-benchmark.ts +0 -312
- package/src/test/performance-benchmark.ts +0 -565
- package/src/test/test-alerts-direct.ts +0 -136
- package/src/test/test-batch-scheduler-simple.spec.ts +0 -122
- package/src/test/test-batch-scheduler.spec.ts +0 -453
- package/src/test/test-batch-scheduler.ts +0 -182
- package/src/test/test-client.ts +0 -97
- package/src/test/test-embedding.ts +0 -153
- package/src/test/test-error-handling.spec.ts +0 -575
- package/src/test/test-error-logging.ts +0 -117
- package/src/test/test-forgetting.ts +0 -162
- package/src/test/test-gemini-embedding.ts +0 -159
- package/src/test/test-http-server-v2-simple.ts +0 -147
- package/src/test/test-http-server-v2.ts +0 -586
- package/src/test/test-hybrid-search-engine.spec.ts +0 -521
- package/src/test/test-integration-fixed.spec.ts +0 -612
- package/src/test/test-integration.spec.ts +0 -463
- package/src/test/test-lightweight-embedding.ts +0 -208
- package/src/test/test-m1-completion.spec.ts +0 -614
- package/src/test/test-m1-completion.ts +0 -141
- package/src/test/test-m1-integration.spec.ts +0 -514
- package/src/test/test-memory-injection-prompt.spec.ts +0 -650
- package/src/test/test-memory-injection-prompt.ts +0 -391
- package/src/test/test-performance-alerts.ts +0 -125
- package/src/test/test-performance-monitor-updates.spec.ts +0 -490
- package/src/test/test-performance-monitor.spec.ts +0 -284
- package/src/test/test-performance-monitor.ts +0 -228
- package/src/test/test-performance-monitoring.ts +0 -171
- package/src/test/test-search.ts +0 -151
- package/src/test/test-simple-alerts.ts +0 -136
- package/src/test/test-vector-search-engine.spec.ts +0 -408
- package/src/test/test-vector-search-engine.ts +0 -303
- package/src/tools/base-tool.ts +0 -189
- package/src/tools/cleanup-memory-tool.ts +0 -77
- package/src/tools/database-optimize-tool.ts +0 -79
- package/src/tools/error-stats.ts +0 -119
- package/src/tools/forget-tool.spec.ts +0 -613
- package/src/tools/forget-tool.ts +0 -454
- package/src/tools/forgetting-stats-tool.ts +0 -47
- package/src/tools/index.ts +0 -71
- package/src/tools/memory-injection-prompt.ts +0 -257
- package/src/tools/performance-alerts.ts +0 -226
- package/src/tools/performance-stats-tool.ts +0 -48
- package/src/tools/pin-tool.spec.ts +0 -497
- package/src/tools/pin-tool.ts +0 -277
- package/src/tools/recall-tool.spec.ts +0 -475
- package/src/tools/recall-tool.ts +0 -389
- package/src/tools/remember-tool.spec.ts +0 -469
- package/src/tools/remember-tool.ts +0 -112
- package/src/tools/resolve-error.ts +0 -69
- package/src/tools/tool-registry.ts +0 -417
- package/src/tools/types.ts +0 -63
- package/src/tools/unpin-tool.spec.ts +0 -549
- package/src/tools/unpin-tool.ts +0 -306
- package/src/types/embedding.types.ts +0 -78
- package/src/types/index.spec.ts +0 -420
- package/src/types/index.ts +0 -117
- package/src/utils/database.spec.ts +0 -77
- package/src/utils/database.ts +0 -458
- package/src/utils/stopwords.ts +0 -128
- package/start-docker-setup.bat +0 -38
- package/static/logo.png +0 -0
- package/static/memento_logo.svg +0 -2
- package/test-docker.js +0 -103
- package/tsconfig.json +0 -46
- package/vitest.config.ts +0 -23
package/README.md
CHANGED
|
@@ -1,432 +1,432 @@
|
|
|
1
|
-
# 🧠 Memento MCP Server
|
|
2
|
-
|
|
3
|
-
<div align="center">
|
|
4
|
-
<img src="static/logo.png" alt="Memento Logo" width="200" height="200">
|
|
5
|
-
|
|
6
|
-
<h3>✨ AI Agent의 기억을 영원히 기억하세요 ✨</h3>
|
|
7
|
-
|
|
8
|
-
<p><strong>사람의 기억 구조를 모사한 지능형 메모리 관리 시스템</strong></p>
|
|
9
|
-
|
|
10
|
-
[🇰🇷 한국어](README.md) | [🇺🇸 English](README.en.md)
|
|
11
|
-
</div>
|
|
12
|
-
|
|
13
|
-
> **🚀 혁신적인 AI Agent 기억 보조 시스템**
|
|
14
|
-
> Memento는 AI Agent가 사람처럼 기억을 저장, 검색, 관리할 수 있도록 도와주는 MCP(Model Context Protocol) 서버입니다.
|
|
15
|
-
> 작업기억, 일화기억, 의미기억, 절차기억을 모사하여 **진정한 장기 기억**을 구현합니다.
|
|
16
|
-
|
|
17
|
-
## 🎯 프로젝트 개요
|
|
18
|
-
|
|
19
|
-
Memento MCP Server는 AI Agent가 장기 기억을 저장하고 관리할 수 있도록 도와주는 MCP(Model Context Protocol) 서버입니다. 사람의 기억 구조(작업기억, 일화기억, 의미기억, 절차기억)를 모사하여 효율적인 기억 관리 시스템을 제공합니다.
|
|
20
|
-
|
|
21
|
-
## ✨ 주요 기능
|
|
22
|
-
|
|
23
|
-
### 🧠 핵심 메모리 관리 (MCP 클라이언트)
|
|
24
|
-
- **기억 저장**: 4가지 타입의 기억 저장 (working, episodic, semantic, procedural)
|
|
25
|
-
- **기억 검색**: 하이브리드 검색 (텍스트 + 벡터)
|
|
26
|
-
- **기억 고정**: 중요한 기억 고정/해제
|
|
27
|
-
- **기억 삭제**: 소프트/하드 삭제
|
|
28
|
-
|
|
29
|
-
### 🔍 고급 검색
|
|
30
|
-
- **FTS5 텍스트 검색**: SQLite의 Full-Text Search
|
|
31
|
-
- **벡터 검색**: sqlite-vec 기반 의미적 검색
|
|
32
|
-
- **하이브리드 검색**: 텍스트와 벡터 검색의 결합
|
|
33
|
-
- **다중 임베딩 제공자**: TF-IDF, MiniLM, OpenAI, Gemini 지원
|
|
34
|
-
- **자동 제공자 선택**: 설정 기반 최적 제공자 자동 선택
|
|
35
|
-
- **폴백 메커니즘**: 제공자 실패 시 자동 대체
|
|
36
|
-
- **태그 기반 필터링**: 메타데이터 기반 검색
|
|
37
|
-
|
|
38
|
-
### 🧹 망각 정책
|
|
39
|
-
- **망각 알고리즘**: 최근성, 사용성, 중복 비율 기반 망각 점수 계산
|
|
40
|
-
- **간격 반복**: 중요도와 사용성 기반 리뷰 스케줄링
|
|
41
|
-
- **TTL 관리**: 타입별 수명 관리
|
|
42
|
-
- **자동 정리**: 소프트/하드 삭제 자동화
|
|
43
|
-
|
|
44
|
-
### 📊 성능 모니터링 (HTTP 관리 API)
|
|
45
|
-
- **실시간 메트릭**: 데이터베이스, 검색, 메모리 성능 모니터링
|
|
46
|
-
- **실시간 알림**: 30초마다 자동 성능 체크 및 임계값 기반 알림
|
|
47
|
-
- **에러 로깅**: 구조화된 에러 로깅 및 통계 수집
|
|
48
|
-
- **데이터베이스 최적화**: 자동 인덱스 추천 및 생성
|
|
49
|
-
- **캐시 시스템**: LRU + TTL 기반 캐싱
|
|
50
|
-
- **비동기 처리**: 워커 풀 기반 병렬 처리
|
|
51
|
-
|
|
52
|
-
## 🚀 빠른 시작
|
|
53
|
-
|
|
54
|
-
### 🥇 **원클릭 설치 (권장)**
|
|
55
|
-
```bash
|
|
56
|
-
# 자동 설치 스크립트 실행
|
|
57
|
-
curl -sSL https://raw.githubusercontent.com/jee1/memento/main/install.sh | bash
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 🥈 **npx 방식 (개발자용)**
|
|
61
|
-
```bash
|
|
62
|
-
# 즉시 실행 (설치 없이)
|
|
63
|
-
npx memento-mcp-server@latest dev
|
|
64
|
-
|
|
65
|
-
# MCP 서버 실행
|
|
66
|
-
npx memento-mcp-server@latest
|
|
67
|
-
|
|
68
|
-
# HTTP 서버 실행
|
|
69
|
-
npx memento-mcp-server@latest http
|
|
70
|
-
|
|
71
|
-
# 자동 설정
|
|
72
|
-
npx memento-mcp-server@latest setup
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### 🥉 **Docker 방식 (프로덕션용)**
|
|
76
|
-
```bash
|
|
77
|
-
# 개발 환경
|
|
78
|
-
docker-compose -f docker-compose.dev.yml up -d
|
|
79
|
-
|
|
80
|
-
# 프로덕션 환경
|
|
81
|
-
docker-compose -f docker-compose.prod.yml up -d
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### 🛠️ **소스코드 방식 (개발자용)**
|
|
85
|
-
```bash
|
|
86
|
-
# 저장소 클론
|
|
87
|
-
git clone https://github.com/jee1/memento.git
|
|
88
|
-
cd memento
|
|
89
|
-
|
|
90
|
-
# 원클릭 설치 및 실행
|
|
91
|
-
npm run quick-start
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### 📚 **상세 설치 가이드**
|
|
95
|
-
자세한 설치 방법은 [INSTALL.md](INSTALL.md)를 참조하세요.
|
|
96
|
-
|
|
97
|
-
## 💡 사용 예시
|
|
98
|
-
|
|
99
|
-
### 🤖 AI Agent와의 연동
|
|
100
|
-
```typescript
|
|
101
|
-
// AI Agent가 학습한 내용을 기억에 저장
|
|
102
|
-
await client.callTool({
|
|
103
|
-
name: "remember",
|
|
104
|
-
arguments: {
|
|
105
|
-
content: "사용자는 React Hook을 학습했습니다. useState는 상태를 관리하고, useEffect는 사이드 이펙트를 처리합니다.",
|
|
106
|
-
type: "episodic",
|
|
107
|
-
tags: ["react", "hooks", "javascript"],
|
|
108
|
-
importance: 0.8
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
// 나중에 관련 정보를 검색
|
|
113
|
-
const results = await client.callTool({
|
|
114
|
-
name: "recall",
|
|
115
|
-
arguments: {
|
|
116
|
-
query: "React Hook 사용법",
|
|
117
|
-
limit: 5
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### 📚 지식 관리 시스템
|
|
123
|
-
```typescript
|
|
124
|
-
// 중요한 지식을 의미기억으로 저장
|
|
125
|
-
await client.callTool({
|
|
126
|
-
name: "remember",
|
|
127
|
-
arguments: {
|
|
128
|
-
content: "TypeScript의 제네릭은 타입을 매개변수화하여 재사용 가능한 컴포넌트를 만드는 기능입니다.",
|
|
129
|
-
type: "semantic",
|
|
130
|
-
tags: ["typescript", "generics", "programming"],
|
|
131
|
-
importance: 0.9
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### 🔧 절차 기억 관리
|
|
137
|
-
```typescript
|
|
138
|
-
// 작업 절차를 절차기억으로 저장
|
|
139
|
-
await client.callTool({
|
|
140
|
-
name: "remember",
|
|
141
|
-
arguments: {
|
|
142
|
-
content: "Docker 컨테이너 빌드 및 배포 절차: 1) Dockerfile 작성 2) docker build 실행 3) docker run으로 테스트 4) 레지스트리에 푸시",
|
|
143
|
-
type: "procedural",
|
|
144
|
-
tags: ["docker", "deployment", "devops"],
|
|
145
|
-
importance: 0.7
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## 🛠️ 사용법
|
|
151
|
-
|
|
152
|
-
### MCP 클라이언트 연결
|
|
153
|
-
|
|
154
|
-
```typescript
|
|
155
|
-
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
156
|
-
|
|
157
|
-
const client = new Client({
|
|
158
|
-
name: "memento-client",
|
|
159
|
-
version: "0.1.0"
|
|
160
|
-
}, {
|
|
161
|
-
capabilities: {
|
|
162
|
-
tools: {},
|
|
163
|
-
resources: {},
|
|
164
|
-
prompts: {}
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
// stdio 연결
|
|
169
|
-
await client.connect({
|
|
170
|
-
command: "node",
|
|
171
|
-
args: ["dist/server/index.js"]
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
// WebSocket 연결
|
|
175
|
-
await client.connect({
|
|
176
|
-
transport: {
|
|
177
|
-
type: "websocket",
|
|
178
|
-
url: "ws://localhost:9001/mcp"
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### 기억 저장
|
|
184
|
-
|
|
185
|
-
```typescript
|
|
186
|
-
// 기억 저장
|
|
187
|
-
const result = await client.callTool({
|
|
188
|
-
name: "remember",
|
|
189
|
-
arguments: {
|
|
190
|
-
content: "React Hook에 대해 학습했습니다. useState는 상태를 관리하고, useEffect는 사이드 이펙트를 처리합니다.",
|
|
191
|
-
type: "episodic",
|
|
192
|
-
tags: ["react", "hooks", "javascript"],
|
|
193
|
-
importance: 0.8
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### 기억 검색
|
|
199
|
-
|
|
200
|
-
```typescript
|
|
201
|
-
// 기억 검색
|
|
202
|
-
const results = await client.callTool({
|
|
203
|
-
name: "recall",
|
|
204
|
-
arguments: {
|
|
205
|
-
query: "React Hook",
|
|
206
|
-
filters: {
|
|
207
|
-
type: ["episodic", "semantic"],
|
|
208
|
-
tags: ["react"]
|
|
209
|
-
},
|
|
210
|
-
limit: 10
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## 📚 문서
|
|
216
|
-
|
|
217
|
-
- [임베딩 서비스 가이드](docs/ko/embedding-service-guide.md) - 임베딩 서비스 사용법
|
|
218
|
-
- [성능 벤치마크](docs/ko/embedding-performance-benchmark.md) - 성능 비교 결과
|
|
219
|
-
- [API 레퍼런스](docs/ko/embedding-api-reference.md) - API 상세 문서
|
|
220
|
-
- [설정 가이드](docs/ko/embedding-configuration.md) - 환경 설정 방법
|
|
221
|
-
|
|
222
|
-
## 📋 API 문서
|
|
223
|
-
|
|
224
|
-
### MCP Tools (핵심 5개만)
|
|
225
|
-
|
|
226
|
-
> **중요**: MCP 클라이언트는 핵심 메모리 관리 기능 5개만 노출합니다.
|
|
227
|
-
> 관리 기능들은 HTTP API 엔드포인트로 분리되었습니다.
|
|
228
|
-
|
|
229
|
-
| Tool | 설명 | 파라미터 |
|
|
230
|
-
|------|------|----------|
|
|
231
|
-
| `remember` | 기억 저장 | content, type, tags, importance, source, privacy_scope |
|
|
232
|
-
| `recall` | 기억 검색 | query, filters, limit |
|
|
233
|
-
| `pin` | 기억 고정 | memory_id |
|
|
234
|
-
| `unpin` | 기억 고정 해제 | memory_id |
|
|
235
|
-
| `forget` | 기억 삭제 | memory_id, hard |
|
|
236
|
-
|
|
237
|
-
### HTTP 관리 API
|
|
238
|
-
|
|
239
|
-
| 엔드포인트 | 설명 | 메서드 |
|
|
240
|
-
|-----------|------|--------|
|
|
241
|
-
| `/admin/memory/cleanup` | 메모리 정리 | POST |
|
|
242
|
-
| `/admin/stats/forgetting` | 망각 통계 조회 | GET |
|
|
243
|
-
| `/admin/stats/performance` | 성능 통계 조회 | GET |
|
|
244
|
-
| `/admin/stats/errors` | 에러 통계 조회 | GET |
|
|
245
|
-
| `/admin/errors/resolve` | 에러 해결 | POST |
|
|
246
|
-
| `/admin/alerts/performance` | 성능 알림 조회 | GET |
|
|
247
|
-
| `/admin/database/optimize` | 데이터베이스 최적화 | POST |
|
|
248
|
-
|
|
249
|
-
### Resources
|
|
250
|
-
|
|
251
|
-
| Resource | 설명 |
|
|
252
|
-
|----------|------|
|
|
253
|
-
| `memory/{id}` | 단일 기억 상세 정보 |
|
|
254
|
-
| `memory/search?query=...` | 검색 결과 캐시 |
|
|
255
|
-
|
|
256
|
-
## 🔧 설정
|
|
257
|
-
|
|
258
|
-
### 환경 변수
|
|
259
|
-
|
|
260
|
-
| 변수 | 기본값 | 설명 |
|
|
261
|
-
|------|--------|------|
|
|
262
|
-
| `NODE_ENV` | development | 실행 환경 |
|
|
263
|
-
| `PORT` | 9001 | 서버 포트 |
|
|
264
|
-
| `DB_PATH` | ./data/memory.db | 데이터베이스 경로 |
|
|
265
|
-
| `LOG_LEVEL` | info | 로그 레벨 |
|
|
266
|
-
| `OPENAI_API_KEY` | - | OpenAI API 키 (선택사항) |
|
|
267
|
-
|
|
268
|
-
### 망각 정책 설정
|
|
269
|
-
|
|
270
|
-
```bash
|
|
271
|
-
# 망각 임계값
|
|
272
|
-
FORGET_THRESHOLD=0.6
|
|
273
|
-
SOFT_DELETE_THRESHOLD=0.6
|
|
274
|
-
HARD_DELETE_THRESHOLD=0.8
|
|
275
|
-
|
|
276
|
-
# TTL 설정 (일 단위)
|
|
277
|
-
TTL_SOFT_WORKING=2
|
|
278
|
-
TTL_SOFT_EPISODIC=30
|
|
279
|
-
TTL_SOFT_SEMANTIC=180
|
|
280
|
-
TTL_SOFT_PROCEDURAL=90
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
## 🧪 테스트
|
|
284
|
-
|
|
285
|
-
```bash
|
|
286
|
-
# 모든 테스트 실행 (Vitest)
|
|
287
|
-
npm run test
|
|
288
|
-
|
|
289
|
-
# 개별 테스트 실행
|
|
290
|
-
npm run test:client # 클라이언트 테스트
|
|
291
|
-
npm run test:search # 검색 기능 테스트
|
|
292
|
-
npm run test:embedding # 임베딩 기능 테스트
|
|
293
|
-
npm run test:lightweight-embedding # 경량 임베딩 테스트
|
|
294
|
-
npm run test:forgetting # 망각 정책 테스트
|
|
295
|
-
npm run test:performance # 성능 벤치마크
|
|
296
|
-
npm run test:monitoring # 성능 모니터링 테스트
|
|
297
|
-
npm run test:error-logging # 에러 로깅 테스트
|
|
298
|
-
npm run test:performance-alerts # 성능 알림 테스트
|
|
299
|
-
|
|
300
|
-
# 테스트 감시 모드
|
|
301
|
-
npm run test -- --watch
|
|
302
|
-
|
|
303
|
-
# 커버리지 포함 테스트
|
|
304
|
-
npm run test -- --coverage
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
## 📚 개발자 가이드라인
|
|
308
|
-
|
|
309
|
-
### 저장소 가이드라인 (`AGENTS.md`)
|
|
310
|
-
- **프로젝트 구조**: `src/` 하위 모듈별 조직화
|
|
311
|
-
- **빌드/테스트 명령어**: `npm run dev`, `npm run build`, `npm run test` 등
|
|
312
|
-
- **코딩 스타일**: Node.js ≥ 20, TypeScript ES 모듈, 2칸 들여쓰기
|
|
313
|
-
- **테스트 가이드라인**: Vitest 기반, `src/test/` 또는 `*.spec.ts` 파일
|
|
314
|
-
- **커밋/PR 가이드라인**: Conventional Commits, 한국어 컨텍스트 포함
|
|
315
|
-
- **환경/데이터베이스**: `.env` 설정, `data/` 폴더 관리
|
|
316
|
-
|
|
317
|
-
## 📊 성능 지표
|
|
318
|
-
|
|
319
|
-
### 기본 성능
|
|
320
|
-
- **데이터베이스 성능**: 평균 쿼리 시간 0.16-0.22ms
|
|
321
|
-
- **검색 성능**: 0.78-4.24ms (캐시 효과로 개선)
|
|
322
|
-
- **메모리 사용량**: 11-15MB 힙 사용량
|
|
323
|
-
- **동시 연결**: 최대 1000개 연결 지원
|
|
324
|
-
|
|
325
|
-
### 고급 성능 최적화
|
|
326
|
-
- **캐시 히트율**: 80% 이상 (검색 결과 캐싱)
|
|
327
|
-
- **임베딩 캐싱**: 24시간 TTL로 비용 절약
|
|
328
|
-
- **비동기 처리**: 워커 풀 기반 병렬 처리
|
|
329
|
-
- **데이터베이스 최적화**: 자동 인덱스 추천 및 생성
|
|
330
|
-
- **실시간 모니터링**: 30초마다 자동 성능 체크
|
|
331
|
-
- **에러 로깅**: 구조화된 에러 추적 및 통계
|
|
332
|
-
- **성능 알림**: 임계값 기반 자동 알림 시스템
|
|
333
|
-
|
|
334
|
-
### 경량 임베딩 성능
|
|
335
|
-
- **TF-IDF 벡터화**: 512차원 고정 벡터 생성
|
|
336
|
-
- **다국어 지원**: 한국어/영어 불용어 제거
|
|
337
|
-
- **로컬 처리**: OpenAI API 없이 동작
|
|
338
|
-
- **코사인 유사도**: 빠른 벡터 검색
|
|
339
|
-
|
|
340
|
-
## 🏗️ 아키텍처
|
|
341
|
-
|
|
342
|
-
### M1: 개인용 (현재 구현)
|
|
343
|
-
- **스토리지**: better-sqlite3 임베디드
|
|
344
|
-
- **인덱스**: FTS5 + sqlite-vss
|
|
345
|
-
- **인증**: 없음 (로컬 전용)
|
|
346
|
-
- **운영**: 로컬 실행
|
|
347
|
-
- **MCP 클라이언트**: 핵심 5개 도구만 노출
|
|
348
|
-
- **관리 기능**: HTTP API로 분리
|
|
349
|
-
- **추가 기능**: 경량 임베딩, 성능 모니터링, 캐시 시스템
|
|
350
|
-
|
|
351
|
-
### M2: 팀 협업 (계획)
|
|
352
|
-
- **스토리지**: SQLite 서버 모드
|
|
353
|
-
- **인증**: API Key
|
|
354
|
-
- **운영**: Docker 단일 컨테이너
|
|
355
|
-
|
|
356
|
-
### M3: 조직 초입 (계획)
|
|
357
|
-
- **스토리지**: PostgreSQL + pgvector
|
|
358
|
-
- **인증**: JWT
|
|
359
|
-
- **운영**: Docker Compose
|
|
360
|
-
|
|
361
|
-
## ❓ 자주 묻는 질문 (FAQ)
|
|
362
|
-
|
|
363
|
-
### Q: Memento는 어떤 AI Agent와 호환되나요?
|
|
364
|
-
A: MCP(Model Context Protocol)를 지원하는 모든 AI Agent와 호환됩니다. Claude, GPT-4, Gemini 등과 연동 가능합니다.
|
|
365
|
-
|
|
366
|
-
### Q: 기억 데이터는 어디에 저장되나요?
|
|
367
|
-
A: 기본적으로 로컬 SQLite 데이터베이스(`./data/memory.db`)에 저장됩니다. Docker를 사용하는 경우 컨테이너 내부에 저장됩니다.
|
|
368
|
-
|
|
369
|
-
### Q: OpenAI API 키가 필요한가요?
|
|
370
|
-
A: 선택사항입니다. OpenAI API 키가 없어도 TF-IDF 기반 경량 임베딩으로 동작합니다. 더 정확한 검색을 원한다면 OpenAI API 키를 설정하세요.
|
|
371
|
-
|
|
372
|
-
### Q: 기억 용량에 제한이 있나요?
|
|
373
|
-
A: SQLite 데이터베이스의 제한에 따라 달라집니다. 일반적으로 수백만 개의 기억을 저장할 수 있습니다.
|
|
374
|
-
|
|
375
|
-
### Q: 다른 사용자와 기억을 공유할 수 있나요?
|
|
376
|
-
A: 현재 M1 버전은 개인용입니다. M2 버전부터 팀 협업 기능이 추가될 예정입니다.
|
|
377
|
-
|
|
378
|
-
### Q: 기억이 자동으로 삭제되나요?
|
|
379
|
-
A: 네, 망각 정책에 따라 자동으로 삭제됩니다. 중요한 기억은 `pin` 기능으로 고정할 수 있습니다.
|
|
380
|
-
|
|
381
|
-
## 🤝 기여하기
|
|
382
|
-
|
|
383
|
-
Memento 프로젝트에 기여하고 싶으신가요? 자세한 가이드는 [CONTRIBUTING.md](CONTRIBUTING.md)를 참조하세요.
|
|
384
|
-
|
|
385
|
-
### 빠른 기여 시작
|
|
386
|
-
1. **Fork** the Project
|
|
387
|
-
2. **Create** your Feature Branch (`git checkout -b feature/AmazingFeature`)
|
|
388
|
-
3. **Commit** your Changes (`git commit -m 'feat: add some AmazingFeature'`)
|
|
389
|
-
4. **Push** to the Branch (`git push origin feature/AmazingFeature`)
|
|
390
|
-
5. **Open** a Pull Request
|
|
391
|
-
|
|
392
|
-
### 개발 환경 설정
|
|
393
|
-
```bash
|
|
394
|
-
# 저장소 포크 후 클론
|
|
395
|
-
git clone https://github.com/your-username/memento.git
|
|
396
|
-
cd memento
|
|
397
|
-
|
|
398
|
-
# 의존성 설치
|
|
399
|
-
npm install
|
|
400
|
-
|
|
401
|
-
# 개발 서버 시작
|
|
402
|
-
npm run dev
|
|
403
|
-
|
|
404
|
-
# 테스트 실행
|
|
405
|
-
npm run test
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
### 기여 방법
|
|
409
|
-
- 🐛 **버그 리포트**: [GitHub Issues](https://github.com/jee1/memento/issues)에서 버그를 신고하세요
|
|
410
|
-
- 💡 **기능 제안**: 새로운 아이디어를 제안해주세요
|
|
411
|
-
- 📝 **문서 개선**: 문서를 더 명확하게 만들어주세요
|
|
412
|
-
- 🔧 **코드 기여**: 새로운 기능이나 버그 수정을 도와주세요
|
|
413
|
-
|
|
414
|
-
## 📄 라이선스
|
|
415
|
-
|
|
416
|
-
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 `LICENSE` 파일을 참조하세요.
|
|
417
|
-
|
|
418
|
-
## 📞 지원
|
|
419
|
-
|
|
420
|
-
- 이슈 리포트: [GitHub Issues](https://github.com/jee1/memento/issues)
|
|
421
|
-
- 문서: [Wiki](https://github.com/jee1/memento/wiki)
|
|
422
|
-
- 개발자 가이드: [docs/developer-guide.md](docs/developer-guide.md)
|
|
423
|
-
- API 참조: [docs/api-reference.md](docs/api-reference.md)
|
|
424
|
-
|
|
425
|
-
## 🙏 감사의 말
|
|
426
|
-
|
|
427
|
-
- [Model Context Protocol](https://modelcontextprotocol.io/) - MCP 프로토콜
|
|
428
|
-
- [OpenAI](https://openai.com/) - 임베딩 서비스
|
|
429
|
-
- [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) - 고성능 SQLite 드라이버
|
|
430
|
-
- [Express](https://expressjs.com/) - 웹 프레임워크
|
|
431
|
-
- [Vitest](https://vitest.dev/) - 테스트 프레임워크
|
|
432
|
-
- [TypeScript](https://www.typescriptlang.org/) - 개발 언어
|
|
1
|
+
# 🧠 Memento MCP Server
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="static/logo.png" alt="Memento Logo" width="200" height="200">
|
|
5
|
+
|
|
6
|
+
<h3>✨ AI Agent의 기억을 영원히 기억하세요 ✨</h3>
|
|
7
|
+
|
|
8
|
+
<p><strong>사람의 기억 구조를 모사한 지능형 메모리 관리 시스템</strong></p>
|
|
9
|
+
|
|
10
|
+
[🇰🇷 한국어](README.md) | [🇺🇸 English](README.en.md)
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
> **🚀 혁신적인 AI Agent 기억 보조 시스템**
|
|
14
|
+
> Memento는 AI Agent가 사람처럼 기억을 저장, 검색, 관리할 수 있도록 도와주는 MCP(Model Context Protocol) 서버입니다.
|
|
15
|
+
> 작업기억, 일화기억, 의미기억, 절차기억을 모사하여 **진정한 장기 기억**을 구현합니다.
|
|
16
|
+
|
|
17
|
+
## 🎯 프로젝트 개요
|
|
18
|
+
|
|
19
|
+
Memento MCP Server는 AI Agent가 장기 기억을 저장하고 관리할 수 있도록 도와주는 MCP(Model Context Protocol) 서버입니다. 사람의 기억 구조(작업기억, 일화기억, 의미기억, 절차기억)를 모사하여 효율적인 기억 관리 시스템을 제공합니다.
|
|
20
|
+
|
|
21
|
+
## ✨ 주요 기능
|
|
22
|
+
|
|
23
|
+
### 🧠 핵심 메모리 관리 (MCP 클라이언트)
|
|
24
|
+
- **기억 저장**: 4가지 타입의 기억 저장 (working, episodic, semantic, procedural)
|
|
25
|
+
- **기억 검색**: 하이브리드 검색 (텍스트 + 벡터)
|
|
26
|
+
- **기억 고정**: 중요한 기억 고정/해제
|
|
27
|
+
- **기억 삭제**: 소프트/하드 삭제
|
|
28
|
+
|
|
29
|
+
### 🔍 고급 검색
|
|
30
|
+
- **FTS5 텍스트 검색**: SQLite의 Full-Text Search
|
|
31
|
+
- **벡터 검색**: sqlite-vec 기반 의미적 검색
|
|
32
|
+
- **하이브리드 검색**: 텍스트와 벡터 검색의 결합
|
|
33
|
+
- **다중 임베딩 제공자**: TF-IDF, MiniLM, OpenAI, Gemini 지원
|
|
34
|
+
- **자동 제공자 선택**: 설정 기반 최적 제공자 자동 선택
|
|
35
|
+
- **폴백 메커니즘**: 제공자 실패 시 자동 대체 (OpenAI → 경량 서비스)
|
|
36
|
+
- **태그 기반 필터링**: 메타데이터 기반 검색
|
|
37
|
+
|
|
38
|
+
### 🧹 망각 정책
|
|
39
|
+
- **망각 알고리즘**: 최근성, 사용성, 중복 비율 기반 망각 점수 계산
|
|
40
|
+
- **간격 반복**: 중요도와 사용성 기반 리뷰 스케줄링
|
|
41
|
+
- **TTL 관리**: 타입별 수명 관리
|
|
42
|
+
- **자동 정리**: 소프트/하드 삭제 자동화
|
|
43
|
+
|
|
44
|
+
### 📊 성능 모니터링 (HTTP 관리 API)
|
|
45
|
+
- **실시간 메트릭**: 데이터베이스, 검색, 메모리 성능 모니터링
|
|
46
|
+
- **실시간 알림**: 30초마다 자동 성능 체크 및 임계값 기반 알림
|
|
47
|
+
- **에러 로깅**: 구조화된 에러 로깅 및 통계 수집
|
|
48
|
+
- **데이터베이스 최적화**: 자동 인덱스 추천 및 생성
|
|
49
|
+
- **캐시 시스템**: LRU + TTL 기반 캐싱
|
|
50
|
+
- **비동기 처리**: 워커 풀 기반 병렬 처리
|
|
51
|
+
|
|
52
|
+
## 🚀 빠른 시작
|
|
53
|
+
|
|
54
|
+
### 🥇 **원클릭 설치 (권장)**
|
|
55
|
+
```bash
|
|
56
|
+
# 자동 설치 스크립트 실행
|
|
57
|
+
curl -sSL https://raw.githubusercontent.com/jee1/memento/main/install.sh | bash
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 🥈 **npx 방식 (개발자용)**
|
|
61
|
+
```bash
|
|
62
|
+
# 즉시 실행 (설치 없이)
|
|
63
|
+
npx memento-mcp-server@latest dev
|
|
64
|
+
|
|
65
|
+
# MCP 서버 실행
|
|
66
|
+
npx memento-mcp-server@latest
|
|
67
|
+
|
|
68
|
+
# HTTP 서버 실행
|
|
69
|
+
npx memento-mcp-server@latest http
|
|
70
|
+
|
|
71
|
+
# 자동 설정
|
|
72
|
+
npx memento-mcp-server@latest setup
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 🥉 **Docker 방식 (프로덕션용)**
|
|
76
|
+
```bash
|
|
77
|
+
# 개발 환경
|
|
78
|
+
docker-compose -f docker-compose.dev.yml up -d
|
|
79
|
+
|
|
80
|
+
# 프로덕션 환경
|
|
81
|
+
docker-compose -f docker-compose.prod.yml up -d
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 🛠️ **소스코드 방식 (개발자용)**
|
|
85
|
+
```bash
|
|
86
|
+
# 저장소 클론
|
|
87
|
+
git clone https://github.com/jee1/memento.git
|
|
88
|
+
cd memento
|
|
89
|
+
|
|
90
|
+
# 원클릭 설치 및 실행
|
|
91
|
+
npm run quick-start
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 📚 **상세 설치 가이드**
|
|
95
|
+
자세한 설치 방법은 [INSTALL.md](INSTALL.md)를 참조하세요.
|
|
96
|
+
|
|
97
|
+
## 💡 사용 예시
|
|
98
|
+
|
|
99
|
+
### 🤖 AI Agent와의 연동
|
|
100
|
+
```typescript
|
|
101
|
+
// AI Agent가 학습한 내용을 기억에 저장
|
|
102
|
+
await client.callTool({
|
|
103
|
+
name: "remember",
|
|
104
|
+
arguments: {
|
|
105
|
+
content: "사용자는 React Hook을 학습했습니다. useState는 상태를 관리하고, useEffect는 사이드 이펙트를 처리합니다.",
|
|
106
|
+
type: "episodic",
|
|
107
|
+
tags: ["react", "hooks", "javascript"],
|
|
108
|
+
importance: 0.8
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// 나중에 관련 정보를 검색
|
|
113
|
+
const results = await client.callTool({
|
|
114
|
+
name: "recall",
|
|
115
|
+
arguments: {
|
|
116
|
+
query: "React Hook 사용법",
|
|
117
|
+
limit: 5
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 📚 지식 관리 시스템
|
|
123
|
+
```typescript
|
|
124
|
+
// 중요한 지식을 의미기억으로 저장
|
|
125
|
+
await client.callTool({
|
|
126
|
+
name: "remember",
|
|
127
|
+
arguments: {
|
|
128
|
+
content: "TypeScript의 제네릭은 타입을 매개변수화하여 재사용 가능한 컴포넌트를 만드는 기능입니다.",
|
|
129
|
+
type: "semantic",
|
|
130
|
+
tags: ["typescript", "generics", "programming"],
|
|
131
|
+
importance: 0.9
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 🔧 절차 기억 관리
|
|
137
|
+
```typescript
|
|
138
|
+
// 작업 절차를 절차기억으로 저장
|
|
139
|
+
await client.callTool({
|
|
140
|
+
name: "remember",
|
|
141
|
+
arguments: {
|
|
142
|
+
content: "Docker 컨테이너 빌드 및 배포 절차: 1) Dockerfile 작성 2) docker build 실행 3) docker run으로 테스트 4) 레지스트리에 푸시",
|
|
143
|
+
type: "procedural",
|
|
144
|
+
tags: ["docker", "deployment", "devops"],
|
|
145
|
+
importance: 0.7
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 🛠️ 사용법
|
|
151
|
+
|
|
152
|
+
### MCP 클라이언트 연결
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
156
|
+
|
|
157
|
+
const client = new Client({
|
|
158
|
+
name: "memento-client",
|
|
159
|
+
version: "0.1.0"
|
|
160
|
+
}, {
|
|
161
|
+
capabilities: {
|
|
162
|
+
tools: {},
|
|
163
|
+
resources: {},
|
|
164
|
+
prompts: {}
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// stdio 연결
|
|
169
|
+
await client.connect({
|
|
170
|
+
command: "node",
|
|
171
|
+
args: ["dist/server/index.js"]
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// WebSocket 연결
|
|
175
|
+
await client.connect({
|
|
176
|
+
transport: {
|
|
177
|
+
type: "websocket",
|
|
178
|
+
url: "ws://localhost:9001/mcp"
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### 기억 저장
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// 기억 저장
|
|
187
|
+
const result = await client.callTool({
|
|
188
|
+
name: "remember",
|
|
189
|
+
arguments: {
|
|
190
|
+
content: "React Hook에 대해 학습했습니다. useState는 상태를 관리하고, useEffect는 사이드 이펙트를 처리합니다.",
|
|
191
|
+
type: "episodic",
|
|
192
|
+
tags: ["react", "hooks", "javascript"],
|
|
193
|
+
importance: 0.8
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### 기억 검색
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
// 기억 검색
|
|
202
|
+
const results = await client.callTool({
|
|
203
|
+
name: "recall",
|
|
204
|
+
arguments: {
|
|
205
|
+
query: "React Hook",
|
|
206
|
+
filters: {
|
|
207
|
+
type: ["episodic", "semantic"],
|
|
208
|
+
tags: ["react"]
|
|
209
|
+
},
|
|
210
|
+
limit: 10
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## 📚 문서
|
|
216
|
+
|
|
217
|
+
- [임베딩 서비스 가이드](docs/ko/embedding-service-guide.md) - 임베딩 서비스 사용법
|
|
218
|
+
- [성능 벤치마크](docs/ko/embedding-performance-benchmark.md) - 성능 비교 결과
|
|
219
|
+
- [API 레퍼런스](docs/ko/embedding-api-reference.md) - API 상세 문서
|
|
220
|
+
- [설정 가이드](docs/ko/embedding-configuration.md) - 환경 설정 방법
|
|
221
|
+
|
|
222
|
+
## 📋 API 문서
|
|
223
|
+
|
|
224
|
+
### MCP Tools (핵심 5개만)
|
|
225
|
+
|
|
226
|
+
> **중요**: MCP 클라이언트는 핵심 메모리 관리 기능 5개만 노출합니다.
|
|
227
|
+
> 관리 기능들은 HTTP API 엔드포인트로 분리되었습니다.
|
|
228
|
+
|
|
229
|
+
| Tool | 설명 | 파라미터 |
|
|
230
|
+
|------|------|----------|
|
|
231
|
+
| `remember` | 기억 저장 | content, type, tags, importance, source, privacy_scope |
|
|
232
|
+
| `recall` | 기억 검색 | query, filters, limit |
|
|
233
|
+
| `pin` | 기억 고정 | memory_id |
|
|
234
|
+
| `unpin` | 기억 고정 해제 | memory_id |
|
|
235
|
+
| `forget` | 기억 삭제 | memory_id, hard |
|
|
236
|
+
|
|
237
|
+
### HTTP 관리 API
|
|
238
|
+
|
|
239
|
+
| 엔드포인트 | 설명 | 메서드 |
|
|
240
|
+
|-----------|------|--------|
|
|
241
|
+
| `/admin/memory/cleanup` | 메모리 정리 | POST |
|
|
242
|
+
| `/admin/stats/forgetting` | 망각 통계 조회 | GET |
|
|
243
|
+
| `/admin/stats/performance` | 성능 통계 조회 | GET |
|
|
244
|
+
| `/admin/stats/errors` | 에러 통계 조회 | GET |
|
|
245
|
+
| `/admin/errors/resolve` | 에러 해결 | POST |
|
|
246
|
+
| `/admin/alerts/performance` | 성능 알림 조회 | GET |
|
|
247
|
+
| `/admin/database/optimize` | 데이터베이스 최적화 | POST |
|
|
248
|
+
|
|
249
|
+
### Resources
|
|
250
|
+
|
|
251
|
+
| Resource | 설명 |
|
|
252
|
+
|----------|------|
|
|
253
|
+
| `memory/{id}` | 단일 기억 상세 정보 |
|
|
254
|
+
| `memory/search?query=...` | 검색 결과 캐시 |
|
|
255
|
+
|
|
256
|
+
## 🔧 설정
|
|
257
|
+
|
|
258
|
+
### 환경 변수
|
|
259
|
+
|
|
260
|
+
| 변수 | 기본값 | 설명 |
|
|
261
|
+
|------|--------|------|
|
|
262
|
+
| `NODE_ENV` | development | 실행 환경 |
|
|
263
|
+
| `PORT` | 9001 | 서버 포트 |
|
|
264
|
+
| `DB_PATH` | ./data/memory.db | 데이터베이스 경로 |
|
|
265
|
+
| `LOG_LEVEL` | info | 로그 레벨 |
|
|
266
|
+
| `OPENAI_API_KEY` | - | OpenAI API 키 (선택사항) |
|
|
267
|
+
|
|
268
|
+
### 망각 정책 설정
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
# 망각 임계값
|
|
272
|
+
FORGET_THRESHOLD=0.6
|
|
273
|
+
SOFT_DELETE_THRESHOLD=0.6
|
|
274
|
+
HARD_DELETE_THRESHOLD=0.8
|
|
275
|
+
|
|
276
|
+
# TTL 설정 (일 단위)
|
|
277
|
+
TTL_SOFT_WORKING=2
|
|
278
|
+
TTL_SOFT_EPISODIC=30
|
|
279
|
+
TTL_SOFT_SEMANTIC=180
|
|
280
|
+
TTL_SOFT_PROCEDURAL=90
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## 🧪 테스트
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
# 모든 테스트 실행 (Vitest)
|
|
287
|
+
npm run test
|
|
288
|
+
|
|
289
|
+
# 개별 테스트 실행
|
|
290
|
+
npm run test:client # 클라이언트 테스트
|
|
291
|
+
npm run test:search # 검색 기능 테스트
|
|
292
|
+
npm run test:embedding # 임베딩 기능 테스트
|
|
293
|
+
npm run test:lightweight-embedding # 경량 임베딩 테스트
|
|
294
|
+
npm run test:forgetting # 망각 정책 테스트
|
|
295
|
+
npm run test:performance # 성능 벤치마크
|
|
296
|
+
npm run test:monitoring # 성능 모니터링 테스트
|
|
297
|
+
npm run test:error-logging # 에러 로깅 테스트
|
|
298
|
+
npm run test:performance-alerts # 성능 알림 테스트
|
|
299
|
+
|
|
300
|
+
# 테스트 감시 모드
|
|
301
|
+
npm run test -- --watch
|
|
302
|
+
|
|
303
|
+
# 커버리지 포함 테스트
|
|
304
|
+
npm run test -- --coverage
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
## 📚 개발자 가이드라인
|
|
308
|
+
|
|
309
|
+
### 저장소 가이드라인 (`AGENTS.md`)
|
|
310
|
+
- **프로젝트 구조**: `src/` 하위 모듈별 조직화
|
|
311
|
+
- **빌드/테스트 명령어**: `npm run dev`, `npm run build`, `npm run test` 등
|
|
312
|
+
- **코딩 스타일**: Node.js ≥ 20, TypeScript ES 모듈, 2칸 들여쓰기
|
|
313
|
+
- **테스트 가이드라인**: Vitest 기반, `src/test/` 또는 `*.spec.ts` 파일
|
|
314
|
+
- **커밋/PR 가이드라인**: Conventional Commits, 한국어 컨텍스트 포함
|
|
315
|
+
- **환경/데이터베이스**: `.env` 설정, `data/` 폴더 관리
|
|
316
|
+
|
|
317
|
+
## 📊 성능 지표
|
|
318
|
+
|
|
319
|
+
### 기본 성능
|
|
320
|
+
- **데이터베이스 성능**: 평균 쿼리 시간 0.16-0.22ms
|
|
321
|
+
- **검색 성능**: 0.78-4.24ms (캐시 효과로 개선)
|
|
322
|
+
- **메모리 사용량**: 11-15MB 힙 사용량
|
|
323
|
+
- **동시 연결**: 최대 1000개 연결 지원
|
|
324
|
+
|
|
325
|
+
### 고급 성능 최적화
|
|
326
|
+
- **캐시 히트율**: 80% 이상 (검색 결과 캐싱)
|
|
327
|
+
- **임베딩 캐싱**: 24시간 TTL로 비용 절약
|
|
328
|
+
- **비동기 처리**: 워커 풀 기반 병렬 처리
|
|
329
|
+
- **데이터베이스 최적화**: 자동 인덱스 추천 및 생성
|
|
330
|
+
- **실시간 모니터링**: 30초마다 자동 성능 체크
|
|
331
|
+
- **에러 로깅**: 구조화된 에러 추적 및 통계
|
|
332
|
+
- **성능 알림**: 임계값 기반 자동 알림 시스템
|
|
333
|
+
|
|
334
|
+
### 경량 임베딩 성능
|
|
335
|
+
- **TF-IDF 벡터화**: 512차원 고정 벡터 생성
|
|
336
|
+
- **다국어 지원**: 한국어/영어 불용어 제거
|
|
337
|
+
- **로컬 처리**: OpenAI API 없이 동작
|
|
338
|
+
- **코사인 유사도**: 빠른 벡터 검색
|
|
339
|
+
|
|
340
|
+
## 🏗️ 아키텍처
|
|
341
|
+
|
|
342
|
+
### M1: 개인용 (현재 구현)
|
|
343
|
+
- **스토리지**: better-sqlite3 임베디드
|
|
344
|
+
- **인덱스**: FTS5 + sqlite-vss
|
|
345
|
+
- **인증**: 없음 (로컬 전용)
|
|
346
|
+
- **운영**: 로컬 실행
|
|
347
|
+
- **MCP 클라이언트**: 핵심 5개 도구만 노출
|
|
348
|
+
- **관리 기능**: HTTP API로 분리
|
|
349
|
+
- **추가 기능**: 경량 임베딩, 성능 모니터링, 캐시 시스템
|
|
350
|
+
|
|
351
|
+
### M2: 팀 협업 (계획)
|
|
352
|
+
- **스토리지**: SQLite 서버 모드
|
|
353
|
+
- **인증**: API Key
|
|
354
|
+
- **운영**: Docker 단일 컨테이너
|
|
355
|
+
|
|
356
|
+
### M3: 조직 초입 (계획)
|
|
357
|
+
- **스토리지**: PostgreSQL + pgvector
|
|
358
|
+
- **인증**: JWT
|
|
359
|
+
- **운영**: Docker Compose
|
|
360
|
+
|
|
361
|
+
## ❓ 자주 묻는 질문 (FAQ)
|
|
362
|
+
|
|
363
|
+
### Q: Memento는 어떤 AI Agent와 호환되나요?
|
|
364
|
+
A: MCP(Model Context Protocol)를 지원하는 모든 AI Agent와 호환됩니다. Claude, GPT-4, Gemini 등과 연동 가능합니다.
|
|
365
|
+
|
|
366
|
+
### Q: 기억 데이터는 어디에 저장되나요?
|
|
367
|
+
A: 기본적으로 로컬 SQLite 데이터베이스(`./data/memory.db`)에 저장됩니다. Docker를 사용하는 경우 컨테이너 내부에 저장됩니다.
|
|
368
|
+
|
|
369
|
+
### Q: OpenAI API 키가 필요한가요?
|
|
370
|
+
A: 선택사항입니다. OpenAI API 키가 없어도 TF-IDF 기반 경량 임베딩으로 동작합니다. 더 정확한 검색을 원한다면 OpenAI API 키를 설정하세요.
|
|
371
|
+
|
|
372
|
+
### Q: 기억 용량에 제한이 있나요?
|
|
373
|
+
A: SQLite 데이터베이스의 제한에 따라 달라집니다. 일반적으로 수백만 개의 기억을 저장할 수 있습니다.
|
|
374
|
+
|
|
375
|
+
### Q: 다른 사용자와 기억을 공유할 수 있나요?
|
|
376
|
+
A: 현재 M1 버전은 개인용입니다. M2 버전부터 팀 협업 기능이 추가될 예정입니다.
|
|
377
|
+
|
|
378
|
+
### Q: 기억이 자동으로 삭제되나요?
|
|
379
|
+
A: 네, 망각 정책에 따라 자동으로 삭제됩니다. 중요한 기억은 `pin` 기능으로 고정할 수 있습니다.
|
|
380
|
+
|
|
381
|
+
## 🤝 기여하기
|
|
382
|
+
|
|
383
|
+
Memento 프로젝트에 기여하고 싶으신가요? 자세한 가이드는 [CONTRIBUTING.md](CONTRIBUTING.md)를 참조하세요.
|
|
384
|
+
|
|
385
|
+
### 빠른 기여 시작
|
|
386
|
+
1. **Fork** the Project
|
|
387
|
+
2. **Create** your Feature Branch (`git checkout -b feature/AmazingFeature`)
|
|
388
|
+
3. **Commit** your Changes (`git commit -m 'feat: add some AmazingFeature'`)
|
|
389
|
+
4. **Push** to the Branch (`git push origin feature/AmazingFeature`)
|
|
390
|
+
5. **Open** a Pull Request
|
|
391
|
+
|
|
392
|
+
### 개발 환경 설정
|
|
393
|
+
```bash
|
|
394
|
+
# 저장소 포크 후 클론
|
|
395
|
+
git clone https://github.com/your-username/memento.git
|
|
396
|
+
cd memento
|
|
397
|
+
|
|
398
|
+
# 의존성 설치
|
|
399
|
+
npm install
|
|
400
|
+
|
|
401
|
+
# 개발 서버 시작
|
|
402
|
+
npm run dev
|
|
403
|
+
|
|
404
|
+
# 테스트 실행
|
|
405
|
+
npm run test
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### 기여 방법
|
|
409
|
+
- 🐛 **버그 리포트**: [GitHub Issues](https://github.com/jee1/memento/issues)에서 버그를 신고하세요
|
|
410
|
+
- 💡 **기능 제안**: 새로운 아이디어를 제안해주세요
|
|
411
|
+
- 📝 **문서 개선**: 문서를 더 명확하게 만들어주세요
|
|
412
|
+
- 🔧 **코드 기여**: 새로운 기능이나 버그 수정을 도와주세요
|
|
413
|
+
|
|
414
|
+
## 📄 라이선스
|
|
415
|
+
|
|
416
|
+
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 `LICENSE` 파일을 참조하세요.
|
|
417
|
+
|
|
418
|
+
## 📞 지원
|
|
419
|
+
|
|
420
|
+
- 이슈 리포트: [GitHub Issues](https://github.com/jee1/memento/issues)
|
|
421
|
+
- 문서: [Wiki](https://github.com/jee1/memento/wiki)
|
|
422
|
+
- 개발자 가이드: [docs/developer-guide.md](docs/developer-guide.md)
|
|
423
|
+
- API 참조: [docs/api-reference.md](docs/api-reference.md)
|
|
424
|
+
|
|
425
|
+
## 🙏 감사의 말
|
|
426
|
+
|
|
427
|
+
- [Model Context Protocol](https://modelcontextprotocol.io/) - MCP 프로토콜
|
|
428
|
+
- [OpenAI](https://openai.com/) - 임베딩 서비스
|
|
429
|
+
- [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) - 고성능 SQLite 드라이버
|
|
430
|
+
- [Express](https://expressjs.com/) - 웹 프레임워크
|
|
431
|
+
- [Vitest](https://vitest.dev/) - 테스트 프레임워크
|
|
432
|
+
- [TypeScript](https://www.typescriptlang.org/) - 개발 언어
|