OpenHands 推出開源 Software Agent SDK
Introducing the OpenHands Software Agent SDK
OpenHands 推出以 MIT 授權開源的 OpenHands Software Agent SDK,供開發者建立可配合不同工作流程的編碼智能體。SDK 支援不同 LLM 供應商、自訂工具與技能、對話持久化及 Docker 工作區,並示範 Datadog 錯誤除錯、程式碼審查和 GitHub Actions 自動化流程。
文章由自訂工具、技能、對話持久化及 Docker 工作區,延伸至自動除錯和程式碼審查案例,呈現 SDK 支援不同編碼工作流程的方式。
今天我們推出 OpenHands SDK,這是一款全新的開源 MIT 授權工具,讓用戶只需幾行程式碼,便能快速啟動功能強大的編碼 Agent,並按任何開發者的工作流程進行自訂。
從「共同開發」到「基於其上開發」
愈來愈多軟件工程師使用 AI Agent 協助處理編碼工作,方式包括透過 Claude Code 或 OpenHands CLI 等命令列介面、透過 VS Code 或 Cursor 等 IDE 的整合功能,或將 Agent 嵌入開發者工作流程,例如 OpenHands GitHub Actions 或 Slack Integration。
藉助能夠理解程式碼、推理軟件任務,並採取編輯檔案、執行測試及建立 pull request 等行動的 AI Agent。 然而,愈來愈清楚的是,對於能夠建立軟件的 Agent 而言,存在一個強大的
以下是一些已有人使用 OpenHands 的例子:
-
自訂除錯 Agent,可分析應用程式日誌並建議修正方法
-
自動化程式碼審查機械人,可理解完整的程式碼脈絡並提供詳細意見
-
資料匯入 Agent,可接收用戶提供的非結構化資料資料夾,並將資料上載至資料庫
-
安全審計 Agent,可調查軟件中的漏洞,並建立 pull request 修正問題
要在其上開發,需要甚麼?
根據我們觀察數以千計的開發者使用 OpenHands 所獲得的經驗,我們瞭解到,要真正支援「基於其上開發」這種應用場景,就需要為在編碼 Agent 之上進行開發的開發者,打造全新的體驗。
基於這些經驗,我們從零開始設計及建構 OpenHands Software Agent SDK,並着眼於以下幾個要點:
-
簡單易用:SDK 應易於上手,只需極少的設定和配置,便可建立能與多種工作流程無縫配合的 Agent。
-
效能:SDK 應開箱即用,提供適用於正式環境的效能,而毋須大量提示詞工程或優化。
-
靈活性:SDK 應與模型無關,讓開發者可使用所選的任何 LLM 供應商,而不受特定供應商限制。
-
可自訂性:SDK 應讓開發者輕鬆建立自訂工具,並在有需要時(而且只有在有需要時)將工具整合至 Agent。
-
適用於正式環境:SDK 的設計應顧及企業需求,包括具類型安全的 API、錯誤處理、對話序列化及日誌記錄。
-
隨處執行:SDK 應可在開發者的電腦上本機執行,之後只需作出少量修改,便可在雲端啟動數以千計的執行個體。
你好,OpenHands SDK
只需幾行程式碼,就可以開始使用 OpenHands SDK。 以下是一個簡單例子,會建立一個配備三種內置工具的 Agent:bash 執行工具、檔案編輯工具及任務追蹤工具。
import os
from openhands.sdk import LLM, Conversation, Tool, Agent
from openhands.tools.execute_bash import TerminalTool
from openhands.tools.file_editor import FileEditorTool
from openhands.tools.task_tracker import TaskTrackerTool
llm = LLM(
model="anthropic/claude-sonnet-4-5-20250929",
api_key=os.getenv("LLM_API_KEY"),
)
agent = Agent(
llm=llm,
tools=[
Tool(name=TerminalTool.name),
Tool(name=FileEditorTool.name),
Tool(name=TaskTrackerTool.name),
],
)
conversation = Conversation(agent=agent, workspace=os.getcwd())
conversation.send_message("Write 3 facts about the current project into FACTS.txt.")
conversation.run()
儘管這個 Agent 十分簡單,但本質上與我們用來在 SWE-Bench Verified 等競爭激烈的排行榜上取得接近榜首成績的 Agent 相同。
自訂工作流程
SDK 提供豐富的自訂選項,讓你按特定需要調整 Agent:
自訂工具(例子):使用標準的行動/觀察模式,透過自訂工具擴展 Agent 的功能:
from openhands.sdk import Action, Observation, ToolDefinition
class GrepAction(Action):
pattern: str
path: str = "."
class GrepTool(ToolDefinition[GrepAction, GrepObservation]):
@classmethod
def create(cls, conv_state, bash_executor=None):
# Define your custom tool logic
return [cls(action_type=GrepAction, ...)]
技能與上下文(範例):根據關鍵字或條件注入特定領域知識:
from openhands.sdk import AgentContext, Skill
from openhands.sdk.context import KeywordTrigger
agent_context = AgentContext(
skills=[
Skill(
name="api-docs",
content="Follow REST API best practices...",
trigger=KeywordTrigger(keywords=["api", "endpoint"])
)
]
)
對話持續性(範例):儲存及還原 Agent 對話,以支援長時間執行的工作流程:
conversation = Conversation(
agent=agent,
workspace=cwd,
persistence_dir="./.conversations",
conversation_id=conversation_id
)
# Later, restore with the same conversation_id
Docker 工作區(範例):在隔離的 Docker 容器中執行 Agent,提升安全性及可擴展性:
from openhands.workspace import DockerWorkspace
with DockerWorkspace(
base_image="nikolaik/python-nodejs:python3.12-nodejs22",
host_port=8010,
) as workspace:
conversation = Conversation(agent=agent, workspace=workspace)
# Agent runs in isolated Docker environment
實際應用
為展示 OpenHands Software Agent SDK 的多樣用途,我們希望介紹三個工作流程。這些流程由我們建立,並每天用於自身的工作流程中。
自動除錯 Datadog 問題
我們建立了一個 GitHub Actions 工作流程(程式碼),可自動為 Datadog 的生產環境錯誤除錯。此工作流程會根據可設定的查詢擷取錯誤、建立或尋找現有的 GitHub 問題以追蹤錯誤、複製相關儲存庫作全面分析,並使用 OpenHands 代理程式找出根本原因,再以問題留言形式發佈詳細的除錯分析。
例如,在調查一個發生超過 1,500 次的 ClientDisconnect 錯誤時,我們的 Agent 跨多個儲存庫分析程式碼,找出錯誤源自 github.py 和 gitlab.py 的確切位置,確定根本原因是未處理用戶端斷線,並提出具體的錯誤處理改進建議,整個過程均自動完成。
自動程式碼審查
只需在任何拉取請求上加上簡單標籤,OpenHands 便會提供全面的程式碼審查(程式碼),在整個儲存庫的完整脈絡中分析變更。Agent 會檢查程式碼質素、最佳做法及潛在的安全問題,並提供建設性意見,同時肯定良好的做法。
當 PR 加上 review-this 標籤時,工作流程便會啟動並執行分析,然後直接在拉取請求中發佈詳細的審查意見,為團隊提供一位隨時可用、瞭解整個程式碼庫的程式碼審查員。
可自訂的 GitHub 工作流程
為處理例行維護工作,我們建立了一個靈活的 GitHub Actions 工作流程(程式碼),可按排程或手動觸發執行任何自訂提示詞。這可用於自動更新文件、管理依賴項,以及處理其他定期工作。
團隊可以直接輸入提示詞,也可以透過網址提供提示詞,方便管理共用提示詞庫,並在多個儲存庫中一致地執行維護工作。
立即開始
OpenHands Agent SDK 現已在 GitHub 上提供。無論你要建立內部開發者工具、自動化程式碼維護工作,還是利用軟件作為工具達成其他目標,這個 SDK 都能提供所需的基礎。我們亦撰寫了一份詳盡的技術報告,深入探討 SDK 背後的技術細節,以及我們如何建立它;你可以在此處閲讀。
如果你想加入我們在 Slack 的社羣,歡迎提出任何問題;我們也樂見大家分享正在進行的工作。期待看到大家打造的成果!
來源:OpenHands 官方博客 · openhands.dev