🧠 スタックちゃんの記憶 (memory)
このリポジトリ自体を スタックちゃんの長期記憶 として育てるための SQLite ベースのナレッジ層。
思想
- markdown ドキュメントは 人間向け (概念・設計・手順)
- SQLite (
memory/stackchan-memory.db) は 機械向け (クエリ可能な活動ログ・在庫・履歴) - 両者は並走。git で時系列管理されているので 「先週何やった?」が必ず答えられる
- 将来 Donack 自身がこの DB を参照して会話できる素地
ディレクトリ
memory/
schema.sql ← DDL (テーブル定義 + FTS5 全文検索)
seed.sql ← 初期データ (5/19〜5/24)
stackchan-memory.db ← 実体 (SQLite, git 管理)mac-studio/bridge/src/memory/ に CLI ツールがあります。
スキーマ
| テーブル | 用途 | 主なカラム |
|---|---|---|
activities | 実装・購入・トラブル・知識獲得など全ての行為 | occurred_at, category, title, body, tags, related_issue/pr/commit |
parts | パーツ資産(docs/parts.md の構造化版) | name, model_number, category, device_assignment, status, price_jpy |
events | 物理イベント (買い物・組み立て・展示会) | occurred_at, type, title, location |
firmware_history | firmware 書き込み履歴 | flashed_at, version, git_sha, target_device |
shopping_list | これから買いたいウィッシュリスト | item_name, priority, status, est_price_jpy, reason |
activity_parts | 活動とパーツの紐付け | M:N 中間表 |
activities_fts | FTS5 全文検索(title/body/tags) | 自動同期 |
カテゴリ:
- activities.category:
event/implementation/troubleshoot/purchase/idea/knowledge/meta - parts.category:
main_board/sensor/actuator/cable/tool/display/compute - parts.status:
in_stock/in_use/broken/retired - parts.device_assignment:
k151/minimal/pi5/workshop/pool
CLI 使い方
mac-studio/bridge/ 配下で:
bash
# DB 初期化(schema + seed)
npm run mem -- init
# 活動ログ追加
npm run mem -- add activity \
--title "Module-LLM の Wi-Fi 設定でハマった" \
--body "USB CDC で SSH..." \
--category troubleshoot \
--tags "module-llm,wifi"
# パーツ追加
npm run mem -- add part \
--name "Unit Vibrator" \
--category actuator \
--device k151 \
--price 800 \
--from sengoku
# 買い物リスト
npm run mem -- list shopping # status=wanted を優先順位順
npm run mem -- list shopping --all # bought / dropped も含めて
npm run mem -- add shopping --name "Unit Touch" --priority 2 --reason "撫で検知"
npm run mem -- mark-bought 3 # 買ったらマーク
npm run mem -- drop-shopping 8 # やめた候補
# イベント追加
npm run mem -- add event \
--title "M5Stack JP コミュニティ集会" \
--type meetup \
--location "秋葉原"
# 一覧
npm run mem -- list activities --since 2026-05-23 --limit 20
npm run mem -- list parts --device k151
npm run mem -- list parts --status in_stock
npm run mem -- list events
# 全文検索
npm run mem -- search "voicevox"
npm run mem -- search "module-llm AND tts"
# 統計
npm run mem -- statsseed 済みの内容(2026-05-19 〜 2026-05-24)
実装開始から VOICEVOX 統合・複数端末ガイド整備までの主要イベント・活動を投入済。
bash
$ npm run mem -- stats
# activities by category
implementation 6
troubleshoot 3
purchase 2
event 1
idea 1
knowledge 1
# parts by status
in_stock 17
in_use 6
# events by type
purchase 2
unboxing 1
assembly 1
demo 1運用ルール
- 新しいことをやったらすぐ追加 (実装完了 / 詰まり / 学び / 購入 / 試験)
- issue / PR / commit と紐付け (
--issue--pr--commitフラグ) - タグを付ける (後で集計しやすい:
firmware,voicevox,m5stack,troubleshoot等) - git で DB を commit する (バイナリだが単一ユーザー前提、conflict 時は seed.sql 再生成)
docs/parts.md との関係
- markdown (
docs/parts.md) — 人間が眺める用(カテゴリ表・物理接続図・購入履歴) - SQLite (
partsテーブル) — 集計・クエリ用(ステータス別・端末別・購入元別)
両方をメンテナンス(将来は markdown を SQLite から生成する自動化も検討)。
スタックちゃんとの会話で記憶を呼ぶ (MCP 連携)
memory は MCP サーバー として bridge から起動され、Claude (bridge ClaudeBackend) が会話中に自動で呼び出します。
利用可能ツール (Claude から見えるもの)
| ツール | 用途 |
|---|---|
memory_search_activities | 活動ログを FTS5 全文検索 |
memory_list_activities | 期間・カテゴリで活動ログ一覧 |
memory_list_parts | 配属 (k151/minimal/pi5/workshop) ・状態別にパーツ一覧 |
memory_list_events | 物理イベント (購入・組み立て・展示会) |
memory_list_firmware | firmware 書き込み履歴 |
memory_add_activity | 新しい活動を記録 |
memory_stats | 集計(カテゴリ別件数) |
加えて Claude には Read / Glob / Grep / Bash も許可されているので、リポジトリ内のコードやドキュメントの参照、gh CLI での GitHub 操作、git 操作なども可能。
会話例
スタックちゃんに「K151 で未接続のセンサーを教えて」と話しかけると:
- Claude が
memory_list_parts({status:'in_stock', device:'k151', category:'sensor'})を呼ぶ - memory MCP server が SQLite クエリを実行
- 4 つのセンサー(PIR / ToF / DLight / ENV-Pro)が返る
- Claude が日本語で「PaHUB でまとめて繋ぐと良いよ」のような提案つきで答える
- VOICEVOX で音声合成 → CoreS3 の顔から出力
他にできるシナリオ
- 「いまの open issue を教えて」 → Bash で
gh issue list実行 → 一覧読み上げ - 「次の買い物リスト」 →
shopping_list_top→ 優先順位順に読み上げ - 「これも欲しい、Unit Touch」 →
shopping_add_item({item_name: "Unit Touch"}) - 「M3 ねじ買ってきたよ」 →
shopping_mark_boughtで買い物リスト更新 - 「先週の買い物」 →
memory_list_events --type=purchase - 「最近のトラブル」 →
memory_list_activities --category=troubleshoot - 「ENV-Pro と PaHUB を繋ぐコードを書いて」 → Read で firmware を読み、提案を口頭、PR は別途
- 「今の作業を覚えておいて」 →
memory_add_activity
bridge 側設定 (mac-studio/bridge/src/backends/claude.ts)
ts
options: {
systemPrompt: DONACK_SYSTEM_PROMPT,
allowedTools: ['Read', 'Glob', 'Grep', 'Bash', 'mcp__memory__memory_*'],
mcpServers: {
memory: {
type: 'stdio',
command: 'node',
args: ['--import', 'tsx', 'src/mcp/memory-server.ts'],
},
},
}将来の拡張
- [ ] Cloud memory (Turso / Cloudflare D1) によるレスポンス改善 + 複数端末リアルタイム同期
- [ ] shopping_list 専用テーブル + リマインダー自動発火
- [ ] vibe coding 時の Write/Edit/PR 自動化 (現状は Read 系のみ許可)
- [ ] JCARVIS との memory 共有 (双方向同期)
- [ ] markdown ↔ SQLite の双方向同期
- [ ] 写真メタデータ自動抽出(EXIF から acquired_at)
- [ ] 月次レポート自動生成
ファイル
- スキーマ:
memory/schema.sql - seed:
memory/seed.sql - CLI:
mac-studio/bridge/src/memory/cli.ts