メモリアーキテクチャ
概要
メモリはAutonomous Engineerシステムの最も重要なコンポーネントの一つです。
AI開発ワークフローは以下を含む大量の情報を扱います:
- 仕様
- 設計決定
- 実装パターン
- デバッグ戦略
- レビューフィードバック
永続的なメモリがなければ、AIシステムは同じ知識を繰り返し再発見しなければなりません。
メモリシステムの目的は、AI開発エージェントが以下を行えるようにすることです:
- 有用な知識を保持する
- 過去のソリューションを再利用する
- 失敗から学ぶ
- プロンプトサイズを削減する
- 長期的な開発効率を向上させる
メモリシステムは現在の開発タスクと長期的な知識蓄積の両方をサポートするよう設計されています。
メモリ設計目標
メモリシステムはいくつかのコア原則を中心に設計されています。
永続的知識
重要なプロジェクト知識はワークフロー実行をまたいで持続すべきです。
例:
- アーキテクチャパターン
- コーディング規約
- デバッグ戦略
最小コンテキスト使用
大きな会話履歴をプロンプトに含める代わりに、システムは関連する知識アーティファクトのみを取得します。
これにより、トークン使用量が削減され推論品質が向上します。
インクリメンタル学習
システムは以下を記録することによって継続的に改善すべきです:
- 成功した実装パターン
- 一般的なレビューフィードバック
- デバッグ戦略
構造化知識
メモリは生の会話ログではなく構造化されたアーティファクトとして保存すべきです。
例:
- ルールドキュメント
- パターンライブラリ
- アーキテクチャノート
メモリレイヤー
メモリシステムは3つのプライマリレイヤーで構成されています。
メモリシステム
├── 短期メモリ (現在のワークフロー実行)
├── プロジェクトメモリ (.memory/ — リポジトリ固有の知識)
└── 知識メモリ (rules/ — 再利用可能なエンジニアリングパターン)各レイヤーは異なる目的を持ちます。
短期メモリ
短期メモリはワークフロー実行中のみ存在します。
現在のタスクに必要な一時的なコンテキストを保存します。
例:
- 現在の仕様
- 設計ドキュメント
- タスク記述
- 最近変更されたファイル
このメモリは長期的には保存されません。
短期メモリはワークフローエンジンによって管理されます。
プロジェクトメモリ
プロジェクトメモリはリポジトリ固有の知識を保存します。
このメモリはシステムがプロジェクトに取り組むにつれて時間とともに進化します。
例:
- コーディング規約
- アーキテクチャガイドライン
- 一般的なレビューフィードバック
- 頻繁に使用されるパターン
プロジェクトメモリはリポジトリ内に保存されます。
構造例:
.memory/
project_rules.md
coding_patterns.md
review_feedback.md
architecture_notes.mdこのメモリは実装中のコンテキストガイダンスを提供します。
知識メモリ
知識メモリは開発経験から抽出された再利用可能なエンジニアリング知識を保存します。
この知識は将来のバージョンでプロジェクトをまたいで共有される可能性があります。
例:
- デバッグ戦略
- 実装パターン
- アーキテクチャテンプレート
- レビューヒューリスティック
構造例:
rules/
coding_rules.md
review_rules.md
implementation_patterns.md
debugging_patterns.md知識メモリはAIシステムの学習経験を表します。
メモリストレージ構造
メモリアーティファクトはシンプルで透明なファイルベースのストレージを使用して保存されます。
構造例:
.memory/
├─ project_rules.md
├─ coding_patterns.md
├─ review_feedback.md
└─ architecture_notes.md
rules/
├─ coding_rules.md
├─ review_rules.md
├─ implementation_patterns.md
└─ debugging_patterns.mdMarkdownファイルを使用することにはいくつかの利点があります:
- 人間が読める
- バージョン管理される
- AIが解析しやすい
- Gitワークフローと互換性がある
メモリ取得
タスクを実行する前に、システムは関連するメモリアーティファクトを取得します。
取得トリガーの例:
| トリガー | 取得されるメモリ |
|---|---|
| 新しいモジュールの実装 | coding_patterns |
| 実装の失敗 | debugging_patterns |
| レビューの実行 | review_rules |
| システムの設計 | architecture_notes |
これにより、AIは大きなプロンプト履歴の代わりに的を絞った知識を受け取ります。
メモリ書き込み戦略
システムは有用な知識が発見されたときのみメモリを更新すべきです。
メモリ更新をトリガーするイベントの例:
成功した実装パターン
ソリューションが複数のタスクにわたって有効であることが証明された場合、再利用可能なパターンとして保存できます。
例:
implementation_patterns.md繰り返しのレビューフィードバック
同じレビュー問題が繰り返し発生する場合、ルールを追加すべきです。
例:
coding_rules.mdデバッグの発見
困難なバグを解決するために特定の戦略が必要だった場合、その戦略は記録されるべきです。
例:
debugging_patterns.md自己修復メモリ更新
自己修復システムはAIが問題の解決に苦労しているときにメモリを更新します。
プロセス:
実行の困難
↓
根本原因分析
↓
知識ギャップの特定
↓
メモリの更新更新例:
rules/debugging_patterns.md
rules/review_rules.md
.memory/project_rules.mdこれにより、システムが継続的に改善されます。
メモリ取得戦略
プロンプトには関連するメモリセグメントのみを含めるべきです。
プロンプト構築例:
関連するコーディングルール
* 関連する実装パターン
* 仕様タスク記述
* 関連するコードファイルこのアプローチにより、有用なコンテキストを保持しながらプロンプトを小さく保てます。
メモリインデックス作成(将来の最適化)
メモリが増大するにつれて、単純なファイルスキャンは非効率になることがあります。
将来のバージョンには以下が含まれることがあります:
- セマンティックインデックス作成
- ベクター検索
- パターン類似性検出
これにより、より高速で関連性の高い知識取得が可能になります。
Rustメモリエンジン
パフォーマンスクリティカルなメモリ操作はRustで実装されることがあります。
潜在的なRustモジュール:
- メモリインデックス作成
- セマンティック検索
- コンテキストフィルタリング
- アーティファクト類似性マッチング
アーキテクチャ例:
TypeScriptコア
│
▼
Rustメモリエンジン統合方法:
- napi-rs
- WebAssembly
これにより、メインシステムをTypeScriptに保ちながら高性能なメモリ取得が可能になります。
メモリライフサイクル
システム内の知識のライフサイクルはいくつかの段階に従います。
実行
↓
観察
↓
パターン検出
↓
知識抽出
↓
メモリ更新時間とともに、システムは将来の開発タスクを改善するエンジニアリング知識を蓄積します。
メモリとコンテキスト管理
メモリはLLMコンテキストの制御においても重要な役割を果たします。
大きな会話に頼る代わりに、システムは構造化されたアーティファクトを取得します。
プロンプトコンテキスト例:
タスク記述
* 関連する設計セクション
* 関連するコーディングパターン
* 関連するルールこれにより、トークン使用量が大幅に削減されます。
将来のメモリ進化
v1のメモリシステムは意図的にシンプルです。
将来のバージョンでは、より高度な知識システムが導入される可能性があります。
例:
ベクターメモリ
埋め込みベースの知識取得。
知識グラフ
アーキテクチャ決定間の構造化された関係。
クロスプロジェクト知識
リポジトリをまたいで共有される再利用可能なエンジニアリング知識。
エージェント知識共有
専門AIエージェント間のメモリ交換。
これらのシステムにより、より高度な自律エンジニアリング機能が可能になります。
まとめ
メモリシステムはAutonomous Engineerエージェントが時間とともに改善できるようにします。
主要プロパティ:
- 永続的なプロジェクト知識
- 再利用可能なエンジニアリングパターン
- 自己修復ルール更新
- 最小限のプロンプトコンテキスト
- Gitベースの知識ストレージ
このシステムはAIをステートレスなアシスタントから各開発サイクルとともに進化できる学習エンジニアリングシステムへと変革します。