メインコンテンツへスキップ
Cohaku はメモリを3つのレイヤーに分類し、それぞれ異なる優先度とライフサイクル特性を持ちます。

3つのレイヤー

レイヤー優先度用途TTL
ルール10(最高)永続的な指示と制約なし
ワーキング5現在のセッションコンテキスト、一時メモ任意
長期1一般的な知識、事実、パターンなし

ルールレイヤー

ルールは最も優先度の高いメモリです。常にアクティブであるべき指示、制約、設定を表します。
"Always use TypeScript strict mode"
"Never commit directly to main"
"Use pnpm, not npm"
ルールは期限切れになることはなく、get_context の結果に常に最初に含まれます。

ワーキングレイヤー

ワーキングメモリは、一時的でセッションに関連するコンテキストを表します。expiresAt による任意の TTL をサポートします。
"Currently debugging the auth flow in src/auth.ts"
"The user prefers verbose error messages for this session"
期限切れのワーキングメモリは get_contextlistMemoriesByLayer から自動的に除外されます。

長期レイヤー

長期メモリは、時間の経過とともに蓄積された一般的な知識を保存します。
"The project uses React 19 with TypeScript and Vite"
"The database schema was last migrated on 2026-01-15"

コンテキストバジェットの配分

get_context がバジェット N 件のメモリで呼び出された場合:
  1. ルール — すべてのルールを取得(最大 N 件)
  2. ワーキング — 残りバジェットの60%を取得
  3. 長期 — 残りを埋める
Budget: 50 memories
├── Rules: 5 (all rules included)
├── Working: ceil((50 - 5) * 0.6) = 27
└── Long-term: 50 - 5 - 27 = 18

スコアリング

search_memories で検索する際、各メモリはハイブリッドスコアを受け取ります:
score = semantic * 0.4 + bm25 * 0.3 + recency * 0.2 + salience * 0.1
要素説明
Semanticベクトル検索によるコサイン類似度(0-1)
BM25正規化された全文検索ランク(0-1)
RecencylastAccessedAt からの指数減衰(半減期:24時間)
Salience時間経過で減衰する importance
重みは weights パラメータでクエリごとにカスタマイズ可能です。