OpenHands AI 軟體開發代理

使用 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

  1. 開啟設定頁面
  2. 選擇 LLM Provider(Anthropic、OpenAI、Ollama)
  3. 輸入 API Key
  4. 選擇模型

使用方式

基本對話

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': '解釋這段程式碼'}
)

相關連結

延伸閱讀

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy