OpenHands:モデルベースの開発者エージェント ローカル
はい、OpenHands(旧OpenDevin)は、任意のOpenAI互換エンドポイントを介してローカルモデルで動作します。ただし、エージェント型の処理としては最も要求が厳しいものです。270億〜320億パラメータと長いコンテキスト(最低22,000トークン、推奨32,768トークン)という水準を下回るモデルでは、エージェントが同じ処理を繰り返し、コマンドの出力を誤解し、間違ったファイルを変更します。
OpenHands はエージェントにターミナル、ブラウザー、リポジトリへのアクセスを与え、作業を任せます。エージェントは計画を立て、ファイルを変更し、サンドボックス内でコマンドを実行して出力を読み取り、タスクが完了するか、自ら断念するまでこの作業を繰り返します。ローカルモデルで動かすことは可能ですが、ほとんどの人が持っているものよりもはるかに大きなモデルが必要です。実際にどこが境目になるのか、プロジェクト自体が推奨する設定とともに紹介します。
#実際に何をしているか
あなたがフランス語でタスクを説明すると、エージェントはリポジトリを調べ、計画を立ててから、コマンドを実行し、結果を読み、ファイルを変更し、テストを再実行し、失敗の内容を読み、修正するというループで作業します。このループこそが製品の本体です。自動補完というより、ターミナルを使うインターンに近い存在です。
そこから次のような影響が生じます。反復のたびに、増大するコンテキストを使って一通りの生成を行うため、10段階のタスクには長いプロンプト10回分の処理が必要です。また、エージェントは提案するだけでなく実際に行動するため、その行動範囲はアクセスできるものすべてに及びます。だからこそ、サンドボックスは設定項目ではなく、設計の一部なのです。
#2026年のプロジェクト:Agent Canvas
このガイドでモデルの導入まで、キットでエディタ内でコードを書くコパイロットの導入まで進められます。
- 永久に利用できるオンラインスペース
- PDF + ファイル
- 生涯アップデート
OpenHandsはリリース当初はOpenDevinと呼ばれており、後に現在の名称に変更されました。All Hands AIによってメンテナンスされているこのリポジトリはMITライセンスで公開されており、2026年夏時点でGitHub上のスター数が89,000を超えています。プロジェクトはさらに拡大しており、単なる孤立した自律エージェントではなく、「コードエージェントと自動化のためのセルフホスト型コントロールセンター」として位置づけられています。単一のインターフェースからOpenHandsだけでなく、Claude Code、Codex、Geminiも制御できます。
具体的には、提供される仕組みは複数の構成要素に整理されました。Agent Canvas(操作インターフェース)、独自のエージェントを構築するためのSoftware Agent SDK、Agent Server、そして定期実行タスク用の自動化サーバーです。以前の単体で動作するローカルインターフェースは、このモジュール式アーキテクチャへの移行に伴い非推奨となりました。ここで説明するローカル利用の基本原則、つまりコンテナ化されたサンドボックス内でエージェントが動作するという点は変わりません。ただし、構成要素の名前や起動コマンドは、古いドキュメントごとに異なる場合があります。今でもOpenDevinという名前で検索結果に出てくるドキュメントも、その例です。
#モデルに求められる条件を率直に解説
| モデルのクラス | 現実的な結果 |
|---|---|
| 70〜80億 | 失敗します。コマンドの形式が不正で、出力を読み違え、同じファイルの処理を繰り返すループに陥ります。 |
| 140億 | 単一ファイルを対象とするごく簡単なタスクには、ときどき成功します。信頼性は低いです。 |
| 270〜320億 | 実用になる最低ラインです。範囲が狭く、要件が明確なタスクなら、役立つだけの頻度で成功します。 |
| 700億以上 | 判断力は明らかに高くなりますが、処理が遅いため、タスクを開始したら別のことをして待つほどです。 |
ベンチマークのスコアよりも重要なのは、期待される形式に正確に従ってツールを呼び出す能力と、長いコンテキストでも安定して動作する能力の2つです。エージェントは各ステップで、増え続ける履歴を読み直すためです。プロンプトから関数を書くのが非常に得意なモデルでも、処理を繰り返すループの中では使い物にならないことがあります。この用途では一般に、コード向けのモデルが同じサイズの対話モデルを上回ります。
プロジェクトの公式ドキュメントは2026年中に推奨を変更し、現在は最初に試すローカルモデルとしてQwen3.6-35B-A3Bを推奨しています。これはエージェントによるコーディング向けに設計されたMoE(混合エキスパート)モデルで、大きなコンテキストに対応し、LM Studio、Ollama、vLLM、SGLangで利用できます。ここでのMoEの利点は明確です。重みの総数は350億ですが、トークンごとに有効になるパラメータは30億だけなので、同程度の規模の密なモデルより生成が大幅に速く、必要なVRAMも350億パラメータの密なモデルより140億パラメータのモデルに近くなります。
#ローカルで実行する
- 01モデルを提供するOpenAI互換のエンドポイントでモデルを提供し、Ollamaを使う場合は、変数OLLAMA_CONTEXT_LENGTHの値を最低22,000(32,768を推奨)まで引き上げます。この設定は省略されがちですが、省略するとエージェントが自分自身の計画を忘れてしまいます。
- 02コンテナ構成でアプリケーションを起動するこのアプリケーションにはコンテナエンジン(Docker DesktopまたはDocker Engine)が必要です。エージェントのシェルはホスト上ではなく、コンテナ内で動作します。
- 03ローカルエンドポイントを接続先に指定するダミーのAPIキー(例:local-llm)と、コンテナからアクセスできるベースURLを使ってください。Docker Desktopでは、localhostではなく http://host.docker.internal:PORT/v1 を使います。localhostはコンテナ自身を指すためです。ツール呼び出しへの対応を宣言するのは、モデルが実際にその機能を使える場合だけにしてください。
- 04リポジトリを 1 つだけマウントするできれば、使い捨てのクローンを用意し、削除しても困らないブランチを使ってください。
- 05小さく、結果を検証できるタスクから始める失敗しているこのテストを修正し、このパラメータを追加し、この設定を更新してください。その後、diffを見直してください。
- 長いコンテキストでモデルを提供する
- ローカルモデルにコードをレビューしてもらう
- Cline:エディタに統合されたコーディングエージェント
- ローカルエージェント構築用の QuelLLM キット
- 公式ドキュメント:OpenHands でローカルモデルを使う
- GitHub上のOpenHandsの公式リポジトリ
- OpenHands(2026年)の独立したレビュー
#タスクの実際のコスト
エージェントが行うタスクでは、モデルの呼び出しは1回では済まず、一連の呼び出しが必要です。履歴が蓄積されるため、各呼び出しのコンテキストは前回より長くなります。10回の反復が必要なタスクで、各ステップが履歴に平均800トークンを追加すると、10回目の呼び出しでは、応答を生成する前にすでに数千トークンのコンテキストを読み直すことになります。ローカルでの計算では、各ターンでプロンプトの読み込み時間(「プリフィル」)が生成時間に加わります。そのため、320億パラメータのモデルを使うローカルエージェントでは、通常の補完のように秒単位ではなく、タスクごとに分単位の時間がかかります。
これはAPI請求料を支払わないことの見返りです。コストが消えるのではなく、グラフィックカードと待機時間へと移るだけです。エージェントがループを回して20回の反復をトリガーする、不適切に指定されたタスクの場合、このコストの移転は、同等のAPI呼び出しよりも、電気代と時間の面で急速に高価になります。
#具体的な例を挙げて説明します
現実的なタスクを例に挙げましょう。「test_export_csvテストが直近のコミット以降失敗しているので、修正してください」。320億パラメータクラスのモデルでは、通常の処理は5~8回の反復で完了します。テストと失敗メッセージを読み、該当するソースファイルを開き、原因について仮説を立て、修正し、テストを再実行し、新しい結果を確認して、必要に応じて調整します。各反復では、それまでの履歴全体を読み直すため、コンテキストウィンドウが決定的に重要になります。8,000トークンしかないと、エージェントは3~4ステップで流れを見失い、すでに却下した仮説を再び検討し始めます。
70億~80億パラメータのモデルでは、同じタスクでも、多くの場合は別の形で失敗します。テスト自体は正しく特定できても、再実行コマンドの形式を間違えたり、名前が似ている別の近隣ファイルを編集したりします。これは設定の誤りではありません。システムプロンプトの品質にかかわらず、ツール、結果、判断というループが要求する厳密な形式に対応するモデルの能力の限界です。コード補完ベンチマークで公表されているスコアが、ここではあまり予測の役に立たないのも、このためです。単独の関数の生成で高い評価を得たモデルでも、途中で脱線せず、一貫したツール呼び出しを10回続けることはできない場合があります。この二つの能力の相関のあり方は、モデルの訓練方法によって異なるためです。
#セキュリティはオプションではありません
- 環境内に機密情報を置かない
- エージェントは自身の環境を読み取り、その内容を表示できます。
- 一時的なブランチと作業用のクローン
- 未確定の変更が含まれる、普段使っている作業コピーは決して使わないでください。
- ネットワークアクセスの制限
- どこにでも接続できるエージェントは、読み取った情報をすべて外部に送信できてしまいます。
- 取得したコンテンツはすべて、原則として敵対的なものとして扱う
- チケットの説明やREADMEファイルには、エージェントに向けた指示が含まれていることがあります。その仕組みは、当サイトのプロンプトインジェクションに関するガイドで詳しく解説しています。
- 差分を一つずつ見直す
- 「テストが通過した」というのは、テストが通過したことを意味し、変更が正しいとは限りません。
#エージェントよりアシスタントが適している場合
| タスク | 最良のツール |
|---|---|
| 入力中の補完 | エディタ拡張機能 |
| ファイルごとに内容を説明できる変更 | ファイルを開いた状態で使う対話型アシスタント |
| 成功を確認する明確なテストがある、複数のステップからなるタスク | OpenHands、モデルが十分に大きな場合 |
| 自分でレビューできないコード | どちらも選ばない:結果を検証できないため |
まとめると、ローカルで使うOpenHandsは単なるおもちゃでも万能の代替ツールでもありません。270億パラメータ以上のモデルを32,000トークンのコンテキストとともに実際にメモリに収められるマシンと、自動テストや簡単なレビューで結果を判断できるほど範囲が限定されたタスクに使うべきツールです。このハードウェア要件を満たさない場合は、ファイルを開いた状態で従来の対話型アシスタントを使うほうが、処理を繰り返すばかりでいつまでも結果にたどり着かないエージェントよりも速く、信頼性も高くなります。
#FAQ
OpenHandsはローカルモデルで動作できますか?+
最低限どの程度のモデルが必要ですか?+
Ollama ではコンテキスト長をどのくらいに設定すべきですか?+
自分のマシンで実行しても安全ですか?+
どのくらいのVRAMが必要ですか?+
なぜエージェントは同じ手順を繰り返すのですか?+
OpenHandsは現在もOpenDevinと同じプロジェクトですか?+
ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。