Roo Code開発が止まらない!チャット途切れを防ぐ「メモリーバンク」活用術
どうも、シュンスケです。Roo Codeを使って開発してると突然チャットのスレッドでエラーが発生してもうコンテキストを受け付けなくなることありませんか?
あーーー、せっかく今まで調子よく進んできたのに。。ってことありますよね??
次のチャットで前の会話を覚えていてくれればいいのに、うまくつながらない経験をしたことあると思います。
今回はメモリーバンクという考え方でRoo Codeにロギング機能を追加してみました。
動画をご覧ください。
このように、共通プロンプトの設定欄に今回のプロンプトを入れることで自動的にロギングsystemを作ることができます。
「複雑な要件定義をRoo Codeと進めていたのに、エラーでチャットがリセット!数時間の作業が水の泡に…」
「Roo Codeに前の指示を覚えていてほしかったのに、会話が途切れて最初から説明し直し…」
Roo Codeを使って開発していると、こんな経験をすること、ありませんか?
せっかく順調に進んでいた開発も、チャットが途切れてしまうと、そこで作業が止まってしまいます。特に、前の会話内容を正確に覚えていてほしい時に、それが途切れてしまうと、本当に困りますよね。
Roo Codeには、会話履歴を保持する機能が標準では備わっていません。そこで、今回は、外部ツールやプロンプトを駆使して「メモリーバンク」(会話履歴を保存する仕組み)を構築する方法を紹介します。
Roo Codeでチャットが途切れる原因
Roo Codeでチャットが途切れる原因は、主に以下の2つが考えられます。
1. Roo Codeの仕様
Roo Codeは、チャットの内容を一時的に保存していますが、永続的な保存機能はありません。そのため、エラーが発生したり、セッションがタイムアウトしたりすると、会話内容が消えてしまうことがあります。
2. ChatGPTの特性
ChatGPTは、過去の会話内容をある程度は記憶していますが、その記憶容量には限界があります。そのため、長文の会話や、複雑な内容の会話は、途中で途切れてしまうことがあります。
解決策:「メモリーバンク」で会話履歴を保存!
これらの問題を解決するために、「メモリーバンク」という考え方を導入します。メモリーバンクとは、Roo Codeとのチャットの内容やエラー情報を、開発者自身で記録・管理し、後から参照できるようにする仕組みのことです。
メモリーバンクのメリット
エラー発生時の状況把握が容易に: エラーメッセージだけでなく、その直前の会話も記録することで、原因特定がスムーズになります。
過去の会話内容をスムーズに参照: 複雑な要件定義や、過去の指示を、いつでも正確に振り返ることができます。
開発効率が向上: 同じ説明を繰り返す必要がなくなり、作業が中断されることが減ります。
チーム開発での情報共有に: チームメンバーと会話履歴を共有することで、認識の齟齬を防ぎ、スムーズな連携が可能になります。
メモリーバンクの構築方法:3つの選択肢
メモリーバンクは、以下のいずれかの方法で構築できます。それぞれのメリット・デメリットを理解し、自分に合った方法を選びましょう。
共通プロンプトを活用:
メリット: Roo Codeの設定だけで完結するため、手軽に始められます。
デメリット: チャットセッションが終了すると、記録も消えてしまいます(永続化には工夫が必要)。
VS Codeの拡張機能:
メリット: 自動で会話履歴を保存できる拡張機能があります。
デメリット: 拡張機能のインストールが必要です。
自作スクリプト(Pythonなど):
メリット: ログの保存先や形式を自由にカスタマイズできます。
デメリット: プログラミングの知識が必要です。
1. 共通プロンプトを活用する方法
最も手軽なのが、Roo Codeの「共通プロンプト設定欄」に、ログを記録するためのプロンプトを入力する方法です。
基本的なプロンプト例:
# メモリーバンク (会話履歴保存システム)
## あなたの役割
あなたは、私(開発者)とRoo Codeとの会話を記録し、必要に応じて過去の会話を参照できるようにする「メモリーバンク」システムです。
## 指示
1. **会話の記録:** あなたへの全ての質問と、Roo Codeからの全ての応答を、以下の形式で逐次記録してください。
```
[タイムスタンプ] 発言者: 内容
```
(例)
```
[2024-05-16 10:30:00] 開発者: ...
[2024-05-16 10:30:15] Roo Code: ...
```
2. **過去の会話の参照:** 私が「メモリーバンク参照」または「過去の会話」と指示した場合、関連する過去の会話を検索し、提示してください。キーワード検索も可能です。
3. **エラー発生時の記録:** Roo Codeがエラーを返した場合、エラーメッセージと、その直前の会話を必ず記録してください。
## 注意事項
* このプロンプト自体もメモリーバンクに記録されます。
* メモリーバンクの内容は、このチャットセッションが終了すると失われます。(永続化については、別の方法を検討します。)
ポイント:
Roo Codeに「メモリーバンク」という役割を与えることで、より意図した動作をさせやすくなります。
必要に応じて、記録形式や指示をカスタマイズしてください。
永続化のヒント:
チャットの最後に、メモリーバンクの内容をファイルに保存するよう、Roo Codeに指示する。
定期的にメモリーバンクの内容をコピー&ペーストして、別の場所に保存する。
2. 自作スクリプト(Pythonなど)を使う方法
Pythonなどのプログラミング言語を使って、Roo Codeとの会話を自動的に記録・保存するスクリプトを作成することもできます。この方法は自由度が高い反面、プログラミングの知識が必要です。
さらに高度なメモリーバンク:カスタムテンプレートでログを自在に操る
「共通プロンプトを使ったメモリーバンクは便利だけど、もっと細かくログを管理したい!」
「ログの形式を自分でカスタマイズできたらいいのに…」
そんなあなたのために、今回はさらに高度なメモリーバンクの構築方法を紹介します。ここで紹介するカスタムテンプレートを使えば、Roo Codeとの会話をより詳細に、そして柔軟に記録することができます。
カスタムテンプレートとは?
ここで紹介するカスタムテンプレートは、Jinja2というテンプレートエンジンを使って記述されています。Jinja2を使うと、変数や条件分岐、繰り返し処理などを組み込んだテンプレートを作成できます。
このテンプレートをRoo Codeの共通プロンプトに設定することで、Roo Codeの出力形式を細かく制御し、詳細なログを生成することができます。
テンプレートの構成
このテンプレートは、主に以下の要素で構成されています。
マクロ: 再利用可能なコードブロックを定義します。例えば、ログの記録 (memory_log) やディレクトリ構造の確認 (check_directory_structure) などの機能がマクロとして定義されています。
設定: ログの保存場所、ログの形式、出力フォーマットなど、さまざまな設定をYAML形式で記述します。
特殊記号: ステータスや情報タイプを表すための記号を定義します。
メモリーバンク関連の主要マクロ
このテンプレートには、メモリーバンク機能を実現するための、いくつかの重要なマクロが含まれています。
{# ディレクトリ構造確認マクロ #}
{% macro check_directory_structure() -%}
◤◢◤◢◤◢◤◢◤◢◤◢◤◢
ℹ️ ディレクトリ構造確認
◤◢◤◢◤◢◤◢◤◢◤◢◤◢
必要なディレクトリ:
- memory_bank/
- roo-code-memory-bank/
- memory-bank/
- templates/
- dev/
- re/
- po/
- tm/
- swe/
- logs/
{%- endmacro %}
{# ログファイル操作マクロ #}
{% macro memory_log(action, content) -%}
◤◢◤◢◤◢◤◢◤◢◤◢◤◢
{% if action == 'write' %}
📝 ログ記録:
{{ content }}
{% elif action == 'read' %}
📖 ログ参照:
{{ content }}
{% endif %}
◤◢◤◢◤◢◤◢◤◢◤◢◤◢
{%- endmacro %}
これらのマクロを使うことで、
{{ check_directory_structure() }} : メモリーバンクに必要なディレクトリ構造を確認できます。
{{ memory_log('write', '新しいタスクが開始されました') }}: ログを記録できます。
{{ memory_log('read', '最新のログエントリ') }}: ログを参照できます。
テンプレートの使用方法
テンプレートの準備:
以下のテンプレート全体をコピーします。
Roo Codeへの設定:
Roo Codeの「共通プロンプト設定欄」に、コピーしたテンプレートを貼り付けます。
ディレクトリの作成:
テンプレート内の check_directory_structure() マクロが示すディレクトリ構造を、あなたのPC上に作成してください。
例:memory_bank/roo-code-memory-bank/memory-bank/templates/ , memory_bank/roo-code-memory-bank/memory-bank/dev/ など
動作確認:
Roo Codeとの会話を開始し、ログが指定した場所に保存されることを確認します。
memory_log マクロを使ってログを記録したり、参照したりできるか確認してください。
テンプレートのカスタマイズ
このテンプレートは、あなたのニーズに合わせて自由にカスタマイズできます。
ログの保存場所の変更: common セクションの log_directory の値を変更します。
ログの形式の変更: logs セクションの format の値を変更します。
特殊記号の追加・変更: symbols セクションを編集します。
注意点:
テンプレートはJinja2の構文に従って記述する必要があります。構文エラーがあると、Roo Codeが正しく動作しない場合があります。
テンプレートを編集する際は、必ずバックアップを取ってから行うようにしてください。
活用例
エラー発生時の原因特定: エラーメッセージと直前の会話を照らし合わせることで、バグの原因を素早く特定できます。
過去の会話内容の振り返り: 複雑な要件定義や、過去に行った設計の意図を、いつでも正確に確認できます。
チームメンバーとの情報共有: 会話履歴を共有することで、認識の齟齬を防ぎ、スムーズな開発をサポートします。
議事録作成: Roo Codeとの会話を議事録として活用できます。
まとめ
Roo Codeの「メモリーバンク」は、開発者が自ら構築することで、開発効率を大幅に向上させる強力なツールとなります。今回紹介した方法で、あなただけの「メモリーバンク」を構築し、Roo Code開発をさらに快適にしましょう!
今回の記事はいかがでしたでしょうか?
少しでもあなたの開発のお役に立てれば幸いです。
もし、この記事の内容についてご不明な点がありましたら、お気軽にご質問ください。
また、Roo Codeに関する情報や、その他のプログラミングに関する情報も発信していますので、ぜひフォローしてくださいね。
公式LINEで最新情報を受け取ってください!完全版のRoo Codeプロンプトを公式LINEでプレゼントしてます。下のURLから受け取ってください。