@hir4ta/mneme 0.20.2 → 0.22.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.
Files changed (51) hide show
  1. package/.claude-plugin/plugin.json +2 -5
  2. package/README.ja.md +45 -283
  3. package/README.md +48 -280
  4. package/dist/lib/db.js +7 -5
  5. package/dist/lib/incremental-save.js +122 -28
  6. package/dist/lib/prompt-search.js +570 -0
  7. package/dist/lib/search-core.js +516 -0
  8. package/dist/lib/session-finalize.js +983 -0
  9. package/dist/lib/session-init.js +397 -0
  10. package/dist/lib/suppress-sqlite-warning.js +8 -0
  11. package/dist/public/assets/index-Bvl_IrPy.css +1 -0
  12. package/dist/public/assets/index-k5JYSPV6.js +351 -0
  13. package/dist/public/assets/{react-force-graph-2d-CGnpkwRw.js → react-force-graph-2d-Dlcfvz01.js} +1 -1
  14. package/dist/public/index.html +2 -2
  15. package/dist/server.js +565 -37
  16. package/dist/servers/db-server.js +1301 -98
  17. package/dist/servers/search-server.js +613 -333
  18. package/hooks/hooks.json +1 -0
  19. package/hooks/lib/common.sh +55 -0
  20. package/hooks/post-tool-use.sh +52 -58
  21. package/hooks/pre-compact.sh +30 -42
  22. package/hooks/session-end.sh +30 -142
  23. package/hooks/session-start.sh +32 -337
  24. package/hooks/stop.sh +31 -42
  25. package/hooks/user-prompt-submit.sh +58 -212
  26. package/package.json +10 -3
  27. package/scripts/export-weekly-knowledge-html.ts +906 -0
  28. package/scripts/search-benchmark.queries.json +78 -0
  29. package/scripts/search-benchmark.ts +120 -0
  30. package/scripts/validate-source-artifacts.mjs +378 -0
  31. package/servers/db-server.ts +995 -65
  32. package/servers/search-server.ts +117 -528
  33. package/skills/harvest/SKILL.md +78 -0
  34. package/skills/init-mneme/{skill.md → SKILL.md} +7 -1
  35. package/skills/resume/{skill.md → SKILL.md} +24 -9
  36. package/skills/save/SKILL.md +131 -0
  37. package/skills/search/SKILL.md +76 -0
  38. package/skills/using-mneme/SKILL.md +38 -0
  39. package/tsconfig.tsbuildinfo +1 -0
  40. package/dist/public/assets/index-CeHiZXwl.js +0 -345
  41. package/dist/public/assets/index-t_srr1OD.css +0 -1
  42. package/learn_claude_code/figma_exports/claude_code_map.svg +0 -107
  43. package/learn_claude_code/figma_exports/claude_code_whiteboard.excalidraw +0 -2578
  44. package/skills/AGENTS.override.md +0 -5
  45. package/skills/harvest/skill.md +0 -295
  46. package/skills/plan/skill.md +0 -422
  47. package/skills/report/skill.md +0 -74
  48. package/skills/review/skill.md +0 -419
  49. package/skills/save/skill.md +0 -496
  50. package/skills/search/skill.md +0 -175
  51. package/skills/using-mneme/skill.md +0 -185
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mneme",
3
3
  "description": "A plugin that provides long-term memory for Claude Code. It automatically saves context lost during auto-compact, offering features for session restoration, recording technical decisions, and learning developer patterns.",
4
- "version": "0.20.2",
4
+ "version": "0.22.0",
5
5
  "author": {
6
6
  "name": "hir4ta"
7
7
  },
