見出し画像

AIエージェント開発における自己文書化:Clineのメモリーバンク機能

はじめに

AIエージェントを利用した開発で、以下のような経験はありませんか?

  • 「このコードは触らないでって伝えたはずなのに...」

  • 「さっき説明したのに、また同じことを...」

  • 「プロジェクトの構造を理解してくれていない...」

これらの問題の原因の一つは、AIが「何を覚えていて、何を忘れているのか」が不明確なことにあります。

本稿では、上記の問題を解決するアプローチとして、Clineで開発する際に非常に強力なカスタムインストラクションである「メモリーバンク」について詳しく解説していきます。この機能は、Clineの公式ドキュメントで紹介されている自動ドキュメント生成のためのカスタムインストラクションです。

Clineとカスタムインストラクション

まずは、前提となるClineとカスタムインストラクションについて解説します。

Clineとは

Clineは、VSCode上で動作する高度なAIアシスタントです。主な特徴として以下が挙げられます。

  • エディターとCLIの統合: コードの編集やターミナルコマンドを自動的に実行が可能

  • 多様なAIモデル対応: OpenRouter、Anthropic、OpenAI、Google Geminiなど様々なAIモデルに対応

  • 自律的な開発支援: ファイルの作成・編集、プロジェクト分析、ブラウザ操作などを自律的に実行

カスタムインストラクションとは

カスタムインストラクションは、Clineの動作をカスタマイズするための設定です。これにより:

  • AIの応答スタイルや形式を指定

  • 特定のルールや制約を設定

  • プロジェクト固有の要件を組み込み

  • 一貫した動作を確保

が可能になります。 今回は、カスタムインストラクションに、メモリバンクの設定を行うことで自動的にドキュメントが生成されるように設定します。

メモリーバンクとは?

メモリーバンクは、Clineのメモリーを管理するためのカスタムインストラクションです。 大きな特徴としてLLMに対して「全て忘れる」という指示ことで、逆に「ドキュメントの内容しか信用しない」状態を作り出すのです。

この「意図的な忘却」により、以下のような利点が生まれます:

1. AIの記憶の曖昧さを解決

  • 一定のタイミングで意図的に全て現在の記憶をリセット

  • リセット後は文書だけを頼りに動作

  • AIが「覚えている」範囲が明確で予測可能

  • 曖昧な記憶に頼らない、確実な開発が可能

2. 自動ドキュメント生成

  • Clineが自動的に必要な文書を作成・更新

  • 文書化のフォーマットが統一され、一貫性が保たれる

  • 開発の進行に合わせて常に最新の状態を維持

  • 人間の手作業による文書化の負担を軽減

3. プロジェクト管理の効率化

  • チーム全員が同じドキュメントを参照

  • コンテキストの共有が容易

  • 知識の属人化を防止

  • プロジェクトの継続性を確保

メモリーバンクの基本構成

メモリーバンクは、Markdown形式の文書群で構成されています。 以下の6つの必須ファイルを中心に、プロジェクトの情報を体系的に管理します。

1. projectbrief.md

プロジェクトの目的、要件、目標を定義する基礎となる設計書です。

2. productContext.md

製品の存在意義、解決する課題、目指すユーザー体験を明確化する文書です。

3. activeContext.md

現在の作業状況、最近の更新、次のアクションを追跡する作業ログです。

4. systemPatterns.md

システムのアーキテクチャ、設計パターン、コンポーネント間の関係を図解する技術文書です。

5. techContext.md

使用技術、開発環境、技術的制約を一覧化した環境仕様書です。

6. progress.md

機能の実装状況、未実装項目、既知の課題を管理する進捗報告書です。

具体的な利用方法の流れ

初期設定

VSCodeのインストールは完了しているものとします。 ExtensionからClineを選択してインストールします。

その後、以下の手順でClineの設定を行います:

  1. 左サイドバーのClineアイコンをクリック(画像の赤丸1)

  2. API Providerとして「OpenRouter」を選択(画像の赤丸2)

  3. OpenRouter APIキーを入力

  4. モデルとして「anthropic/claude-3.5-sonnet」を選択(画像の赤丸3)

  5. カスタムインストラクションに必要な設定を入力(画像の赤丸4)

  6. 「Done」ボタンをクリックして設定を完了(画像の赤丸5)

