CursorのルールファイルをDevinでも利用できないか試す
はじめに
私は普段 Cursor を利用してコーディングをしていますが、"Rules for AI"や"Project Rules"(以前の.cursorrules)を自分に合った形で編集しておくことが快適に AI コーディングを進めていくための一つの手段になります。
これらの設定を行うと、AI に追加のコンテキストが与えられより意図した結果が得られやすくなります。
Devin にも"Knowledge"と"Playbook"という似た立場の機能があり、これらを利用しながら、Cursor 側の設定を流用しつつ、普段 Cursor で得ているような結果を Devin を通じても得られるようにできるのか試してみます。
1. "Rules for AI" と "Project Rules" 機能について
ざっくりと"Rules for AI"は、リポジトリ、ディレクトリなど問わず、Cursor の中で常に参照される内容になります。
一方"Project Rules"は、".cursor/rules/"以下に.mdc ファイルとして作成し、各ルール(mdc ファイル)が適用されるかどうかはその中身を見て自動で判断されます。
また、ルールにはテキストだけでなくプロジェクト内のファイル指定もでき、ルールが適用される条件(globs)の指定もできます。
Cursor: rules-for-ai
2. "Knowledge" と "Playbook" 機能について
Devin の"Knowledge"と"Playbook"機能についても簡単に説明すると、
Knowledge 機能は、前述の"Project Rules"に近い機能で、主に開発ルールやツールの使い方などを記載していき、必要な際に Devin が判断し利用します。また、Retrieval Trigger という項目で、いつその knowledge が呼び出されるか制御されています。
"Playbook"機能は、主に同様の指示を繰り返すような場合に利用する機能で、あるタスクを高精度で何度も実行したい際に作り込むことが推奨されているようです。
弊社内ではあまりそのようなケースが生じない(手元で Cursor で実行してしまう)ので、まだ使いこなせていない機能の一つです。
Devin: playbooks
3. Cursor の"Rules for AI" と "Project Rules" を Devin で活用してみる
それでは Cursor の Rules を Devin でも活用できるようにしてみたいと思います。
"Rules for AI"の事項については"Knowledge"に適宜転記することで活用できます。
"Project Rules"については一連のファイルの読み方を"Knowledge"に記載しておくことで、リポジトリに".cursor/rules/"があればその内容を利用してもらう形が理想です。
以下に例として試した Knowledge のコンテキストを記載します。
Knowledge:
プロジェクト内に .cursor/rules/ ディレクトリが存在する場合、ディレクトリ内の*.mdcファイルを読み込み、
そこに定義されているルールに従った上でタスクを実行してください。
mdcファイルは、以下のような形式で記載されています。
"""
---
description: ルールの概要
globs: ルールを適用する条件(ファイル名、ファイル拡張子名など)
alwaysApply: このルールは常に適用されるか(true or false)
---
ここにルールについてテキストで記載されます
"""
実際に .mdc ファイルを読んでタスクが実行できているか試すために、以下の .mdc ファイルを含んだリポジトリを作成して指示を出してみます
元の Project Rules (.mdc ファイル):
---
description:
globs: *.py
alwaysApply: false
---
- ファイルを編集する際には必ずファイル先頭にhello world!というコメントを記載するようにしてください。
それでは Knowledge がある場合とない場合で挙動が変わるか試してみます。
Devin へは "プロジェクトの構成を確認した上で、hello.py を実行すると hello world!というテキストを返すように編集して" という旨の指示を渡します。(今回のようなごく単純なタスクは、プロジェクトのファイル構成まで確認せず直接ファイルを編集してしまい Knowledge の利用まで行わないことが多いようだったので、一応プロジェクト構成を確認するようにお願いしています)
Knowledge がない場合の hello.py:
def main():
return "hello world!"
if __name__ == "__main__":
print(main())
Knowledge を設定した場合の hello.py:
# hello world!
def main():
return "hello world!"
if __name__ == "__main__":
print(main())
Knowledge の内容を用いてファイルの編集ができていました。
いくつか他にも Devin への指示を試したところ、必ず今回追加した Knowledge に沿ってコーディングするとは限りませんでした。(その場合は Knowledge を確認するようにお願いすると修正できました)。
Knowledge の Retrieval Trigger の文面を最適なものに修正していくと上記の問題は改善するかもしれません。
AI が必要な Knowledge かどうか判断する仕様上、挙動が安定しない面も一定仕方なさは感じます。引き続き Cursor など他サービスとも併用しつつ利用していきたいと思います。
4. おまけ: todo.md の活用
最近話題の AI Agent に Manus がありますが、Manus はコーディングなどのタスクを実施する際に todo.md を作成し、タスクの進捗に合わせて todo にチェックを入れながら作業をします。
明確にタスク管理を行うファイルを用意して作業させることで、抜け漏れやコンテキストの欠落が起こりにくくなる効果が期待できそうです。
そこで Devin にも todo.md を利用しながら作業してもらうように"Knowledge"に登録し作業してもらいました。
Knowledge:
ユーザーからの指示を実行する際に、タスクの一覧をtodo.mdに記載し、完了したタスクにはチェックマークを入れることで進捗を管理するようにしてください
あるタスクを実行させた後の todo.md:
# RAG-System タスク一覧
- [x] src直下にtest.pyファイルを作成
- [x] Crawlerのテスト機能を実装
- [x] VectorDatabaseBuilderのテスト機能を実装
- [x] QueryInterfaceのテスト機能を実装
- [x] エンドツーエンドのテスト機能を実装
結果、todo.md に進捗を記載しながら作業を進めてもらうことができました。
Devin の性能的にも基本的には小さなタスク単位に分解してお願いすることが多いので、あまり利用するタイミングはないかもしれないですが、Devin によらず AI にコーディングをする上でより複雑なタスクをお願いしていくためのテクニックとして使えそうです。
エンジニア絶賛募集中!
MESON では Unity エンジニアを絶賛募集中です! XR、空間コンピューティングのプロジェクトに関わってみたい! 開発したい! という方はぜひご応募ください!
MESON のメンバーページからご応募いただくか、Xの DM などでご連絡ください。
MESON Works
MESON の制作実績一覧もあります。ご興味ある方はぜひ見てみてください。
Discussion