@@ -12,10 +12,7 @@
12
12
  "mcpServers": {
13
13
  "mneme-search": {
14
14
  "command": "node",
15
- "args": ["${CLAUDE_PLUGIN_ROOT}/dist/servers/search-server.js"],
16
- "env": {
17
- "MNEME_DATA_DIR": "${MNEME_DATA_DIR:-}"
18
- }
15
+ "args": ["${CLAUDE_PLUGIN_ROOT}/dist/servers/search-server.js"]
19
16
  },
20
17
  "mneme-db": {
21
18
  "command": "node",
package/README.ja.md CHANGED
@@ -9,41 +9,22 @@ Claude Codeの長期記憶を実現するプラグイン
9
9
 
10
10
  ## 機能
11
11
 
12
- ### コア機能
13
12
  - **インクリメンタル保存**: 各ターン完了時に差分のみをSQLiteに保存(Node.js、高速)
14
13
  - **自動記憶検索**: プロンプトごとに関連する過去のセッション・判断を自動で注入
15
14
  - **PreCompact対応**: Auto-Compact前に未保存分をキャッチアップ(コンテキスト95%で発動)
16
15
  - **フルデータ抽出**: `/mneme:save` で要約・判断・パターン・ルールを一括保存
17
- - **記憶参照プランニング**: `/mneme:plan` で過去の知見を活用した設計・計画
18
16
  - **セッション再開**: `/mneme:resume` で過去のセッションを再開(チェーン追跡付き)
19
17
  - **セッション提案**: セッション開始時に最新3件を提案
20
- - **ルールベースレビュー**: `dev-rules.json` / `review-guidelines.json` に基づくレビュー
21
- - **GitHub PRレビュー**: `/mneme:review <PR URL>` でGitHub PRをレビュー
22
- - **知見の抽出**: `/mneme:harvest` でPRコメントからルール・パターンを抽出
23
- - **週次レポート**: レビュー結果を集計したMarkdownレポートを自動生成
24
- - **Webダッシュボード**: セッション・判断・パターン・ルールの閲覧
18
+ - **知見の抽出**: `/mneme:harvest` でPRコメントから decision/pattern/rule の元データを抽出
19
+ - **Webダッシュボード**: セッション・元データ・開発ルールの閲覧
20
+ - **開発ルール + 承認**: 意思決定・パターン・ルールから開発ルールを生成し、インラインで承認/却下
21
+ - **知識グラフ層**: セッションと承認済み開発ルールを一つのグラフで可視化
25
22
 
26
- ## 課題と解決(導入メリット)
23
+ ## 課題と解決
27
24
 
28
- ### Claude Code 開発で起きがちな課題
25
+ Claude Codeのセッションは終了やAuto-Compactで文脈が失われ、過去の判断が追えず、知見の再利用が困難です。
29
26
 
30
- - **コンテキストの消失**: セッション終了やAuto-Compactで会話の文脈が失われる
31
- - **判断の不透明化**: 「なぜこの設計にしたのか」が後から追えない
32
- - **同じミスの繰り返し**: 同じエラーを何度も解決(学習されない)
33
- - **知見の再利用が難しい**: 過去のやり取りや決定を検索・参照しづらい
34
-
35
- ### mneme でできること
36
-
37
- - **自動保存 + 再開**で、セッションを跨いだ文脈の継続が可能
38
- - **自動記憶検索**で、関連する過去の知見が常に会話に反映される
39
- - **判断・パターン記録**で、理由やエラー解決策を後から追跡
40
- - **検索とダッシュボード**で、過去の記録を素早く参照
41
- - **レビュー機能**で、リポジトリ固有の観点に基づいて指摘
42
-
43
- ### チーム利用のメリット
44
-
45
- - `.mneme/` のJSONファイルは**Git管理可能**なので、判断や会話の履歴をチームで共有できる
46
- - オンボーディングやレビュー時に「背景・経緯」を短時間で把握できる
27
+ **mnemeでの解決**: 自動保存と再開、毎プロンプトでの自動記憶検索、判断・パターン履歴の検索・ダッシュボード参照。`.mneme/` のJSONはGit管理可能で、チームでの知見共有にも対応します。
47
28
 
48
29
  ## インストール
49
30
 
@@ -119,62 +100,29 @@ Claude Codeを再起動
119
100
 
120
101
  ## 使い方
121
102
 
122
- ### インクリメンタル保存
123
-
124
- **会話ログは各ターン完了時に自動保存**されます(Node.jsでストリーミング処理)。設定不要。
125
-
126
- - **Stop hook**: 各アシスタント応答完了時に差分のみを保存
127
- - **PreCompact hook**: Auto-Compact前に未保存分をキャッチアップ
128
- - **SessionEnd hook**: 軽量な終了処理のみ(重い処理なし)
129
-
130
- **`/mneme:save`を実行しないと、セッション終了時に会話履歴は削除されます**(ゴミデータ防止)。
131
-
132
- ### 自動記憶検索
133
-
134
- **プロンプトごとに**、mnemeは自動で:
135
- 1. メッセージからキーワードを抽出
136
- 2. sessions/decisions/patternsを検索
137
- 3. 関連情報をClaudeに注入
138
-
139
- 手動で検索しなくても、過去の知見が常に活用されます。
140
-
141
- ### セッション提案
142
-
143
- セッション開始時に最新3件が表示されます:
144
-
145
- ```
146
- **Recent sessions:**
147
- 1. [abc123] JWT認証の実装 (2026-01-27, main)
148
- 2. [def456] ダッシュボードUI (2026-01-26, main)
149
- 3. [ghi789] バグ修正 (2026-01-25, main)
150
-
151
- Continue from a previous session? Use `/mneme:resume <id>`
152
- ```
153
-
154
103
  ### コマンド
155
104
 
156
- | コマンド | 説明 |
157
- | --------- | ------ |
158
- | `/init-mneme` | プロジェクトでmnemeを初期化 |
159
- | `/mneme:save` | 全データ抽出: 要約・判断・パターン・ルール |
160
- | `/mneme:plan [トピック]` | 記憶参照 + ソクラティック質問 + タスク分割 |
161
- | `/mneme:resume [id]` | セッションを再開(ID省略で一覧表示) |
162
- | `/mneme:search "クエリ"` | セッション・判断・パターンを検索 |
163
- | `/mneme:review [--staged\|--all\|--diff=branch\|--full]` | ルールに基づくレビュー |
164
- | `/mneme:review <PR URL>` | GitHub PRをレビュー |
165
- | `/mneme:harvest <PR URL>` | PRレビューコメントから知見を抽出 |
166
- | `/mneme:report [--from YYYY-MM-DD --to YYYY-MM-DD]` | 週次レビューレポート |
105
+ | コマンド | 説明 |
106
+ | -------------------------- | ------------------------------------------ |
107
+ | `/init-mneme` | プロジェクトでmnemeを初期化 |
108
+ | `/mneme:save` | 全データ抽出: 要約・判断・パターン・ルール |
109
+ | `/mneme:resume [id]` | セッションを再開(ID省略で一覧表示) |
110
+ | `/mneme:search "クエリ"` | セッションと承認済み開発ルールを検索 |
111
+ | `/mneme:harvest <PR URL>` | PRレビューコメントから知見を抽出 |
167
112
 
168
113
  ### 推奨ワークフロー
169
114
 
170
115
  ```
171
- plan → implement → save → review
116
+ implement → save → approve rules
172
117
  ```
173
118
 
174
- 1. **plan**: 記憶参照 + ソクラティック質問 + タスク分割
175
- 2. **implement**: 計画に沿って実装
176
- 3. **save**: 判断・パターン・ルールを抽出
177
- 4. **review**: 計画準拠とコード品質をレビュー
119
+ 1. **implement**: コードを実装
120
+ 2. **save**: 元データを抽出して開発ルール候補を生成
121
+ 3. **validate**: `npm run validate:sources` で必須項目/priority/tags を検証
122
+ 4. **approve rules**: 生成された開発ルールをインラインで確認・承認/却下
123
+
124
+ ランタイム詳細(Hook分岐、未保存終了、Auto-Compact)は以下:
125
+ - `docs/mneme-runtime-flow.md`
178
126
 
179
127
  ### ダッシュボード
180
128
 
@@ -195,9 +143,7 @@ npx @hir4ta/mneme --dashboard --port 8080
195
143
  #### 画面一覧
196
144
 
197
145
  - **Sessions**: セッション一覧・詳細
198
- - **Decisions**: 技術的な判断の一覧・詳細
199
- - **Rules**: 開発ルール・レビュー観点の閲覧
200
- - **Patterns**: 学習済みパターンの閲覧(グッドパターン、アンチパターン、エラー解決策)
146
+ - **開発ルール**: 意思決定・パターン・ルールから生成されたルールの確認・承認
201
147
  - **Statistics**: アクティビティチャート・セッション統計の表示
202
148
  - **Graph**: タグ共有によるセッション関連性の可視化
203
149
 
@@ -205,227 +151,43 @@ npx @hir4ta/mneme --dashboard --port 8080
205
151
 
206
152
  ダッシュボードは日本語と英語に対応しています。ヘッダーの言語切り替えボタン(EN/JA)をクリックして切り替えできます。設定はlocalStorageに保存されます。
207
153
 
208
- ### MCPツール
209
-
210
- mnemeはMCPサーバーを提供し、Claude Codeから直接呼び出せる検索・データベースツールを提供:
211
-
212
- | サーバー | ツール | 説明 |
213
- |---------|--------|------|
214
- | mneme-search | `mneme_search` | 統合検索(FTS5、タグエイリアス解決) |
215
- | mneme-search | `mneme_get_session` | セッション詳細取得 |
216
- | mneme-search | `mneme_get_decision` | 決定詳細取得 |
217
- | mneme-db | `mneme_list_projects` | 全プロジェクト一覧 |
218
- | mneme-db | `mneme_cross_project_search` | クロスプロジェクト検索 |
219
-
220
- ### サブエージェント
221
-
222
- | エージェント | 説明 |
223
- |-------------|------|
224
- | `mneme-reviewer` | ルールベースのコードレビュー(独立コンテキスト) |
225
-
226
- ## 仕組み
227
-
228
- ```mermaid
229
- flowchart TB
230
- subgraph incremental [インクリメンタル保存]
231
- A[各ターン] --> B[Stop Hook]
232
- B --> C[Node.js ストリーミング]
233
- C --> D[差分のみ保存]
234
- end
235
-
236
- subgraph autosearch [自動記憶検索]
237
- E[ユーザープロンプト] --> F[UserPromptSubmit Hook]
238
- F --> G[sessions/decisions/patterns検索]
239
- G --> H[関連コンテキスト注入]
240
- end
241
-
242
- subgraph precompact [PreCompact キャッチアップ]
243
- I[コンテキスト95%] --> J[PreCompact Hook]
244
- J --> K[未保存分をキャッチアップ]
245
- end
246
-
247
- subgraph sessionend [セッション終了]
248
- L[終了] --> M[SessionEnd Hook]
249
- M --> N{コミット済み?}
250
- N -->|Yes| O[interactions保持]
251
- N -->|No| P[interactions削除]
252
- end
253
-
254
- subgraph manual [手動アクション]
255
- Q["mneme:save"] --> R[decisions + patterns + rules抽出]
256
- R --> S[セッションをコミット済みに]
257
- T["mneme:plan"] --> U[記憶参照 + タスク分割]
258
- end
259
-
260
- subgraph resume [セッション再開]
261
- V["mneme:resume"] --> W[一覧から選択]
262
- W --> X[コンテキスト復元 + resumedFrom設定]
263
- end
264
-
265
- subgraph review [レビュー]
266
- Y["mneme:review"] --> Z[ルールベース指摘]
267
- Z --> AA[レビュー結果保存]
268
- end
269
-
270
- subgraph dashboard [ダッシュボード]
271
- AB["npx @hir4ta/mneme -d"] --> AC[ブラウザで開く]
272
- AC --> AD[全データ閲覧]
273
- end
274
-
275
- D --> Q
276
- H --> Q
277
- S --> AB
278
- AA --> AB
279
- ```
154
+ ### 週次ナレッジHTML出力
280
155
 
281
- ## データ保存
156
+ 直近7日間の知見活動を共有用HTMLとして出力できます:
282
157
 
283
- mnemeは**ハイブリッドストレージ**方式でプライバシーと共有を両立:
284
-
285
- | ストレージ | 場所 | 用途 | 共有 |
286
- |-----------|------|------|------|
287
- | **JSON** | `.mneme/` | 要約、決定、パターン、ルール | Git管理(チーム共有) |
288
- | **SQLite** | `.mneme/local.db` | 会話履歴、バックアップ | ローカル専用(gitignored) |
289
-
290
- **なぜハイブリッド?**
291
- - **プライバシー**: 会話履歴(interactions)はローカルのみ(gitignored)
292
- - **軽量化**: JSONファイルが100KB+から約5KBに軽量化(interactions除外)
293
- - **将来対応**: セマンティック検索用のembeddingsテーブル準備済み
294
-
295
- ### ディレクトリ構成
296
-
297
- **プロジェクト内** (`.mneme/`):
298
- ```text
299
- .mneme/
300
- ├── local.db # SQLite(会話履歴)- gitignored
301
- ├── tags.json # タグマスターファイル(93タグ、表記揺れ防止)
302
- ├── sessions/ # セッションメタデータ - Git管理
303
- │ └── YYYY/MM/
304
- │ └── {id}.json # メタデータのみ(interactionsはlocal.db)
305
- ├── decisions/ # 技術的な判断(/saveから)- Git管理
306
- │ └── YYYY/MM/
307
- │ └── {id}.json
308
- ├── patterns/ # エラーパターン(/saveから)- Git管理
309
- │ └── {user}.json
310
- ├── rules/ # 開発ルール / レビュー観点 - Git管理
311
- ├── reviews/ # レビュー結果 (YYYY/MM) - Git管理
312
- └── reports/ # 週次レポート (YYYY-MM) - Git管理
158
+ ```bash
159
+ npm run export:weekly-html
313
160
  ```
314
161
 
315
- `local.db` は `.mneme/.gitignore` に追加され、会話はプライベートに保たれます。
316
-
317
- ### セッションJSONスキーマ
318
-
319
- セッションメタデータはJSONに保存(interactionsはプライバシー保護のためSQLiteに保存):
320
-
321
- ```json
322
- {
323
- "id": "abc12345",
324
- "sessionId": "claude-code-からの-full-uuid",
325
- "createdAt": "2026-01-27T10:00:00Z",
326
- "endedAt": "2026-01-27T12:00:00Z",
327
- "title": "JWT認証機能の実装",
328
- "tags": ["auth", "jwt"],
329
- "context": {
330
- "branch": "feature/auth",
331
- "projectDir": "/path/to/project",
332
- "user": { "name": "tanaka", "email": "tanaka@example.com" }
333
- },
334
- "metrics": {
335
- "userMessages": 5,
336
- "assistantResponses": 5,
337
- "thinkingBlocks": 5,
338
- "toolUsage": [{"name": "Edit", "count": 3}, {"name": "Write", "count": 2}]
339
- },
340
- "files": [
341
- { "path": "src/auth/jwt.ts", "action": "create" }
342
- ],
343
- "resumedFrom": "def45678",
344
- "status": "complete",
345
-
346
- "summary": {
347
- "title": "JWT認証機能の実装",
348
- "goal": "JWTベースの認証機能を実装",
349
- "outcome": "success",
350
- "description": "RS256署名でJWT認証を実装",
351
- "sessionType": "implementation"
352
- },
353
-
354
- "plan": {
355
- "tasks": ["[x] JWT署名方式の選定", "[x] ミドルウェア実装", "[ ] テスト追加"],
356
- "remaining": ["テスト追加"]
357
- },
358
-
359
- "discussions": [
360
- {
361
- "topic": "署名方式",
362
- "decision": "RS256を採用",
363
- "reasoning": "本番環境でのセキュリティを考慮",
364
- "alternatives": ["HS256(シンプルだが秘密鍵共有が必要)"]
365
- }
366
- ],
367
-
368
- "errors": [
369
- {
370
- "error": "secretOrPrivateKey must be asymmetric",
371
- "cause": "HS256用の秘密鍵をRS256で使用",
372
- "solution": "RS256用のキーペアを生成"
373
- }
374
- ],
375
-
376
- "handoff": {
377
- "stoppedReason": "テスト作成は次回に持ち越し",
378
- "notes": ["vitest設定済み", "モック用のキーペアは test/fixtures/ に配置"],
379
- "nextSteps": ["jwt.test.ts を作成", "E2Eテスト追加"]
380
- },
381
-
382
- "references": [
383
- { "url": "https://jwt.io/introduction", "title": "JWT Introduction" }
384
- ]
385
- }
386
- ```
162
+ 出力先:
163
+ - `.mneme/exports/weekly-knowledge-YYYY-MM-DD.html`
387
164
 
388
- ### セッションタイプ
165
+ ## データ保存
389
166
 
390
- `sessionType` フィールドはセッションの種類を分類します。
167
+ mnemeは**ハイブリッドストレージ**方式でプライバシーと共有を両立:JSON(Git管理)でチーム共有、SQLite(gitignored)で会話をプライベートに保存。
391
168
 
392
- | タイプ | 説明 |
393
- |--------|------|
394
- | `decision` | 決定サイクルあり(設計判断、技術選択など) |
395
- | `implementation` | コード変更あり |
396
- | `research` | リサーチ・学習・キャッチアップ |
397
- | `exploration` | コードベース探索 |
398
- | `discussion` | 議論・相談のみ |
399
- | `debug` | デバッグ・調査 |
400
- | `review` | コードレビュー |
169
+ | ストレージ | 場所 | 用途 | 共有 |
170
+ | ---------- | ----------------- | ---------------------------- | -------------------------- |
171
+ | **JSON** | `.mneme/` | 要約、決定、パターン、ルール | Git管理(チーム共有) |
172
+ | **SQLite** | `.mneme/local.db` | 会話履歴、バックアップ | ローカル専用(gitignored) |
401
173
 
402
- ### タグ
174
+ 会話ログは各ターン完了時に自動保存されます。設定不要。
403
175
 
404
- タグは `.mneme/tags.json` から選択され、表記揺れを防止します(例: 「フロント」→「frontend」)。マスターファイルには11カテゴリ93タグが含まれています:
176
+ 自動記憶検索はプロンプトごとに実行され、キーワード抽出 過去のセッション/開発ルール検索 → 関連コンテキスト注入を自動で行います。
405
177
 
406
- - **domain**: frontend, backend, api, db, infra, mobile, cli
407
- - **phase**: feature, bugfix, refactor, test, docs
408
- - **ai**: llm, ai-agent, mcp, rag, vector-db, embedding
409
- - **cloud**: serverless, microservices, edge, wasm
410
- - その他...
178
+ セッション開始時に最新3件が表示されるので、`/mneme:resume <id>` ですぐに再開できます。
411
179
 
412
180
  ## セキュリティとプライバシー
413
181
 
414
182
  mnemeは**完全にローカルで動作**し、外部サーバーへのデータ送信は一切ありません。
415
183
 
416
- | 項目 | 説明 |
417
- |------|------|
418
- | **外部通信** | なし - curl/fetch/HTTP リクエスト等は一切使用していません |
419
- | **データ保存** | すべてプロジェクト内の `.mneme/` ディレクトリに保存 |
420
- | **会話履歴** | `local.db` に保存され、自動的にgitignore(Git共有されません) |
421
- | **使用ツール** | bash, Node.js, jq, sqlite3(外部依存なし) |
422
- | **コード** | オープンソース - すべてのコードは監査可能です |
423
-
424
- ### プライバシー設計
425
-
426
- - **会話内容(interactions)はローカル専用**: SQLite(`local.db`)に保存され、`.gitignore`に自動追加
427
- - **メタデータのみGit共有可能**: セッション要約、決定、パターンなどはJSONでチーム共有可能
428
- - **テレメトリなし**: 使用状況の追跡や外部送信は行いません
184
+ | 項目 | 説明 |
185
+ | -------------- | ------------------------------------------------------------- |
186
+ | **外部通信** | なし - curl/fetch/HTTP リクエスト等は一切使用していません |
187
+ | **データ保存** | すべてプロジェクト内の `.mneme/` ディレクトリに保存 |
188
+ | **会話履歴** | `local.db` に保存され、自動的にgitignore(Git共有されません) |
189
+ | **使用ツール** | bash, Node.js, jq, sqlite3(外部依存なし) |
190
+ | **コード** | オープンソース - すべてのコードは監査可能です |
429
191
 
430
192
  ## ライセンス
431
193