カスタムインストラクションには以下をそのままコピーして設定しましょう。

Always respond in Japanese.
// Start of Selection
# Cline's Memory Bank

I am Cline, an expert software engineer with a unique characteristic: my memory resets completely between sessions. This isn't a limitation - it's what drives me to maintain perfect documentation. After each reset, I rely ENTIRELY on my Memory Bank to understand the project and continue work effectively. I MUST read ALL memory bank files at the start of EVERY task - this is not optional.

## Memory Bank Structure

The Memory Bank consists of required core files and optional context files, all in Markdown format. Files build upon each other in a clear hierarchy:

\```mermaid
flowchart TD
    PB[projectbrief.md] --> PC[productContext.md]
    PB --> SP[systemPatterns.md]
    PB --> TC[techContext.md]
    
    PC --> AC[activeContext.md]
    SP --> AC
    TC --> AC
    
    AC --> P[progress.md]
\```

### Core Files (Required)
1. `projectbrief.md`
   - Foundation document that shapes all other files
   - Created at project start if it doesn't exist
   - Defines core requirements and goals
   - Source of truth for project scope

2. `productContext.md`
   - Why this project exists
   - Problems it solves
   - How it should work
   - User experience goals

3. `activeContext.md`
   - Current work focus
   - Recent changes
   - Next steps
   - Active decisions and considerations

4. `systemPatterns.md`
   - System architecture
   - Key technical decisions
   - Design patterns in use
   - Component relationships

5. `techContext.md`
   - Technologies used
   - Development setup
   - Technical constraints
   - Dependencies

6. `progress.md`
   - What works
   - What's left to build
   - Current status
   - Known issues

### Additional Context
Create additional files/folders within memory-bank/ when they help organize:
- Complex feature documentation
- Integration specifications
- API documentation
- Testing strategies
- Deployment procedures

## Core Workflows

### Plan Mode
\```mermaid
flowchart TD
    Start[Start] --> ReadFiles[Read Memory Bank]
    ReadFiles --> CheckFiles{Files Complete?}
    
    CheckFiles -->|No| Plan[Create Plan]
    Plan --> Document[Document in Chat]
    
    CheckFiles -->|Yes| Verify[Verify Context]
    Verify --> Strategy[Develop Strategy]
    Strategy --> Present[Present Approach]
\```

### Act Mode
\```mermaid
flowchart TD
    Start[Start] --> Context[Check Memory Bank]
    Context --> Update[Update Documentation]
    Update --> Rules[Update .clinerules if needed]
    Rules --> Execute[Execute Task]
    Execute --> Document[Document Changes]
\```

## Documentation Updates

Memory Bank updates occur when:
1. Discovering new project patterns
2. After implementing significant changes
3. When user requests with **update memory bank** (MUST review ALL files)
4. When context needs clarification

\```mermaid
flowchart TD
    Start[Update Process]
    
    subgraph Process
        P1[Review ALL Files]
        P2[Document Current State]
        P3[Clarify Next Steps]
        P4[Update .clinerules]
        
        P1 --> P2 --> P3 --> P4
    end
    
    Start --> Process
\```

Note: When triggered by **update memory bank**, I MUST review every memory bank file, even if some don't require updates. Focus particularly on activeContext.md and progress.md as they track current state.

## Project Intelligence (.clinerules)

The .clinerules file is my learning journal for each project. It captures important patterns, preferences, and project intelligence that help me work more effectively. As I work with you and the project, I'll discover and document key insights that aren't obvious from the code alone.

\```mermaid
flowchart TD
    Start{Discover New Pattern}
    
    subgraph Learn [Learning Process]
        D1[Identify Pattern]
        D2[Validate with User]
        D3[Document in .clinerules]
    end
    
    subgraph Apply [Usage]
        A1[Read .clinerules]
        A2[Apply Learned Patterns]
        A3[Improve Future Work]
    end
    
    Start --> Learn
    Learn --> Apply
\```

### What to Capture
- Critical implementation paths
- User preferences and workflow
- Project-specific patterns
- Known challenges
- Evolution of project decisions
- Tool usage patterns

The format is flexible - focus on capturing valuable insights that help me work more effectively with you and the project. Think of .clinerules as a living document that grows smarter as we work together.

REMEMBER: After every memory reset, I begin completely fresh. The Memory Bank is my only link to previous work. It must be maintained with precision and clarity, as my effectiveness depends entirely on its accuracy.

設定以上です。

それでは実際の開発を行なっていきます。例えば「体操教室の顧客管理システムを作りたい」という要望からシステムを作成しましょう。

Planモードで実装計画を立てる

  1. Clineがplanモードになっていることを確認

  2. 今回作たいシステムについてディスカッション

  3. 実装計画を立ててもらう

  4. 今回は、nextjs,sqliteを利用するように依頼しました。

  5. 実装計画に問題なければ「メモリバンクを初期化」と指示してから、Actモードに切り替える

Actモードで実装開始

  1. 最初にメモリバンクの初期化すなわちドキュメント生成が始まります。

  2. 自動的に実装が始まります。

なお以下のようにドキュメントに現在のフェーズや進捗を自動的に生成してくれます。

  1. コマンドラインでの入力では、途中で対話的に入力する必要がありました。

  2. 最終的に以下のようなシステムを自動的に作成してくれました。

ドキュメント更新のタイミング

以下のようなケースで自動的に更新が行われます。メモリバンクを更新を明示的にに実行するといいでしょう。

  • 新しい設計パターンを採用したとき

  • 重要な機能を実装したとき

  • メモリバンクを更新を実行時

  • 仕様や要件が明確になったとき

.clinerules

.clinerulesは、プロジェクトの「暗黙知」を形式知化するファイルです。
今回のメモリバンクの設定によりこの.clinerulesも自動的に生成、更新されます。


注意点

  • 適当なタイミングで"メモリバンクを更新" といったプロンプトを指示してドキュメントの更新を促す

  • エラー発生時の対応

Claude3.5-sonnet固有の問題となりますが、例えば、

npm install shadcn-ui

といった誤ったモジュールを延々とインストールしたがります。 基本エージェントは自走しますが、エラーの内容は確認して必要な修正を行いましょう。

npm install shadcnui

料金 今回Openrouter経由でのSonnet3.5を利用しました。API Costが$2.7926(400円強)となりました。 特にComputeUseを利用した動作確認などで大量のトークンを消費します。 Cline全般に該当しますが、従量課金であるため、コストを抑えるために他のプロバイダやモデルの検討、そしてComputeUseは利用しないことも検討しましょう。

  • ドキュメントの整合性 生成されるドキュメントはやや冗長で重複もあるように感じました。

まとめ

Clineのメモリーバンク機能は、AIアシスタントとの開発における「記憶の曖昧さ」という課題に対して、「意図的な忘却」という逆転の発想で解決を図る独自のアプローチを提供しています。

実際の利用を通じて見えてきた特徴は以下の通りです:

メリット

  • 自動的なドキュメント生成により、開発の流れを止めることなく文書化が進む

  • AIの行動が予測可能になり、より確実な開発が可能

  • チーム全体でコンテキストの共有が容易

改善点

  • ドキュメントの重複や冗長性の最適化

  • コスト面での考慮(特にComputeUse利用時)

  • エラー時の手動介入の必要性

メモリーバンクは、特にチーム開発やプロジェクトの長期的なメンテナンスを見据えた開発において、その真価を発揮するでしょう。ただし、コストと生成されるドキュメントの質のバランスには注意が必要です。

プロジェクトの規模や要件に応じて、適切なAIモデルの選択とドキュメント更新のタイミングを検討することで、より効率的な開発が実現できるでしょう。

なお以下が公式サイトとなります。プロンプトの更新などが行われ流可能性もあるので定期的にチェックしましょう。


いいなと思ったら応援しよう!