はじめに
みなさん、Devinをご存知でしょうか?
Devinとは、米国のAIスタートアップ「Cognition」(またはCognition Labs)が開発した、完全自律型のAIソフトウェアエンジニアです。
従来のコード生成AIとは異なり、仕様の指示を受けるだけでなく、システム設計からコーディング、デバッグ、デプロイまで、ソフトウェア開発の全工程を自律的にこなす点が特徴です。
本記事では、そのDevin AIをオープンソースにする試み、OpenHands というオープンソースの AI エージェント フレームワークを使い、実際にどう導入し、どのように運用を進めればいいのかを解説します。
1. OpenHands とは?
OpenHands は自然言語による指示(プロンプト)で「コード修正・生成」「ファイル操作」「ブラウザ操作」「Issue解決」などを自動的に行える AI エージェント フレームワークです。
一番の特徴は、MicroAgents と呼ばれる小規模エージェントの集合体として設計されており、欲しい機能ごとにAIエージェントを組み合わせられる点。
複数のプラグインやDockerベースのSandboxにも対応しているので、セキュリティや拡張性にも配慮しつつ運用が可能です。
2. リポジトリのクローンから初期ビルドまで
以下の例では Docker を使った簡単なセットアップ手順を紹介します。
ローカルで直接動かしたい場合は、後述の「8. ローカル開発用セットアップ方法」も参照してください。
(1) リポジトリをクローン
git clone https://github.com/All-Hands-AI/OpenHands.git
cd OpenHands
(2) 設定ファイルの用意(必要に応じて)
リポジトリ直下に config.template.toml
があるので、必要ならこれをコピーして config.toml
にリネームし、自分のAPIキーや好みの設定を追記します。
cp config.template.toml config.toml
# お好みで編集(OpenAI Keyなどを設定)
(3) Docker Compose で一気に立ち上げる
docker-compose up --build
これにより、バックエンド(Python, FastAPIベース)やフロントエンド(React/TypeScript)が含まれたコンテナが起動します。
完了すると、http://localhost:3000
(あるいは 3001
)などにアクセスできるようになります(docker-compose.yml
の設定によってポート番号が異なる場合があります)。
3. フロントエンドUIにアクセスしてみる
Webブラウザで http://localhost:3001/
を開き、OpenHandsフロントエンドUIにアクセス。
AIエージェントへの指示(「このファイルを編集して」「Issue #12 の内容を修正して」など)を自然言語で入力すれば、バックエンドが処理してコード変更やPR作成を自動実行してくれます。
- 設定画面 では、LLMモデルやセキュリティ設定などを切り替えることが可能。
- 会話リストやログ により、過去のやり取りを振り返って結果を確認することもできます。
4. どんなことができるのか? 機能概要
4-1. 自然言語によるコード修正・生成
例:「
src/main.py
のバグを直して」 → AIエージェントがファイル内容を変更し、差分をGit管理。
4-2. Issue・PR連携
例:Issueを「openhands」ラベル付きで作成 → OpenHandsが自動的に修正ブランチを切り、PRを生成しようとする。
4-3. ブラウザ操作やコマンド実行
例:「GoogleでPythonのリファレンスを開いて」→ AIエージェントが内部ブラウザツールを呼び出し検索結果を確認…
例:「npm install express
を実行して」→ Docker内で実際にコマンドを走らせる。
5. MicroAgents の活用例
OpenHands の核心は、小さな「マイクロエージェント」を組み合わせる設計にあります。
- typo_fixer_agent: コードのタイポ修正に特化
- commit_writer: Gitのコミットメッセージ生成
- repo_explorer: リポジトリ全体をスキャンし構造をまとめる
- manager: 必要な複数エージェントを連携して大きなタスクを処理
自分のプロジェクトに合わせて microagents/
フォルダ内の定義ファイルを編集し、独自のマイクロエージェントを作成すれば、さらに自動化を柔軟に拡張できます。
6. CI/CD と評価 (Evaluation) の統合
6-1. GitHub Actionsでのテスト
.github/workflows/
フォルダ内に、以下のようなワークフローが用意されています。
-
lint.yml
: コードのスタイルチェック -
py-unit-tests.yml
: Pythonテストの自動実行 -
fe-unit-tests.yml
: フロントエンド(React/TypeScript)テスト -
eval-runner.yml
:evaluation/
フォルダの自動ベンチマーク
プルリク時にこれらが走るように設定すれば、AIエージェントが行った修正の品質評価を自動で回せます。
6-2. ベンチマーク (evaluation/
ディレクトリ)
OpenHands独自の評価スクリプト一式が格納されています。
たとえば mint
, swe_bench
, humanevalfix
など多彩なケースがあり、Pythonで poetry run python evaluation/benchmarks/xxx/run_infer.py
のような形式で実行可能。
外部のCIサーバーからもスクリプトを叩く形で連携すれば「AIが書いたコードが実用レベルか」を自動チェックできます。
7. セキュリティとSandbox
AIエージェントが勝手に危険なコマンドを実行しないか 心配な場合は、以下を考慮します。
-
e2b-sandbox
containers/e2b-sandbox/
下にあるDockerfileは、外部からのコマンドを安全に実行するためのSandbox構築用です。 -
Invariant Analyzer
openhands/security/invariant
で、ツールコール(コマンド実行など)が危険かどうかを検知する仕組みが入っており、リスクが高ければ実行をブロックできます。
config.toml などでアナライザを選択したり、カスタムポリシーを加筆して独自ルールを設定したりすることで、運用要件に合わせたセキュリティ対策を行えます。
8. ローカル開発用セットアップ方法
「Docker無しで試したい」「細かいデバッグをしたい」という場合は以下をお試しください。
-
Poetryインストール
curl -sSL https://install.python-poetry.org | python3 - # または他の方法でPoetryをインストール
-
依存関係のインストール
git clone https://github.com/All-Hands-AI/OpenHands.git cd OpenHands poetry install
-
サーバー起動
poetry run python -m openhands.server.listen # もしくは `listen_socket.py` を使う場合などいろいろスクリプトあり
これでバックエンドが起動します。
config.toml
で指定したポートなどを用いてアクセスできます。 -
CLIモードで試す
poetry run python -m openhands.core.main \ -t "README.mdに対するtypo修正" \ -c CodeActAgent \ -m openai-llms
などと実行すると、AIが実際にファイル編集やコマンド実行を行おうとします。
(モデル名-m openai-llms
は一例です。openhands.llm
を参照してお好みのモデル設定を行ってください。) -
フロントエンド
フロントエンドをローカルで動かしたい場合はcd frontend && npm install && npm run dev
。
ポートが3001
で立ち上がる想定なので、http://localhost:3001/
にアクセスしてください。
9. まとめ:OpenHandsで自動化を加速しよう
OpenHandsは、
- コード修正 → テスト → PR作成 → レビュー対応
- AIベンチマーク評価やワークフロー可視化
- セキュリティやSandboxによる安全な自動化実行
を包括的に提供する強力なフレームワークです。
導入ステップのヒント:
- ローカル or Docker で初期セットアップ
- UIまたはCLIモードでエージェント動作を体験
- GitHub ActionsなどCI/CDに統合し、PRラベル付けで自動修正
- セキュリティやSandboxを調整して本番運用
実運用にあたっては、リポジトリ内の docs/
ディレクトリやサンプルワークフロー(.github/workflows
)を確認すると具体例がたくさん見られます。
ぜひ本記事を参考にしていただき、OpenHandsを活用して新時代のAI自動化を開拓してみてください!
参考リンク
以上、OpenHandsのセットアップ・運用方法の概要でした。皆さんのプロジェクトでもぜひお試しください!