3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenHandsをGitHub Actionsで手軽に動かして安Devin?を試してみよう

Last updated at Posted at 2025-02-02

はじめに

Devinちょっと高いけど、Devinっぽいことしたいな...
ということで、OSSのOpenHandsを試してみましょう。

OpenHandsは旧名がOpenDevinなこともあり、OSSのDevinを目指してた雰囲気はありますね。

なお、筆者はDevin動かしたことがないので、完全に代替できるかは、すみませんが分かりません。
また、OpenHandsには今のところ、Slackでやりとりする機能は標準ではありません。

この記事の内容を設定するとGitHub上で
AIにPullRequestでコードをつくってもらうことが出来ます。

GitHub Actionsでの設定方法

OpenHandsをGitHub Actionsで動かすのはとても簡単です。
(最後に書いてありますが、GitHubのプランによって一部制限があります)

ワークフローファイルの作成

これぐらいの記述を.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@0.22.0
    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-3-5-sonnet-20241022' }}
    secrets:
      PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
      PAT_USERNAME: ${{ secrets.PAT_USERNAME }}
      LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
      LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}

参考URL:
https://docs.all-hands.dev/modules/usage/how-to/github-action

環境変数の設定

あとは、環境変数周りを設定していきます。
GitHubActionsのsecretsにLLM_API_KEYを設定します。初期のモデル設定がanthropicなので、そのキーをいれると良いでしょう。

この手のAPI利用でよくあるlimit制限を突破するためにOpenRouterを使いたいところですが、GitHubActionsモードでうまくモデルを切り替えることが私はできませんでした。

リポジトリの権限設定

Settings -> Actions -> General -> Workflow permissions に移動

"Read and write permissions" を選択
"Allow Github Actions to create and approve pull requests" を有効化

⚠️ "Read and write permissions" オプションがグレーアウトしている場合の注意点:
まず、組織レベルで権限を設定する必要があるかどうかを確認
組織レベルでもグレーアウトしている場合は、Enterprise ポリシー設定で権限を設定が必要

もう少し細かい制御がした場合はPAT_TOKENに
GitHub上で設定したPersonal Access Tokenをセットします。

使用方法

GitHub Issueにfix-meラベルをつけるか @openhands-agent と書くとGitHub Actionsがトリガーされて動き始めます。
あとは、コードレビューをして良ければ取り込み
ダメならPRに @openhands-agent からコメントをして修正事項を依頼します。

憶測ですが、仕組みとしてはDocker上で環境を作ってClineみたいな事してるんだと思いますね。

利用制限について

Draft Pull Requestの作成機能は、以下の場合のみ利用可能です:

  • GitHub Free を使用している公開リポジトリ
  • GitHub Free for organizations を使用している公開リポジトリ
  • GitHub Pro(公開リポジトリのみ)
  • GitHub Team(公開および非公開リポジトリ)
  • GitHub Enterprise Cloud(公開および非公開リポジトリ)

この情報は、GitHub APIの公式ドキュメントに明確に記載されています。

つまるところ、OpenHandsの内部的にはPull RequestがDraftで出るので
その機能が使えないと、Pull Requestに失敗するようです。

その場合は、ブランチは作成された状態になりますので
手動でPull Requestを作成することは可能です。

私は、GitHub Teamに課金して使っています。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?