{"_id":"@alex900530/claude-persistent-memory","_rev":"11-83c377941fb4630a45413a37a43b3708","name":"@alex900530/claude-persistent-memory","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@alex900530/claude-persistent-memory","version":"1.0.0","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.0","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js"},"dist":{"shasum":"fa304a6a541723ee2312bbbe63e0560d949cc3f2","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.0.tgz","fileCount":21,"integrity":"sha512-qqUQBYa66Q5PFW6Uzh9g2OGlCy7Y0um8ty+7AwIbx0IvOWAdfBP3/C02nL3DNLDzNKngwuuFaK3wFfkSKortIw==","signatures":[{"sig":"MEYCIQC+IoOBHkoVOZXYNCZ5XuXIRaG8dZFn2qhkEx14vxueEAIhAMoHk5xvCn6hHPb2BIVZmQsZd2eH4MEc6xSngy6M/2t5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142396},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","uninstall":"node bin/uninstall.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.0_1772005857347_0.1944903911172502","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alex900530/claude-persistent-memory","version":"1.0.1","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.1","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js"},"dist":{"shasum":"dbab810173b364a4053d05b0f3c666300b44ce5a","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.1.tgz","fileCount":21,"integrity":"sha512-HD+eXOAO2NIFXYoCIwb6k3gHr+mLnB+YOL8h7Ny9gRe760FR6LRFomus+pQRMjk4oqRVWtMkRLKjaJsgKFgx4A==","signatures":[{"sig":"MEYCIQClHOZCVmJxukDzj3odoFJyC3kYHKc7BdzJADHE8obosgIhAOrkAc8R15r0W8mnf7wSx6T3yxjH8Si5nqO1MlKuJlLQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142699},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","uninstall":"node bin/uninstall.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.1_1772006773352_0.7387868394939814","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alex900530/claude-persistent-memory","version":"1.0.2","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.2","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js"},"dist":{"shasum":"784316f78c5344b6aaea285ad20495ebfa93af92","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.2.tgz","fileCount":21,"integrity":"sha512-1WNqxB3uxlmwKzLVcuM2fJlqfRQGzo0SDPUIgKPY0n6y7WXB8t0lG2F+zg2Z++UHfOtIY/3b9b+ZPUG/wvANgg==","signatures":[{"sig":"MEYCIQC2lp2aSIRe/w1T48dyR7IxT/EY0ZrsYlaAbIhtfE/GdgIhAPXHN8+VrRGAseg2h3kE8M5ZJ/CjM5bvgtMyUJrMaL/t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142785},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","uninstall":"node bin/uninstall.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.2_1772007037164_0.12248094239192953","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@alex900530/claude-persistent-memory","version":"1.0.3","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.3","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js"},"dist":{"shasum":"03e19f506f49dde506988f1a0b552052a0fca76c","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.3.tgz","fileCount":21,"integrity":"sha512-lVuve/HQ4S5buzrP+qMfPKwGBnzmAzvNCKJQpm8N8gLqkjh1+jJVl8M586mel+EVYlDeWBE01Wbre6uC1YEEpw==","signatures":[{"sig":"MEYCIQCRhSlRHZWhICiJTGIfNn8N91JrVp5qhSKtVRiSvZEsMgIhAIZfE4DsDHCeZ1DsD+po1oja1I5F2TiN5LKId7q2nUYP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142815},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","uninstall":"node bin/uninstall.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.3_1772007781693_0.283432317744704","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@alex900530/claude-persistent-memory","version":"1.0.4","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.4","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js"},"dist":{"shasum":"f28d62e850dd3547ca180a7b76880606d3c54958","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.4.tgz","fileCount":21,"integrity":"sha512-sQoby+U9TTer4cRop3SbmMp7BEmXQwqM63RNAKZaE7zQRUogY+kCF7Ha08EnwUfQ2lBYLAWh/Ie/XytgXZWeJA==","signatures":[{"sig":"MEQCIGgJ6kCKZF/dranslnaOMxdUklOi6JNghcVYSx9+/YXUAiB6P0ZAQaZDYrrifVEO3I5vcr3N8sQ8DD6Y8wdXZBGWUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142815},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","uninstall":"node bin/uninstall.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.4_1772007868709_0.39648460210433845","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@alex900530/claude-persistent-memory","version":"1.0.5","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.5","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js"},"dist":{"shasum":"ba99c1785791943cb51e18097ac67b208cf3daef","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.5.tgz","fileCount":21,"integrity":"sha512-3vYKpiyYDMg+cqmGBjuh+rt35XzpzE/pJPSgUQtygEU8vr6RbrqYjsr5RGfHRdk7YXRhF7oQP4bEZKMFhfZfMg==","signatures":[{"sig":"MEQCIENzHhagGYzfilJ67Ct6Fa96a2dE9MgWQRcwktzDVyAFAiAiv62ZPIkYmQisdDw50a9/NbPi9eFl3LfnaFBh7OSZmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143101},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","uninstall":"node bin/uninstall.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.5_1772008106708_0.9497450106237082","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@alex900530/claude-persistent-memory","version":"1.0.6","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.6","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js","claude-persistent-memory-uninstall":"bin/uninstall.js"},"dist":{"shasum":"710636d1873971754b46267244dd80e65b9b04b5","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.6.tgz","fileCount":21,"integrity":"sha512-WYTA+yvkivarvjuqX5sCih65wGlk/YA6jxN5ss92aAvqS1Xyu8S+pVT8W7bcU1KrM/1PU5b2NmMEqUCqwBoIig==","signatures":[{"sig":"MEYCIQDOILZDMJZVkUaqH4TUB6W97d1Vtfjp3dZLCnF+/svuowIhAIPs7+PzTL3wwsiP5MOEY9lXkNQceti/G8AYYDGY5UBn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143166},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","preuninstall":"node bin/uninstall.js","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.6_1772008727190_0.7952917658109395","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@alex900530/claude-persistent-memory","version":"1.0.7","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.7","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js","claude-persistent-memory-uninstall":"bin/uninstall.js"},"dist":{"shasum":"9db0ee04450728848846ced1c66cf8100b32a0f0","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.7.tgz","fileCount":21,"integrity":"sha512-Qs+Gvl7IGOFyDIkvUeHbtiq74iXMUlYu1gsFMaqdYGufXCSIEwuVeXWRRJRGGaTV/0SAfr+SsiPZTq7pxBdYGQ==","signatures":[{"sig":"MEYCIQCu+SbsphBA4vCrqP8TWzuPkn0yS7OIUjc4LDqt4P1fxQIhALiExeM5/L3dMCLDmENhXsKh2Rdt3CWubuESX0Jytw5R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143240},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","preuninstall":"node bin/uninstall.js","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.7_1772008958798_0.7863720736299369","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@alex900530/claude-persistent-memory","version":"1.0.8","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.0.8","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js","claude-persistent-memory-uninstall":"bin/uninstall.js"},"dist":{"shasum":"c06ed7be33365e47383706d6caf3c407ac372335","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.0.8.tgz","fileCount":21,"integrity":"sha512-1w/eV0Zl/qGd9awTVepsr+n443rluaDrTDFPQOpCgjVa63VHmgAGuwqQ6Gej8L461sjjHgySDuftugGfDYJuqg==","signatures":[{"sig":"MEUCIEYaIe6lrHLxGRTWfwClsMel6jVcOqhfUlNKsTiV5H4IAiEA093x87WJ0/om3+hMF01unst0DCbmKglAX1/315OmS7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144813},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","preuninstall":"node bin/uninstall.js","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.0.8_1772009696804_0.29901796661317803","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alex900530/claude-persistent-memory","version":"1.1.0","license":"MIT","_id":"@alex900530/claude-persistent-memory@1.1.0","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"bin":{"claude-persistent-memory":"bin/setup.js","claude-persistent-memory-uninstall":"bin/uninstall.js"},"dist":{"shasum":"b6822ff3f9bdb78d6de17de51308a2654c6e7978","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.1.0.tgz","fileCount":21,"integrity":"sha512-jJZ6g+7mxCCl0Yulrdi94rjpvuiolA99evnSclodMSKKHv6JT1fMdDZSuRo5ZhOm5qZIKyvPL0lrceIq4Xf3sA==","signatures":[{"sig":"MEQCIEZSzaPZNJ0Oq7fKJdwfp9CRgdN3dbQASvvkXaABmOFYAiAC0B3B77FDqS3HzK3Gt1khGX+DVc8JVDUrEWeJUk81fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145953},"main":"lib/memory-db.js","engines":{"node":">=18"},"gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","scripts":{"setup":"node bin/setup.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","postinstall":"node bin/setup.js --postinstall","preuninstall":"node bin/uninstall.js","rebuild-vectors":"node tools/rebuild-vectors.js","embedding-server":"node services/embedding-server.js"},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"_npmVersion":"11.6.2","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.24.0","sqlite-vec":"^0.1.7-alpha.2","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"nodejieba":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-persistent-memory_1.1.0_1772011527495_0.9828873764823629","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@alex900530/claude-persistent-memory","version":"1.1.1","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","main":"lib/memory-db.js","bin":{"claude-persistent-memory":"bin/setup.js","claude-persistent-memory-uninstall":"bin/uninstall.js"},"scripts":{"postinstall":"node bin/setup.js --postinstall","setup":"node bin/setup.js","preuninstall":"node bin/uninstall.js","embedding-server":"node services/embedding-server.js","llm-server":"node services/llm-server.js","mcp-server":"node services/memory-mcp-server.js","rebuild-vectors":"node tools/rebuild-vectors.js"},"publishConfig":{"registry":"https://registry.npmjs.org"},"engines":{"node":">=18"},"dependencies":{"@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.26.0","better-sqlite3":"^12.6.2","sqlite-vec":"^0.1.7-alpha.2","zod":"^3.24.0"},"optionalDependencies":{"nodejieba":"^2.6.0"},"license":"MIT","gitHead":"c996a42a41671c76f12e584abfdd4e479483a509","_id":"@alex900530/claude-persistent-memory@1.1.1","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Yc5F8GrHRwl9lm5ZwaDg7eiFkwCYOa755wkRPlzMbQpsFy/soMn3L0HmrXBRLHVehc8BMoiwPA1i1FCu+z+P9g==","shasum":"311f8263873bfe108808fd530bb4b4028dab2ae4","tarball":"https://registry.npmjs.org/@alex900530/claude-persistent-memory/-/claude-persistent-memory-1.1.1.tgz","fileCount":21,"unpackedSize":146739,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCsB5J5+348708kXaONLdrsAOpjteimxyTAQmHF4n7KUgIhALDEEc0xQ9j9Kc+lGFE4AYwiGQjDSFfjHwSjFS0KMPiN"}]},"_npmUser":{"name":"alex900530","email":"lihaodian1990@gmail.com"},"directories":{},"maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-persistent-memory_1.1.1_1772014728199_0.29575944220247896"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-25T07:50:57.220Z","modified":"2026-02-25T10:18:48.477Z","1.0.0":"2026-02-25T07:50:57.510Z","1.0.1":"2026-02-25T08:06:13.534Z","1.0.2":"2026-02-25T08:10:37.308Z","1.0.3":"2026-02-25T08:23:01.864Z","1.0.4":"2026-02-25T08:24:28.845Z","1.0.5":"2026-02-25T08:28:26.867Z","1.0.6":"2026-02-25T08:38:47.394Z","1.0.7":"2026-02-25T08:42:38.932Z","1.0.8":"2026-02-25T08:54:56.942Z","1.1.0":"2026-02-25T09:25:27.620Z","1.1.1":"2026-02-25T10:18:48.353Z"},"license":"MIT","description":"Persistent memory system for Claude Code — hybrid BM25 + vector search, LLM-driven structuring, automatic clustering","maintainers":[{"name":"alex900530","email":"lihaodian1990@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"./assets/logo.png\" alt=\"Claude Persistent Memory\" width=\"120\" />\n</p>\n\n<h1 align=\"center\">Claude Persistent Memory</h1>\n\n<p align=\"center\">\n  <strong>Give Claude Code long-term memory that persists across sessions.</strong><br/>\n  Hybrid BM25 + vector semantic search · LLM-driven structuring · 4-channel retrieval (MCP + hooks)\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/MIMI180306/claude-persistent-memory/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/MIMI180306/claude-persistent-memory?style=flat-square&color=blue\" alt=\"License\"></a>\n  <a href=\"https://github.com/MIMI180306/claude-persistent-memory/stargazers\"><img src=\"https://img.shields.io/github/stars/MIMI180306/claude-persistent-memory?style=flat-square&color=yellow\" alt=\"Stars\"></a>\n  <a href=\"https://github.com/MIMI180306/claude-persistent-memory/issues\"><img src=\"https://img.shields.io/github/issues/MIMI180306/claude-persistent-memory?style=flat-square\" alt=\"Issues\"></a>\n  <a href=\"https://github.com/MIMI180306/claude-persistent-memory/actions/workflows/ci.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/MIMI180306/claude-persistent-memory/ci.yml?style=flat-square&label=CI\" alt=\"CI\"></a>\n  <img src=\"https://img.shields.io/badge/node-%3E%3D18-brightgreen?style=flat-square\" alt=\"Node >= 18\">\n  <img src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgrey?style=flat-square\" alt=\"Platform\">\n</p>\n\n<p align=\"center\">\n  <a href=\"#features\">Features</a> •\n  <a href=\"#quick-start\">Quick Start</a> •\n  <a href=\"#architecture\">Architecture</a> •\n  <a href=\"#mcp-tools\">MCP Tools</a> •\n  <a href=\"#configuration\">Configuration</a> •\n  <a href=\"#contributing\">Contributing</a>\n</p>\n\n---\n\n<!-- TODO: Add a GIF demo here showing the memory system in action\n<p align=\"center\">\n  <img src=\"./assets/demo.gif\" alt=\"Demo\" width=\"700\" />\n</p>\n-->\n\n## Features\n\n🧠 **Hybrid Search** — BM25 full-text (FTS5) + vector semantic similarity (sqlite-vec), combined ranking\n\n📡 **4-Channel Retrieval** — Pull (MCP tools) + Push (auto-inject via hooks on user prompt, pre-tool, post-tool)\n\n🏗️ **LLM Structuring** — Memories auto-structured into `<what>/<when>/<do>/<warn>` XML format\n\n📦 **Automatic Clustering** — Similar memories grouped, mature clusters promoted to reusable skills\n\n📊 **Confidence Scoring** — Memories gain/lose confidence through validation feedback and usage\n\n⏳ **Time Decay** — Configurable half-lives per memory type (facts: 90d, context: 30d, skills: never)\n\n🔒 **Local-First** — All data stored locally in SQLite. Your memories never leave your machine.\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                     Claude Code Session                     │\n├─────────────────────────────────────────────────────────────┤\n│                                                             │\n│  Pull Channel (on demand)         Push Channels (auto)      │\n│  ┌───────────────────┐    ┌──────────────────────────────┐  │\n│  │ MCP Server        │    │ UserPromptSubmit Hook        │  │\n│  │ memory_search     │    │ PreToolUse Hook              │  │\n│  │ memory_save       │    │ PostToolUse Hook             │  │\n│  │ memory_validate   │    │ PreCompact Hook (analysis)   │  │\n│  │ memory_stats      │    │ SessionEnd Hook (clustering) │  │\n│  └────────┬──────────┘    └──────────────┬───────────────┘  │\n│           │                              │                  │\n│           └──────────┬───────────────────┘                  │\n│                      ▼                                      │\n│  ┌─────────────────────────────────────────────────────────┐│\n│  │              SQLite + FTS5 + sqlite-vec                 ││\n│  │              (memory.db)                                ││\n│  └─────────────────────────────────────────────────────────┘│\n│                      ▲                                      │\n│           ┌──────────┴───────────────────┐                  │\n│           │                              │                  │\n│  ┌────────┴──────────┐    ┌──────────────┴───────────────┐  │\n│  │ Embedding Server  │    │ LLM Server                   │  │\n│  │ TCP :23811        │    │ TCP :23812                   │  │\n│  │ bge-m3 (1024d)    │    │ Azure OpenAI GPT-4.1        │  │\n│  └───────────────────┘    └──────────────────────────────┘  │\n│                                                             │\n└─────────────────────────────────────────────────────────────┘\n```\n\n## Quick Start\n\n### One-command install\n\n```bash\n# Set Azure OpenAI credentials (optional — skip to configure later)\nexport AZURE_OPENAI_ENDPOINT=\"https://your-resource.openai.azure.com\"\nexport AZURE_OPENAI_KEY=\"your-api-key\"\n\n# Install in any project\nnpm install @alex900530/claude-persistent-memory\n```\n\nThat's it. The postinstall script automatically:\n- Configures `.mcp.json` (MCP server)\n- Configures `.claude/settings.json` (5 hooks)\n- Generates `.claude-memory.config.js` (config)\n- Registers background services (embedding + LLM)\n- Updates `.gitignore`\n\nOpen Claude Code in the project directory — memory is ready.\n\n### Configure later\n\nIf you skipped Azure credentials during install:\n\n```bash\nnpx claude-persistent-memory\n```\n\nThis runs an interactive setup to configure credentials and start services.\n\n### Manual install (from source)\n\n<details>\n<summary>Click to expand</summary>\n\n```bash\ngit clone https://github.com/MIMI180306/claude-persistent-memory.git\ncd claude-persistent-memory\nnpm install\ncp config.default.js config.js\n# Edit config.js with your Azure credentials\n\n# Start services\nnpm run embedding-server   # Terminal 1\nnpm run llm-server         # Terminal 2\n```\n\nThen manually configure `.mcp.json` and `.claude/settings.json` — see [Configuration](#configuration).\n\n</details>\n\n## MCP Tools\n\n| Tool | Description |\n|------|-------------|\n| `memory_search` | Hybrid BM25 + vector search. Params: `query`, `limit?`, `type?`, `domain?` |\n| `memory_save` | Save a new memory. Params: `content`, `type?`, `domain?`, `confidence?` |\n| `memory_validate` | Feedback loop — helpful (+0.1) or unhelpful (-0.05). Params: `memory_id`, `is_valid` |\n| `memory_stats` | System stats: total memories, type/domain distribution, cluster status |\n\n## Hooks\n\n| Hook | Event | Timeout | What it does |\n|------|-------|---------|-------------|\n| `user-prompt-hook.js` | UserPromptSubmit | 1500ms | Embeds user query → searches → injects top memories via stdout |\n| `pre-tool-memory-hook.js` | PreToolUse | 300ms | Embeds tool context → searches → injects via `additionalContext` |\n| `post-tool-memory-hook.js` | PostToolUse | 300ms | Embeds tool context + result → searches → injects via `additionalContext` |\n| `pre-compact-hook.js` | PreCompact | async | Spawns LLM analysis of full transcript → extracts memories |\n| `session-end-hook.js` | SessionEnd | async | Incremental transcript analysis + clustering + mature cluster merging |\n\n## Memory Types\n\n| Type | Half-life | Use case |\n|------|-----------|----------|\n| `fact` | 90 days | Stable facts about the codebase |\n| `decision` | 90 days | Architectural decisions and rationale |\n| `bug` | 60 days | Bug fixes and root causes |\n| `pattern` | 90 days | Recurring code patterns |\n| `context` | 30 days | Session-specific context |\n| `preference` | 60 days | User workflow preferences |\n| `skill` | never | Promoted from mature clusters |\n\n## Memory Lifecycle\n\n```\n1. Save       → memory_save or auto-extract from transcript\n2. Structure  → LLM converts to <what>/<when>/<do>/<warn> XML\n3. Embed      → bge-m3 generates 1024-dim vector\n4. Search     → BM25 + vector similarity, combined ranking\n5. Validate   → memory_validate adjusts confidence ±\n6. Cluster    → similar memories auto-grouped\n7. Promote    → mature clusters → skill memories\n8. Decay      → low-confidence memories fade over time\n```\n\n## Uninstall\n\n```bash\nnpx claude-persistent-memory-uninstall\n```\n\nOr manually: remove the `memory` entry from `.mcp.json`, remove memory hooks from `.claude/settings.json`, then `npm uninstall @alex900530/claude-persistent-memory`. The `.claude-memory/` data directory is preserved — delete it manually if no longer needed.\n\n## Configuration\n\nAll settings in `config.default.js` (auto-loaded, override via `.claude-memory.config.js`):\n\n```js\nmodule.exports = {\n  embeddingPort: 23811,          // TCP port for embedding server\n  llmPort: 23812,                // TCP port for LLM server\n  dataDir: './data',             // memory.db lives here\n  azure: {\n    endpoint: process.env.AZURE_OPENAI_ENDPOINT || '',\n    apiKey: process.env.AZURE_OPENAI_KEY || '',\n    deployment: process.env.AZURE_OPENAI_DEPLOYMENT || 'gpt-4.1',\n  },\n  embedding: {\n    model: 'Xenova/bge-m3',     // 1024 dimensions, 8192 token context\n    dimensions: 1024,\n  },\n  search: {\n    maxResults: 3,               // top-K results per query\n    minSimilarity: 0.6,          // vector similarity threshold\n  },\n  cluster: {\n    similarityThreshold: 0.70,   // min similarity to join a cluster\n    maturityCount: 5,            // memories needed for mature cluster\n  },\n};\n```\n\n## Project Structure\n\n```\nclaude-persistent-memory/\n├── bin/                          # CLI scripts\n│   ├── setup.js                  # postinstall + interactive setup\n│   └── uninstall.js              # cleanup script\n├── hooks/                        # Claude Code lifecycle hooks\n│   ├── user-prompt-hook.js       # UserPromptSubmit → memory injection\n│   ├── pre-tool-memory-hook.js   # PreToolUse → memory injection\n│   ├── post-tool-memory-hook.js  # PostToolUse → memory injection\n│   ├── pre-compact-hook.js       # PreCompact → transcript analysis\n│   └── session-end-hook.js       # SessionEnd → clustering\n├── lib/                          # Core libraries\n│   ├── memory-db.js              # SQLite + FTS5 + sqlite-vec\n│   ├── embedding-client.js       # TCP client for embedding server\n│   ├── llm-client.js             # TCP client for LLM server\n│   ├── compact-analyzer.js       # Transcript → memory extraction\n│   └── utils.js                  # Minimal utilities\n├── services/                     # Background services\n│   ├── embedding-server.js       # TCP embedding service (bge-m3)\n│   ├── llm-server.js             # TCP LLM proxy (Azure OpenAI)\n│   └── memory-mcp-server.js      # MCP server for Claude Code\n├── tools/\n│   └── rebuild-vectors.js        # Rebuild all embeddings\n├── config.default.js             # Configuration template\n├── CLAUDE.md                     # Claude Code project instructions\n└── package.json\n```\n\n## Requirements\n\n- Node.js >= 18\n- macOS or Linux\n- ~2GB RAM for embedding model (bge-m3)\n- Azure OpenAI API access (for LLM structuring)\n\n## Notes\n\n- **LLM provider**: Currently supports Azure OpenAI only. For standard OpenAI or other providers, modify `services/llm-server.js`.\n- **Ports**: Embedding and LLM servers default to TCP 23811 / 23812. Change in `config.js` if needed.\n- **Data**: The `.claude-memory/` directory (containing `memory.db` and logs) is created automatically and gitignored.\n\n## Contributing\n\nContributions are welcome! Please read the [Contributing Guide](CONTRIBUTING.md) before submitting a PR.\n\n## License\n\n[MIT](LICENSE) © MIMI180306\n","readmeFilename":"README.md"}