使用 OpenHands 讓 AI 自動完成軟體開發任務,支援程式撰寫、除錯、測試等功能
專案簡介
OpenHands(前身為 OpenDevin)是一個開源的 AI 軟體開發代理平台。它能讓 AI 像人類開發者一樣操作電腦,執行程式撰寫、終端機指令、網頁瀏覽等任務。
GitHub Stars: 67K+
主要功能
- 自主開發 - AI 自動完成程式撰寫任務
- 終端操作 - 執行 shell 指令和腳本
- 瀏覽器操作 - 網頁搜尋和資料收集
- 檔案編輯 - 讀寫程式碼檔案
- 多模型支援 - Claude、GPT-4、本地模型
快速開始
Docker 部署
1
2
3
4
5
6
7
8
9
10
| docker pull docker.all-hands.dev/all-hands-ai/runtime:0.21-nikolaik
docker run -it --rm \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.21-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands:/root/.openhands \
-p 3000:3000 \
--name openhands \
docker.all-hands.dev/all-hands-ai/openhands:0.21
|
訪問 http://localhost:3000
設定 LLM
- 開啟設定頁面
- 選擇 LLM Provider(Anthropic、OpenAI、Ollama)
- 輸入 API Key
- 選擇模型
使用方式
基本對話
1
2
3
4
5
6
7
8
| User: 幫我建立一個 Python FastAPI 專案,包含使用者認證功能
OpenHands:
1. 建立專案結構
2. 安裝依賴套件
3. 撰寫認證邏輯
4. 建立 API 端點
5. 新增測試
|
程式碼修改
1
2
3
4
5
6
7
| User: 修復 src/auth.py 中的 SQL Injection 漏洞
OpenHands:
1. 讀取檔案內容
2. 識別漏洞位置
3. 使用參數化查詢修復
4. 驗證修改結果
|
除錯任務
1
2
3
4
5
6
7
8
| User: 這個 Python 腳本執行時報錯,請幫我修復
[貼上錯誤訊息]
OpenHands:
1. 分析錯誤訊息
2. 檢查相關程式碼
3. 找出問題根因
4. 提供修復方案並執行
|
進階設定
自訂工作空間
1
2
3
4
| docker run -it --rm \
-v /path/to/your/project:/opt/workspace \
-e WORKSPACE_MOUNT_PATH=/opt/workspace \
...
|
使用本地模型
1
2
3
| # 使用 Ollama
-e LLM_MODEL=ollama/llama3.3
-e LLM_BASE_URL=http://host.docker.internal:11434
|
環境變數
1
2
3
4
5
6
7
8
9
10
11
| # LLM 設定
LLM_MODEL=anthropic/claude-3-5-sonnet-20241022
LLM_API_KEY=your-api-key
# 沙盒設定
SANDBOX_USER_ID=1000
SANDBOX_TIMEOUT=300
# 日誌
LOG_ALL_EVENTS=true
DEBUG=true
|
Agent 能力
可執行的動作
| 動作 | 說明 |
|---|
run | 執行 shell 指令 |
read | 讀取檔案 |
write | 寫入檔案 |
browse | 瀏覽網頁 |
think | 規劃下一步 |
finish | 完成任務 |
範例工作流程
1
2
3
4
5
6
7
| # OpenHands 內部執行流程
1. Think: 分析使用者需求
2. Run: pip install fastapi uvicorn
3. Write: 建立 main.py
4. Write: 建立 requirements.txt
5. Run: python -m pytest tests/
6. Finish: 任務完成
|
安全考量
沙盒隔離
OpenHands 在 Docker 容器中執行,與主機系統隔離:
1
2
3
4
5
6
| # 限制網路存取
--network none
# 限制資源
--memory=4g
--cpus=2
|
權限控制
1
2
3
4
5
| # 唯讀掛載
-v /path/to/code:/workspace:ro
# 非 root 使用者
-e SANDBOX_USER_ID=1000
|
整合開發流程
GitHub 整合
1
2
3
4
5
6
7
8
9
10
11
| # .github/workflows/openhands.yml
name: AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run OpenHands Review
run: |
# 呼叫 OpenHands API 進行程式碼審查
|
VS Code 整合
透過 API 與編輯器整合:
1
2
3
4
5
6
| import requests
response = requests.post(
'http://localhost:3000/api/chat',
json={'message': '解釋這段程式碼'}
)
|
相關連結
延伸閱讀