🧩

複数AIエージェント間のルール共有戦略(開発日記 No.078)

に公開

関連リンク

はじめに

昨日は、AIエージェント間の連携について色々と模索しました。今日は、Cursor、Windsurf、Clineといった複数のAIエージェントで共通のrulesファイルを共有するための方法を具体的に検討していきます。より効率的で柔軟なルール管理を目指しましょう!

背景と目的

当初はCursorのみを対象として、プロジェクト間でrulesを共有することを考えていました。しかし、Windsurfの利用を始めたことで、異なるAIエージェント間での共有という、より広い視野が必要になりました。今後、Clineなど他のAIエージェントを利用する可能性も考慮すると、個々のAIエージェントの仕様に依存しない、汎用的な仕組みを構築する必要があります。

rulesファイルを専用のリポジトリで管理し、knowledge(特定テーマの知識)、mode(動作モード)、references(knowledgeから参照される専門知識)で分類するという基本方針は維持します。これまでは、これらのrulesファイルを各AIエージェントの仕様に合わせてシンボリックリンクで転送していましたが、各エージェントが求めるrulesファイルの形式(拡張子やfrontmatterなど)が異なる場合、効率的な共有が難しくなります。

そこで、これまでのrulesファイルを単純なmdファイルとして扱い、各エージェントの仕様に合わせた単一または少数のrulesファイルから、個々のrulesファイルを参照する形に変更することにしました。

検討内容

複数AIエージェント間でのrules共有方式として、「中央リポジトリ+アダプターパターン」方式を検討しました。

  1. 中央リポジトリ(コンテンツ層): すべての知識・ルール・参照を純粋なMarkdown(.md)として管理します。
  2. 各AIエージェント用アダプター(変換層): 各AIエージェント専用のディレクトリに「アダプターファイル」を配置します。

アダプターファイルは、各AIエージェントが要求する形式(拡張子・フロントマター)に準拠し、コンテンツ本体は中央リポジトリのファイルから動的に取り込む仕組みです。

しかし、アダプターファイルが中央リポジトリに保管されたファイルの数だけ必要になる場合、メンテナンスが大変になるため、この方式は見送りました。

そこで、アダプターファイルは各modeファイルのどれで動作すべきかを判定し、適切なmodeファイルの参照を促す機能を持たせた、単一のファイルで良いのではないかと考えました。knowledgeやreferencesは、選択されたmodeから適宜参照されるべきものであり、アダプターは不要と考えます。AIエージェント特有のrulesファイルの機能は強力なので利用したいものの、コンテキスト節約の観点からもすべての知識ファイルを常に有効にするのは良くないので、知識ベースは適宜必要な時に必要なものだけ参照する、というスタイルが理想です。

最終的に、「モード選択型単一アダプター」方式を採用することにしました。各AIエージェントごとに1つのアダプターファイルのみを用意し、これが「モード選択」と「必要な知識の参照ガイド」を担当します。

単一アダプターファイルの役割は以下の通りです。

  • タスクに応じた適切なモードの選択をガイド
  • 利用可能なモードの一覧と説明を提供
  • モードファイルの参照方法を説明
  • 必要に応じて知識ベースへの参照方法を提供

この方式により、メンテナンス軽減、コンテキスト節約、適切なモード選択、拡張性などのメリットが得られます。

実装内容

「モード選択型単一アダプター」方式とGitサブモジュールを組み合わせた詳細資料を作成し、/home/centervil/repos/Docs/dev-docs/ai_rules_sharing_architecture.md に保存しました。この資料には、ディレクトリ構造、サブモジュール設定、シンボリックリンク作成方法などが詳細に記載されています。

技術的なポイント

今回の実装における技術的なポイントは、以下の点です。

  • Gitサブモジュールの活用: 複数のプロジェクトでアダプターファイルおよびrulesファイルを共有するために、Gitサブモジュールを利用します。これにより、中央リポジトリの変更を各プロジェクトに反映させることが容易になります。
  • シンボリックリンク: アダプターファイルを各AIエージェント用ディレクトリに配置するために、シンボリックリンクを使用します。これにより、ファイルの実体をコピーすることなく、複数の場所から同じファイルを参照できます。
  • Markdown形式の採用: rulesファイルをMarkdown形式で管理することで、可読性が高く、編集も容易になります。

所感

今日は、複数のAIエージェント間でrulesファイルを共有するための方法について、集中的に検討しました。当初は複雑な構成を考えていましたが、最終的にはシンプルで効率的な「モード選択型単一アダプター」方式に落ち着き、とても満足しています。

特に、各AIエージェントごとにアダプターファイルを一つにまとめることで、メンテナンスコストを大幅に削減できる点が素晴らしいと思います。また、Gitサブモジュールを活用することで、複数プロジェクト間でのルール共有が容易になり、開発効率の向上に繋がることを期待しています。

詳細設計資料を作成する際には、ディレクトリ構造や設定方法などを具体的に記述することで、他の開発者がスムーズに導入できるように心がけました。

今後の課題

今後の課題としては、以下の点が挙げられます。

  • 実際のプロジェクトでの検証: 今回設計した方式を実際のプロジェクトに導入し、動作確認を行う必要があります。
  • 新規AIエージェントへの対応方法の検討: 新しいAIエージェントが追加された場合に、どのようにアダプターファイルを生成するかを検討する必要があります。
  • アダプターファイルの自動生成・更新スクリプトの開発: アダプターファイルの生成や更新を自動化するためのスクリプトを開発することで、メンテナンスコストをさらに削減できます。

まとめ

本日の開発では、複数のAIエージェント間でrulesファイルを効率的に共有するための「モード選択型単一アダプター」方式を設計しました。この方式により、AIエージェント間での知識共有を効率化しつつ、各AIエージェントの特性を活かした利用が可能になります。今後は、実際のプロジェクトでの検証や、自動化スクリプトの開発などを進めていきたいと思います。

GitHubで編集を提案

Discussion