概要
OpenHands GitHub Actionは、GitHubリポジトリでのissueやプルリクエストに対してAIエージェントが自動的に作業を実行する強力な自動化ツールです。これまでCLIでの直接操作について解説してきましたが、GitHub Actionを導入することで、チーム開発での生産性を大幅に向上させることができます。
OpenHands CLI ✖ GitHub Action やってみる2⃣
無事にissueからOpenHands起動してプルリクエスト出すところまで出来た!!!! https://t.co/ykfmTCyLgJ pic.twitter.com/dk5VUyLWSB— Maki@Sunwood AI Labs. (@hAru_mAki_ch) June 20, 2025
前回の記事のおさらい
本記事は以下の記事の続編です:
- OpenHands CLI 完全ガイド: OpenHands CLIの基本的な使い方とコマンドについて詳しく解説
- OpenHands CLIでカスタムOpenAI互換モデル(Litellm)を設定する方法: カスタムモデルやローカルLLMの設定方法
これらの記事では個人での開発効率化に焦点を当てましたが、今回はチーム開発での自動化について解説します。
OpenHands GitHub Actionとは
OpenHands GitHub Actionは、GitHubのワークフロー機能を活用してAIエージェントを自動実行するサービスです。issueやプルリクエストに特定のラベルを付けたり、特定のコメントを投稿することで、AIエージェントが自動的にコードの修正や機能実装を行います。
主要な特徴
- 自動トリガー: ラベルやコメントで簡単に起動
- プルリクエスト生成: 修正内容を自動でプルリクエストとして提出
- 反復的改善: フィードバックに基づいた継続的な改善
- カスタマイズ可能: チーム固有の設定や指示を追加可能
セットアップ方法
1. リポジトリへのインストール
OpenHands GitHub Actionを新しいリポジトリにインストールするには、以下のワークフローファイルを作成します。
.github/workflows/openhands-resolver.yml
を作成:
name: Resolve Issue with OpenHands
on:
issues:
types: [labeled]
pull_request:
types: [labeled]
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
pull_request_review:
types: [submitted]
permissions:
contents: write
pull-requests: write
issues: write
jobs:
call-openhands-resolver:
uses: All-Hands-AI/OpenHands/.github/workflows/openhands-resolver.yml@main
with:
macro: ${{ vars.OPENHANDS_MACRO || '@openhands-agent' }}
max_iterations: ${{ fromJson(vars.OPENHANDS_MAX_ITER || 50) }}
base_container_image: ${{ vars.OPENHANDS_BASE_CONTAINER_IMAGE || '' }}
LLM_MODEL: ${{ vars.LLM_MODEL || 'anthropic/claude-sonnet-4-20250514' }}
target_branch: ${{ vars.TARGET_BRANCH || 'main' }}
runner: ${{ vars.TARGET_RUNNER }}
secrets:
PAT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PAT_USERNAME: ${{ secrets.PAT_USERNAME }}
LLM_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
2. 必要な設定
Repository Secrets
ANTHROPIC_API_KEY
: Anthropic Claude APIキーPAT_USERNAME
: GitHubユーザー名
GitHub設定
リポジトリの Settings > Actions > General で以下を設定:
- Allow GitHub Actions to create and approve pull requests: ✅ ONにする
Repository Variables(オプション)
これらの設定は任意です。指定しない場合はデフォルト値が使用されます:
LLM_MODEL
: 使用するLLMモデル(デフォルト:anthropic/claude-sonnet-4-20250514
)OPENHANDS_MACRO
: カスタムマクロ(デフォルト:@openhands-agent
)OPENHANDS_MAX_ITER
: エージェントの最大反復回数(デフォルト: 50)TARGET_BRANCH
: プルリクエストのターゲットブランチ(デフォルト:main
)
基本的な使い方
Issue解決の自動化
方法1: ラベルを使用
- GitHubでissueを作成
fix-me
ラベルを追加- OpenHandsエージェントが自動的に問題を分析し、修正を試行
- 修正内容がプルリクエストとして提出される
方法2: コメントを使用
- issueまたはプルリクエストにコメントを投稿
- コメントを
@openhands-agent
で開始(デフォルトマクロ) - エージェントが該当のコメント内容に基づいて作業を実行
使用例
バグ修正の依頼
Issue タイトル: ログイン機能でメールアドレスの検証が正しく動作しない
Issue 本文:
ユーザーがログインする際、無効なメールアドレス形式でもログインできてしまう問題があります。
バリデーション機能を追加して、正しいメールアドレス形式のみを受け付けるようにしてください。
ファイル: src/auth/login.js
ラベル fix-me
を追加すると、エージェントが:
- コードを分析
- バリデーション機能を実装
- テストケースを追加
- プルリクエストを作成
機能追加の依頼
@openhands-agent
高度な設定
カスタム指示の追加
リポジトリルートに .openhands/instructions.md
ファイルを作成することで、エージェントにカスタム指示を提供できます:
# OpenHands カスタム指示
## プロジェクト概要
このプロジェクトは React + TypeScript で構築された Web アプリケーションです。
## コーディング規約
- ESLint と Prettier の設定に従ってください
- コンポーネントは関数型で記述してください
- テストファイルは `__tests__` ディレクトリに配置してください
## 禁止事項
- 本番環境の設定ファイルは変更しないでください
- データベースマイグレーションは直接実行しないでください
## 推奨事項
- 新機能追加時は必ずテストケースを含めてください
- コメントは日本語で記述してください
環境変数の詳細設定
変数名 | 型 | 説明 | 例 |
---|---|---|---|
LLM_MODEL |
Variable | 使用するLLMモデル | anthropic/claude-sonnet-4-20250514 |
OPENHANDS_MAX_ITER |
Variable | エージェントの最大反復回数 | 50 |
OPENHANDS_MACRO |
Variable | カスタムマクロ | @openhands-agent |
OPENHANDS_BASE_CONTAINER_IMAGE |
Variable | カスタムサンドボックスイメージ | custom_image |
TARGET_BRANCH |
Variable | プルリクエストのターゲットブランチ | main |
TARGET_RUNNER |
Variable | ワークフローを実行するランナー | ubuntu-latest |
まとめ
OpenHands GitHub Actionは、これまでのCLI使用で培った生産性をチーム全体に拡張する強力なツールです。適切にセットアップすることで、issueの自動解決、コードレビューの効率化、継続的な品質改善を実現できます。
次のステップ
- 導入開始: 小規模なリポジトリでテスト運用
- 設定最適化: チーム固有の要件に合わせた設定調整
- ワークフロー統合: 既存の開発プロセスとの統合
- チーム教育: メンバーへの使用方法共有
OpenHands CLIでの個人生産性向上から始まり、GitHub Actionでのチーム生産性向上まで、AI支援開発の全体像を活用して、より効率的で質の高い開発を実現してください。
関連リンク
- OpenHands CLI 完全ガイド
- OpenHands CLIでカスタムOpenAI互換モデル(Litellm)を設定する方法
- OpenHands Resolver README
- OpenHands公式ドキュメント
コメント