Zenn
💨

OpenHandsのMicroAgents解説:AIソフトウェアエンジニアの専門知識を拡張する仕組み

2025/03/26に公開

はじめに

OpenHands(旧OpenDevin)は、AIを活用したソフトウェア開発エージェントのためのオープンソースプラットフォームです。このプラットフォームでは、AIエージェントがコードの修正、コマンドの実行、ウェブの閲覧、API呼び出しなど、人間の開発者が行うあらゆることを実行できるようになっています。

しかし、AIモデルには専門知識の限界があります。特定のツール、フレームワーク、プログラミング言語についての最新かつ詳細な知識が必ず備わっているとは限りません。そこで登場するのが「MicroAgents」です。

本記事では、OpenHandsのMicroAgentsシステムについて詳しく解説し、どのように活用できるかを紹介します。

MicroAgentsとは

MicroAgentsとは、OpenHandsに特定の領域の専門知識やタスク固有のワークフローを追加するための特殊なプロンプトです。このシステムによって、AIエージェントは様々なプログラミング言語、フレームワーク、ツールに関する詳細な知識を持ち、一般的な開発タスクを自動化し、プロジェクト全体で一貫した開発プラクティスを確保することができます。

MicroAgentsはYAMLフロントマターを持つMarkdownファイルとして実装されており、特定のキーワードやコンテキストに基づいて動的に読み込まれます。

MicroAgentsの種類

OpenHandsのMicroAgentsには3つの主要なタイプがあります:

1. 知識エージェント(Knowledge Agents)

知識エージェントは、会話の中の特定のキーワードによってトリガーされる専門知識を提供します。例えば、ユーザーが「GitHub」や「Docker」について言及すると、対応する知識エージェントがアクティブになります。

特徴

  • キーワードベースのトリガー
  • コンテキスト認識(ファイルタイプや内容に基づいた関連アドバイスの提供)
  • 複数プロジェクトでの再利用性
  • バージョン管理のサポート

github.mddocker.mdkubernetes.mdnpm.mdsecurity.mdなど

2. リポジトリエージェント(Repository Agents)

リポジトリエージェントは、特定のリポジトリの知識とガイドラインを提供します。これらはリポジトリ内の.openhands/microagents/repo.mdに配置され、そのリポジトリで作業する際に自動的に読み込まれます。

特徴

  • プロジェクト固有の指示
  • チーム規約とプラクティスの適用
  • リポジトリでの作業時に自動的に有効化
  • プロジェクトと共に更新・管理

3. タスクエージェント(Task Agents)

タスクエージェントは、開発者が一般的な開発タスクを効率的に実行できるようにガイドするインタラクティブなワークフローを提供します。

特徴

  • ユーザー入力の受付
  • 事前定義されたステップのガイド
  • コンテキストへの適応
  • 一貫した結果の提供

update_pr_description.mdaddress_pr_comments.mdget_test_to_pass.mdなど

MicroAgentsの構造

すべてのMicroAgentsは共通の構造を持っています:

---
name: エージェント名
type: knowledge/task/repo
version: バージョン番号
agent: 使用するAIエージェントタイプ
triggers: [トリガーキーワード](knowledgeタイプの場合)
inputs: [必要な入力](taskタイプの場合)
---

エージェントの指示内容

知識エージェントの例(github.md)

---
name: github
type: knowledge
version: 1.0.0
agent: CodeActAgent
triggers:
- github
- git
---

You have access to an environment variable, `GITHUB_TOKEN`, which allows you to interact with
the GitHub API.

You can use `curl` with the `GITHUB_TOKEN` to interact with GitHub's API.
ALWAYS use the GitHub API for operations instead of a web browser.

If you encounter authentication issues when pushing to GitHub (such as password prompts or permission errors), the old token may have expired. In such case, update the remote URL to include the current token: `git remote set-url origin https://${GITHUB_TOKEN}@github.com/username/repo.git`

Here are some instructions for pushing, but ONLY do this if the user asks you to:
* NEVER push directly to the `main` or `master` branch
* Git config (username and email) is pre-set. Do not modify.
...

タスクエージェントの例(update_pr_description.md)

