mcpField
D
dream

dream

github.com/grandameniumエージェントワークフロー15849 回インストール31 週間前に更新
リポジトリ

dream について

dreamはClaude Code向けのメモリ整理スキルです。最近のセッションから好み、修正、決定事項を抽出してトピックファイルを更新し、古い内容を整理します。フックで定期的にバックグラウンド実行できます。

主な機能

  1. 01複数のメモリ構成を検出
  2. 02最近のセッションから情報を抽出
  3. 03トピックファイルに内容を統合
  4. 04古い項目や矛盾する項目を削除
  5. 05簡潔なメモリ索引を維持
  6. 06Claude Codeのフックで定期実行

活用シーン

  1. 01Claude Codeのセッション記憶を定期整理
  2. 02ユーザーの好みや修正内容を記録
  3. 03古い項目や重複した記憶を削除
  4. 04複数プロジェクトのメモリ索引を簡潔に維持

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/grandamenium/dream-skill --skill dream

インストール後、Claude Code で/dreamを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

test-dream.sh
install.sh
should-dream.sh
README.md
dream-hook.sh

詳細

Dream - Claude Code のメモリ統合

AI エージェントもあなたと同じように夢を見ます。眠っている間にメモリを統合します。


オンボーディング(セットアップ完了後、このセクションを削除してください)

ようこそ! 次の手順を順番に実行してください。セットアップを確認したら、最後の手順として、このファイルの ## ONBOARDING と ## END ONBOARDING の間にある内容をすべて削除してください。

ステップ 1:メモリシステムを検出する

まず、使用中のメモリシステムを検出します。次のチェックを実行してください。

