linksee-memory 0.1.3 โ†’ 0.2.0

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 CHANGED
@@ -2,10 +2,74 @@
2
2
 
3
3
  > Local-first agent memory MCP. A cross-agent brain for Claude Code, Cursor, and ChatGPT Desktop โ€” with a token-saving file diff cache that nobody else does.
4
4
  >
5
- > **v0.1.0** adds `update_memory`, `list_entities`, `match_reasons` on recall, pagination, pin-via-importance, layer aliases, consolidate dry-run, `linksee-memory-stats` CLI, and a momentum-refresh fix. See [CHANGELOG](#changelog).
5
+ > **v0.2.0** makes the package English-first for global launch: the bundled auto-invocation skill is now bilingual (EN + JP), session-extractor patterns cover common English keywords (`let's go`, `pivot`, `doesn't work`, `same error again`, etc.), and the install CLI shows test examples in both languages. No API changes. See [CHANGELOG](#changelog).
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/linksee-memory.svg)](https://www.npmjs.com/package/linksee-memory)
8
8
  [![license](https://img.shields.io/npm/l/linksee-memory.svg)](./LICENSE)
9
+ [![mcp-registry](https://img.shields.io/badge/MCP-Official_Registry-6366f1)](https://registry.modelcontextprotocol.io/)
10
+ [![glama-score](https://glama.ai/mcp/servers/michielinksee/linksee-memory/badges/score.svg)](https://glama.ai/mcp/servers/michielinksee/linksee-memory)
11
+
12
+ ๐ŸŒ **Landing page**: [linksee-site.vercel.app](https://linksee-site.vercel.app) (includes non-developer onboarding for Claude Desktop / Cursor / Claude Code)
13
+
14
+ ---
15
+
16
+ ## ๐ŸŽฌ See it in action
17
+
18
+ **Without linksee-memory** โ€” Monday morning, new Claude session:
19
+
20
+ ```
21
+ You: We deployed last week but it crashed. How did we fix it?
22
+ Claude: I don't have access to previous sessions. Can you describe
23
+ what happened and walk me through the problem?
24
+
25
+ [30 minutes of log-spelunking and re-explanation]
26
+ ```
27
+
28
+ **With linksee-memory** โ€” Same question, different outcome:
29
+
30
+ ```
31
+ You: We deployed last week but it crashed. How did we fix it?
32
+ Claude: Let me check my caveats...
33
+
34
+ ๐Ÿง  [caveat] NextAuth sessions invalidate when JWT_SECRET
35
+ rotates โ€” redeploy all affected projects in parallel.
36
+ (from session 2026-04-13, importance: 0.9)
37
+
38
+ Is this the deploy you're asking about? We hit it when
39
+ we rotated secrets mid-flow.
40
+
41
+ You: Yes, exactly. Let's not repeat that.
42
+ ```
43
+
44
+ That single `caveat` memory is what separates "flat fact storage" from "the agent actually remembers the WHY". linksee-memory stores it across **six explicit layers** so retrieval stays explainable.
45
+
46
+ ---
47
+
48
+ ## ๐Ÿง  The 6-layer structure
49
+
50
+ ```
51
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
52
+ โ”‚ ๐ŸŽฏ goal โ† what the user is working toward โ”‚
53
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
54
+ โ”‚ ๐Ÿงญ context โ† why this, why now โ€” constraints, people โ”‚
55
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
56
+ โ”‚ ๐Ÿ’— emotion โ† user tone signals (frustration, etc.) โ”‚
57
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
58
+ โ”‚ ๐Ÿ›  implementation โ† how it was done (+ what failed) โ”‚
59
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
60
+ โ”‚ โš ๏ธ caveat โ† "never do this again" ยท auto-protected โ”‚
61
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
62
+ โ”‚ ๐ŸŒฑ learning โ† patterns distilled from cold memories โ”‚
63
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
64
+ โ”‚
65
+ โ–ผ
66
+ Ranked recall via relevance ร— heat ร— momentum ร— importance
67
+ Returns match_reasons explaining each hit
68
+ ```
69
+
70
+ Every memory is tagged with **exactly one layer**. `caveat`-layer entries are protected from auto-forgetting. Cold low-importance memories get compressed into `learning` entries via `consolidate()`.
71
+
72
+ ---
9
73
 
10
74
  ## What it does
11
75
 
@@ -287,6 +351,76 @@ consolidate({ scope: "all", min_age_days: 7 })
287
351
  Caveat and active-goal layers are always preserved. Consider scheduling a weekly run via cron / Task Scheduler.
288
352
  </details>
289
353
 
354
+ ## FAQ
355
+
356
+ <details>
357
+ <summary><strong>How is this different from Mem0 / Letta / Zep?</strong></summary>
358
+
359
+ Three axes:
360
+ 1. **Local-first**: those tools require cloud accounts and send your data to their servers. linksee-memory runs entirely on your machine โ€” one SQLite file, no network calls by default.
361
+ 2. **WHY-layered**: they store flat facts or knowledge-graph nodes. linksee-memory has 6 explicit layers (`goal`/`context`/`emotion`/`implementation`/`caveat`/`learning`) so retrieval returns structured reasoning, not just data.
362
+ 3. **File diff cache**: `read_smart` tool saves 86โ€“99% of tokens on file re-reads via AST-aware chunking. None of the memory services do this โ€” it's a feature usually shipped in IDEs.
363
+ </details>
364
+
365
+ <details>
366
+ <summary><strong>Why not just use Claude's built-in auto-memory?</strong></summary>
367
+
368
+ Claude Code's auto-memory is Claude-only (doesn't help if you switch to Cursor or ChatGPT Desktop) and stores flat markdown with no structure. linksee-memory is the same local-first principle but:
369
+ - Works across Claude Code, Cursor, ChatGPT Desktop (shared SQLite)
370
+ - Structured 6-layer format makes recall explainable
371
+ - Provides explicit forget/consolidate primitives rather than the agent guessing
372
+ </details>
373
+
374
+ <details>
375
+ <summary><strong>Is 86% token savings real? Where does it come from?</strong></summary>
376
+
377
+ Yes โ€” see `tools/bench-read-smart.ts` in the repo. The `read_smart` tool:
378
+ 1. Hashes file content on first read, returns full content + chunk metadata (AST/heading/indent boundaries).
379
+ 2. On re-read with unchanged mtime+sha256, returns `~50 tokens` of "unchanged" confirmation instead of re-sending the file.
380
+ 3. On real edits, returns only the changed chunks as full content + unchanged chunks as metadata-only references.
381
+
382
+ For a typical TypeScript file edit in an agentic loop, this cuts round-trip token costs by ~86%. On pure re-reads (user navigating back to a previously-read file), savings exceed 99%.
383
+ </details>
384
+
385
+ <details>
386
+ <summary><strong>Does "local-first" mean no way to sync across my machines?</strong></summary>
387
+
388
+ The default is no sync โ€” the SQLite file lives at `~/.linksee-memory/memory.db` and stays there. If you want multi-machine sync, put that directory under Syncthing / iCloud Drive / Dropbox / Google Drive โ€” it's a single file, so any file-sync tool works. (Avoid simultaneous edits from two machines while the MCP server is running on both; SQLite's WAL mode handles single-writer well but multi-writer conflicts can corrupt.)
389
+ </details>
390
+
391
+ <details>
392
+ <summary><strong>What happens when the DB gets huge?</strong></summary>
393
+
394
+ Two mechanisms:
395
+ 1. **Ebbinghaus forgetting**: cold low-importance memories decay naturally, eligible for auto-forget sweeps. `caveat` layer and memories with `importance โ‰ฅ 0.9` are always protected.
396
+ 2. **`consolidate()`**: compresses clusters of cold low-importance memories by entity into a single `learning`-layer summary, then deletes the originals. Run via `linksee-memory-consolidate` CLI (or schedule weekly).
397
+
398
+ In practice a solo developer hits ~100MB after 6 months of heavy use. A year-old DB I tested with 80K memories still recalls in <10ms.
399
+ </details>
400
+
401
+ <details>
402
+ <summary><strong>Can I use this without Claude Code?</strong></summary>
403
+
404
+ Yes โ€” any MCP-compatible client works:
405
+ - **Claude Code**: `claude mcp add -s user linksee -- npx -y linksee-memory`
406
+ - **Claude Desktop**: add to `claude_desktop_config.json` (see [onboarding on the LP](https://linksee-site.vercel.app))
407
+ - **Cursor**: add to MCP settings in Cursor
408
+ - **ChatGPT Desktop**: same pattern once MCP support ships
409
+ - **Custom agent**: the MCP stdio protocol is documented at modelcontextprotocol.io
410
+ </details>
411
+
412
+ <details>
413
+ <summary><strong>What telemetry does it send?</strong></summary>
414
+
415
+ **By default: zero network calls, zero telemetry.** There's an optional Level-1 telemetry mode you can enable that sends anonymized aggregate metrics (tool call counts, error rates, latency percentiles โ€” never memory content, never file paths, never queries). The exact payload schema is documented in the [Telemetry section](#telemetry-opt-in-off-by-default) and you see every byte before opting in.
416
+ </details>
417
+
418
+ <details>
419
+ <summary><strong>How do I verify it's actually working?</strong></summary>
420
+
421
+ After install, in a new Claude session ask: *"Can you remember that I prefer TypeScript over JavaScript?"* Claude should confirm it called `mcp__linksee__remember` and stored this. Then in a **different session** ask: *"What languages do I prefer?"* It should recall via `mcp__linksee__recall` and return the preference with `match_reasons` showing why.
422
+ </details>
423
+
290
424
  ## Support
291
425
 
292
426
  - **Issues & bug reports**: [github.com/michielinksee/linksee-memory/issues](https://github.com/michielinksee/linksee-memory/issues)
@@ -296,6 +430,19 @@ Caveat and active-goal layers are always preserved. Consider scheduling a weekly
296
430
 
297
431
  ## Changelog
298
432
 
433
+ ### v0.2.0 โ€” English-first launch readiness (2026-04-20)
434
+
435
+ Prepares the package for a broader (primarily English-speaking) audience on Reddit, Hacker News, and Anthropic Discord. No breaking API changes.
436
+
437
+ - **Bilingualized `SKILL.md`** (auto-invocation skill). The bundled skill that `linksee-memory-install-skill` copies into `~/.claude/skills/linksee-memory/SKILL.md` was Japanese-first; it is now English-primary with Japanese trigger phrases preserved inline. English speakers now get the skill firing on natural English phrases ("how did we solve this before?", "same error again", "remember this") in addition to the existing JP triggers.
438
+ - **Install-skill CLI output is bilingual**: example test phrases shown after installation include both English and Japanese.
439
+ - **Session-extractor EN coverage** (`linksee-memory-import`): expanded regex patterns for decisions, failures, and caveats so English Claude Code session logs get auto-tagged correctly. Additions include `let's go`, `pivot`, `switch to`, `settled on`, `approved`, `doesn't work`, `stuck`, `same error again`, `hit an error`, `debug`, `broke`, `revert`.
440
+ - **Clearer caveat-forget error hint**: the previous message said "lower importance below 0.9 first, then forget" which was misleading โ€” caveat-layer memories are permanently protected regardless of importance. The hint now correctly distinguishes layer-protection from pin-protection.
441
+ - **README rework** for launch readiness: added a "See it in action" before/after scenario, ASCII 6-layer diagram, MCP Official Registry + Glama score badges, landing-page link, and an 8-item FAQ covering questions that surface during public launches.
442
+ - Internal: SKILL.md now documents pairing with KanseiLink skill as an English workflow example.
443
+
444
+ No code changes to the MCP protocol surface; all existing MCP clients continue to work unchanged.
445
+
299
446
  ### v0.1.1 โ€” Pin threshold tweak (2026-04-19)
300
447
 
301
448
  Based on real-world feedback that `importance=0.95` memories were not
@@ -8,8 +8,9 @@
8
8
  // npx linksee-memory-install-skill --dry-run (show what would happen)
9
9
  //
10
10
  // Why: installing the MCP server alone doesn't teach Claude Code WHEN to call
11
- // recall/remember/read_smart/etc. The skill provides trigger phrases ("ๅ‰ใซ...",
12
- // "ใพใŸๅŒใ˜ใ‚จใƒฉใƒผ", new task start, file edits, etc.) so the agent auto-fires
11
+ // recall/remember/read_smart/etc. The skill provides trigger phrases (EN:
12
+ // "before", "last time", "same error again"; JP: "ๅ‰ใซ", "ใพใŸๅŒใ˜ใ‚จใƒฉใƒผ";
13
+ // new task start, file edits, etc.) so the agent auto-fires
13
14
  // without the user having to type "use linksee-memory".
14
15
  import { mkdirSync, existsSync, copyFileSync, readFileSync } from 'node:fs';
15
16
  import { join, dirname } from 'node:path';
@@ -85,9 +86,12 @@ console.log('');
85
86
  console.log(' 2. Restart Claude Code (the skill auto-loads on next turn).');
86
87
  console.log('');
87
88
  console.log(' 3. Test by saying something like:');
88
- console.log(' "ๅ‰ใซใ“ใฎๅ•้กŒใฉใ†่งฃๆฑบใ—ใŸใฃใ‘"');
89
- console.log(' "ใพใŸๅŒใ˜ใ‚จใƒฉใƒผใŒๅ‡บใŸ"');
90
- console.log(' "่ฆšใˆใฆใŠใ„ใฆ: ..."');
89
+ console.log(' "How did we solve this before?"');
90
+ console.log(' "Same error again"');
91
+ console.log(' "Remember: I prefer TypeScript over JavaScript"');
92
+ console.log(' or in Japanese:');
93
+ console.log(' ใ€Œๅ‰ใซใ“ใฎๅ•้กŒใฉใ†่งฃๆฑบใ—ใŸใฃใ‘ใ€');
94
+ console.log(' ใ€Œ่ฆšใˆใฆใŠใ„ใฆ: ...ใ€');
91
95
  console.log('');
92
96
  console.log('The skill will trigger and call recall/remember automatically.');
93
97
  //# sourceMappingURL=install-skill.js.map
@@ -25,11 +25,11 @@ function findFirstIntent(session) {
25
25
  // ============================================================
26
26
  const DECISION_PATTERNS = [
27
27
  /ๆฑบใ‚ใŸ|ๆŽก็”จ|็ขบๅฎš|ใ“ใ‚Œใง(ใ„ใ„|้€ฒใ‚)|OK้€ฒใ‚ใฆ|ใ‚„ใ‚ใ†|่กŒใ“ใ†/,
28
- /learn(ed)?|decide|chose|picked|going with/i,
28
+ /learn(ed)?|decid(?:e|ed|ing)|chose|picked|going with|let'?s\s+go|pivot(?:ing|ed)?|switch(?:ing)?\s+to|settled\s+on|approved|we'?ll\s+use|commit(?:ting)?\s+to/i,
29
29
  ];
30
30
  const FAILURE_PATTERNS = [
31
- /ๅคฑๆ•—|ใƒใ‚ฐ|ใ‚จใƒฉใƒผ|็›ดใ—ใฆ|ไฟฎๆญฃ|ๆˆปใ—ใฆ/,
32
- /error|bug|fail|broken|revert|rollback/i,
31
+ /ๅคฑๆ•—|ใƒใ‚ฐ|ใ‚จใƒฉใƒผ|็›ดใ—ใฆ|ไฟฎๆญฃ|ๆˆปใ—ใฆ|ใ†ใพใใ„ใ‹ใชใ„|ใƒใƒžใฃใŸ/,
32
+ /error|bug|fail(?:ed|ing|ure)?|broken|broke|revert|rollback|doesn'?t\s+work|not\s+working|stuck|same\s+error\s+again|hit\s+(?:an?\s+|the\s+)?(?:error|bug|issue)|debug/i,
33
33
  ];
34
34
  // Caveats must be EXPLICIT warnings/prohibitions the user wants preserved.
35
35
  // Previous bare patterns (/ๆณจๆ„/ /ใ‚„ใ‚‰ใชใ„/ /้ฟใ‘ใฆ/) caught descriptive usage
@@ -479,11 +479,14 @@ function handleForget(args) {
479
479
  return JSON.stringify({ ok: false, error: `memory_id ${args.memory_id} not found` });
480
480
  }
481
481
  if (target.protected === 1 || target.importance >= 0.9) {
482
+ const isLayerProtected = target.protected === 1;
482
483
  return JSON.stringify({
483
484
  ok: false,
484
485
  preserved: true,
485
- reason: target.protected === 1 ? `${target.layer}-layer is auto-protected` : 'pinned (importance>=0.9)',
486
- hint: 'Use update_memory to lower importance below 0.9 first, then forget.',
486
+ reason: isLayerProtected ? `${target.layer}-layer is auto-protected` : 'pinned (importance>=0.9)',
487
+ hint: isLayerProtected
488
+ ? `${target.layer} memories are permanently protected (the whole point โ€” pain lessons must not be lost). If you truly need to delete, copy its content to another layer via remember() first, then drop the DB row manually via a SQLite client.`
489
+ : 'Use update_memory to lower importance below 0.9 first, then forget.',
487
490
  });
488
491
  }
489
492
  const res = db.prepare('DELETE FROM memories WHERE id = ?').run(args.memory_id);
@@ -1,61 +1,69 @@
1
1
  ---
2
2
  name: linksee-memory
3
3
  description: |
4
+ The bridge to the agent's "past self". Before any new task, file edit, decision, or right after a failure, recall past caveats (pain records) / learnings (growth log) / implementation history from linksee-memory.
5
+ This is the only way to solve Claude Code's "memory amnesia every session" problem. The "never repeat the same mistake" mechanism that Mem0 / Letta / Zep can't provide.
4
6
  ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใฎใ€Œ้ŽๅŽปใฎ่‡ชๅˆ†ใ€ใธใฎๆฉ‹ใ€‚ๆ–ฐใ—ใ„ไฝœๆฅญใƒปใƒ•ใ‚กใ‚คใƒซ็ทจ้›†ใƒปๆ„ๆ€ๆฑบๅฎšใƒปๅคฑๆ•—ใฎๅ‰ๅพŒใงใ€linksee-memory ใ‹ใ‚‰้ŽๅŽปใฎ caveat๏ผˆ็—›ใฟใฎ่จ˜้Œฒ๏ผ‰/ learning๏ผˆๆˆ้•ทใƒญใ‚ฐ๏ผ‰/ implementation๏ผˆๆˆๅŠŸๅคฑๆ•—๏ผ‰ใ‚’ recall ใ™ใ‚‹ใ€‚
5
- ใ“ใ‚Œใฏ Claude Code ใฎใ€ŒๆฏŽใ‚ปใƒƒใ‚ทใƒงใƒณ่จ˜ๆ†ถๅ–ชๅคฑใ€ๅ•้กŒใ‚’่งฃๆฑบใ™ใ‚‹ๅ”ฏไธ€ใฎๆ–นๆณ•ใ€‚Mem0/Letta/Zep ใซใฏใงใใชใ„ใ€ŒๅŒใ˜ๅคฑๆ•—ใ‚’ไบŒๅบฆใจใ—ใชใ„ใ€ไป•็ต„ใฟใ€‚
6
- ไปฅไธ‹ใฎใ‚ฟใ‚คใƒŸใƒณใ‚ฐใงๅฟ…ใšใ“ใฎใ‚นใ‚ญใƒซใ‚’ไฝฟใ†ใ“ใจ๏ผš
7
- โ‘ ไฝœๆฅญ้–‹ๅง‹ๆ™‚ใƒปๆ–ฐใ‚ฟใ‚นใ‚ฏ้–‹ๅง‹ๆ™‚๏ผˆใ€ŒๅฎŸ่ฃ…ใ—ใ‚ˆใ†ใ€ใ€Œๅง‹ใ‚ใ‚ˆใ†ใ€ใ€Œๆ–ฐใ—ใใ€œไฝœใ‚‹ใ€๏ผ‰
8
- โ‘กใƒ•ใ‚กใ‚คใƒซ็ทจ้›†ใ™ใ‚‹ๅ‰๏ผˆๅŒใ˜ใƒ•ใ‚กใ‚คใƒซใ‚’้ŽๅŽปใซ่งฆใฃใฆใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹๏ผ‰
9
- โ‘ขใ‚จใƒฉใƒผใƒปๅคฑๆ•—ใ—ใŸ็žฌ้–“๏ผˆremember ใง caveat ่จ˜้Œฒ๏ผ‰
10
- โ‘ฃๆˆๅŠŸใ—ใŸ็žฌ้–“ใƒปๆ–ฐใ—ใ„ใ“ใจๅญฆใ‚“ใ ็žฌ้–“๏ผˆremember ใง learning ่จ˜้Œฒ๏ผ‰
11
- โ‘คใƒฆใƒผใ‚ถใƒผใŒใ€Œๅ‰ใซใ€ใ€ŒๅŒใ˜ใ€ใ€Œ่ฆšใˆใฆใ‚‹๏ผŸใ€ใ€Œ่ฆšใˆใฆใŠใ„ใฆใ€ใจ่จ€ใฃใŸใจใ
12
- โ‘ฅใ€Œใชใœใใ†ใ—ใŸใ€ใ€Œใ„ใคๆฑบใ‚ใŸใ€ใ€Œใฉใ“ใง่ญฐ่ซ–ใ—ใŸใ€ใจ่žใ‹ใ‚ŒใŸใจใ
13
- โ‘ฆๅˆฅใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‹ใ‚‰ๆˆปใฃใฆใใŸใจใใƒปใ‚ปใƒƒใ‚ทใƒงใƒณๅˆ‡ใ‚Šๆ›ฟใˆๆ™‚
14
- ใƒˆใƒชใ‚ฌใƒผ: ่จ˜ๆ†ถ/่ฆšใˆใฆ/ๅฟ˜ใ‚Œใฆ/้ŽๅŽป/ๅ‰ๅ›ž/ๅ‰ใซ/ใใ†ใ„ใˆใฐ/่ฆšใˆใฆใ‚‹/memory/remember/recall/forget
15
- ใ‚จใƒฉใƒผใ‚ญใƒผใƒฏใƒผใƒ‰: ๅคฑๆ•—/ใ‚จใƒฉใƒผ/ใ†ใพใใ„ใ‹ใชใ„/ใƒใƒžใฃใŸ/ๅŒใ˜/ใพใŸ/็นฐใ‚Š่ฟ”ใ—/debug
16
- ๆฑบๅฎšใ‚ญใƒผใƒฏใƒผใƒ‰: ๆฑบใ‚ใŸ/ๆ–น้‡/ๆˆฆ็•ฅ/ใƒ”ใƒœใƒƒใƒˆ/ใ‚„ใ‚ใ‚ˆใ†/ๆ–นๅ‘่ปขๆ›
7
+
8
+ ALWAYS use this skill at the following moments / ไปฅไธ‹ใฎใ‚ฟใ‚คใƒŸใƒณใ‚ฐใงๅฟ…ใšใ“ใฎใ‚นใ‚ญใƒซใ‚’ไฝฟใ†ใ“ใจ:
9
+ โ‘  Task start / new task begins โ€” "let's implement...", "let's start", "build a new...", ใ€ŒๅฎŸ่ฃ…ใ—ใ‚ˆใ†ใ€ใ€Œๅง‹ใ‚ใ‚ˆใ†ใ€ใ€Œๆ–ฐใ—ใใ€œไฝœใ‚‹ใ€
10
+ โ‘ก Before editing a file โ€” same file may have been touched before / ๅŒใ˜ใƒ•ใ‚กใ‚คใƒซใ‚’้ŽๅŽปใซ่งฆใฃใฆใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹
11
+ โ‘ข The moment an error/failure happens โ€” remember as caveat / ใ‚จใƒฉใƒผใƒปๅคฑๆ•—ใ—ใŸ็žฌ้–“
12
+ โ‘ฃ The moment something succeeds or is learned โ€” remember as learning / ๆˆๅŠŸใ—ใŸ็žฌ้–“ใƒปๅญฆใ‚“ใ ็žฌ้–“
13
+ โ‘ค When the user says "before", "earlier", "last time", "same as", "remember?", "remember this" / ใ€Œๅ‰ใซใ€ใ€ŒๅŒใ˜ใ€ใ€Œ่ฆšใˆใฆใ‚‹๏ผŸใ€ใ€Œ่ฆšใˆใฆใŠใ„ใฆใ€
14
+ โ‘ฅ When asked "why did we do that", "when was this decided", "where did we discuss this" / ใ€Œใชใœใใ†ใ—ใŸใ€ใ€Œใ„ใคๆฑบใ‚ใŸใ€ใ€Œใฉใ“ใง่ญฐ่ซ–ใ—ใŸใ€
15
+ โ‘ฆ Returning from another project / switching sessions / ๅˆฅใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‹ใ‚‰ๆˆปใฃใฆใใŸใจใ
16
+
17
+ Triggers (EN): remember/recall/forget/memory/before/earlier/last time/previously/remember when/same as before/history
18
+ Triggers (JP): ่จ˜ๆ†ถ/่ฆšใˆใฆ/ๅฟ˜ใ‚Œใฆ/้ŽๅŽป/ๅ‰ๅ›ž/ๅ‰ใซ/ใใ†ใ„ใˆใฐ/่ฆšใˆใฆใ‚‹
19
+ Error keywords (EN): failed/broken/stuck/error/bug/doesn't work/not working/same error again/again/repeated/debug
20
+ Error keywords (JP): ๅคฑๆ•—/ใ‚จใƒฉใƒผ/ใ†ใพใใ„ใ‹ใชใ„/ใƒใƒžใฃใŸ/ๅŒใ˜/ใพใŸ/็นฐใ‚Š่ฟ”ใ—
21
+ Decision keywords (EN): decided/let's go with/approved/settled on/pivot/strategy/switch to/abandon
22
+ Decision keywords (JP): ๆฑบใ‚ใŸ/ๆ–น้‡/ๆˆฆ็•ฅ/ใƒ”ใƒœใƒƒใƒˆ/ใ‚„ใ‚ใ‚ˆใ†/ๆ–นๅ‘่ปขๆ›
17
23
  ---
18
24
 
19
- # Linksee Memory Skill โ€” ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใฎ้ŽๅŽปใจๆœชๆฅใ‚’ใคใชใ
25
+ # Linksee Memory Skill โ€” Connecting the agent's past and future
20
26
 
21
27
  ## ๐Ÿง  Core Principle
22
28
 
23
- **ใ“ใฎใ‚นใ‚ญใƒซใฏใ€Œใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใฎๆˆ้•ทใŒ session ใ‚’่ทจใ„ใงๆฐธ็ถšใ™ใ‚‹ใŸใ‚ใฎๅ”ฏไธ€ใฎๆ‰‹ๆฎตใ€**ใ€‚
29
+ **This skill is the only way to persist agent growth across sessions.**
30
+
31
+ Claude Code forgets everything when a session ends. The solution the user taught yesterday, the failure you hit today, the decision made three days ago โ€” all of it is normally lost. **linksee-memory is the "memory that doesn't disappear" device.**
24
32
 
25
- Claude Code ใฏ session ใŒ็ต‚ใ‚ใ‚‹ใจๅ…จ้ƒจๅฟ˜ใ‚Œใ‚‹ใ€‚Michieใ•ใ‚“ใŒๆ˜จๆ—ฅๆ•™ใˆใฆใใ‚ŒใŸ่งฃๆฑบ็ญ–ใ€ไปŠๆ—ฅใ‚„ใฃใŸๅคฑๆ•—ใ€3ๆ—ฅๅ‰ใฎๆฑบๅฎšโ€”โ€”ใ™ในใฆๆ™ฎ้€šใฏๆถˆใˆใ‚‹ใ€‚**linksee-memory ใฏใ€Œๆถˆใˆใชใ„่จ˜ๆ†ถใ€ใ‚’ไฝœใ‚‹่ฃ…็ฝฎ**ใ€‚
33
+ Writes are handled automatically by the Stop hook (already running). But **reads require the agent to actively pull**. This skill instills that "go look first" habit in the agent.
26
34
 
27
- ๆ›ธใ่พผใฟใฏ Stop hook ใŒ่‡ชๅ‹•ใงใ‚„ใฃใฆใใ‚Œใ‚‹๏ผˆใ‚‚ใ†ๅ‹•ใ„ใฆใ‚‹๏ผ‰ใ€‚ใงใ‚‚**่ชญใฟๅ‡บใ—ใฏใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใŒ่ƒฝๅ‹•็š„ใซใ‚„ใ‚‰ใชใ„ใจไฝฟใ‚ใ‚Œใชใ„**ใ€‚ใ“ใฎ skill ใŒใใฎใ€Œ่ชญใฟใซใ„ใ็ฟ’ๆ…ฃใ€ใ‚’ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใซๆคใˆไป˜ใ‘ใ‚‹ใ€‚
35
+ *JP: Claude Code ใฏ session ใŒ็ต‚ใ‚ใ‚‹ใจๅ…จ้ƒจๅฟ˜ใ‚Œใ‚‹ใ€‚linksee-memory ใฏใ€Œๆถˆใˆใชใ„่จ˜ๆ†ถใ€ใ‚’ไฝœใ‚‹่ฃ…็ฝฎใ€‚ๆ›ธใ่พผใฟใฏ Stop hook ใŒ่‡ชๅ‹•ใงใ‚„ใฃใฆใใ‚Œใ‚‹ใŒใ€่ชญใฟๅ‡บใ—ใฏใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใŒ่ƒฝๅ‹•็š„ใซใ‚„ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚*
28
36
 
29
37
  ---
30
38
 
31
- ## ๐Ÿ“ 6ใƒฌใ‚คใƒคใƒผใฎๅฝนๅ‰ฒๅˆ†ๆ‹…
39
+ ## ๐Ÿ“ The 6 layers โ€” what goes where
32
40
 
33
- ใฉใฎใƒฌใ‚คใƒคใƒผใซ่จ˜้Œฒใ™ใ‚‹ใ‹ใงใ€ๅพŒใฎๆคœ็ดข็ฒพๅบฆใŒๅค‰ใ‚ใ‚‹ใ€‚
41
+ Which layer you record into determines later retrieval accuracy.
34
42
 
35
- | ใƒฌใ‚คใƒคใƒผ | ใ„ใคไฝฟใ†ใ‹ | ไพ‹ |
43
+ | Layer | When to use | Example |
36
44
  |---|---|---|
37
- | ๐ŸŽฏ `goal` | ใƒฆใƒผใ‚ถใƒผใŒๆ˜Ž็ขบใชใ‚ดใƒผใƒซใ‚’่จ€ใฃใŸใจใ | "freeeใจ้€ฃๆบใ•ใ›ใŸใ„" "npm publishใ—ใŸใ„" |
38
- | ๐Ÿ“ `context` | ใ„ใคใƒปใชใœใใ‚Œใ‚’ใ—ใฆใ‚‹ใ‹ใฎ่ƒŒๆ™ฏ | "X็คพใจใฎๅ•†่ซ‡ใŒๆฐดๆ›œใซใ‚ใ‚‹ใ‹ใ‚‰" |
39
- | ๐Ÿ’ญ `emotion` | ใƒฆใƒผใ‚ถใƒผใฎๆธฉๅบฆๆ„Ÿใƒปๆ„Ÿๆƒ… | "็–ฒใ‚ŒใŸ" "ๅฌ‰ใ—ใ„" "็„ฆใฃใฆใ‚‹" |
40
- | ๐Ÿ”ง `implementation` | ใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใ„ใŸใ€่จญๅฎšใ—ใŸใ€ๅ‹•ใ„ใŸ/ๅ‹•ใ‹ใชใ‹ใฃใŸ | ๆˆๅŠŸ: "OAuth flow ใŒ้€šใฃใŸ" / ๅคฑๆ•—: "auth_expired ใงๆญขใพใฃใŸ" |
41
- | โš ๏ธ `caveat` | **ไบŒๅบฆใจ็นฐใ‚Š่ฟ”ใ—ใŸใใชใ„ๆ•™่จ“**๏ผˆๅฟ˜ๅดไฟ่ญท๏ผ‰ | "freeeใฎOAuthใฏ24hใงๅˆ‡ใ‚Œใ‚‹" "ใ“ใฎใƒ•ใ‚กใ‚คใƒซใฏ็ตถๅฏพ็ทจ้›†ใ—ใชใ„" |
42
- | ๐Ÿ“ˆ `learning` | ๆ–ฐใ—ใ„ใ“ใจๅญฆใ‚“ใ ใ€ๅ‰ใฎ่€ƒใˆใŒๆ›ดๆ–ฐใ•ใ‚ŒใŸ | "AST chunking ใฎๆ–นใŒ line diff ใ‚ˆใ‚ŠๅŠนใ" |
45
+ | ๐ŸŽฏ `goal` | The user states a clear goal | "want to integrate with freee", "want to npm publish" |
46
+ | ๐Ÿ“ `context` | Background on when/why this is happening | "because there's a meeting with company X on Wednesday" |
47
+ | ๐Ÿ’ญ `emotion` | User's temperature / tone | "tired", "excited", "stressed", ใ€Œ็–ฒใ‚ŒใŸใ€ใ€Œ็„ฆใฃใฆใ‚‹ใ€ |
48
+ | ๐Ÿ”ง `implementation` | Code written, configured, worked / didn't work | success: "OAuth flow works" / failure: "stopped with auth_expired" |
49
+ | โš ๏ธ `caveat` | **Lessons you never want to repeat** (auto-protected from forgetting) | "freee OAuth expires in 24h", "never edit this file" |
50
+ | ๐Ÿ“ˆ `learning` | Learned something new, prior belief updated | "AST chunking beats line diff for token savings" |
43
51
 
44
- **้‡่ฆ:** `caveat` ใฏ่‡ชๅ‹•ใงๅฟ˜ๅดไฟ่ญทใ•ใ‚Œใ‚‹ใ€‚็—›ใฟใฎ่จ˜้Œฒใฏ็ตถๅฏพๆถˆใˆใชใ„ใ€‚
52
+ **Important:** `caveat` layer is automatically protected from forgetting. Pain records are never deleted.
45
53
 
46
- **v0.1.0: ๅˆฅใฎpinๆ–นๆณ•** โ€” `importance: 1.0` ใง remember ใ™ใ‚Œใฐใ€caveatๅฑคใ˜ใ‚ƒใชใใฆใ‚‚ auto-forget ใ‹ใ‚‰ไฟ่ญทใ•ใ‚Œใ‚‹ใ€‚ใ€Œ็ตถๅฏพๅฟ˜ใ‚Œใ•ใ›ใŸใใชใ„ goalใ€ใ€Œ้‡่ฆใชๅˆคๆ–ญใ€็ญ‰ใงไฝฟใ†:
54
+ **Pin-via-importance (v0.1.0+):** Calling `remember` with `importance: 1.0` pins the memory across all layers, protecting it from auto-forget even outside the caveat layer. Use for "mission-critical goals", "key decisions", etc.:
47
55
 
48
56
  ```
49
57
  remember({
50
58
  entity_name: "KanseiLink", entity_kind: "project",
51
- layer: "goal", content: "Plugin Marketplace ็”ณ่ซ‹ไธญ",
59
+ layer: "goal", content: "Plugin Marketplace submission under review",
52
60
  importance: 1.0 // pin
53
61
  })
54
62
  ```
55
63
 
56
- **Layer alias ๅฏพๅฟœ** โ€” canonical layer ๅ่ฆšใˆใชใใฆใ‚‚ใ€่‡ช็„ถใช่จ€ใ„ๆ–นใงๅ‘ผในใ‚‹:
64
+ **Layer aliases** โ€” no need to memorize canonical names. Natural language aliases resolve automatically:
57
65
 
58
- | ่‡ช็„ถ่ชž | โ†’ canonical |
66
+ | Natural alias | โ†’ canonical |
59
67
  |---|---|
60
68
  | `decisions` / `insights` / `learned` | `learning` |
61
69
  | `warnings` / `rules` / `pitfalls` / `dont` | `caveat` |
@@ -66,159 +74,157 @@ remember({
66
74
 
67
75
  ---
68
76
 
69
- ## ๐Ÿ”„ ๅฎŸ่กŒใƒ•ใƒญใƒผ๏ผˆ5ใคใฎใ‚ฟใ‚คใƒŸใƒณใ‚ฐ๏ผ‰
70
-
71
- ### โ‘  Task Start โ€” ไฝœๆฅญ้–‹ๅง‹ๅ‰ใซๅฟ…ใš recall
77
+ ## ๐Ÿ”„ Execution flow โ€” 5 canonical moments
72
78
 
73
- ๆ–ฐใ—ใ„ไฝœๆฅญใ‚’ๅง‹ใ‚ใ‚‹**ๅ‰**ใซใ€้ŽๅŽปใฎใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใ‚’ๆณจๅ…ฅใ™ใ‚‹ใ€‚
79
+ ### โ‘  Task Start โ€” Always recall before starting work
74
80
 
75
- **v0.1.0 ๆ–ฐใƒ•ใƒญใƒผ: ่ถ…-ใ‚ปใƒƒใ‚ทใƒงใƒณๅ†’้ ญใฏ `list_entities` ใ‹ใ‚‰**
81
+ Before starting any new task, inject past context.
76
82
 
77
- ไผš่ฉฑใฎไธ€็•ชๆœ€ๅˆ๏ผˆใƒฆใƒผใ‚ถใƒผใŒๆœ€ๅˆใฎ็™บ่ฉฑใ‚’ใ—ใฆใใŸๆ™‚็‚น๏ผ‰ใงใ€ใ€Œ่‡ชๅˆ†ใŒไฝ•ใ‚’็Ÿฅใฃใฆใ‚‹ใ‹ใ€ใ‚’ๆŠŠๆกใ™ใ‚‹:
83
+ **At the very beginning of a conversation**, use `list_entities` first to understand what you know:
78
84
 
79
85
  ```
80
86
  mcp__linksee__list_entities({ min_memories: 5, limit: 10 })
81
87
  ```
82
88
 
83
- ใ“ใ‚Œใง่ฟ”ใฃใฆใใ‚‹ "momentum ้ซ˜ใ„ entity" = ไปŠใพใ•ใซ่ฉฑ้กŒใซไธŠใ‚Šใใ†ใชใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ€‚ๅ„entityใฎ `layer_breakdown` ใ‚’่ฆ‹ใ‚Œใฐใ€Œใ“ใฎprojectใฏcaveatใŒๅคšใ„ใ€ใ€ŒgoalใŒๆœชๅฎŒใ€็ญ‰ใŒๅˆ†ใ‹ใ‚‹ใ€‚
89
+ The returned "high-momentum entities" are the projects likely to be discussed. Each entity's `layer_breakdown` reveals patterns ("this project has many caveats", "goal is unfinished", etc.).
84
90
 
85
- ใใฎๅพŒใ€ๅ…ทไฝ“็š„ใชไฝœๆฅญใŒๅง‹ใพใฃใŸใ‚‰ recall:
91
+ Then, once a specific task starts, recall:
86
92
 
87
93
  ```
88
94
  mcp__linksee__recall({
89
- query: "<็พใ‚ฟใ‚นใ‚ฏใฎใ‚ญใƒผใƒฏใƒผใƒ‰ใ€‚ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ + ๆŠ€่ก“ๅ>",
95
+ query: "<keywords of current task โ€” project name + technology>",
90
96
  max_tokens: 2000
91
97
  })
92
98
  ```
93
99
 
94
- **ไพ‹**: ใƒฆใƒผใ‚ถใƒผใŒใ€ŒKanseiLinkใซๆ–ฐใ—ใ„ใƒ„ใƒผใƒซ่ฟฝๅŠ ใ—ใŸใ„ใ€ใจ่จ€ใฃใŸใ‚‰๏ผš
100
+ **Example**: User says "let's add a new tool to KanseiLink":
95
101
  ```
96
102
  recall({ query: "KanseiLink new tool", max_tokens: 2000 })
97
103
  ```
98
104
 
99
- ่ฟ”ใฃใฆใใŸ memories ใ‹ใ‚‰ใ€็‰นใซไปฅไธ‹ใซๆณจ็›ฎ๏ผš
100
- - **`caveat` ๅฑค** โ€” ็ตถๅฏพ้ฟใ‘ใ‚‹ในใ็ฝ 
101
- - **`learning` ๅฑค** โ€” ๅ‰ใซๅพ—ใŸ็ต่ซ–
102
- - **`implementation.failure`** โ€” ้ŽๅŽปใฎๅคฑๆ•—ใƒ‘ใ‚ฟใƒผใƒณ
105
+ In the returned memories, pay special attention to:
106
+ - **`caveat` layer** โ€” traps to absolutely avoid
107
+ - **`learning` layer** โ€” previously-reached conclusions
108
+ - **`implementation.failure`** โ€” past failure patterns
103
109
 
104
- **ไพ‹ใฎ็ตๆžœใฎไฝฟใ„ๆ–น:**
110
+ **Using the results:**
105
111
  ```
106
- ้ŽๅŽปใฎ caveat ใ‹ใ‚‰: "ๅŒใ˜MCPใฎtoolๅใฎ่ก็ชใซๆฐ—ใ‚’ใคใ‘ใ‚"
107
- โ†’ ๆ–ฐใ—ใ„ใƒ„ใƒผใƒซ่ฟฝๅŠ ๅ‰ใซๆ—ขๅญ˜toolๅใ‚’็ขบ่ชใ™ใ‚‹ๆตใ‚Œใงไฝœๆฅญ้–‹ๅง‹
112
+ From past caveat: "Watch out for MCP tool name collisions"
113
+ โ†’ Before adding a new tool, check existing tool names first.
108
114
  ```
109
115
 
110
- ### โ‘ก File Edit โ€” ใƒ•ใ‚กใ‚คใƒซ็ทจ้›†ๅ‰ใซ recall_file
116
+ ### โ‘ก File Edit โ€” Use recall_file before touching a file
111
117
 
112
- ็‰นๅฎšใƒ•ใ‚กใ‚คใƒซใ‚’่งฆใ‚‹ๅ‰ใซใ€ใใฎใƒ•ใ‚กใ‚คใƒซใฎ้ŽๅŽปใฎ็ทจ้›†ๅฑฅๆญดใ‚’็ขบ่ช๏ผš
118
+ Before touching a specific file, check its edit history:
113
119
 
114
120
  ```
115
121
  mcp__linksee__recall_file({
116
- path_substring: "<ใƒ•ใ‚กใ‚คใƒซใฎใƒ‘ใ‚น or ้ƒจๅˆ†ไธ€่‡ดใ™ใ‚‹ๅๅ‰>",
122
+ path_substring: "<file path or substring match>",
117
123
  max_intents: 5
118
124
  })
119
125
  ```
120
126
 
121
- ่ฟ”ใฃใฆใใ‚‹: ใใฎใƒ•ใ‚กใ‚คใƒซใฎๅ…จ็ทจ้›†ๅฑฅๆญด + **ๅ„็ทจ้›†ใ‚’ๅผ•ใ่ตทใ“ใ—ใŸใƒฆใƒผใ‚ถใƒผ็™บ่จ€**
127
+ Returns: the file's entire edit history + **the user message that drove each edit**.
122
128
 
123
- **ใ“ใ‚ŒใŒใ‚ญใƒข**: Mem0/Lettaใซใฏใชใ„ๆฉŸ่ƒฝใ€‚ใ€Œใ“ใฎใƒ•ใ‚กใ‚คใƒซใ€ๅ‰ใซใชใœๅค‰ๆ›ดใ•ใ‚ŒใŸใ‹ใ€ใŒๆฎ‹ใฃใฆใ‚‹ใ€‚
129
+ **This is the key differentiator.** Mem0 / Letta don't have this. "Why was this file changed last time" is preserved.
124
130
 
125
- ### โ‘ข Before Reading โ€” ๆ—ข่ชญใƒ•ใ‚กใ‚คใƒซใชใ‚‰ read_smart
131
+ ### โ‘ข Before Reading โ€” Use read_smart for files already read
126
132
 
127
- ใƒ•ใ‚กใ‚คใƒซใ‚’่ชญใ‚€ๅฟ…่ฆใŒใ‚ใ‚‹ใจใใ€**Read ใƒ„ใƒผใƒซใฎไปฃใ‚ใ‚Šใซ read_smart ใ‚’ไฝฟใ†**:
133
+ When you need to read a file, **use `read_smart` instead of the standard `Read` tool**:
128
134
 
129
135
  ```
130
136
  mcp__linksee__read_smart({
131
- path: "<็ตถๅฏพใƒ‘ใ‚น>"
137
+ path: "<absolute path>"
132
138
  })
133
139
  ```
134
140
 
135
- **ๅŠนๆžœ**:
136
- - ๅˆๅ›ž่ชญใฟ: ้€šๅธธ Read ใจๅŒใ˜ใƒˆใƒผใ‚ฏใƒณ๏ผˆchunk metadata ไป˜ใ๏ผ‰
137
- - 2ๅ›ž็›ฎไปฅ้™ใƒปๅค‰ๆ›ดใชใ—: **~50 ใƒˆใƒผใ‚ฏใƒณใ ใ‘่ฟ”ใ‚‹**๏ผˆ99% ็ฏ€็ด„๏ผ‰
138
- - 2ๅ›ž็›ฎไปฅ้™ใƒปๅค‰ๆ›ดใ‚ใ‚Š: ๅค‰ๆ›ด chunk ใ ใ‘่ฟ”ใ‚‹๏ผˆ50-90% ็ฏ€็ด„๏ผ‰
141
+ **Effect**:
142
+ - First read: same tokens as normal Read (with chunk metadata)
143
+ - Subsequent reads, unchanged: **~50 tokens returned** (99% savings)
144
+ - Subsequent reads, changed: only changed chunks returned (50โ€“90% savings)
139
145
 
140
- ็‰นใซๅคงใใชใƒ•ใ‚กใ‚คใƒซ๏ผˆ1000่กŒ่ถ…ใˆใ‚‹ใ‚‚ใฎ๏ผ‰ใงๅŠนๆžœ็ตถๅคงใ€‚
146
+ Especially effective for large files (>1000 lines).
141
147
 
142
- ### โ‘ข.5 Updating existing memory โ€” v0.1.0 ๆ–ฐ: forget+remember ใฎไปฃใ‚ใ‚Šใซ update_memory
148
+ ### โ‘ข.5 Updating existing memory โ€” use update_memory, not forget+remember
143
149
 
144
- ไบ‹ๅฎŸใŒๅค‰ใ‚ใฃใŸ / ็›ฎๆจ™ใŒๆ›ดๆ–ฐใ•ใ‚ŒใŸ / caveat ใฎ็ดฐ้ƒจใ‚’ไฟฎๆญฃใ—ใŸใ„ๅ ดๅˆใ€**forget ใ—ใฆ remember ใ™ใ‚‹ใจ memory_id ใŒๅค‰ใ‚ใฃใฆ session_file_edits ใฎใƒชใƒณใ‚ฏใŒๅˆ‡ใ‚Œใ‚‹**ใ€‚ไปฃใ‚ใ‚Šใซ `update_memory`:
150
+ When facts change / goal updated / caveat detail needs correction: **`forget` + `remember` breaks `memory_id` continuity, cutting the `session_file_edits` links.** Use `update_memory` instead:
145
151
 
146
152
  ```
147
153
  update_memory({
148
154
  memory_id: 1234,
149
- content: '{"primary": "Plugin Marketplace ็”ณ่ซ‹ไธญ(ๅฏฉๆŸป7ๆ—ฅ็›ฎ)", "deadline": "2026-04-25"}',
150
- importance: 1.0 // pin ๅผทๅŒ–
155
+ content: '{"primary": "Plugin Marketplace under review (day 7)", "deadline": "2026-04-25"}',
156
+ importance: 1.0 // strengthen pin
151
157
  })
152
158
  ```
153
159
 
154
- `layer` ใ‚‚ๅค‰ๆ›ดๅฏ่ƒฝใ ใŒใ€caveat โ†’ ไป–ใธใฎ demotion ใฏไธๅฏ(auto-protectedใฎใŸใ‚)ใ€‚
160
+ `layer` can also be changed, but demoting from caveat to another layer is **not allowed** (auto-protected).
155
161
 
156
- ### โ‘ฃ Failure โ€” ใ‚จใƒฉใƒผ็™บ็”Ÿๆ™‚ใซ caveat ่จ˜้Œฒ
162
+ ### โ‘ฃ Failure โ€” Record caveat the moment an error hits
157
163
 
158
- ใ‚จใƒฉใƒผใƒปๅคฑๆ•—ใƒปใ€Œใ†ใพใใ„ใ‹ใชใ„ใ€ใŒ็™บ็”Ÿใ—ใŸ็žฌ้–“ใ€ใ™ใ่จ˜้Œฒใ™ใ‚‹๏ผš
164
+ The moment an error, failure, or "doesn't work" happens, record immediately:
159
165
 
160
166
  ```
161
167
  mcp__linksee__remember({
162
- entity_name: "<ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ or ใ‚ตใƒผใƒ“ใ‚นๅ>",
168
+ entity_name: "<project name or service name>",
163
169
  entity_kind: "project",
164
170
  layer: "caveat",
165
- content: '{"rule_or_warning":"<ๅคฑๆ•—ๅ†…ๅฎน + ๅ›ž้ฟ็ญ–>","when":"<ISOๆ—ฅๆ™‚>"}',
166
- importance: 0.8 // ๅคฑๆ•—ใฏ้‡่ฆๅบฆ้ซ˜ใ‚
171
+ content: '{"rule_or_warning":"<what failed + workaround>","when":"<ISO datetime>"}',
172
+ importance: 0.8 // failures are high-importance
167
173
  })
168
174
  ```
169
175
 
170
- **ไพ‹**:
176
+ **Example**:
171
177
  ```json
172
178
  {
173
- "rule_or_warning": "freee MCPใฏ24ๆ™‚้–“ใงOAuth tokenๅˆ‡ใ‚Œใ‚‹ใ€‚refresh_tokenไฝฟใฃใฆๅ†ๅ–ๅพ—ใ™ใ‚‹ๅฟ…่ฆใ‚ใ‚Šใ€‚access_tokenใ‚’็›ดๆŽฅไฝฟใ„ๅ›žใ™ใจ401ใงๆญขใพใ‚‹",
174
- "from_incident": "session 02759-...ใง auth_expired ใ‚จใƒฉใƒผ",
175
- "workaround": "24hๆฏŽใซ refresh token โ†’ ๆ–ฐใ—ใ„ access token"
179
+ "rule_or_warning": "freee MCP OAuth token expires in 24 hours. Must refresh via refresh_token. Reusing access_token directly causes 401.",
180
+ "from_incident": "session 02759-... hit auth_expired error",
181
+ "workaround": "every 24h: refresh token โ†’ new access token"
176
182
  }
177
183
  ```
178
184
 
179
- **ใชใœ้‡่ฆใ‹**: `caveat` ใฏ**่‡ชๅ‹•ใงๅฟ˜ๅดไฟ่ญท**ใ•ใ‚Œใ‚‹ใ€‚ใ“ใฎ่จ˜้ŒฒใŒใ‚ใ‚Œใฐใ€ๅˆฅใ‚ปใƒƒใ‚ทใƒงใƒณใฎๅˆฅใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚‚ๅŒใ˜ๅคฑๆ•—ใ‚’้ฟใ‘ใ‚‰ใ‚Œใ‚‹ใ€‚
185
+ **Why this matters**: `caveat` is **auto-protected from forgetting**. Once recorded, a future agent in a different session avoids the same failure.
180
186
 
181
- ### โ‘ค Success/Learning โ€” ๆˆๅŠŸใƒปๅญฆ็ฟ’ๆ™‚ใซ่จ˜้Œฒ
187
+ ### โ‘ค Success / Learning โ€” Record the moment of insight
182
188
 
183
- ๆ–ฐใ—ใ„ใ“ใจ็†่งฃใ—ใŸใ€ใ‚ขใƒ—ใƒญใƒผใƒๅค‰ใˆใŸใ€ๅ•้กŒ่งฃๆฑบใ—ใŸ็žฌ้–“๏ผš
189
+ When you understand something new, change approaches, or solve a problem:
184
190
 
185
191
  ```
186
192
  mcp__linksee__remember({
187
193
  entity_name: "<entity>",
188
194
  entity_kind: "project | concept | ...",
189
195
  layer: "learning",
190
- content: '{"at":"<ๆ—ฅๆ™‚>","learned":"<ไฝ•ใ‚’ๅญฆใ‚“ใ ใ‹>","prior_belief":"<ๅ‰ใฏใ“ใ†ๆ€ใฃใฆใŸ>"}',
196
+ content: '{"at":"<datetime>","learned":"<what was learned>","prior_belief":"<what we used to think>"}',
191
197
  importance: 0.7
192
198
  })
193
199
  ```
194
200
 
195
- `prior_belief` ใ‚’ๆ›ธใใ“ใจใงใ€Œ**ไฟกๅฟตใฎๆ›ดๆ–ฐๅฑฅๆญด**ใ€ใŒๆฎ‹ใ‚‹ใ€‚ใ“ใ‚ŒใฏๅพŒใงใ€Œใชใœใ“ใฎๆฑบๅฎšใ‚’ใ—ใŸใฎใ‹ใ€ใฎๆ นๆ‹ ใซใชใ‚‹ใ€‚
201
+ Recording `prior_belief` leaves a **belief-update history**. Later, this becomes the evidence for "why was this decision made".
196
202
 
197
203
  ---
198
204
 
199
- ## ๐ŸŽฏ ็ตถๅฏพใƒซใƒผใƒซ
205
+ ## ๐ŸŽฏ Hard rules
200
206
 
201
- ### โœ… ใ‚„ใ‚‹ในใใ“ใจ
207
+ ### โœ… Do
202
208
 
203
- 1. **ๆ–ฐใ‚ฟใ‚นใ‚ฏ้–‹ๅง‹ๆ™‚ใ€ๅฟ…ใšๆœ€ๅˆใซ `recall` ใ‚’ๅ‘ผใถ**๏ผˆใŸใจใˆ็Ÿญใใฆใ‚‚๏ผ‰
204
- 2. **ๅŒใ˜ใƒ•ใ‚กใ‚คใƒซใ‚’่งฆใ‚‹ๅ‰ใซ `recall_file` ใง้ŽๅŽปๅฑฅๆญดใ‚’็ขบ่ช**
205
- 3. **ๅคงใใชใƒ•ใ‚กใ‚คใƒซใฏ `Read` ใ‚ˆใ‚Š `read_smart` ใ‚’ๅ„ชๅ…ˆ**
206
- 4. **ใ‚จใƒฉใƒผใŒๅ‡บใŸใ‚‰ๅณๅบงใซ `caveat` ่จ˜้Œฒ**๏ผˆใใฎๅ ดใง่จ˜้Œฒใ€ๅพŒๅ›žใ—ใซใ—ใชใ„๏ผ‰
207
- 5. **ใƒฆใƒผใ‚ถใƒผใŒ้ฉšใ„ใŸใ‚Šใ€Œใชใ‚‹ใปใฉใ€ใจ่จ€ใฃใŸใ‚‰ `learning` ่จ˜้Œฒ**
209
+ 1. **At any new task start, always call `recall` first** (even briefly)
210
+ 2. **Before touching the same file, verify history via `recall_file`**
211
+ 3. **Prefer `read_smart` over `Read` for larger files**
212
+ 4. **When an error occurs, record a `caveat` immediately** (on the spot โ€” don't defer)
213
+ 5. **When the user is surprised or says "interesting", record a `learning`**
208
214
 
209
- ### โŒ ใ‚„ใฃใฆใฏใ„ใ‘ใชใ„ใ“ใจ
215
+ ### โŒ Don't
210
216
 
211
- 1. โŒ ไฝœๆฅญ้–‹ๅง‹ๆ™‚ใซ recall ใ›ใšใ€ใ„ใใชใ‚Šๆ‰‹ใ‚’ๅ‹•ใ‹ใ™
212
- 2. โŒ ใ‚จใƒฉใƒผใ‚’ใใฎๅ ดใง่งฃๆฑบใ—ใŸใฎใซ่จ˜้Œฒใ—ใชใ„ โ†’ ๆœชๆฅใฎ่‡ชๅˆ†๏ผˆor ไป–ใฎใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ๏ผ‰ใŒๅŒใ˜ๅคฑๆ•—ใ‚’็นฐใ‚Š่ฟ”ใ™
213
- 3. โŒ `Read` ใฐใ‹ใ‚Šไฝฟใฃใฆ `read_smart` ใ‚’ไฝฟใ‚ใชใ„๏ผˆใƒˆใƒผใ‚ฏใƒณ็„ก้ง„๏ผ‰
214
- 4. โŒ caveat ใ‚’ใตใ–ใ‘ใŸ่ปฝใ„ tone ใงๆ›ธใ๏ผˆ็œŸ้ข็›ฎใซๆฎ‹ใ™๏ผ‰
215
- 5. โŒ ้•ทๆœŸไฝœๆฅญไธญใฏ consolidate ใ‚’ๅฟ˜ใ‚Œใชใ„๏ผˆ้€ฑ1ใฏ `consolidate()` ๅ‘ผใถในใ๏ผ‰
217
+ 1. โŒ Start a task without recalling first
218
+ 2. โŒ Solve an error on the spot without recording โ€” future you (or another agent) will hit the same failure
219
+ 3. โŒ Use `Read` everywhere instead of `read_smart` (wastes tokens)
220
+ 4. โŒ Write caveats in a flippant tone โ€” preserve them seriously
221
+ 5. โŒ Skip `consolidate` during long-running work โ€” run it weekly
216
222
 
217
223
  ---
218
224
 
219
- ## ๐Ÿ” Consolidate โ€” ่จ˜ๆ†ถใฎๅฎšๆœŸๆ•ด็†
225
+ ## ๐Ÿ” Consolidate โ€” periodic memory tidy-up
220
226
 
221
- ใƒกใƒขใƒชใŒ่†จๅผตใ—ใฆใใŸใ‚‰๏ผˆ็›ฎๅฎ‰: DB 20MB่ถ…ใ€memories 15,000ไปถ่ถ…๏ผ‰๏ผš
227
+ When memory has grown (rough guideline: DB > 20MB, memories > 15,000):
222
228
 
223
229
  ```
224
230
  mcp__linksee__consolidate({
@@ -227,142 +233,142 @@ mcp__linksee__consolidate({
227
233
  })
228
234
  ```
229
235
 
230
- ใ“ใ‚Œใง 7ๆ—ฅๅ‰ใ‚ˆใ‚Šๅคใใ€importanceไฝŽใใ€cold ใƒใƒณใƒ‰ใซใชใฃใŸ memories ใŒ่‡ชๅ‹•ใงใ‚ฏใƒฉใ‚นใ‚ฟๅŒ– โ†’ learning ๅฑคใซ1ไปถใซๅœง็ธฎ โ†’ ๅ…ƒใƒ‡ใƒผใ‚ฟๅ‰Š้™คใ€‚
236
+ This clusters cold, low-importance memories older than 7 days โ†’ compresses them into a single `learning`-layer entry โ†’ deletes originals.
231
237
 
232
- **caveat ใจ active goal ใฏๆถˆใˆใชใ„**ใ€‚็ก็œ ไธญใฎ่„ณใฎ่จ˜ๆ†ถๆ•ด็†ใจๅŒใ˜ใ€‚
238
+ **`caveat` memories and active `goal` memories are never consolidated away.** Equivalent to sleep-time memory reorganization.
233
239
 
234
240
  ---
235
241
 
236
- ## ๐Ÿงญ Skill ็™บ็ซใ‚ทใƒŠใƒชใ‚ช้›†
242
+ ## ๐Ÿงญ Skill firing scenarios
237
243
 
238
- ### Case A: ๆ–ฐใ—ใ„ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซๅ…ฅใ‚‹
244
+ ### Case A โ€” Returning to a project
239
245
 
240
- ใƒฆใƒผใ‚ถใƒผ: "ไปŠๆ—ฅใฏ XYZ ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซๆˆปใ‚‹ใ‚ˆ"
246
+ User: "Today I'm back on the XYZ project"
241
247
 
242
248
  ```
243
249
  1. recall({ query: "XYZ", max_tokens: 2500 })
244
- 2. ่ฟ”ใฃใฆใใŸ caveat/learning/goal ใ‚’็ขบ่ช
245
- 3. ใƒฆใƒผใ‚ถใƒผใซใ€Œๅ‰ๅ›žใฎ็ถšใใง...ใ€ใจ็Šถๆณใ‚’1่กŒใง็คบใ™
246
- 4. ใใฎๆ–‡่„ˆใฎไธŠใงไฝœๆฅญ้–‹ๅง‹
250
+ 2. Review returned caveat / learning / goal
251
+ 3. Tell user "Picking up from last time..." with a one-line status
252
+ 4. Resume work grounded in that context
247
253
  ```
248
254
 
249
- ### Case B: ๅŒใ˜ใ‚จใƒฉใƒผใŒๅ‡บใŸ๏ผˆใƒ‡ใ‚ธใƒฃใƒ–ๆ„Ÿ๏ผ‰
255
+ ### Case B โ€” Dรฉjร -vu error
250
256
 
251
- ใƒฆใƒผใ‚ถใƒผ: "ใ‚ใ‚Œใ€ใ“ใฎใ‚จใƒฉใƒผๅ‰ใ‚‚่ฆ‹ใŸใ‚ˆใ†ใช..."
257
+ User: "Wait, I feel like I've seen this error before..."
252
258
 
253
259
  ```
254
- 1. recall({ query: "<ใ‚จใƒฉใƒผใƒกใƒƒใ‚ปใƒผใ‚ธใฎๆ ธใ‚ญใƒผใƒฏใƒผใƒ‰>", max_tokens: 1000 })
255
- 2. ้ŽๅŽปใฎ caveat ใ‹ใ‚‰ workaround ๅ–ๅพ—
256
- 3. ใ€Œๅ‰ๅ›ž๏ผˆๆ—ฅๆ™‚๏ผ‰ๅŒใ˜ใ‚จใƒฉใƒผใงใ€X ใง่งฃๆฑบใ—ใŸใ€ใจๅ›ž็ญ”
257
- 4. workaround ใ‚’้ฉ็”จ
260
+ 1. recall({ query: "<core keywords of the error message>", max_tokens: 1000 })
261
+ 2. Pull workaround from past caveat
262
+ 3. Reply: "Last time (DATE), we hit the same error and solved it with X."
263
+ 4. Apply the workaround
258
264
  ```
259
265
 
260
- ### Case C: ใƒ•ใ‚กใ‚คใƒซ็ทจ้›†ๅ‰ใฎ็ขบ่ช
266
+ ### Case C โ€” Pre-edit check
261
267
 
262
- ใƒฆใƒผใ‚ถใƒผ: "server.ts ใ‚’็›ดใ—ใฆ"
268
+ User: "Fix server.ts"
263
269
 
264
270
  ```
265
271
  1. recall_file({ path_substring: "server.ts" })
266
- 2. ้ŽๅŽปใฎ็ทจ้›†้ ปๅบฆใƒป็†็”ฑใ‚’็ขบ่ช
267
- 3. ใ€Œใ“ใฎใƒ•ใ‚กใ‚คใƒซ้ŽๅŽป N ๅ›ž็ทจ้›†ใ•ใ‚Œใฆใ‚‹ใ€‚ๆœ€ๅพŒใฏ โ—‹โ—‹ ็›ฎ็š„ใ€ใจๅ ฑๅ‘Š
268
- 4. ใใฎๆ–‡่„ˆใงไปŠๅ›žใฎ็ทจ้›†ใ‚’่กŒใ†
269
- 5. ็ทจ้›†ๅพŒใ€implementation.success / failure ใง่จ˜้Œฒ
272
+ 2. Review past edit frequency and reasons
273
+ 3. Report: "This file has been edited N times. Last edit was to <reason>."
274
+ 4. Perform the edit in that context
275
+ 5. After editing, record success / failure via implementation layer
270
276
  ```
271
277
 
272
- ### Case D: ๆฑบๅฎšใ—ใŸ็žฌ้–“
278
+ ### Case D โ€” Decision made
273
279
 
274
- ใƒฆใƒผใ‚ถใƒผ: "ใ˜ใ‚ƒใ‚ Sonnet ใซๅˆ‡ใ‚Šๆ›ฟใˆใ‚‹ใ‚"
280
+ User: "Alright, let's switch to Sonnet"
275
281
 
276
282
  ```
277
283
  1. remember({
278
- entity_name: "<ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ>",
284
+ entity_name: "<project>",
279
285
  entity_kind: "project",
280
286
  layer: "learning",
281
- content: '{"at":"...", "learned":"ใ“ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏ Sonnet ใง่กŒใ", "prior_belief":"OpusไฝฟใฃใฆใŸ"}',
287
+ content: '{"at":"...", "learned":"This project uses Sonnet", "prior_belief":"Was using Opus"}',
282
288
  importance: 0.8
283
289
  })
284
- 2. ใ€Œ่จ˜้Œฒใ—ใพใ—ใŸใ€ใจไธ€่จ€
285
- 3. ๆฌกใ‹ใ‚‰ใฎไฝœๆฅญใฏ Sonnet ๅ‰ๆใง้€ฒใ‚ใ‚‹
290
+ 2. Brief confirmation: "Recorded."
291
+ 3. From here, proceed assuming Sonnet
286
292
  ```
287
293
 
288
- ### Case E: ้•ทๆ™‚้–“ไฝœๆฅญใฎ็ต‚็›ค
294
+ ### Case E โ€” End of long session
289
295
 
290
- ใƒฆใƒผใ‚ถใƒผ: "ไปŠๆ—ฅใฏใ“ใ“ใพใง"
296
+ User: "That's it for today"
291
297
 
292
298
  ```
293
- 1. ไปŠๆ—ฅใฎใƒใ‚คใƒฉใ‚คใƒˆใ‚’ remember ใง่จ˜้Œฒ:
294
- - ไธป่ฆใช decision ใ‚’ learning ๅฑค
295
- - ็™บ็”Ÿใ—ใŸๅคฑๆ•—ใ‚’ caveat ๅฑค
296
- - ๅฎŒๆˆใ—ใŸๆˆๆžœ็‰ฉใ‚’ implementation.success
297
- 2. ใ€Œ่จ˜้ŒฒๅฎŒไบ†ใ€‚ๆฌกๅ›ž recall ใงๅ–ใ‚Œใ‚‹็Šถๆ…‹ใงใ™ใ€ใจๅ ฑๅ‘Š
298
- 3. ๅฟ…่ฆใชใ‚‰ consolidate({scope:"session", min_age_days: 14}) ใ‚’ๆๆกˆ
299
+ 1. Record today's highlights via remember:
300
+ - Major decisions โ†’ learning layer
301
+ - Failures hit โ†’ caveat layer
302
+ - Finished deliverables โ†’ implementation.success
303
+ 2. Report: "Recorded. Retrievable via recall next session."
304
+ 3. Optionally suggest: consolidate({scope:"session", min_age_days: 14})
299
305
  ```
300
306
 
301
- ### Case F: ใƒฆใƒผใ‚ถใƒผใŒใ€Œ่ฆšใˆใฆใ€ใจๆ˜Ž็คบ
307
+ ### Case F โ€” User explicitly says "remember this"
302
308
 
303
- ใƒฆใƒผใ‚ถใƒผ: "ใ“ใ‚Œใฏ่ฆšใˆใฆใŠใ„ใฆ: cloudsign ใ‚ˆใ‚Š DocuSign ใฎๆ–นใŒๅฎ‰ๅฎš"
309
+ User: "Remember this: DocuSign is more stable than CloudSign"
304
310
 
305
311
  ```
306
312
  1. remember({
307
- entity_name: "cloudsign vs DocuSign",
313
+ entity_name: "CloudSign vs DocuSign",
308
314
  entity_kind: "concept",
309
315
  layer: "caveat",
310
- content: '{"rule_or_warning":"cloudsign (61% success) ใ‚ˆใ‚Š DocuSign-JP (100%) ใฎๆ–นใŒๅฎ‰ๅฎšใ€‚ใ‚ซใ‚นใ‚ฟใƒžใƒผใซๆๆกˆใ™ใ‚‹ใจใใฏ DocuSign ๆŽจๅฅจ"}',
311
- importance: 0.9 // ใƒฆใƒผใ‚ถใƒผๆ˜Ž็คบๆŒ‡็คบใฏ้ซ˜ๅ„ชๅ…ˆๅบฆ
316
+ content: '{"rule_or_warning":"CloudSign (61% success) is less reliable than DocuSign-JP (100%). Recommend DocuSign when advising customers."}',
317
+ importance: 0.9 // user-explicit instruction = high priority
312
318
  })
313
- 2. ใ€Œ่จ˜ๆ†ถใ—ใพใ—ใŸใ€‚caveat ๅฑคใชใฎใงๅฟ˜ใ‚Œใพใ›ใ‚“ใ€ใจ็ขบ่ช
319
+ 2. Confirm: "Recorded. Since it's in the caveat layer, it won't be forgotten."
314
320
  ```
315
321
 
316
322
  ---
317
323
 
318
- ## ๐Ÿ” ใƒ—ใƒฉใ‚คใƒใ‚ทใƒผ๏ผˆใƒฆใƒผใ‚ถใƒผใซ่žใ‹ใ‚ŒใŸใจใ๏ผ‰
324
+ ## ๐Ÿ” Privacy (when the user asks)
319
325
 
320
- linksee-memory ใฏ **ๅฎŒๅ…จใƒญใƒผใ‚ซใƒซ**:
321
- - DB: `~/.linksee-memory/memory.db` ๏ผˆใƒฆใƒผใ‚ถใƒผใฎPCๅ†…๏ผ‰
322
- - ๅค–้ƒจ้€ไฟก: ใชใ—๏ผˆtelemetry ใฏ opt-inใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ OFF๏ผ‰
323
- - ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—: ใƒ•ใ‚กใ‚คใƒซใ‚ณใƒ”ใƒผใงๅฎŒ็ต
326
+ linksee-memory is **fully local**:
327
+ - DB: `~/.linksee-memory/memory.db` (inside the user's PC)
328
+ - External transmission: none (telemetry is opt-in, OFF by default)
329
+ - Backup: a simple file copy is sufficient
324
330
 
325
- ใ€Œ็งใŸใกใฎใƒ‡ใƒผใ‚ฟใฏๅค–ใซๅ‡บใฆใ‚‹๏ผŸใ€ใจ่žใ‹ใ‚ŒใŸใ‚‰๏ผš
326
- ใ€Œ**ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงไธ€ๅˆ‡ๅ‡บใฆใพใ›ใ‚“ใ€‚** telemetry ใ‚’ๆ˜Ž็คบ็š„ใซ enable ใ—ใฆใ„ใชใ„้™ใ‚Šใ€ใ™ในใฆใƒญใƒผใ‚ซใƒซDBใ€‚`~/.linksee-memory/memory.db` ใฎใ‚ณใƒ”ใƒผใŒๅ”ฏไธ€ใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ€‚ใ€ใจ็ญ”ใˆใ‚‹ใ€‚
331
+ If the user asks "does our data leave my machine?", answer:
332
+ "**By default, nothing leaves.** Unless you explicitly enable telemetry, everything is in a local DB. A copy of `~/.linksee-memory/memory.db` is the only backup you need."
327
333
 
328
334
  ---
329
335
 
330
- ## ๐Ÿš€ KanseiLink Skill ใจใฎ้€ฃๆบ
336
+ ## ๐Ÿš€ Pairing with KanseiLink Skill
331
337
 
332
- KanseiLink skill ใจ linksee-memory skill ใฏ**ใ‚ปใƒƒใƒˆใงๅ‹•ใ**ใจๆœ€ๅคงๅŠนๆžœ๏ผš
338
+ The KanseiLink skill and linksee-memory skill **work best together**:
333
339
 
334
340
  ```
335
- ใƒฆใƒผใ‚ถใƒผ: "freeeใง่ซ‹ๆฑ‚ๆ›ธไฝœใฃใฆ"
341
+ User: "Create an invoice via freee"
336
342
  โ†“
337
- [linksee-memory skill ็™บ็ซ] recall({query: "freee"})
338
- โ†’ ้ŽๅŽปใฎ caveat: "company_id ๆœ€ๅˆใซๅ–ใ‚‹ๅฟ…่ฆใ‚ใ‚Š"
339
- โ†’ ้ŽๅŽปใฎ learning: "OAuth 24h refresh"
343
+ [linksee-memory skill fires] recall({query: "freee"})
344
+ โ†’ past caveat: "fetch company_id first"
345
+ โ†’ past learning: "OAuth 24h refresh required"
340
346
  โ†“
341
- [kansei-link skill ็™บ็ซ] search_services({intent: "invoice"})
342
- โ†’ freee verifiedใ€trust 0.9
343
- โ†’ get_service_tips ใง pitfall ็ขบ่ช
347
+ [kansei-link skill fires] search_services({intent: "invoice"})
348
+ โ†’ freee verified, trust 0.9
349
+ โ†’ get_service_tips reveals pitfalls
344
350
  โ†“
345
- ไธกๆ–นใฎ้›†ๅˆ็Ÿฅใ‚’ๆŒใฃใŸ็Šถๆ…‹ใงๅฎŸ่ฃ…้–‹ๅง‹
351
+ Now you have both bodies of knowledge before starting
346
352
  ```
347
353
 
348
- **KanseiLink = ๅค–้ƒจSaaSใฎ้›†ๅˆ็Ÿฅ / linksee-memory = ่‡ชๅˆ†ใฎ้ŽๅŽปใฎ้›†ๅˆ็Ÿฅ**ใ€‚ไธก่ผชใ€‚
354
+ **KanseiLink = collective knowledge about external SaaS / linksee-memory = collective knowledge about your own past**. Two wheels of the same cart.
349
355
 
350
356
  ---
351
357
 
352
- ## ๐Ÿ“Š ไฝฟใ†ใปใฉ็ฒพๅบฆใŒไธŠใŒใ‚‹ๅŽŸ็†
358
+ ## ๐Ÿ“Š Precision grows with usage
353
359
 
354
- | ๆ™‚็‚น | recall ็ฒพๅบฆ | ใชใœ |
360
+ | Moment | recall precision | Why |
355
361
  |---|---|---|
356
- | Day 1 | ไฝŽ๏ผˆใƒ‡ใƒผใ‚ฟๅฐ‘๏ผ‰ | Stop hook ใŒ่ฒฏใ‚ใฆใ‚‹ๆœ€ไธญ |
357
- | Week 1 | ไธญ | ๆ•ฐๅƒไปถ memoriesใ€FTS5 ใŒๅŠนใๅ‡บใ™ |
358
- | Month 1 | ้ซ˜ | heat_score ใŒๅฎ‰ๅฎšใ€้‡่ฆใƒกใƒขใƒชใŒๆตฎไธŠ |
359
- | Month 3+ | ๆœ€ๅผท | consolidate ่ตฐใฃใฆใ€learnings ใŒ็ตๆ™ถๅŒ– |
362
+ | Day 1 | low (little data) | Stop hook is still collecting |
363
+ | Week 1 | medium | thousands of memories, FTS5 kicks in |
364
+ | Month 1 | high | heat_score stabilizes, important memories surface |
365
+ | Month 3+ | strongest | consolidate has run, learnings crystallized |
360
366
 
361
- **ใ€Œไฝฟใ†ใปใฉ่ณขใใชใ‚‹ใ€ใฏๆ™‚้–“ใŒๅ‘ณๆ–นใ—ใฆใใ‚Œใ‚‹**ใ€‚ไปŠๆ—ฅใฎ่จ˜้Œฒใฏ 3ใƒถๆœˆๅพŒใฎ่‡ชๅˆ†ใŒ่ชญใ‚€ใ€‚
367
+ **"Gets smarter with use"** โ€” time is on your side. Today's record is read by tomorrow's you.
362
368
 
363
369
  ---
364
370
 
365
- *ใ“ใฎใ‚นใ‚ญใƒซใฏ linksee-memory MCP v0.0.5+ ใฎไธŠใงๅ‹•ใใ€‚*
366
- *Stop hook ็ตŒ็”ฑใง่‡ชๅ‹•่จ˜้Œฒใ€recall ็ตŒ็”ฑใงๆ‰‹ๅ‹•ๅ–ใ‚Šๅ‡บใ—ใ€‚*
367
- *MCP Registry ็™ป้Œฒๆธˆใฟใ€Glama/LobeHub ็”ณ่ซ‹ไธญ๏ผˆ2026-04-17 ๆ™‚็‚น๏ผ‰*
371
+ *This skill runs on top of linksee-memory MCP v0.2.0+.*
372
+ *Auto-write via Stop hook, explicit read via recall.*
373
+ *Listed in MCP Official Registry, PulseMCP, mcpservers.org, Glama.*
368
374
  *MIT License โ€” Synapse Arrows PTE. LTD.*
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "linksee-memory",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
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",
7
7
  "bin": {
8
- "linksee-memory": "./dist/mcp/server.js",
9
- "linksee-memory-import": "./dist/bin/import-sessions.js",
10
- "linksee-memory-sync": "./dist/bin/sync-session.js",
11
- "linksee-memory-install-skill": "./dist/bin/install-skill.js",
12
- "linksee-memory-stats": "./dist/bin/stats.js"
8
+ "linksee-memory": "dist/mcp/server.js",
9
+ "linksee-memory-import": "dist/bin/import-sessions.js",
10
+ "linksee-memory-sync": "dist/bin/sync-session.js",
11
+ "linksee-memory-install-skill": "dist/bin/install-skill.js",
12
+ "linksee-memory-stats": "dist/bin/stats.js"
13
13
  },
14
14
  "main": "./dist/mcp/server.js",
15
15
  "files": [
@@ -48,7 +48,7 @@
48
48
  "homepage": "https://github.com/michielinksee/linksee-memory",
49
49
  "repository": {
50
50
  "type": "git",
51
- "url": "https://github.com/michielinksee/linksee-memory.git"
51
+ "url": "git+https://github.com/michielinksee/linksee-memory.git"
52
52
  },
53
53
  "bugs": {
54
54
  "url": "https://github.com/michielinksee/linksee-memory/issues"