OpenHands 1.18 教學:Agent Canvas、LLM profiles 與 workspace 排錯
OpenHands 是可以在工作環境中讀取檔案、修改程式碼、執行終端機指令,再依測試結果繼續工作的開源 AI Agent。它和只在編輯器裡補完程式碼的工具不同,因此安裝時不只要確認模型能回覆,也要確認 Docker、掛載路徑、權限和驗證流程都可控。
本文已依 OpenHands 1.18.0(2026-09-11)、前一版 1.17.0(2026-09-09) release 與目前官方文件更新。你會完成本機 Agent Canvas、LLM profile 與 API Key 設定、workspace 路徑確認和第一個可回復任務,也會知道 Docker、Linux、Windows WSL、automation 權限與舊映像問題要分開排查。本文是官方 release 與文件查核,沒有在本機啟動 OpenHands;實際模型、雲端權限和瀏覽器 UI 仍應在你的環境驗證。
OpenHands 1.17、1.18 有哪些值得注意的變更
這兩個版本把重點從「能不能啟動 Agent」推進到「誰能管理 automation、每次執行使用哪個身份,以及不同工作階段要用哪個模型」。升級後先對照這張表,再回到自己的 workspace 做小任務驗證:
| 版本與變更 | 實際用途與升級檢查 |
|---|---|
| 1.17:Cloud LLM provider connections 與 Cloud settings 入口整理;目前文件提供 LLM profiles | 先確認 provider、model、Base URL 和 API Key 仍指向預期環境;不要把舊 conversation 的模型狀態當成新設定已套用 |
| 1.17:automation 權限拆成 view/manage,並顯示 task outcome | 團隊共享時分開驗證誰能看、誰能編輯、誰能重新啟用;測試完成、失敗和被取消的結果是否可辨識 |
| 1.17:custom cron 可編輯、conversation tags/filtering、local Planner | 重新檢查排程、標籤與本機規劃流程,避免升級後仍用舊入口或錯誤的 cron |
1.17:conversation start 自動載入 workspace hooks、self-hosted 支援 --disable-telemetry | 先盤點 hooks 會讀取或修改哪些檔案;需要關閉遙測時,把旗標加入實際啟動命令並記錄驗證結果 |
| 1.18:只有 automation creator 能重新啟用,Cloud backend 也能編輯 automation | 失敗後不要只看「按鈕還在不在」,要用不同身份測試停用、編輯與重新啟用的權限邊界 |
| 1.18:顯示 automation 執行身份、Canvas 使用資料庫驅動的免費/預設模型旗標 | 執行前確認實際身份與模型,不要用帳號名稱、舊快取或畫面上的預設字樣推論費用與權限 |
| 1.18:Cloud settings 傳遞 active organization、鎖定 Cloud 時隱藏不適用頁面,ACP harness 要明確決定 | 多組織或 Cloud-only 環境先驗證目前 organization;新增 ACP harness 時逐一同意,不要讓 registry 項目默默啟用 |
| 1.18:圖片附件可開啟原尺寸、加入 PR design document Skill | 需要查看截圖或規格時可直接核對原圖;啟用新 Skill 前仍要依 workspace 的 allow-list 和資料範圍審查 |
這些是產品功能與 bug fix,不代表 Agent 會自動安全地修改任何 repository。仍要用 Git branch、限定掛載目錄和可驗證的小任務控制變更範圍。
從 1.16 升到 1.18,先檢查四個地方
升級後不要只看首頁能否開啟。用同一個低風險 workspace 驗證:
- Provider 與 LLM profiles:在
Settings→LLM確認 provider、model、Base URL 和 API Key,並列出可用 profile。官方文件目前允許最多 10 個 profile;新的設定會套用到新 conversation,舊 conversation 可能要重新啟動。 - 切換模型的可觀察性:用 profile selector 或
/model切換,確認切換後只影響後續 LLM call,conversation history、檔案和 task state 仍保留。若 Agent 使用SwitchLLMTool,也要把成功或錯誤事件列入驗證。 - Automation 身份與權限:建立可刪除或可停用的測試 automation,分別用 creator 和其他成員檢查 view、manage、edit 與 re-enable;同時記錄畫面顯示的執行身份,不要把 Cloud 帳號身份當成 automation 身份。
- Workspace hooks、Skills 與 ACP:確認 conversation 開始時會自動載入哪些 hooks,列出需要的 Skills allow-list,對每個 ACP harness 做明確選擇。若是 self-hosted 環境,再確認
--disable-telemetry是否符合你的部署政策。
Linux desktop、local Planner 和 Cloud settings 是不同工作流,不等於既有 Docker deployment 要立刻搬遷。團隊已用 container 固定版本與 workspace 的話,先維持原路徑升級;只有需要桌面體驗或 Cloud automation 的使用者,再於隔離目錄測試對應入口。
開始前的環境與安全邊界
官方本機設定路徑需要:
- Docker Desktop 或 Docker Engine 正在執行,
docker ps能正常完成。 - Python 3.12 以上版本。
uv套件工具;預設 MCP server 也會使用它。- 可用的模型 API Key,或已設定好的本機模型端點。
macOS 可以直接在終端機執行;Linux 依官方 Docker 環境準備。Windows 原生 PowerShell 和 Command Prompt 不是本文的執行入口,請先使用 WSL,再確認 Docker Desktop 已啟用 WSL 2 engine 和該 distribution 的整合。
在把 repository 交給 Agent 前,先建立 Git branch、執行 git status --short,並確認目前工作目錄沒有你不想被讀取或修改的憑證。第一次測試最好使用不含 secrets 的小型專案。
掛載目錄代表 Agent 可以修改檔案
--mount-cwd會把目前所在的資料夾掛載給 OpenHands。它不是唯讀模式;請先確認目前路徑、Git 狀態和檔案權限,再啟動 Agent。
用官方 CLI launcher 安裝
先依 uv 官方安裝說明 安裝 uv,再安裝 OpenHands:
uv tool install openhands --python 3.12進入準備交給 Agent 的專案目錄,啟動 GUI:
cd /path/to/your-projectopenhands serve --mount-cwdCLI launcher 會檢查 Docker、拉取需要的映像並啟動 GUI server。完成後開啟:
http://localhost:3000如果只想先確認介面,不希望 OpenHands 讀取目前專案,可以在不含敏感檔案的目錄執行:
openhands serve日後更新 launcher:
uv tool upgrade openhands --python 3.12官方也提供直接執行 Docker image 的方式,但 image、agent-server tag 和啟動參數會隨版本更新。第一次安裝優先使用 launcher;若要固定 image 或部署到共用環境,應以目前 Local setup 官方文件 的指令為準,不要複製舊文章中的 ghcr.io/all-hands-ai/ 路徑。
設定 LLM provider、model 與 API Key
第一次開啟 OpenHands 時會看到設定流程,也可以進入 Settings → LLM。基本設定依序完成:
- 在
LLM Provider選擇供應商。 - 在
LLM Model選擇模型。 - 填入
API Key。 - 按下
Save Changes。
目前官方 LLM 文件列出 OpenHands、Anthropic、OpenAI 和 Mistral AI 等已驗證供應商。模型名稱、可用性和費用都會變動,請以設定頁當下的清單與供應商文件為準,不要把舊文章中的 model id 當成固定答案。
如果基本清單沒有你的端點,開啟 Advanced:
Custom Model:依 LiteLLM provider 格式填入 provider prefix。Base URL:填入相容 API 或自架服務的端點。API Key:填入該端點的金鑰。
設定變更會套用到新的 conversation;官方文件提醒,舊 conversation 若要使用新的 LLM,可能需要重新啟動。儲存設定會建立或更新 LLM profile,最多可保留 10 個。進入對話後可用 profile selector 或 /model <profile-name> 切換;切換在下一次 LLM call 生效,不會重跑已完成的訊息。
/model/model gpt-5.5-reviewprofile 名稱必須和實際儲存的名稱完全一致。若 local profile 在儲存時驗證失敗,先修正 API Key、model 或 backend 連線;不要把錯誤 profile 寫進自動化 prompt,期待 Agent 自己猜出正確名稱。
API Key 與費用雲端模型通常需要另外計費。先在供應商後台設定用量上限,不要把 Key 寫進 repository、prompt 或 shell history。OpenHands Cloud 的登入和模型額度也有自己的條件,不能把網站帳號當成無限 API 額度。
先確認 workspace path,再交付任務
啟動後先在 Files view 查看 workspace path,確認它就是預期的 repository。chat 中的檔案路徑在 1.16 已可連到 Files drawer,但連結方便不代表路徑一定正確;仍要核對掛載根目錄,不要只看瀏覽器 URL 或對話標題。
第一個任務先要求唯讀盤點:
先讀取這個專案的 README 與套件腳本,不要修改檔案。告訴我使用哪個套件管理器、可執行哪些測試,並列出你讀過的檔案。確認 workspace、模型和工具呼叫都正常後,再交付一個小而可回復的修改:
建立 hello-openhands.txt,內容只有 OpenHands is ready。完成後讀回檔案,並執行 git diff -- hello-openhands.txt 回報結果。不要修改其他檔案。最後回到自己的終端機驗證:
git status --shortgit diff -- hello-openhands.txt這個循序流程能確認四件事:Agent 看到正確目錄、模型能呼叫工具、檔案真的被建立,以及實際 diff 沒超出要求。若你同時使用多個 coding agent,可以先用 Git worktree 管理多個 AI coding agent 分離工作副本,降低互相覆蓋檔案的機會。
常見故障排除
Launch docker client failed
先確認 Docker daemon,而不是先重裝 OpenHands:
docker ps如果命令本身失敗,先啟動或修復 Docker,再重新執行 openhands serve。使用 Docker Desktop 時,依目前環境檢查 Docker socket、WSL 2 engine 和必要的整合設定。
一開始就出現 Permission Denied
先看 OpenHands 狀態目錄和 workspace 的擁有者:
ls -ld ~/.openhandsls -ld /path/to/your-project如果 ~/.openhands 意外屬於 root,確認路徑後再把擁有者改回目前使用者,而不是把整個家目錄開成所有人可寫:
sudo chown -R "$(id -un)":"$(id -gn)" ~/.openhands修改前先確認沒有把命令套到錯誤目錄;workspace 也必須讓執行 OpenHands 的使用者擁有必要權限。
Windows 能開介面,但指令或掛載異常
確認 uv、openhands 和 Docker 相關命令都在 WSL distribution 中執行,不要混用 PowerShell 的路徑。再到 Docker Desktop 檢查 WSL 2 engine 和該 distribution 的 integration;若 GUI 可開但 Files view 路徑不對,先停止服務並從正確的 WSL workspace 重新執行 openhands serve --mount-cwd。
舊教學的 Docker image 拉不到
舊文章可能仍使用 All-Hands-AI 組織或 ghcr.io/all-hands-ai/ image。OpenHands 已改用新的組織與文件路徑;不要只替換一個 tag,請回到官方 Local setup 文件重新確認 image、agent-server 和版本組合。CLI launcher 能減少手動拼接這些版本的機會。
Agent 像聊天機器人,不會操作檔案
依序檢查:
- 是否用
--mount-cwd啟動,且啟動時所在路徑正確。 - Files view 顯示的 workspace path 是否就是目標 repository。
- Agent 是否有讀取和寫入該目錄的權限。
- LLM provider、model 和 API Key 是否已儲存到目前 conversation 使用的設定。
- 本機模型的 context length 是否足夠,是否持續出現工具格式錯誤。
前四項都正常但仍失敗時,問題可能在模型能力或相容端點,不一定是 OpenHands 安裝錯誤。先改用一個小任務和官方文件列出的 provider 做對照。
OpenHands CLI 的另一種入口
安裝 launcher 後,也可以在終端機使用互動式 CLI:
openhands loginopenhandsCLI 會引導登入 OpenHands Cloud 或設定模型;也可以直接帶入小型任務:
openhands -t "Read the test failure and explain the likely cause without editing files"GUI 適合觀察完整執行過程,CLI 適合已經在終端機工作的開發者。兩者都應遵守同一個原則:先限制 workspace,要求 Agent 回報驗證,再人工查看 diff。
如果你正在比較終端機 coding agent,可以接著看 OpenCode Go 的安裝與模型設定;那篇討論另一種終端機工作流,這篇則聚焦 OpenHands 的 Docker 隔離、workspace 掛載和 Agent 驗證。
常見問題
Q: OpenHands 1.18 一定要使用 Docker 嗎?
A: 官方目前的本機 GUI launcher 流程會檢查並使用 Docker;文件也提供傳統 pip 安裝,但預設 MCP server 仍需要 uv,因此不能把「安裝 Python 套件」理解成完全不需要 Docker 的等價路徑。依你的執行模式查看目前官方文件。
Q: 設定了新的 LLM,舊 conversation 為什麼還像在用舊模型?
A: 官方 LLM 設定文件說明,新的 LLM 會套用到新的 conversations;舊 conversation 可能需要重新啟動。先在 Settings → LLM 儲存 profile,再用 profile selector 或 /model 切換;若名稱不存在或 backend 驗證失敗,先修正 profile,而不是反覆重送任務。
Q: 升級後原本能用的 Skill 不見了,該重裝嗎?
A: 先不要。先查看 Agent 設定裡該 Skill 是否被允許,再檢查 workspace hooks、backend 和 ACP harness 是否讓該工具可用。只有確認套件本身不存在時,才進入重裝流程。
Q: --mount-cwd 可以掛載整個家目錄嗎?
A: 不建議。它會讓 Agent 看到並可能修改掛載範圍內的檔案;請只掛載專案 workspace,先移除 secrets,並以 Git branch 和可回復的小任務驗證。若需要跨多個專案工作,使用分開的 worktree 或專用資料夾。
參考資料:
OpenHands v1.18.0 release notes
OpenHands v1.17.0 release notes
回報錯字、失效連結,或告訴我你想看的延伸主題。