🌐

DevinのKnowledgeで共通ルールを整備する

に公開

前書き

noteの記事投稿以降、Devinを利用した開発を続けています。
Devinと働く中で、いくつか気になる点が出てきました。

  • 日本語での応答に固定するのが手間
  • GitHub上にDevinの作業ブランチが多数作成されてしまう
  • 指示した箇所以外のプロジェクト全体を確認してからタスクに取り組んでほしい 等

これらの課題を解決し、出力をより安定させるために、DevinのKnowledgeを整備しました。

DevinのKnowledgeとは

DevinのKnowledgeとは、Devinがあらゆるセッションで参照できる指示やアドバイスの集まりであり、組織・プロジェクトのコンテキストをDevinに教えるためのものです。
Knowledgeは、コードベースレベル(タスクレベルではない)のコンテキストを共有するのに最適な方法であり、例えば、コードの規約、デプロイのワークフロー、PRの命名規則、テストのワークフロー、独自のツールとの連携方法などを登録できます。

Knowledgeは設定したトリガーに基づいて検索されます。トリガーが具体的であればあるほど(例えば、特定のファイル、リポジトリ、タスクの種類など)、より適切なKnowledgeが検索されます。
セッション中にDevinがどのKnowledgeを使用したかは、チャットの「Accessed Knowledge」で確認できます。

Knowledgeの設定

実際にKnowledgeを設定してみました。

セッション開始時のルール

セッション開始時に適用される基本的なルール。

  • タイトル: セッション開始時ルール
  • Devin uses this when: when starting any new task or session as Devin
  • Content:
    • Languageに関する指示がない場合、セッション内のやり取りと出力は全て日本語で行なってください。
    • 指示外の変更を行う場合は、その意図と概要について説明した上チャットで許可を求めてください。
    • コードに破壊的な変更を行う場合は、その意図と概要について説明した上でチャットで許可を求めてください。
    • 特別な指示がない場合、Devinの1セッションにつきGitHubへpushするブランチは1つだけにしてください。
    • 2つ以上のブランチのpushを行う必要がある場合はチャットで許可を求めてください。
    • 作業ブランチのブランチ名にはprefix devin/ を付けてください。

Gitリポジトリへの接続時のルール

Gitリポジトリに接続する際に確認してほしいルール。

  • タイトル: Gitリポジトリへの接続時のルール
  • Devin uses this when: when connecting to or cloning a Git repository
  • Content:
    • Gitリポジトリへの接続時、最初に必ず以下の内容を確認した上で次のStepに移ってください。
    • プロジェクト全体のディレクトリ構造の確認
    • リポジトリ名にdocs が含まれている場合、全てのファイルの内容を確認
    • Readme.mdが存在する場合、内容を確認
    • docs ディレクトリが存在する場合、docs ディレクトリ以下のファイル全ての内容を確認

いずれも全てのリポジトリにピン留めしてあります。

設定してみて

これらのKnowledgeを設定してみたところ、概ね意図通りの動作をするようになったと感じています。特に指示しなくても日本語で応答してくれるようになり、作業ブランチの命名規則も守られるようになりました。
また、リポジトリに接続した際に、事前に指定したドキュメントやディレクトリ構造を確認した上でタスクに取り組んでくれるため、より安心して仕事を任せられるようになりました。

今後も利用状況に合わせてKnowledgeの内容を適宜チューニングしていきます。

Knowledge Onboardingのベストプラクティス(Devin Docsより)

Devin Docsには、Knowledge Onboardingのベストプラクティスとして以下の内容が紹介されていました。

  1. 自動生成されたKnowledgeを確認し、完全性と正確性を検証する
  2. Devinの作業に関連すると思われるKnowledgeを追加する。既存のドキュメントやファイルを共有したい場合は、インポート機能を使用して一括アップロードする
  3. 特定のセッションで常にKnowledgeを検索させたい場合は、すべてのリポジトリにピン留めする。特定のコンテキストでのみ関連する情報であれば、特定のリポジトリにピン留めする。Knowledgeがピン留めされていない場合は、トリガーが明確でないと使用されないため、トリガーの説明を明確にする
  4. コードベースに一元化された特殊なドキュメントファイルがない場合は、特殊なファイル拡張子で設定することを強く推奨する

これらを踏まえて、より効果的なDevinの活用を目指していきたい。

Discussion