記憶管理(DSH版)
クロスセッション長期記憶:L1 インデックス注入(毎ラウンド可視)+ L2 環境ファクト + L3 タスク経験。
トリガー
読み取り(いつ記憶を参照するか)
- 新しいタスク開始時:タスクがローカル環境、ツール設定、特定の技術スタック、過去の類似作業に関連する場合 → まず
memory_listで内容を確認し、次にmemory_readで該当エントリを取得 - 困難/ハマりどころに遭遇したとき:
memory_readで関連SOPがあるか確認(キーワードで sops/ ファイル名や facts section と一致) - モデルプロンプト内の記憶インデックス(memory:index):毎ラウンド可視のL1存在性インデックス。関連するトリガーワードを見つけたら積極的に
memory_read/memory_listで詳細を取得
書き込み(いつ記憶を蓄積するか)
タスク完了(またはフェーズ完了)かつ行動検証が成功した情報がある場合、memory_write を呼び出す。
書き込み可能なもの(evidence(証拠)が必須):
- 環境固有のファクト:パス、設定、実測パラメータ、ツールの動作(→
entry_type: fact) - 複雑タスクの経験:何度もリトライして成功したハマりポイント、隠れた前提条件、安定した手順(→
entry_type: sop) - 汎用的な禁止ルール(→ memory_write sop で記述するか、[RULES] として直接メンテナンスを提案)
書き込み禁止(書き込むと汚染):
- ❌ 検証証拠のない情報(行動なしに記憶なし)
- ❌ モデルの既存知識、推測、未検証の仮定
- ❌ 変動状態:タイムスタンプ、PID、一時パス、使い捨てID
- ❌ 一般的な常識、ログ記録、推論プロセスの詳細
インデックス同期
memory_writeは自動的にL1インデックスを同期するため、通常は手動操作不要- facts.md / sops/ ファイルを手動で変更した場合 →
memory_indexでインデックス再構築 - インデックスが30行を超えた場合:[RULES] を簡略化(単語レベルで修正、全文overwriteは禁止)
ストレージ構成
<home>/.dsh/memory/
├── memory_management_sop.md L0 メタルール(記憶管理の方法)
├── index.txt L1 インデックス(≤30行:L2/L3存在性リスト + RULES)
├── facts.md L2 環境ファクト(## SECTION)
├── sops/*.md L3 タスク経験
└── file_access_stats.json 読み取り頻度統計
ツール
| ツール | 用途 |
|---|---|
memory_list | 全記憶を一覧表示(facts + sops + インデックス行数) |
memory_read | 指定した記憶を読み取り(インデックス / fact トピック / sop ファイル名) |
memory_write | 記憶を書き込み(fact/sop、evidence 必須) |
memory_index | L1インデックスの自動セクションを再構築 |
原則
- 行動検証:No Execution, No Memory. 成功した検証済み情報のみを書き込む。
- 最小十分性:内容は可能な限り短く。「忘れると高コストなリトライにつながる」情報だけを記録する。
- 検証済みファクトは削除・変更しない:圧縮や移動は可、破棄は禁止。
- 能動的書き込み:記憶の書き込みは常にモデル/ユーザー主導で行われ、自動的に設定変更やプラグインインストールは行われない。