最初のセッションを開始する前に、リポジトリをインデックス化し、セットアップしていることを確認してください。これらは、Devin があなたのコードベースを理解し、扱えるようにするための基盤となる手順です。
セットアップが完了したら、さっそく最初の Devin セッションを開始しましょう。このガイドでは、新しいセッションインターフェースを順を追って紹介し、Devin と最適な形でやり取りする方法を理解できるようにします。
新しいセッションを開始すると、Ask と Agent の 2 つの主要なモードが表示されます。
すでにタスク範囲が完全に定義されたプランがある場合を除き、まずは Ask モードで Devin と一緒にプランを作成し、その後 Agent モードに切り替えて実行することをおすすめします。
Ask Devin は、実際のコードに変更を加えることなく、コードベースの調査やタスクの計画を行うための軽量なモードです。Ask モードを使用すると、次のことができます:
- コードの動作について質問する
- アーキテクチャや依存関係を把握する
- 実装前にタスクを計画し、スコープを定義する
- Agent セッション向けの、十分なコンテキストを含むプロンプトを生成する
Ask モードはメインページまたは DeepWiki ページから起動できます。
メインページから Ask モードを使う場合は、Ask モードに切り替えて、質問したいリポジトリを選択します。
DeepWiki ページから Ask モードを使う場合は、ページ下部のチャット入力欄に質問内容を入力し、Ask をクリックします。これにより、Devin が参照する情報の範囲がそのリポジトリに自動的に限定されます。
詳しくは Ask Devin ガイド を参照してください。
Devin と一緒に問題を理解してプランを作成できたら、Agent モードに進む準備が整っています。
エージェントモードは、Devin が完全に自律的に動作し、コードの記述、コマンドの実行、Web の閲覧、複雑なタスクのエンドツーエンドでの完了まで行えるモードです。次のようなことを行いたいときにエージェントモードを使用します:
- 機能を実装したりバグを修正するとき
- Pull Request を作成するとき
- テストを実行して問題をデバッグするとき
- コード変更を伴う複数ステップのタスクを実行するとき
Agent モードは、メインページまたは Ask Devin セッションから起動できます。
タスクのスコープが明確でない場合は、次の進め方をおすすめします。
- まずは Ask モード でタスクの計画を立てる
- Ask セッションの内容を基にスコープされた計画を作成するために、Devin プロンプトを作成する
- Send to Devin をクリックして Agent モードに移行し、タスクを実行する
このフローは次のとおりです。
メインページから Agent モードを使う場合は、トグルで Agent モードに切り替え、作業対象とするリポジトリを選択します。
Agent セッションを開始する際には、いくつかのオプションを設定します。具体的には、Repository の選択と Agent の選択です。
Devin に作業させたいリポジトリを選択します。リポジトリセレクターをクリックすると、Devin のマシンに追加された すべてのリポジトリが表示されます。
リポジトリを選択すると、Devin は次のことができるようになります:
- コードベースにアクセスして変更を加えられる
- 正しいブランチを開始点として使用できる
- 適切なリポジトリに対してプルリクエストを作成できる
セッションでDevinが使用するエージェント構成を選択できます。エージェントによって機能が異なったり、特定の種類のタスク向けに最適化されていたりします。
現在、多くのタスクに適したデフォルトのエージェントと、データ分析タスク向けに最適化されたデータアナリストエージェントのDanaが利用できます。
どのエージェントを使うか迷う場合は、ほとんどのタスクで問題なく使えるデフォルトのエージェントを選択してください。
@ メンションを使用すると、ファイル、リポジトリ、その他のリソースに関する特定のコンテキストを Devin に付与できます。チャット入力欄で @ を入力すると、使用可能なメンションの一覧がドロップダウンで表示されます:
- @Repos - 特定のリポジトリを参照する
- @Files - コードベース内の特定のファイルを参照する
- @Macros - Knowledge エントリ用のマクロを参照する
- @Playbooks - チームまたはコミュニティのプレイブックを参照する。これは、Devin の振る舞いをガイドするために使用できる詳細なプロンプトテンプレートです。
- @Secrets - Devin のセッションマネージャから特定のシークレット(例:APIキー、認証情報など)を参照する
@メンションを使用することで、Devin はあなたが扱っている対象をより正確に理解し、プロンプトのあいまいさを減らすことができます。
スラッシュコマンドは、あらかじめ定義されたプロンプトテンプレートを呼び出すためのショートカットです。チャット入力欄で / を入力すると、利用可能なコマンドが表示されます:
- /plan - Devin にタスクのスコープ設定と計画立案を手伝ってもらう
- /review - コードレビューのワークフローを構築する
- /test - テストを作成したり、テストカバレッジを分析したりする
- /think-hard - Devin に複雑な問題についてより慎重かつ深く考えさせる
- /implement - 特定の機能や変更を実装する
Enterprise 組織では、チーム固有のワークフロー向けにカスタムのスラッシュコマンドを作成することもできます。詳しくは Slash Commands guide を参照してください。
まずはスコープの小さなタスクから始め、人間のジュニアエンジニアに指示するときと同じくらいのレベルの詳細さで Devin に指示することを忘れないでください。Devin を使って、小さなバグ修正からピンポイントなリファクタリング、大規模なマイグレーションまで、幅広い作業に取り組んでいるユーザーがいます。
新しいエンドポイント /users/stats を作成し、ユーザー数と平均登録年齢を含む JSON オブジェクトを返すようにしてください。
既存の PostgreSQL の users テーブルを使用してください。
レスポンス構造については、statsController.js 内の /orders/stats エンドポイントを参照してください。
新しいエンドポイントが StatsController.test.js スイートでカバーされていることを確認してください。
`UserProfileComponent` に、ユーザーのロール(admin, editor, viewer)を一覧表示するドロップダウンを追加してください。
スタイリングには `DropdownBase` を使用してください。
ロールが選択されたら、既存の API を呼び出してユーザーのロールを設定してください。
選択によって DB 上のユーザーのロールが更新されていることを確認してください。適切なテスト方法については Knowledge を参照してください。
AuthService のメソッド login と logout に対する Jest テストを追加してください。
これら 2 つの関数のテストカバレッジが少なくとも 80% になるようにしてください。
UserService.test.js を例として使用してください。
実装後、`npm test -- --coverage` を実行し、両方の関数についてカバレッジレポートが 80% 超であることを確認してください。
また、有効な認証情報と無効な認証情報の両方でテストが通ること、さらに logout によってセッションデータが正しくクリアされることも確認してください。
or refactoring existing code
既存コードの移行またはリファクタリング
logger.js を JavaScript から TypeScript に移行してください。
すでに tsconfig.json と、検証用の LoggerTest.test.js テストスイートがあります。
エラーなくコンパイルできることを確認し、既存の設定は変更しないでください。
移行後は、次を実行して確認します:
1) `tsc` を実行して型エラーがないことを確認する
2) `npm test LoggerTest.test.js` でテストスイートを実行し、すべてのテストが通ることを確認する
3) コードベース全体で既存の logger メソッド呼び出しが、型エラーなしで動作していることを確認する
現在、pg から Sequelize への移行を行っています(https://sequelize.org/api/v6/identifiers を参照してください)。
UserModel のクエリを、Sequelize のメソッドを使うように更新してください。
このコードベースでの実装方法については、OrderModel を参照してください。
実装後は、以下を実行して検証してください:
1) `npm run test:integration UserModel.test.js` を実行し、すべてのインテグレーションテストが通ることを確認する
2) 1000 ユーザーのテストデータセットに対する実行時間を確認し、クエリのパフォーマンスが低下していないことを確認する
3) `npm run test:e2e user-flows.test.js` を実行し、すべての CRUD 操作でデータ完全性が維持されていることを検証する
手早くPRを作成する(このプロンプトはPlaybookで使用することを推奨します)
## 概要
このタスクでは、あるリポジトリに対して素早く pull request を作成します。
これは「クイック」PR なので、コードを実行したりテストを行う必要はありません。PR を作成するだけで、テストはユーザー側が対応します。あなたの責任はコードの読み書きのみです。
## ユーザーから必要なもの
- pull request を作成する対象のリポジトリ
## 手順
### 作業環境の準備
1. 手元のマシンで対象リポジトリに移動します(分からない場合はユーザーに確認してください)。
- main ブランチをチェックアウトし、main ブランチの名前を控えておきます。
- pull request を作成するため、新しいブランチをチェックアウトします。ブランチ名は `devin/<your-branch-name>/X` という形式にし、X は任意の数字にします。例: `devin/fix-popup/3234`。`git remote -v && git pull && git checkout -b devin/{branch-name}/$RANDOM` を実行し、`{branch-name}` を作成したいブランチ名に置き換えてください。
2. リクエスト内容・コードベースを確認し、変更内容を計画する
- 最も関連性の高いファイルやコードセクションを確認し、関連するスニペットを特定します。
- 変更の方針をユーザーに共有します。
### PR 作成作業
3. コードを変更する
- ユーザーから明示的に依頼されていないものは変更しないでください。
4. PR を作成する
- 変更をコミット・プッシュし、その旨をユーザーに伝えます。
- PR を作成するための正確なコマンドは「アドバイス」セクションを参照してください。
- pull request を作成し、見た目や内容に問題がないか自己レビューします。
- すべての GitHub Actions が正常に通過していることを確認し、失敗する場合は通過するまで必要な修正を行ってください。
- PR のリンクをユーザーに送り、変更内容を要約します。
5. レビューからのフィードバックに対応する。変更を行うたびに、毎回 PR のリンクを再度送付する
- 更新が必要な場合は、同じブランチにコミットを追加でプッシュしてください。新しいブランチは作成しないでください。
## タスク仕様
- PR のリンクをユーザーへのメッセージに含めること
- 作成後に PR をレビューしていること
- PR に不要な変更が含まれていないこと
- PR がユーザーから明示的に依頼されていない内容を一切変更していないこと
- PR の説明には、変更内容のサマリをチェックリスト形式で含めること
- PR の説明には、コードがテストされていないことを明記し、項目として - [ ] Test the changes を含めること
- PR の説明には、次のフッターを含めること: "This PR was written by [Devin](https://devin.ai/) :angel:"
- PR の説明には、ユーザーが提供したメタデータ(例: 適切な構文で記述された Linear チケットのタグ)を含めること
- PR の説明が不正なフォーマットになっていないこと(改行が崩れる場合は --body ではなく --body-file を使用してください!)
## 禁止事項
- ブラウザ経由で github.com にアクセスしようとしないでください。認証されていません。
- ブランチに対して絶対に force push しないでください!作業内容を失わないよう、rebase ではなく merge を優先してください。
- main ブランチへ直接 push しないでください。
## アドバイスとポイント
- main ブランチ名(`main` または `master` など)を `git branch` を使って必ず再確認してください。
- GitHub Actions で CI/CD を行っているリポジトリでは、`gh` CLI を使ってビルドログを確認できます。ビルド修正や lint 修正を求められた場合は、まず直近のビルドログを確認してください。
- ファイルを追加・コミットする前に `git status` を確認してください。
- コミット前に、`git diff` を使用して自身が行った変更を確認してください。
- 既存のリポジトリを更新する場合は、`gh` CLI を使って pull request を作成してください。
- 変更を更新するたびに PR リンクをユーザーへ送り、再レビューを依頼して、ユーザー側の利便性を高めてください。
- ユーザーから知らせてもらったすべてのリポジトリにアクセスできるよう、すでに認可されているはずです。もしアクセスできない場合は、ユーザーにアクセス権を依頼してください。
Devin が「何を」「どのように」できるか、より詳しい例を確認したい場合は、以下の入門 チュートリアル を参照してください。
基本的なセッションに慣れてきたら、Devin をさらに活用するために以下のリソースを参照してください。