linksee-memory 0.0.7 → 0.0.8
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/README.md +89 -0
- package/dist/lib/session-extractor.js +12 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -191,6 +191,95 @@ Aggregated MCP-usage data helps the [KanseiLink](https://kansei-link.com) projec
|
|
|
191
191
|
|
|
192
192
|
The full payload schema and validation logic is open-source — read `src/lib/telemetry.ts` if you want to verify exactly what leaves your machine.
|
|
193
193
|
|
|
194
|
+
## Pricing
|
|
195
|
+
|
|
196
|
+
**Free forever.**
|
|
197
|
+
|
|
198
|
+
linksee-memory is local-first and runs entirely on your machine. There is no hosted component you need to pay for. The SQLite DB lives in your home directory; backup = file copy.
|
|
199
|
+
|
|
200
|
+
No account, no credit card, no API key. Just install and use.
|
|
201
|
+
|
|
202
|
+
## Troubleshooting
|
|
203
|
+
|
|
204
|
+
<details>
|
|
205
|
+
<summary><b>The skill isn't firing — Claude Code doesn't call <code>recall</code> when I ask about past work.</b></summary>
|
|
206
|
+
|
|
207
|
+
1. Verify the skill was installed:
|
|
208
|
+
```bash
|
|
209
|
+
ls ~/.claude/skills/linksee-memory/SKILL.md
|
|
210
|
+
```
|
|
211
|
+
If absent, run `npx -y linksee-memory-install-skill`.
|
|
212
|
+
2. Restart Claude Code. Skills are indexed on session start.
|
|
213
|
+
3. Check that the MCP is registered under the name `linksee` (the skill expects `mcp__linksee__*` tool names):
|
|
214
|
+
```bash
|
|
215
|
+
claude mcp list | grep linksee
|
|
216
|
+
```
|
|
217
|
+
If it's registered as something else, either re-register or edit `~/.claude/skills/linksee-memory/SKILL.md` to match.
|
|
218
|
+
</details>
|
|
219
|
+
|
|
220
|
+
<details>
|
|
221
|
+
<summary><b>Stop hook isn't recording my sessions.</b></summary>
|
|
222
|
+
|
|
223
|
+
1. Check the hook log: `cat ~/.linksee-memory/hook.log`
|
|
224
|
+
2. Run a manual test:
|
|
225
|
+
```bash
|
|
226
|
+
echo '{"session_id":"test","transcript_path":"/path/to/some.jsonl"}' | npx linksee-memory-sync
|
|
227
|
+
```
|
|
228
|
+
3. Make sure the `Stop` hook in `~/.claude/settings.json` points to `npx -y linksee-memory-sync` (not the old `-import`).
|
|
229
|
+
</details>
|
|
230
|
+
|
|
231
|
+
<details>
|
|
232
|
+
<summary><b>Upgrading from v0.0.5 or earlier — my recalls are mostly tagged "Card_Navi" or my project-dir name.</b></summary>
|
|
233
|
+
|
|
234
|
+
v0.0.6+ fixed the entity detection bug that collapsed all memories into the session's starting cwd. To re-index existing history with correct project attribution, run:
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
npx linksee-memory-import --all
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
The importer is idempotent (wipes existing session data before re-inserting). Typical runtime: a few minutes for hundreds of sessions. Expect a dramatic improvement in `recall` precision afterward.
|
|
241
|
+
</details>
|
|
242
|
+
|
|
243
|
+
<details>
|
|
244
|
+
<summary><b><code>recall</code> returns too much — the context window fills up fast.</b></summary>
|
|
245
|
+
|
|
246
|
+
Reduce `max_tokens`:
|
|
247
|
+
```
|
|
248
|
+
recall({ query: "...", max_tokens: 800 }) // default is 2000
|
|
249
|
+
```
|
|
250
|
+
Or narrow with `entity_name` and `layer`:
|
|
251
|
+
```
|
|
252
|
+
recall({ query: "...", entity_name: "my-project", layer: "caveat" })
|
|
253
|
+
```
|
|
254
|
+
</details>
|
|
255
|
+
|
|
256
|
+
<details>
|
|
257
|
+
<summary><b>How do I reset / delete all memory?</b></summary>
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
rm -rf ~/.linksee-memory # nuke everything; next run creates a fresh DB
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Or delete individual memories via the `forget` tool with a specific `memory_id`.
|
|
264
|
+
</details>
|
|
265
|
+
|
|
266
|
+
<details>
|
|
267
|
+
<summary><b>DB is getting large (>100 MB). How do I trim it?</b></summary>
|
|
268
|
+
|
|
269
|
+
Run consolidate — it clusters old cold memories into compressed learning-layer summaries:
|
|
270
|
+
```
|
|
271
|
+
consolidate({ scope: "all", min_age_days: 7 })
|
|
272
|
+
```
|
|
273
|
+
Caveat and active-goal layers are always preserved. Consider scheduling a weekly run via cron / Task Scheduler.
|
|
274
|
+
</details>
|
|
275
|
+
|
|
276
|
+
## Support
|
|
277
|
+
|
|
278
|
+
- **Issues & bug reports**: [github.com/michielinksee/linksee-memory/issues](https://github.com/michielinksee/linksee-memory/issues)
|
|
279
|
+
- **Feature requests**: open an issue with the `enhancement` label
|
|
280
|
+
- **Security concerns**: see [SECURITY.md](./SECURITY.md) if present, or file a private advisory on GitHub
|
|
281
|
+
- **Company**: Synapse Arrows PTE. LTD. (Singapore)
|
|
282
|
+
|
|
194
283
|
## License
|
|
195
284
|
|
|
196
285
|
MIT — Synapse Arrows PTE. LTD.
|
|
@@ -31,9 +31,19 @@ const FAILURE_PATTERNS = [
|
|
|
31
31
|
/失敗|バグ|エラー|直して|修正|戻して/,
|
|
32
32
|
/error|bug|fail|broken|revert|rollback/i,
|
|
33
33
|
];
|
|
34
|
+
// Caveats must be EXPLICIT warnings/prohibitions the user wants preserved.
|
|
35
|
+
// Previous bare patterns (/注意/ /やらない/ /避けて/) caught descriptive usage
|
|
36
|
+
// like「一般ユーザーはやらない」「Anthropicがやらない範囲」and turned
|
|
37
|
+
// opinions into protected caveats. Tightened to imperative/prohibitive forms
|
|
38
|
+
// only. Loses some recall, but precision matters more for the "never forget"
|
|
39
|
+
// layer.
|
|
34
40
|
const CAVEAT_PATTERNS = [
|
|
35
|
-
|
|
36
|
-
/
|
|
41
|
+
// Imperative negations: any verb-stem + ないで is a command "don't X".
|
|
42
|
+
// The 「[ぁ-ん一-龯]ないで」 clause catches 触らないで / 消さないで / 使わないで /
|
|
43
|
+
// 書かないで etc. while `(?!いる|いない|ほし)` excludes descriptive forms
|
|
44
|
+
// like 「やらないでいる」 or 「やらないでほしい」 (state / request).
|
|
45
|
+
/気をつけて|注意して|[!!]注意[!!]|避けて(?!いる|いない)|[ぁ-ん一-龯]ないで(?!いる|いない|ほし)|やめて(?!おく|ほし)|禁止|ダメだ|危険/,
|
|
46
|
+
/\b(?:don'?t|do\s+not)\s+(?:do|use|run|call|forget|try|send|share|commit|push|paste|edit)\b|\bnever\s+(?:do|use|call|share|commit|paste|run|push|edit)\b|\bavoid(?:ing)?\b|\bwatch\s+out\b/i,
|
|
37
47
|
];
|
|
38
48
|
function matchesAny(text, patterns) {
|
|
39
49
|
return patterns.some((p) => p.test(text));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "linksee-memory",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"mcpName": "io.github.michielinksee/linksee-memory",
|
|
5
5
|
"description": "Local-first agent memory MCP — cross-agent brain with 6-layer structured memory + token-saving file diff cache",
|
|
6
6
|
"type": "module",
|