evo-memory について
evo-memory は、研究の構想・実験サイクルをまたいで知識を蓄積するスキルです。研究方向と実験戦略を別々に記録し、複数の仕組みで更新して次のサイクルに活用します。
主な機能
- 01構想と実験のメモリを個別に管理
- 02研究方向を実現可能性や失敗で分類
- 03再利用可能な実験戦略を抽出
- 04サイクル開始時に関連メモリを読み込み
活用シーン
- 01研究の知見を次のサイクルに引き継ぐ
- 02失敗した研究方向の再試行を避ける
- 03成功した実験の戦略を再利用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ evoscientist/ evoskills --skill evo-memoryインストール後、Claude Code で/evo-memoryを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/evolution-report-template.mdexperiment-memory-template.mdideation-memory-template.mdreferences/ese-protocol.mdide-protocol.mdive-protocol.mdmemory-schema.mdpaper-prompts.md詳細
Evo-Memory
アイデア創出と実験のサイクルを通じて研究知識を蓄積する、永続的な学習レイヤーです。2つのメモリストアを維持し、学習したパターンを今後の研究に反映する3つの進化メカニズムを実装します。
このスキルを使用するタイミング
- ユーザーが
research-ideationを完了し、Ideation Memoryを更新する必要がある - ユーザーが
experiment-pipelineを完了(または失敗)し、メモリを更新する必要がある - ユーザーが新しい研究サイクルを始めていて、以前の知識を読み込みたい
- ユーザーが研究メモリ、学習したパターン、サイクルをまたぐ知識について質問している
- ユーザーが「evo-memory」「update memory」「what worked before」「research history」「evolution」と言及している
学習レイヤー
研究は反復的なプロセスです。アイデア創出から実験までの各サイクルで生まれる知識は、次のサイクルに活用する必要があります。永続的なメモリがなければ、新しいプロジェクトを始めるたびにゼロからやり直し、失敗を繰り返し、パターンを再発見することになります。
Evo-memoryは、2つの構造化されたメモリストアと、サイクルをまたいで知識を抽出、分類し、活用する3つの進化メカニズムを維持することで、この課題を解決します。
2つのメモリストア
Ideation Memory (M_I)
場所:/memory/ideation-memory.md
研究の「方向性」について学んだこと、つまり有望な領域と行き詰まった領域を記録します。
2つのセクション:
| セクション | 内容 | 記入例 |
|---|---|---|
| 有望な方向性 | 以前のサイクルで有望性が示された方向性 | 「少数ショット分類のための対照学習 — 実行可能性を確認、トーナメントのサイクル2でトップ3」 |
| 成功しなかった方向性 | 試したものの失敗し、失敗の分類も記録された方向性 | 「リアルタイム動画のための自己回帰生成 — 根本的な失敗:レイテンシの制約と自己回帰デコーディングは両立しない」 |
各項目に記録する内容:方向性の名称、1文での要約、根拠(どのサイクルか、どのような結果か)、分類(実行可能/実装上の失敗/根本的な失敗)、日付。
用途:research-ideationはステップ0の開始時にM_Iを読み込みます。論文では、埋め込みベースの検索とコサイン類似度を用いて、類似度の高い上位k_I件を選択します(実験ではk_I=2)。以前のサイクルで有望だった方向性は、ステップ3で候補となる研究方向として提示されます。成功しなかった方向性は、ステップ4の洗練時に使用されます。根本的な失敗に該当するアイデアは除外され、実装上の失敗は再試行される場合があります。
テンプレートについては、assets/ideation-memory-template.mdを参照してください。
実験メモリ(M_E)
場所: /memory/experiment-memory.md
研究の戦略、つまり実際にどの技術的アプローチや設定がうまくいくかについて学んだことを記録します。
論文では、M_E を「再利用可能なデータ処理およびモデル学習戦略」を保存するものと定義しています。ESE では、(i)データ処理戦略と(ii)モデル学習戦略をまとめて記述します。さらに、包括的に網羅できるよう、実践的なセクションを2つ(アーキテクチャとデバッグ)追加しています。
中核となる2つのセクション(論文に由来)+実践的な拡張2つ:
| セクション | 出典 | 含まれる内容 | 記載例 |
|---|---|---|---|
| データ処理戦略 | 論文(中核) | 前処理、データ拡張、データ処理のパターン | 「ノイズの多いセンサーデータでは、正規化前にメディアンフィルターを適用すると、学習の不安定性が約40%低減します」 |
| モデル学習戦略 | 論文(中核) | ハイパーパラメーター、学習の工夫、学習スケジュール | 「トランスフォーマーのファインチューニングでは、学習ステップの10%にわたって学習率をウォームアップすると、学習初期の発散を防げます」 |
| アーキテクチャ戦略 | 拡張 | 設計上の選択、モジュール構成、構造パターン | 「トランスフォーマーで10層より深い位置に挿入するモジュールでは、残差接続が不可欠です」 |
| デバッグ戦略 | 拡張 | 実験の失敗を解決した診断パターン | 「学習の50%を過ぎても損失が停滞する場合は、勾配ノルムを確認してください。クリッピングのしきい値が厳しすぎる可能性があります」 |
各エントリーに記録する項目:戦略名、コンテキスト(これを使用する状況)、根拠(どのサイクルで、どのような結果が得られたか)、汎用性(特定のドメイン向けか、幅広く適用可能か)、日付。
使用方法:experiment-pipeline は各サイクルの開始時に M_E を読み込みます。論文では、埋め込みベースの検索とコサイン類似度を用いて、類似度の高い上位 k_E 件を選択します(実験では k_E=1)。過去のサイクルで得られた関連戦略は、ハイパーパラメーターの選択、データ処理の判断、デバッグのアプローチに反映され、必要な試行回数を減らします。
テンプレートについては、assets/experiment-memory-template.md を参照してください。
3つの進化メカニズム
IDE — アイデア方向性の進化
トリガー:research-ideation がステップ5を完了し、ステップ6用に /direction-summary.md を保存した後。
目的:トーナメントの結果から有望な研究の方向性を抽出し、将来のサイクルに備えて M_I に保存します。
論文のプロンプト:references/paper-prompts.md の IDE プロンプトを、主な抽出手段として使用します。元の研究の方向性から {user_goal} を、/direction-summary.md から {top_ranked_ideas} を埋め、プロンプトに沿って順を追って推論します。出力(タイトル、中心となるアイデア、有望な理由、要件、検証計画を含む方向性の要約)は、以下のステップに直接引き継がれます。
プロセス:
/memory/ideation-memory.mdから現在の M_I を読み込む- 論文の IDE プロンプトを実行し(上記参照)、順を追って推論する
- プロンプトの出力に含まれる各方向性を、再利用可能なレベルに抽象化する。「3D 点群向けのアテンションベースの特徴選択」は、「スパースデータ向けのドメイン横断アテンション機構」とします。有用性を保つだけの具体性と、他の領域にも応用できる抽象度を両立させます。
- M_I に類似する方向性の既存エントリーがあるか確認する。既存なら更新し、新規なら追記する。
- 以前は「実現可能」とされていた方向性が、今回のサイクルで検討し尽くされたと判明した場合は、そのステータスを更新する。
- 変更点とその理由を記録した進化レポートを作成する。
重要な原則:アイデアではなく、方向性を保存します。「構造化データ向けの対照学習」のような方向性からは、今後のサイクルで具体的なアイデアを多数生み出せます。一方、「分子データセットでグラフ拡張を用いる SimCLR」のような具体的なアイデアは、再利用するには範囲が狭すぎます。
詳しいプロセスについては、references/ide-protocol.md を参照してください。
IVE — アイデア検証の進化
トリガー(論文に沿った2つの条件):
- ルールベース:どの段階でも、事前に定めた予算内で実行可能なコードを見つけられません。コードが動作しません。
- LLM ベース:実験は完了したものの、実行レポート W の分析により、提案手法の性能がベースラインを下回ると判定されます。
目的:手法が失敗した理由を分類し、それに応じて M_I を更新します。将来のサイクルで行き詰まる方向を繰り返さないようにする、最も重要な進化メカニズムです。
論文のプロンプト:references/paper-prompts.md の IVE プロンプトを、主要な分類メカニズムとして使用します。/research-proposal.md から {research_proposal} を、ステージの軌跡ログから {execution_report} を設定し、プロンプトに沿ってステップごとに推論します。このプロンプトは失敗を FAILED(NoExecutableWithinBudget)、FAILED(WorseThanBaseline)、または NOT_FAILED に分類します。
論文のプロンプトを実行した後:
- FAILED(NoExecutableWithinBudget) → 実装上の失敗(再試行可能)です。M_I に「修正して再試行」として記録します。
- FAILED(WorseThanBaseline) → 以下の5つの診断質問を使って、実装上の失敗か根本的な失敗かを判別します。
- NOT_FAILED → IVE による更新は不要です。
5つの診断質問(WorseThanBaseline の場合):
- いずれかのバリアントで部分的な成功が見られましたか?(はい → 実装上の失敗)
- より単純な問題でも仮説は成り立ちますか?(いいえ → 根本的な失敗)
- 関連するアプローチが、公開済みの研究で成功していますか?(はい → 実装上の失敗)
- 実装を変えても失敗のパターンは一貫していましたか?(はい → 根本的な失敗)
- 軌跡ログから具体的なバグを特定できますか?(はい → 実装上の失敗)
3つ以上の回答が同じ種類を示している場合は、その種類に分類します。回答が分かれる場合は、実装上の失敗に分類します(より保守的で、再試行が可能になります)。
再試行のエスカレーションルール:異なるサイクルを通じて、ある方向性が「実装上の失敗」と3回分類された場合は、慎重に再評価します。実装上の失敗が3回続いた場合、その方向性は見かけより難しい可能性があります。根本的な失敗として再分類することを検討してください。
全プロセスと具体例については、references/ive-protocol.md を参照してください。
ESE — 実験戦略の進化
トリガー: experiment-pipeline が成功した後 — 4 つのステージがすべて完了し、ゲートを満たしたとき。
目的: 成功した実験実行から再利用可能な戦略を抽出し、将来のサイクルのために M_E に保存します。
論文プロンプト: references/paper-prompts.md の ESE プロンプトを主要な抽出手法として使用します。/research-proposal.md から {research_proposal} を、4 つのステージすべてのトラジェクトリログから {trajectories} を埋め、プロンプトをステップバイステップで推論します。プロンプトは DATA SUMMARY と MODEL SUMMARY を出力し、これらは私たちのデータ処理戦略とモデルトレーニング戦略のセクションに対応します。
プロセス:
- 論文の ESE プロンプトを実行し(上記参照)、ステップバイステップで推論します
- DATA SUMMARY の出力を使用して、M_E のデータ処理戦略セクションを埋めます
- MODEL SUMMARY の出力を使用して、M_E のモデルトレーニング戦略セクションを埋めます
- プロンプト実行後、トラジェクトリログから手動で抽出します:
- アーキテクチャの決定(拡張): どの設計上の選択がパフォーマンスの鍵でしたか?
- デバッグパターン(拡張): どの診断アプローチが失敗を最速で解決しましたか?
- 特定された各パターンについて、汎用性を評価します:
- これはドメイン固有ですか(このタイプのデータ/モデルでのみ機能しますか)?
- それとも広く適用可能ですか(他のコンテキストでも機能する可能性が高いですか)?
- M_E に既存の類似エントリがないか確認します。存在すれば更新し、新規であれば追加します。
- 抽出された戦略を文書化した進化レポートを作成します。
汎用化のガイドライン: 戦略がドメイン固有の特性ではなく、一般的な課題(トレーニングの不安定性、過学習、収束の遅さ)に対処している場合、その戦略は広く適用可能です。判断に迷う場合は、戦略とともにコンテキストを記録し、将来のユーザーが適用可能性を判断できるようにします。
完全なプロセスについては references/ese-protocol.md を参照してください。
サイクル開始時のメモリの読み取り
新しい研究サイクルを開始するとき(research-ideation または experiment-pipeline をロードするとき):
/memory/ideation-memory.mdと/memory/experiment-memory.mdを読み取ります- 関連するエントリを要約して、現在のコンテキストに注入します
research-ideationの場合: ステップ 3 で M_I の実現可能な方向性を候補の研究方向として提供します。M_I の失敗した方向性(根本的な失敗のみ)を使用して、ステップ 4 の洗練中にアイデアを刈り込みます。experiment-pipelineの場合: M_E の戦略を使用して、ハイパーパラメータの範囲、トレーニングスケジュール、デバッグアプローチに情報を提供します。
古い戦略を盲目的に適用しないでください。 コンテキストが重要です。画像分類で機能した戦略が、テキスト生成では機能しないかもしれません。常に記録されたコンテキストを現在の問題と照らし合わせて確認してください。
検索方法: 論文では検索に埋め込みベースのコサイン類似度を使用しています。実際には、各エントリの Summary/Context と Retrieval Tags を読み取り、現在の目標との関連性を判断することで、この意味的な比較を実行します。環境で自動埋め込みツールが利用可能な場合は、より大規模なメモリストアに対しては代わりにそれらを使用してください。
research-ideation の場合(M_I を注入)
/memory/ideation-memory.mdを読み取ります- ユーザーの現在の目標に最も関連する上位 k_I=2 件のエントリを選択します。ユーザーの目標記述を各エントリの Summary と Retrieval Tags と比較して、意味的な類似性を判断します。
- 選択された各実現可能な方向性について: ステップ 3 で 3 つの研究方向を選択する際に、候補として提供します(合計は 3 のままです)。注入例: 「以前のサイクルで『モダリティ対応モデル圧縮』が有望であることが判明しました(Elo 1500、サイクル 3)。新しい方向性と並んで、3 つの研究方向の 1 つとして検討してください。」
Failure Classification: Fundamentalを持つ各失敗した方向性について: 刈り込みのフラグを立てます。注入例: 「以前のサイクルで『自己回帰リアルタイム動画生成』が根本的な失敗であることが確認されました(O(n) レイテンシ)。このパターンに一致するアイデアはすべて刈り込んでください。」
experiment-pipeline 用(M_E を注入)
/memory/experiment-memory.mdを読みます- 現在の実験領域に最も関連する上位 1 件(top-k_E=1)を選択します。実験の問題の説明を、各エントリーの Context および Category と比較します。
- 選択した戦略を、すべてのステージのコンテキストとして注入します。注入例:「前のサイクルでは、小規模なデータセットでの transformer のファインチューニングに、『Cosine annealing with warm restarts (T_0=10, T_mult=2)』が効果的であることが確認されています(2 サイクルで確認)。Stage 2 のチューニングでは、デフォルトのスケジュールとして適用してください。」
- また、Debugging Strategies セクションを確認し、現在の領域に一致するエントリーを探します。これらは、失敗の診断にかかる時間を大幅に短縮できる場合があります。
メモリーのメンテナンス
古くなったエントリーの整理
定期的に両方のメモリーストアを見直し、関連性がなくなったエントリーを削除またはアーカイブします。
- 参照されないまま 10 サイクルを超えたエントリー
- 明らかに優れた代替手段に取って代わられた戦略
- 分野が根本的に変化した領域(新たなパラダイム、新たな最先端技術)
バージョン管理
各メモリーファイルには Last Updated フィールドとサイクルカウンターがあります。エントリーを変更した場合(追加のみの場合を除く)は、進化レポートに変更内容を記録します。これにより、研究知識がどのように進化したかの監査証跡が作成されます。
進化レポート
進化メカニズムが起動するたびに、/memory/evolution-reports/cycle_N_type.md にレポートを生成します。
- 変更内容(エントリーの追加、更新、削除)
- 変更理由(起動のきっかけとなったサイクルの証拠)
- 今後のサイクルへの予想される影響
テンプレートについては、assets/evolution-report-template.md を参照してください。
直感に反するメモリーのルール
メモリーを更新して使用する際は、以下のルールを優先してください。
-
保存する前に抽象化する:具体的な実験の詳細ではなく、方向性や戦略を保存します。「対照学習は少数ショット分類を改善する」は多くのプロジェクトで再利用できますが、「CIFAR-10 の ResNet-50 で lr=0.001 に設定する」は再利用できません。目標は、実験ノートではなく、応用可能な知識を蓄積することです。
-
失敗した方向性は、成功した方向性より価値があります:何を試すべきでないかを知るほうが、何がうまくいったかを知るより時間を節約できます。成功事例は論文として公開されており、誰でも参照できます。失敗事例は共有されることが少ないため、失敗の記憶は独自の競争優位性になります。
-
実装の失敗は、方向性の失敗ではありません:進化の際によくある間違いは、実装にバグがあったために、優れた方向性を失敗と判断してしまうことです。IVE は、まさにこの違いを明確にするために存在します。判断に迷った場合は、実装の失敗に分類してください。優れたアイデアを再度試すほうが、完全に捨ててしまうよりもコストが低いためです。
-
整理しなければ、メモリーは劣化します:異なるデータを使った 10 サイクル前には有効だった戦略も、今では関連性がないかもしれません。古くなったエントリーが蓄積するとノイズが増え、有用な戦略を見つけにくくなります。積極的に整理してください。規模が小さく、厳選されたメモリーのほうが、大規模でノイズの多いメモリーより価値があります。
-
分野を越えた知識の交換は、深い専門化に勝ります:ある領域の M_E から得た戦略が、別の領域にも応用できることはよくあります。学習率のウォームアップは、NLP、ビジョン、音声のいずれにも役立ちます。新しい実験パイプラインを開始する前に、領域固有のエントリーだけでなく、M_E 全体を確認してください。
-
進化レポートは人間のためのものです:AI エージェントだけでなく、研究者が理解し、行動に移せるレポートを作成してください。6 か月後に読む人が、何が変わったかだけでなく、なぜ変更されたのかも理解できるだけの背景を記載してください。
メモリの統合ポイント
evo-memory がパイプライン内の他のスキルとどのように連携するかを示します。
| トリガー | ソーススキル | 仕組み | 更新されるメモリ |
|---|---|---|---|
| トーナメント完了 | research-ideation | IDE | M_I(実現可能な方向性) |
| 予算内に実行可能なコードがない、または手法がベースラインを下回る | experiment-pipeline | IVE | M_I(成果のなかった方向性) |
| パイプライン成功 | experiment-pipeline | ESE | M_E(データ処理+モデルのトレーニング。必要に応じてアーキテクチャ+デバッグも) |
| 新しいサイクルの開始 | research-ideation | 読み込み(top-k_I=2) | M_I を読み込み、シードの設定/枝刈りに使用 |
| 新しいサイクルの開始 | experiment-pipeline | 読み込み(top-k_E=1) | M_E を読み込み、戦略の指針として使用 |
リファレンスの案内
| トピック | リファレンスファイル | 使用するタイミング |
|---|---|---|
| IDE プロセスの詳細 | ide-protocol.md | research-ideation の完了後 |
| IVE プロセスの詳細 | ive-protocol.md | experiment-pipeline の失敗後(実行可能なコードがない、または手法が性能で劣る場合) |
| ESE プロセスの詳細 | ese-protocol.md | experiment-pipeline の成功後 |
| 論文で実際に使用されたプロンプト | paper-prompts.md | IDE/IVE/ESE の正確なプロンプト設計を確認する場合 |
| メモリのデータ構造 | memory-schema.md | M_I と M_E の形式を理解する場合 |
| アイデーションメモリのテンプレート | ideation-memory-template.md | M_I の初期化 |
| 実験メモリのテンプレート | experiment-memory-template.md | M_E の初期化 |
| 進化レポートのテンプレート | evolution-report-template.md | メモリの更新を記録する場合 |