パッケージ構成
Cohaku は TypeScript ESM モノレポ(Turborepo + pnpm)で、複数のパッケージから構成されています:cli パッケージは tsup(esbuild)を使って、すべてのワークスペース依存関係を単一の配布可能なバイナリ(npm 上の @cohaku/cli)にバンドルします。mcp-server パッケージはプライベートで個別には公開されず、CLI にバンドルされます。
コンポーネント
ストレージレイヤー
SqliteDriver は better-sqlite3 と2つの拡張機能を使ってすべての永続化を管理します:
- sqlite-vec — ベクトル類似度検索(コサイン距離)のための仮想テーブル
- FTS5 — BM25 ランキングと Porter ステミングによる組み込み全文検索
~/.config/cohaku/memory.db)に保存されます。
埋め込み
@xenova/transformers を使って all-MiniLM-L6-v2 をローカルで実行します。以下に対して384次元の埋め込みベクトルを生成します:
- メモリコンテンツ →
vec_memories - エンティティ名 →
vec_nodes - エッジのファクト →
vec_edges
メモリエンジン
MemoryEngine クラスがすべての操作を統括します:
- 書き込み時に埋め込みを生成
- クエリ時にハイブリッド検索(セマンティック + BM25)を実行
- 4要素スコアリング(セマンティック、BM25、新しさ、重要度)を計算
- セッション、エピソード、ナレッジグラフを管理
MCP サーバー
stdio トランスポート上の Model Context Protocol を通じて24のツールを公開します。各ツールは Zod バリデーション付きでMemoryEngine のメソッドにマッピングされています。
ツールは6つのカテゴリに分かれています:
| カテゴリ | 数 | 説明 |
|---|---|---|
| コンテキスト | 1 | get_context — 優先度順のメモリ読み込み |
| メモリ | 6 | CRUD、検索、重複排除、統合 |
| ナレッジグラフ | 5 | エンティティ、エッジ、グラフ探索検索 |
| エピソード | 3 | 時系列イベントログ |
| セッション | 4 | チェックポイント付き作業セッションライフサイクル |
| 設定ファイル生成 | 9 | Claude Code、Cursor、Copilot、Windsurf 等へのエクスポート |