- Claude Codeのセッション間でコンテキストが失われる問題を解決するため、ローカル検索エンジンQMDと
/recallスキルを組み合わせたメモリシステムを構築
- QMDはObsidianボルトをインデックスするローカル検索エンジンで、BM25・セマンティック・ハイブリッドの3つの検索モードをサポート
/recallスキルは時系列・トピック別・グラフ可視化の3つのモードで、過去セッションのフルコンテキストを即座に復元
- 700件のセッションのJSONL会話記録を自動でパース・埋め込みし、QMDインデックスに反映する自動化パイプラインを実装
- ツールが変わってもコンテキストさえ維持すれば、どのAIエージェントでも活用できるコンテキスト中心のワークフローを提示
問題: セッションごとに初期化されるClaude Code
- Claude Codeのすべての会話はゼロ状態から始まり、3週間で700件のセッションを進める中で、過去の決定事項やプロジェクトのコンテキストを追跡しにくい状況が発生
- セッションの途中でコンテキスト上限(60%)に達するとcompactまたはhand offが必要になり、この過程で決定事項の半分が失われる
- 翌日に作業を続けようとすると、何をしていたのか思い出せない不便さが繰り返される
- 従来方式だったファイルgrepベースの検索はスケーラブルではない
QMD: ボルト専用のローカル検索エンジン
- QMDはShopify CEOの**Tobias Lutke** が作ったローカル検索エンジンで、Obsidianボルトをインデックスし、1秒以内に検索結果を返す
- ボルトフォルダごとにQMDのcollectionをマッピング(ノート、日次記録、セッション、トランスクリプトなど)し、集中的な検索を実行できる
qmd collection list、qmd search "video workflow" -c notes -n 3 など、単一コマンドで動作
- Claude Codeの標準検索はHaikuサブエージェントがすべてのファイルをgrepするブルートフォース方式で、テスト結果では3分かかって300ファイルを返し、結果の品質も低い
- QMD検索は即時で、より正確で、トークン消費も少ない — サブエージェント不要
Grep vs BM25 vs セマンティック検索
- BM25 (
qmd search): 決定論的な全文検索で、grepのようにキーワードをマッチさせつつ各ファイルにスコアを付与
— 単語の出現頻度と全文書に対する希少性に基づき、AIや埋め込みを使わず数学的計算のみを使用
- 「sleep」が5回出てくる短いノートは、10,000語のファイルで1回だけ言及されたものより高く評価される
- セマンティック (
qmd vsearch): 埋め込みベースで、正確な単語がなくても意味で検索できる
- ハイブリッド (
qmd query): BM25とセマンティックを組み合わせたもの
- 「sleep」検索のベンチマーク比較:
- grep: 200ファイルを返し、
sleep() というプログラミングコマンドまで含むノイズが多い
- BM25: 2秒以内に睡眠の質の実験、睡眠中断の記録など関連結果を返す
- ただし
qmd search "insomnia" はボルト内にその単語がないため結果は0
- セマンティック: 「couldn't sleep, bad night」で検索すると、数年前に設定した就寝習慣の目標まで発見 — 5件の結果のうち4件は検索語を含まない
- ハイブリッド: sleep quality improvement 89%、sleep interrupted at 3am 51%、health sleep optimization 42%で最適な順位付けを提供
- 推奨される利用パターン: 検索の80%はBM25で処理(構造化ノート向き)、トランスクリプトや非構造化メモにはセマンティック検索を追加
セマンティック検索の実際の発見事例
- 「find the days when I was happy and what was the reason」のような非構造化クエリに対し、Claudeが自動で複数の検索を組み合わせる:
qmd vsearch "happy, grateful, excited"、"energy, great day, feeling good"、"satisfaction, accomplishment" など複数の検索を実行
- 数か月分の日次ノートから意味的なつながりを発見 — 「最も幸せな日は、何かをリリースし、サウナに入るか9時間睡眠でしっかり回復した日」というパターンを導出
/recallスキル: 作業開始前にコンテキストを読み込む
- /recallはQMD上で動作するClaude Codeスキルで、作業開始前にコンテキストを自動ロードする
- 3つのモードをサポート:
- temporal: 日付ベースでセッション履歴をスキャン (
/recall yesterday, /recall last week)
- topic: QMDコレクションを対象にしたBM25検索 (
/recall topic graph)
- graph: セッションとファイルのインタラクティブな可視化 (
/recall graph last week)
/recall yesterday のテスト結果: 1日分の39件のセッションをタイムラインとして再構成 — 各セッションの時刻、メッセージ数、作業内容を表示
/recall topic "QMD video" の結果: セッションとノート全体から、ダッシュボード、制作計画、ToDoリストなどの関連ファイルを1分以内に返す — ブルートフォースgrepと比べて時間・トークン・結果品質のすべてで優位
- graphモードはセッションをカラーブロブとして可視化し、古いセッションは薄く、最近のセッションは紫でハイライト — ファイルはgoals、research、voice、docs、content、skillsなどタイプ別にクラスタリング
- 例: 昼食場所を探したセッションを1週間後にグラフで見つけ、そのファイルパスをClaude Codeにコピーして以前の会話の続きを作業できる
700件のセッションの自動インデックス化
- Claude Codeはすべての会話をJSONLファイルとしてローカル保存 — 3週間で700件のセッションが蓄積
- 元ファイルにはtool uses、システムプロンプト、roleなどが含まれているため、これをパースしてクリーンなMarkdown(実際のユーザーメッセージとシグナル) に変換し、QMDインデックスに埋め込む
- ターミナル終了時に自動hookが実行され、セッションをQMDへexport・embed — 別途手動作業なしで常に最新インデックスを維持
実行していないアイデアの発見
- 「find the ideas that I have never acted on」と検索したとき、ClaudeがQMDの結果を総合して見つけた内容:
- 10月19日 — PhD執筆ダッシュボードの構築計画があったが未実行
- イラストベースのアプリのアイデアがあったが後続対応なし
- Obsidianワークフローの画面録画のアイデアがあったが実行されていない
- 数か月前に書いて完全に忘れていた内容が再発見される
- すべての埋め込みはローカルに保存
コンテキスト中心のワークフロー
- ノートがObsidian内に閉じ込められず、実際の目標達成に活用される有用なコンテキストへと変換される
- ツールは変わっても(新モデル、新エージェント)、コンテキストさえ維持すれば Claude Code、Codex、Gemini CLIなどどこでも動作可能
- メモリレイヤーはスキルの形でスタック全体で動作する
- 実際の構成: Obsidian SyncでMacと常時稼働のMac Mini間でボルトを同期し、Mac MiniでOpenClawが24時間365日稼働 — スマホからOpenClawに接続すれば、同じボルト・QMDインデックス・スキルをどこからでも使える
- 全体スタック構造:
- 下層: Obsidian Vault
- 中間: QMD Search
- 上層: Claude Code / OpenClaw
- コンテキストが下から上へ流れる構造
11件のコメント
最近、なんでこんなに「死んだ」ものが多いんですか
wwwww
grep は死んだ。ripgrep を使おう
qmdを使ってみようかと思ってAIに調査させたところ、埋め込みのほうは悪くないけど、BM25とクエリ拡張のほうは日本語対応が弱いのでおすすめしないとのことでした…
ほとんどの場合、BM25でも同様です。
したがって、形態素解析器を併用するのがおすすめです。
https://github.com/bab2min/Kiwi
これ、ファクトチェックしてみたら正確な証拠はないような気がするのですが。ほかの方のご経験はありますか?
BM25は単語中心の検索なので、galadbranさんのご意見はもっともだと思います。
より古典的に見ると、単に古典的な情報検索技術が、より局所的なレベルで再活用されているようですね
~~は死んだ 💀💀💀
ただのRAGじゃん;
インストールページでメールアドレスを要求されたのでPrivate Repoかと思ったら、Public Repoですね。
以下のリンクから入れます。
https://github.com/ArtemXTech/personal-os-skills/…