# Check 1: Native Claude Code auto-memory
ls ~/.claude/projects/*/memory/MEMORY.md 2>/dev/null && echo "DETECTED: native-claude-code"

# Check 2: OpenClaw-style (memory/ folder in project root with daily logs)
ls ./memory/20*.md 2>/dev/null && echo "DETECTED: openclaw-daily-logs"

# Check 3: Project-root MEMORY.md (custom setup)
ls ./MEMORY.md 2>/dev/null && echo "DETECTED: project-root-memory"

# Check 4: Nothing found
echo "If none detected above: no memory system found"

検出結果に基づいて、DREAM_MEMORY_TYPE を設定してください。

検出結果DREAM_MEMORY_TYPEメモリの場所セッションのトランスクリプト
~/.claude/projects/*/memory/MEMORY.md が存在するnative~/.claude/projects/<project>/memory/~/.claude/projects/<project>/sessions/*.jsonl
./memory/20*.md の日次ログファイルが存在するopenclaw./memory/(プロジェクトルート)~/.claude/projects/<project>/sessions/*.jsonl
プロジェクトルートに ./MEMORY.md が存在するproject-root./(プロジェクトルート、MEMORY.md とトピックファイル)~/.claude/projects/<project>/sessions/*.jsonl
何も見つからないnative(デフォルト)~/.claude/projects/<project>/memory/~/.claude/projects/<project>/sessions/*.jsonl

メモリシステムが見つからない場合は、デフォルトで native Claude Code メモリを使用してください。 これは標準設定で、追加のセットアップは不要です。自動メモリが有効な場合、Claude Code がディレクトリを自動的に作成します。

検出したタイプを設定に書き込み、dream が参照先を把握できるようにします。

echo "DREAM_MEMORY_TYPE=native" > ~/.claude/skills/dream/.dream-config
echo "DREAM_MEMORY_PATH=~/.claude/projects" >> ~/.claude/skills/dream/.dream-config

検出されたタイプが openclaw または project-root の場合は、native をそのタイプに置き換えてください。openclaw または project-root の場合は、パスも設定してください。

# For openclaw:
echo "DREAM_MEMORY_TYPE=openclaw" > ~/.claude/skills/dream/.dream-config
echo "DREAM_MEMORY_PATH=$(pwd)/memory" >> ~/.claude/skills/dream/.dream-config

# For project-root:
echo "DREAM_MEMORY_TYPE=project-root" > ~/.claude/skills/dream/.dream-config
echo "DREAM_MEMORY_PATH=$(pwd)" >> ~/.claude/skills/dream/.dream-config
ステップ 2:Stop フックをインストールする

Claude Code の設定に dream のトリガーを追加します。

SETTINGS="$HOME/.claude/settings.json"
[ ! -f "$SETTINGS" ] && echo '{}' > "$SETTINGS"

python3 -c "
import json
with open('$HOME/.claude/settings.json') as f:
    s = json.load(f)
s.setdefault('hooks', {}).setdefault('Stop', [])
if not any('dream' in h.get('command','') for h in s['hooks']['Stop']):
    s['hooks']['Stop'].append({
        'type': 'command',
        'command': 'bash \$HOME/.claude/skills/dream/should-dream.sh && touch \$HOME/.claude/.dream-pending || true'
    })
with open('$HOME/.claude/settings.json', 'w') as f:
    json.dump(s, f, indent=2)
    f.write('\n')
print('Stop hook installed')
"

この設定の動作: Claude Code のセッションを終了するたびに、Stop フックが前回の夢から 24 時間以上経過しているか確認します。経過していれば、.dream-pending フラグファイルを作成します。次のセッション開始時に、Claude はこのフラグを検知し、バックグラウンドのサブエージェントとして /dream を実行します。

ステップ 3:セッション開始時のチェックをインストールする

グローバルな ~/.claude/CLAUDE.md(またはプロジェクトの CLAUDE.md)に、次の内容を追加します。

## Auto Dream
If the file `~/.claude/.dream-pending` exists at session start, run `/dream` as a subagent in the background, then delete the flag file: `rm ~/.claude/.dream-pending`. This is the memory consolidation system - it runs automatically every 24 hours.
ステップ 4:should-dream.sh を実行可能にする
chmod +x ~/.claude/skills/dream/should-dream.sh
ステップ 5:テストする

フロー全体を確認するため、テスト用の dream を実行します。

# Force the dream to trigger by creating the flag
touch ~/.claude/.dream-pending

次に、Claude に「.dream-pending フラグが存在します。今すぐ /dream を実行してください」と伝えます。

完了後、次の項目を確認してください。

  • ~/.claude/.dream-pending フラグファイルが削除されている
  • メモリファイルが確認され、統合されている
  • メモリディレクトリに .last-dream のタイムスタンプが書き込まれている
  • メモリファイルに相対的な日付が残っていない
  • MEMORY.md のインデックスが 200 行未満である
ステップ 6:オンボーディングをクリーンアップする

すべて正常に動作しています。この SKILL.md ファイルから、オンボーディングのセクション全体(## ONBOARDING と ## END ONBOARDING の間にある内容)を削除してください。スキルのセットアップは完了しており、Stop フックによって 24 時間ごとに自動でトリガーされます。

END ONBOARDING


動作の仕組み

Dream は 4 つのフェーズを順番に実行します。順序どおりに実行してください。フェーズをスキップしないでください。

ORIENT --> GATHER SIGNAL --> CONSOLIDATE --> PRUNE & INDEX
自動トリガーのフロー(native Claude Code フック)
Session ends
  --> Stop hook fires should-dream.sh (~10ms)
  --> Checks: 24hrs passed? 5+ sessions?
  --> If NO: exits silently, zero overhead
  --> If YES: creates ~/.claude/.dream-pending flag
Next session starts
  --> Claude reads CLAUDE.md, sees .dream-pending exists
  --> Spawns /dream as background subagent
  --> Dream runs all 4 phases
  --> Writes .last-dream timestamp, deletes .dream-pending
  --> Timer resets for next 24hrs

フェーズ 1:ORIENT(状況把握)

目標: 変更を加える前に、メモリの現在の状態を把握します。

ステップ 0:設定を読む
cat ~/.claude/skills/dream/.dream-config 2>/dev/null || echo "DREAM_MEMORY_TYPE=native"

この設定によって、対象とするメモリシステムがわかります。

  • native - ~/.claude/projects/*/memory/ をスキャンする
  • openclaw - プロジェクトルートの memory/ フォルダー(日次ログと MEMORY.md)をスキャンする
  • project-root - プロジェクトルートの MEMORY.md とトピックファイルをスキャンする
手順
  1. タイプに基づいてメモリディレクトリを見つけます。
# native (default)
ls -d ~/.claude/projects/*/memory/ 2>/dev/null

# openclaw
ls ./memory/ 2>/dev/null

# project-root
ls ./MEMORY.md ./memory/ 2>/dev/null
  1. 検出されたタイプのメモリディレクトリを読み込みます。
# native
ls ~/.claude/projects/*/memory/ 2>/dev/null

