はじめに
この記事では、OpenHandsの導入手順から基本的な使い方までを紹介します。
そもそもOpenHandsとは何なのかについては、こちらの記事をご覧ください。
環境
- Ubuntu 24.04.1 LTS
事前準備
- UbuntuにDockerをインストールする
- 
        LLMのAPIキーを準備する
        - 今回はOpenAI APIキーを使っています。
- OpenHandsが推奨しているモデルについてはこちらに記載されています。
 
- 
        GitHub連携用の個人アクセストークン (PAT: Personal Access Token) を発行する
        - 今回はスコープをrepoに設定しています。
 
導入手順
- 
        UbuntuでDockerコマンドを実行する
        docker pull docker.all-hands.dev/all-hands-ai/runtime:0.33-nikolaik docker run -it --rm --pull=always \ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.33-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.33OpenHandsは開発スピードが速くバージョンの更新頻度が高いため、最新のコマンドを適宜確認した方がよいです。 
- Dockerコマンドで設定したlocalhostにアクセスする
- 
        使用するLLMモデルを選択する
        - 
        初めての起動時には設定画面が表示されます。
          
- 
        それ以降は設定画面から使用するLLMモデルを変更できます。
          
 
- 
        初めての起動時には設定画面が表示されます。
        
- 
        設定画面からその他の設定をする
        - GitHub/GitLabと連携する場合にはGitHub Token/GitLab TokenにPATを入力する
- 
        日本語表示にしたい場合にはLanguageを「日本語」に変更する
        ※ あくまで日本語表示になるだけで、OpenHandsとのチャットの返答のデフォルトは英語のままです。   
 
基本的な使い方
今回はOpenAIのgpt-4o-miniを使って、下記の使い方を試します。
- 新しくコードを生成する
- GitHubと連携して既存のコードを編集する
1つのチャット (Conversations) ごとにUbuntu上の実行環境が用意され、複数のチャットを並行して行うことも可能です。なお、OpenHandsはバージョンや選択するモデルによってタスクのクオリティが異なります。
1. 新しくコードを生成する
今回はじゃんけんで遊べるアプリの作成を依頼してみます。
- 
        チャットの入力欄にOpenHandsへの指示を入力します。
        指示文 - 指示を与えない場合にはWorkspaceにファイルを作成しないため、明示的にWorkspaceでの作業およびファイルの保存を指示しています。
 Pythonを使って、コンピュータとじゃんけんで遊べるアプリを作成してください。 Workspaceで作業して作成したファイルを保存してください。入力画面   チャットの保存場所 - チャットが開始されると下記のように保存されるため、後からチャットを再開することができます。
   
- 
        入力後には下記の画面に遷移します。
        今回の指示の場合、回答を開始するまでに30秒~1分程度待つ必要がありました。   
- 
        タスクが完了するとWorkspaceにファイルが作成されます。
        ユーザーはターミナルに入力できないため、ターミナルでの実行もチャットで指示する必要があります。ただし、今回のようなインタラクティブな入力(ユーザーによるじゃんけんの手の入力)が必要な場合は実行に失敗してしまうようです。   
- 
        Workspaceに保存したファイルはVS Codeで開いて編集することができます。
        VS Code上ではファイルの編集のほか、ファイルのダウンロードやターミナルでの実行もすることができます。     
2. GitHubと連携して既存のコードを編集する
今回はテスト用に作成したGitHubリポジトリのファイルを編集します。
- 
        リポジトリを選択します。
        このとき、指示の入力欄には何も入力する必要がありません。   
- 
        選択後には下記の画面に遷移します。
        Workspaceにリポジトリの内容が反映されて、チャットが開始できるようになるまで1分程度かかりました。   
- 
        チャットでファイルの編集を依頼します。
        指示文 - ファイル名を具体的に指示しないと別のファイルを探したり勝手に作成してしまったりすることがあります。
 以下のとおりファイルの編集をお願いします。 編集ファイル: index.html 編集内容: 得意なことを「数学」から「国語」に変更
- 
        ファイルの編集が完了した後、「Push & Create PR」を選択します。
        今回はCommitまでしていますが、OpenHandsがどこまで対応するかはばらつきがあります。ただし、勝手にPushまですることはないようです。   
- 
        GitHub上でプルリクエストが作成されていることが確認できました。
          
おわりに
ここまで読んでいただき、ありがとうございました。
次回はOpenHandsの応用的な機能を試して紹介します。
参考