---
name: update_pr_description
type: task
version: 1.0.0
author: openhands
agent: CodeActAgent
inputs:
  - name: PR_URL
    description: "URL of the pull request"
    type: string
    required: true
    validation:
      pattern: "^https://github.com/.+/.+/pull/[0-9]+$"
  - name: BRANCH_NAME
    description: "Branch name corresponds to the pull request"
    type: string
    required: true
---

Please check the branch "{{ BRANCH_NAME }}" and look at the diff against the main branch. This branch belongs to this PR "{{ PR_URL }}".

Once you understand the purpose of the diff, please use Github API to read the existing PR description, and update it to be more reflective of the changes we've made when necessary.

MicroAgentsの読み込み順序と統合

OpenHandsがリポジトリで作業する場合、以下の順序でMicroAgentsが読み込まれます:

  1. リポジトリ固有の指示(.openhands/microagents/repo.md)を最初に読み込む
  2. 会話内のキーワードに基づいて関連する知識エージェントを読み込む
  3. ユーザーがタスクを選択した場合に、該当するタスクエージェントを有効化

この組み合わせにより、OpenHandsは汎用的な知識と特定のプロジェクト要件の両方に適応することができます。

カスタムMicroAgentsの作成方法

OpenHandsでは、独自のMicroAgentsを作成して追加することが可能です。それぞれのタイプごとのベストプラクティスを以下に示します。

知識エージェント作成のベストプラクティス

  • 明確で識別しやすいトリガーキーワードを選択する
  • 一つの専門分野に焦点を当てる
  • 実践的な例を含める
  • 必要に応じて関連するファイルパターンを指定する
  • 知識は一般的で再利用可能にする

タスクエージェント作成のベストプラクティス

  • ワークフローを明確なステップに分割する
  • ユーザー入力の適切な検証(バリデーション)を実装する
  • 役立つデフォルト値を提供する
  • 使用例を含める
  • 様々な状況に適応可能なステップを設計する

リポジトリエージェント作成のベストプラクティス

  • セットアップの手順を明確に文書化する
  • リポジトリ構造の詳細を含める
  • テストとビルドの手順を詳細に記述する
  • 環境要件を明確にリスト化する
  • チームのベストプラクティスを最新の状態に保つ

実際の利用例

OpenHandsのMicroAgentsは以下のようなシナリオで特に役立ちます:

GitHub操作の効率化

GitHubエージェントを使用すると、OpenHandsは適切なGitHub API呼び出しを自動的に生成し、プルリクエストの作成、コメントへの対応、ブランチの管理などを効率的に行うことができます。

ユーザー: このコードの変更をプルリクエストとして提出してください

OpenHands: [GitHubエージェントが活性化され、APIトークンを使用してPRを作成]

セキュリティベストプラクティスの適用

セキュリティエージェントは、コード内のセキュリティ上の問題を検出し、修正するためのガイダンスを提供します。

ユーザー: この認証システムのコードをレビューしてください

OpenHands: [セキュリティエージェントが活性化され、安全でない実装を指摘]

テスト修正の自動化

テスト関連のタスクエージェントを使用すると、失敗しているテストの修正を支援できます。

ユーザー: このテストが失敗している原因を見つけて修正してください

OpenHands: [タスクエージェントが活性化され、テスト修正のステップバイステップ指導を提供]

まとめ

OpenHandsのMicroAgentsシステムは、AIソフトウェアエンジニアの能力を大幅に拡張する革新的な仕組みです。特定の領域の専門知識を提供する知識エージェント、リポジトリ固有のガイダンスを提供するリポジトリエージェント、そして開発タスクをガイドするタスクエージェントの組み合わせにより、AIエージェントは人間の開発者と同様に効果的にコーディングタスクをサポートできるようになります。

独自のMicroAgentsを作成することで、チーム特有のニーズに合わせたカスタマイズも可能です。これにより、AIと人間の開発者のコラボレーションがより円滑になり、開発プロセス全体の効率が向上します。

OpenHandsは現在も活発に開発が続けられているオープンソースプロジェクトですので、GitHubで最新の進展をチェックし、コミュニティに参加してみてはいかがでしょうか?

参考リンク

Discussion

ログインするとコメントできます