はじめに
今回の記事は少し様変わりです。
みなさま、Devinをご存知でしょうか。
Devinは開発からデバッグまで自立して実行してくれるAIエージェントです。
弊社においてもDevinが導入され始めていますが、月額$500となかなかに高いため、全エンジニアが使うとなると毎月ものすごい額の経費が必要となるようです。
我々のチームでは代わりとなるようなAIエージェントの開発を目標としているため、どのモデルが良いのか検討するためにもDevinと同様のOSSであるOpenHandsを紹介します。
OpenHands事前準備
Dockerインストール
OpenHandsを使うための手順として、READMEを読んだところ、Dockerが必須ということがわかりました。
Dockerをインストールして下記のコマンドをターミナルで実行すると、ダウンロードが始まります。
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39


ダウンロードが終わるとコンソール画面にURLが表示されるので、ブラウザにコピペでOepnHnadsを実行することができます。
APIの取得
OpenHandsを利用する上でこれらのAPIを取得する必要があります。
なお、OpenAIは現在有料となっているようですが、一方でAnthropicAPIは5ドル分のクレジットを利用することができるようなので、この記事ではAnthropicAPIを使用しています。
・OpenAI または Anthropic(Claude)のAPI
・GitHub Personal Access Token
また、GitHub Personal Access Tokenの取得に関しては少し複雑でしたので、参考URLの方法を以下に記載します。
- GitHubにログインします
- 右上のプロフィールアイコンをクリックし、「Settings」を選択
- 左側のメニューから「Developer settings」をクリック
- 「Personal access tokens」→「Tokens (classic)」を選択
- 「Generate new token」→「Generate new token (classic)」をクリック
- トークンの名前を入力(例:「OpenHands」)
- 以下のスコープを選択:
repo
(すべてのリポジトリ権限)workflow
(ワークフロー権限)read:org
(組織の読み取り権限)
- 「Generate token」をクリック
- 表示されたトークンをコピーして安全な場所に保存

OpenHandsの設定
前節で取得したAPIをOpenHandsの設定画面で入力します。
僕の場合はAnthropicのAPIキーを取得しましたので、LLMプロバイダーはAnthropicに設定し、LLMのモデルは”claude-3-7-sonnet-20250219”としています。

次に、自分のGithubアカウントとの接続をします。
取得したGithub トークンを入力すると、全てのリポジトリに接続することが可能となります。

以上で設定は完了です。
リポジトリに接続
OpenHandsとGitHubの連携が取れたので、任意のリポジトリを選択して接続します。
今回は軽めのタスクを指示する予定なので、空のリポジトリを作成し、その中で何かやらせてみます。
なお、接続にはある程度の時間がかかります。

OpenHandsを使ってみよう
今回設定したモデルは”claude-3-7-sonnet-20250219”ですが、このモデルがどこまでできるのか調べてみました。
その結果、拡張思考モードという機能が追加され、これによって高度な推論タスクや長文処理において優位性を持っていることが確認されているようです。
メモ帳アプリ作成
拡張思考モードについての興味から、リファレンスとなるコードがない状態でメモ帳アプリを作成してみます。
目的として、icloudのメモ帳は日付で分けられないので、datatimeモジュールを用いて日付で分けられるようなメモ帳アプリを開発してもらうこととしました。
プロンプトを出すと、OpenHandsの仮想環境にて実装が始まりデバッグまでしてくれます。
作成してくれたアプリケーションは、ローカル上で動くものと、Flaskを使ったWebアプリの2種類として実装してくれました。
これが思っていた以上に良い感じに動いてくれて自分が使う分には良いのでは?と思うものでした。


完成
Webアプリとして開発されたファイルを実行すると、以下のようにURLが表示されるので、ブラウザで表示します。
Create a New Note欄にメモしたいことを書き込むと、ディレクトリ内にnotes.txtファイルが作成され、その中に書き込まれていきます。
* Running on http://127.0.0.1:50349


Devinの場合はプロンプトを詳細に書かないとまともに動かないという問題があるのに対して、claude-3-7-sonnetモデルは詳細に書かなくても開発してくれる分、OpenHandsもとても良いという所感です。
おわりに
いかがでしたでしょうか。
Devinとcalude-3-7-sonnetでどんな差があるかはわからないので比較をしなければなりませんが、個人開発をする分にはOpenHnadsでも良いのかなと思いました。
Devinは金額などの面で手が出しづらいですが、OpenHandsであればお試し感覚で使えそうではないですか?
また、OpenAIのgptモデルとの比較も必要そうです。
今回作成したwebアプリは僕のGithubから使用することができます。
なお、Githubから直接OpenHandsを使用することはできませんので、OpenHnadsを使用してみたいという方はこの記事を参考に設定してみてください!
今後の課題
DevinのようなAIエージェントを開発するとして、問題となる点はどのように内部で実行して修正をするかにあると考えています。
DevinやOpenHandsにしても、モデル自体はコードを生成し、推論するもののはずです。
そうだとすると、モデル以外のところにエージェントとなる役割をしているコードがあるはずなので、今後はこのあたりを重点的に調べる必要があります。
参考URL