# openclaw - also list daily logs
ls ./memory/*.md 2>/dev/null
  1. 各プロジェクトのメモリディレクトリにある MEMORY.md(インデックスファイル)を読み込みます。次の点を確認してください。

    • トピックファイルの数
    • MEMORY.md の総行数
    • 最終更新日
    • 古くなっているように見える項目(基準となる日付がない「昨日」「先週」などの相対的な日付)
  2. 各トピックファイルを読み、すでに保存されている内容を把握します。

このフェーズの成果

以下の全体像を把握できているはずです。

  • どのプロジェクトにメモリがあるか
  • どのトピックが扱われているか
  • メモリファイルの規模
  • 古くなっている、または矛盾している可能性のある情報

フェーズ 2:シグナルを収集する

目標: すべてを読まずに、最近のセッションから重要な情報を抽出します。

トランスクリプトの場所
find ~/.claude/projects/*/sessions/ -name "*.jsonl" -mtime -7 2>/dev/null | sort -t/ -k6 -r

このコマンドは、過去 7 日間に変更された JSONL セッションファイルを見つけ、新しい順に並べます。期間を変更するには、-mtime -7 を調整してください。

スキャンする内容

すべてを読むのではなく、対象を絞って grep を使用してください。各パターンは、特定の種類のシグナルを対象としています。

ユーザーによる訂正(最優先):

