完全自律型AIエンジニア「Devin」オープンソース化：「OpenHands」セットアップ＆運用ガイド

## はじめに

みなさん、**Devin**をご存知でしょうか？

Devinとは、米国のAIスタートアップ「Cognition」（またはCognition Labs）が開発した、完全自律型のAIソフトウェアエンジニアです。
従来のコード生成AIとは異なり、仕様の指示を受けるだけでなく、システム設計からコーディング、デバッグ、デプロイまで、ソフトウェア開発の全工程を自律的にこなす点が特徴です。

https://app.devin.ai/

本記事では、その**Devin AI**をオープンソースにする試み、**OpenHands** というオープンソースの AI エージェント フレームワークを使い、実際にどう導入し、どのように運用を進めればいいのかを解説します。

---

### 1. OpenHands とは？
**OpenHands** は自然言語による指示（プロンプト）で「コード修正・生成」「ファイル操作」「ブラウザ操作」「Issue解決」などを自動的に行える AI エージェント フレームワークです。  

https://github.com/All-Hands-AI/OpenHands

一番の特徴は、**MicroAgents** と呼ばれる小規模エージェントの集合体として設計されており、欲しい機能ごとにAIエージェントを組み合わせられる点。  
複数のプラグインやDockerベースのSandboxにも対応しているので、セキュリティや拡張性にも配慮しつつ運用が可能です。

---

### 2. リポジトリのクローンから初期ビルドまで

以下の例では **Docker** を使った簡単なセットアップ手順を紹介します。
ローカルで直接動かしたい場合は、後述の「8. ローカル開発用セットアップ方法」も参照してください。

#### (1) リポジトリをクローン
```bash
git clone https://github.com/All-Hands-AI/OpenHands.git
cd OpenHands
```

#### (2) 設定ファイルの用意（必要に応じて）
リポジトリ直下に `config.template.toml` があるので、必要ならこれをコピーして `config.toml` にリネームし、自分のAPIキーや好みの設定を追記します。

```bash
cp config.template.toml config.toml
# お好みで編集（OpenAI Keyなどを設定）
```

#### (3) Docker Compose で一気に立ち上げる
```bash
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無しで試したい」「細かいデバッグをしたい」という場合は以下をお試しください。

1. **Poetryインストール**  
   ```bash
   curl -sSL https://install.python-poetry.org | python3 -
   # または他の方法でPoetryをインストール
   ```
2. **依存関係のインストール**  
   ```bash
   git clone https://github.com/All-Hands-AI/OpenHands.git
   cd OpenHands
   poetry install
   ```
3. **サーバー起動**  
   ```bash
   poetry run python -m openhands.server.listen
   # もしくは `listen_socket.py` を使う場合などいろいろスクリプトあり
   ```
   これでバックエンドが起動します。`config.toml` で指定したポートなどを用いてアクセスできます。
4. **CLIモードで試す**  
   ```bash
   poetry run python -m openhands.core.main \
       -t "README.mdに対するtypo修正" \
       -c CodeActAgent \
       -m openai-llms
   ```
   などと実行すると、AIが実際にファイル編集やコマンド実行を行おうとします。  
   （モデル名 `-m openai-llms` は一例です。`openhands.llm` を参照してお好みのモデル設定を行ってください。）

5. **フロントエンド**  
   フロントエンドをローカルで動かしたい場合は `cd frontend && npm install && npm run dev`。  
   ポートが `3001` で立ち上がる想定なので、`http://localhost:3001/` にアクセスしてください。

---

### 9. まとめ：OpenHandsで自動化を加速しよう
OpenHandsは、  
- コード修正 → テスト → PR作成 → レビュー対応  
- AIベンチマーク評価やワークフロー可視化  
- セキュリティやSandboxによる安全な自動化実行  
を包括的に提供する強力なフレームワークです。

**導入ステップのヒント**:  
1. **ローカル or Docker で初期セットアップ**  
2. **UIまたはCLIモードでエージェント動作を体験**  
3. **GitHub ActionsなどCI/CDに統合し、PRラベル付けで自動修正**  
4. **セキュリティやSandboxを調整して本番運用**

実運用にあたっては、リポジトリ内の `docs/` ディレクトリやサンプルワークフロー（`.github/workflows`）を確認すると具体例がたくさん見られます。  
ぜひ本記事を参考にしていただき、OpenHandsを活用して新時代のAI自動化を開拓してみてください！

---

#### 参考リンク

https://qiita.com/lazy-kz/items/998ee4df7a53a081f08b

https://qiita.com/to3izo/items/9b44ec4f6a82f09a8af2

- [OpenHands GitHubリポジトリ](https://github.com/All-Hands-AI/OpenHands)  
- [フロントエンド設定方法](https://github.com/All-Hands-AI/OpenHands/tree/main/frontend)  
- [MicroAgentsのドキュメント](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)  
- [Evaluationフォルダのベンチマーク](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation)  
- [Sandboxに関するREADME](https://github.com/All-Hands-AI/OpenHands/tree/main/containers/e2b-sandbox)

以上、OpenHandsのセットアップ・運用方法の概要でした。皆さんのプロジェクトでもぜひお試しください！

---
### 会社紹介

**株式会社 Mosaica**  
最先端テクノロジーで社会課題を解決し、持続可能な未来を創造する IT カンパニー。
AI ソリューション、クラウド統合、DX 推進、経営コンサルティングなど包括的なサービスでビジネス変革を支援しています。  

詳しくは [公式サイト](https://mosaica.co.jp/) までお気軽にご相談ください。
公式サイト： https://mosaica.co.jp/