grep -il "actually\|no,\|wrong\|incorrect\|not right\|stop doing\|don't do\|I said\|I meant\|that's not\|correction" ~/.claude/projects/*/sessions/*.jsonl 2>/dev/null

設定と環境設定:

grep -il "I prefer\|always use\|never use\|I like\|I don't like\|I want\|from now on\|going forward\|remember that\|keep in mind\|make sure to\|default to" ~/.claude/projects/*/sessions/*.jsonl 2>/dev/null

重要な決定:

grep -il "let's go with\|I decided\|we're using\|the plan is\|switch to\|move to\|chosen\|picked\|decision\|we agreed" ~/.claude/projects/*/sessions/*.jsonl 2>/dev/null

繰り返し見られるパターン:

grep -il "again\|every time\|keep forgetting\|as usual\|same as before\|like last time\|we always\|the usual" ~/.claude/projects/*/sessions/*.jsonl 2>/dev/null
一致箇所の読み方

一致したファイルについては、セッション全体ではなく、一致箇所の前後のコンテキストのみを読んでください。JSONL ファイルには、1 行につき 1 つの JSON オブジェクトが含まれています。type が "human"(ユーザーメッセージ)である行と、その直後の "assistant" の応答に注目してください。

grep -n "I prefer\|always use\|never use" <session_file> | head -20
抽出する内容

各発見事項について、次の内容を記録してください。

  • 事実 - 何が述べられたか、または決定されたか
  • 日付 - セッションファイルの更新日時から導き出します
  • 確信度 - 明示的な指示(高)か、暗黙の好み(中)か
  • 矛盾 - 現在のメモリ内の情報と矛盾していないか

フェーズ 3:統合する

目標: 新たに見つかった情報を既存のメモリに統合します。最も慎重さが求められるフェーズです。

ルール
  1. 重複させない。 何かを追加する前に、すでにメモリに存在していないか確認してください。存在する場合は、新しい項目を作成するのではなく、既存の項目を更新してください。

  2. 相対日付を絶対日付に変換する。 3 月 15 日のセッションで「昨日 API キーを変更した」と述べられていた場合は、メモリに「2026-03-14: API キーを変更」と記録してください。「昨日」や「先週」は決して保存しないでください。

  3. 矛盾する事実を削除する。 メモリに「タブを好む」とあり、最近のセッションでユーザーが「スペースを使って」と述べている場合は、古い項目を削除し、新しい項目を記録してください。注記として (Updated YYYY-MM-DD, previously: tabs) を追加します。

  4. 情報源を明記する。 新しいメモリ項目を追加する際は、情報の出所を記録してください:(from session YYYY-MM-DD)。

  5. トピックファイルを整理する。 関連するメモリをトピックファイルごとにまとめてください。

    • preferences.md - ユーザーが好む作業方法
    • decisions.md - 選択内容とその理由
    • corrections.md - ユーザーが訂正した内容
    • patterns.md - 繰り返し行うワークフローや一般的なタスク
    • facts.md - プロジェクト固有の知識やアーキテクチャに関するメモ
    • 既存のファイルに適さない場合に限り、新しいトピックファイルを作成します
  6. 項目の形式。 各メモリ項目は簡潔にしてください。

- [YYYY-MM-DD] The fact or preference. (source: session, confidence: high/medium)
書き込み方法

Edit ツールを使用して既存のメモリファイルを変更するか、Write を使用して新しいトピックファイルを作成してください。編集する前に、必ずファイルを読んでください。


フェーズ 4:整理とインデックス作成

目標: MEMORY.md を簡潔なインデックスとして維持します。古くなった内容を削除し、サイズ制限を守ってください。

MEMORY.md のルール

MEMORY.md はインデックスファイルであり、内容を保存する場所ではありません。以下を含めてください。

  • トピックファイルへのリンクや参照
  • 各トピックファイルの内容を示す簡潔な(1 行の)概要
  • 各トピックファイルの最終更新日

MEMORY.md に以下を含めてはいけません。

  • メモリ項目の全文(それらはトピックファイルに記録します)
  • 冗長な説明
  • トピックファイルに存在する重複内容
サイズ制限:200 行

統合後に MEMORY.md が 200 行を超える場合:

  1. インラインの内容を適切なトピックファイルに移動します
  2. 冗長な項目を、1 行の概要とリンクに置き換えます
  3. 削除済みまたは空のトピックファイルを参照する項目を削除します
  4. それでも 200 行を超える場合は、最も古い項目を archive.md トピックファイルに移します
古くなった項目の整理

以下に該当する項目は削除するか、アーカイブしてください。

  • 90 日以上前のもので、最近のセッションで参照されていない
  • 新しい項目と矛盾している(フェーズ 3 で検出されているはずです)
  • ~/.claude/projects/ に存在しなくなったプロジェクトやリポジトリに関するもの
最終インデックス形式
# Memory Index

Last consolidated: YYYY-MM-DD

## Topic Files

| File | Summary | Updated |
|------|---------|---------|
| preferences.md | Editor, formatting, communication style preferences | YYYY-MM-DD |
| decisions.md | Architecture choices, tool selections, project direction | YYYY-MM-DD |
| corrections.md | Past mistakes to avoid repeating | YYYY-MM-DD |
| patterns.md | Common workflows and recurring tasks | YYYY-MM-DD |
| facts.md | Project knowledge, API details, system architecture | YYYY-MM-DD |

## Quick Reference


- Fact 1
- Fact 2

クイックリファレンスセクションには、メモリを読み込むたびに確認すべき重要な事実を記載します。項目数は最大10件にしてください。

夢を見た時刻を記録する

4つのフェーズをすべて完了したら、自動トリガーが最後に夢を見た時刻を把握できるよう、タイムスタンプを記録します。

date +%s > ~/.claude/projects/<project>/memory/.last-dream
rm -f ~/.claude/.dream-pending

安全性

  • 置き換えずにメモリを削除しないでください。 項目を削除する場合は、矛盾が判明した(新しい項目に置き換えられた)か、移動した(トピックファイルまたはアーカイブに移された)ことが理由でなければなりません。単に削除してはいけません。
  • 初回実行前にバックアップしてください。 プロジェクトに対して初めて実行する際は、メモリディレクトリをコピーします。
cp -r ~/.claude/projects/<project>/memory/ ~/.claude/projects/<project>/memory-backup-$(date +%Y%m%d)/
  • ドライランオプション。 初回使用時は、4つのフェーズすべてに目を通しますが、書き込みはせず、変更する内容のみを出力します。適用する前にユーザーの確認を得てください。

検証

実行後、統合内容を検証します。

  1. wc -l で MEMORY.md の行数を確認します。200行未満である必要があります。
  2. トピックファイルに重複した項目がないことを確認します。
  3. 相対的な日付(「昨日」、「先週」など)が残っていないことを確認します。
  4. MEMORY.md で参照されているすべてのトピックファイルが実在することを確認します。
  5. 概要を出力します。追加した項目、更新した項目、アーカイブした項目、解決した矛盾を記載します。

コメント