跳到主要內容

【2026 最新】WebHarbor 教學:單站登入、改資料與重設重跑,怎麼驗收 Agent?

最後更新: ·
WebHarbor 教學:獨立驗收與重設重跑的原創概念圖

你請瀏覽器 Agent 登入、改一個名字,它說「完成了」。重新整理後,名字真的留下來了嗎?下一輪測試,又能不能回到相同起點?這篇 WebHarbor 教學,帶你把「會點網頁」變成能核對資料、能重設重跑的練習。

寫給第一次接觸網站測試環境、願意在終端機貼上指令的新手。先用一個本機站點做小任務,再看官方任務與 verifier(驗收程式)怎麼接。你需要已可使用的 Docker 與一套能操作本機瀏覽器的 Agent;尚未準備好,也能先寫出考題與驗收條件。

本文依 2026 年 11 月 5 日查閱的官方文件與程式碼整理,程式來源固定為 db506e3。本次環境未提供 Docker,未啟動鏡像或執行 Agent;以下是操作與驗收設計,不填入執行成功率。

先說結論:可重跑練習=同版環境+明確任務+獨立驗收+回到起點

把 WebHarbor 想成有道具、有帳號、可以重新佈景的網站練習場。Agent 是演員,任務是劇本,verifier 是拿著清單驗收的人。舞台能重設,才容易分清這輪失敗是場景壞了,還是操作做錯。

  • 先只選一站;本篇用 Amazon 風格的本機鏡像,網址是 http://127.0.0.1:40001。
  • 先查資料,再讓 Agent 修改,最後自己讀回;完成訊息只是待驗回報。
  • 重設資料與清掉瀏覽器登入狀態分開做,確認起點後才重跑。

一、WebHarbor 教學:先分清五個零件

① 「練習場」是網站環境。鏡像有自己的網頁、登入和資料庫;你改動的是本機資料。它提供一個可控制的操作對象,方便收集成功與失敗案例。

② 「考卷」是任務。一題要寫清楚起始網址、可用帳號、要做的事與完成條件。③ 「演員」是模型加瀏覽器 Agent。WebHarbor 環境和執行操作的 Agent 是不同部分;如何看畫面、點按鈕,交給既有工具。可以先讀 Agent Harness 的分工。

④ 「驗收員」是 verifier。它按題目規則檢查結果。⑤ 「重新佈景」是 reset。把可變資料回復 seed,也就是環境附帶的初始資料;瀏覽器 cookie 則要另行處理。這五件事對齊,才有一張能比較的成績單。

WebHarbor 教學:操作、資料驗收與重設重跑的流程
AlphaLab 原創流程示意:先驗實際資料,再回到起點;不是產品介面或執行截圖。

開始前先確定用途:在 11 月 4 日的官方倉庫授權討論,貢獻者 Raibows 回覆,正式授權仍在處理,當前意圖為非商業與研究用途。本篇將練習限定於個人非商業研究;企業產品整合、再散布環境或商用訓練,先取得明確授權再做。

二、第一步:只啟動一個站,先把連接埠接對

痛點是「下載一大包,卻不知道哪個網址能開」。解法是單站映像。依 官方站點 metadata,Amazon 的映像為 wildawm/webharbor:amazon-v1,站內連接埠是 40001。以下在 macOS/Linux 終端機執行;先確認 Docker Engine 已可連線。

docker version
docker pull wildawm/webharbor:amazon-v1
docker image inspect wildawm/webharbor:amazon-v1 --format '{{index .RepoDigests 0}}' > image-ref.txt
docker run -d --name wh-amazon --pull=never   -p 127.0.0.1:40001:40001   wildawm/webharbor:amazon-v1
docker logs --tail 40 wh-amazon
curl --fail http://127.0.0.1:40001/

上方每行各是一個命令。docker version 應同時顯示可連線的 Server;若只有 Client 或出現 daemon 錯誤,先修好 Docker。若提示映像架構不相容,核對電腦架構與 Docker 的模擬支援,別把啟動失敗記成 Agent 答錯。容器名稱已占用時,先確認那是不是上一次練習,不強行刪除別人的容器。

這裡左邊的 127.0.0.1:40001 是你的電腦,右邊的 40001 是容器內網站。Docker 官方連接埠文件說明,指定 loopback 位址能限制發布的入口;第一輪也別部署到公網或分享給區網。image-ref.txt 留下這次下載的 digest,避免之後同名標籤更新而換了材料。

在自己的瀏覽器開上方網址,確認看到本機首頁。Agent 若跑在遠端機器,它的 localhost 指向遠端自己;先解決可達性,別順手改接真實購物網站。這篇預設 Agent 的瀏覽器與 Docker 在同一台電腦。

三、WebHarbor 教學的第一題:登入後,只改一個名字

痛點是「改成功」沒有明確答案。解法是先替一個欄位訂完成條件。本篇自訂練習用官方程式中的假帳號 alice.j@test.com、密碼 TestPass123!,將姓名從 Alice Johnson 改成 Harbor Learner。這不是官方 benchmark 題目,也不計入其分數。

依 登入、種子帳號與個人資料路由,入口依序是 /login、/account/edit;編輯頁模板把姓名欄標為 Full Name,保存按鈕為 Save Changes。先人工登入確認帳號存在、姓名符合起點,再登出並開一個乾淨的瀏覽器工作階段。

把以下任務交給你已有的瀏覽器 Agent。它應只獲得瀏覽器操作能力;資料庫讀取、Docker 管理與驗收檔案留在操作者手上。文字限制用來說清任務,實際可用工具與網路範圍仍要在 Agent 執行設定裡限制。

只操作 http://127.0.0.1:40001 的本機練習站。
以 alice.j@test.com / TestPass123! 登入。
打開 /account/edit,把 Full Name 改成 Harbor Learner,按 Save Changes。
其餘欄位保持原值;不購買、不新增地址、不更改密碼。
重新打開編輯頁,回報看見的姓名與最後網址。
若登入失敗或頁面出錯,停止並回報畫面;不要改用其他帳號或外部網站。
本輪最多 20 次瀏覽器動作或 5 分鐘,先到即停止。

20 次與 5 分鐘是本篇選的練習預算,不是 WebHarbor 官方限制。Agent 未能遵守停點時,操作者用執行器中止;第一次先有人看著做,等成功與失敗都能被驗收,再考慮批次執行。

四、驗收要看兩層:畫面留下了嗎?資料真的變了嗎?

第一層是重新讀取 UI:再開 /account/edit 看姓名,不只看成功提示。第二層是操作者讀資料庫。下列查詢用 Python 內建 SQLite 介面,以唯讀模式讀出假帳號的兩個欄位;依 官方資料庫檔名,路徑是 /opt/WebSyn/amazon/instance/amazon_store.db。

docker exec wh-amazon python3 -c '
import sqlite3, json
uri = "file:/opt/WebSyn/amazon/instance/amazon_store.db?mode=ro"
with sqlite3.connect(uri, uri=True) as con:
    rows = con.execute("SELECT email, name FROM users ORDER BY email").fetchall()
print(json.dumps(rows, ensure_ascii=False, indent=2))
' > before-users.json

上面這段要在交辦前執行。Agent 停止後,把最後一行輸出檔改成 after-users.json 再查一次,然後執行下面的比對。-c 後的單引號涵蓋整段 Python,不要只貼第一行;其他資料欄位另外在編輯頁逐項比對。

python3 - <<'CHECK'
import json
before = json.load(open("before-users.json"))
after = json.load(open("after-users.json"))
expected = [row[:] for row in before]
hits = [r for r in expected if r[0] == "alice.j@test.com"]
assert len(hits) == 1 and hits[0][1] == "Alice Johnson", "起點不符"
hits[0][1] = "Harbor Learner"
assert after == expected, "姓名或帳號清單不符"
print("PASS:查詢涵蓋的帳號與姓名符合預期")
CHECK

這個小比對器只檢查 email 與姓名,沒有檢查整個資料庫,也沒有證明 Agent 全程只靠 UI。要檢查其他欄位或越權,還要加入欄位快照、瀏覽器軌跡與實際工具權限。若查詢報路徑、表格或帳號不存在,先記成環境/版本問題,停止評分,不要讓 Agent「幫忙修」資料庫。

這樣你得到三份能對帳的材料:任務文字、操作紀錄、前後資料。把它們與 UI 截圖放進同一輪資料夾,記下 image digest、Agent/模型版本、預算與結束原因。AI Evals 的驗收方法能補上如何逐步擴成固定考卷。

五、重設重跑:單站容器與 8101 控制介面要分開

痛點是「第二輪沿用第一輪資料,結果看起來更順」。解法是先重設,再查起點。官方 單站 entrypoint會在啟動時把 instance_seed 複製回 instance。本篇沒有掛載持久資料卷,練習資料留在這個容器裡;先保存這輪證據,再執行:

docker restart wh-amazon
docker logs --tail 40 wh-amazon
curl --fail http://127.0.0.1:40001/

等首頁可達後,重跑唯讀查詢,另存 reset-users.json,核對 Alice 回到 Alice Johnson。若還沒就緒,稍後再查;回復起點前不開下一輪。再清掉該站 cookie 或換新的無痕工作階段,避免舊登入狀態干擾登入練習。關閉網頁分頁和清除 cookie 是兩件事。

官方另一條多站部署流程提供 :8101 控制介面與 POST /reset/amazon;目前控制伺服器程式要求至少 32 字元的 WEBSYN_CONTROL_TOKEN,請求帶 Bearer token。本篇單站 entrypoint 走直接啟動網站的流程,別照抄多站重設指令,也不需要為這題發布 8101。若日後選多站版,控制 token 留給操作者,與站點登入密碼分開保管。

第二輪保持同一題、同一版本與預算。第三輪可故意把假密碼寫錯,檢查 Agent 是否按約停止;第四輪在儲存前中斷,再盤點資料是否已變更。登入失敗、中途停止、資料已寫入,各自記錄,別把所有情況塞進「失敗」一格。這些是待執行的案例設計。

六、接官方 task/verifier:先對一題,別把網站映像當完整考場

本篇改名題教的是驗收方法。要跑官方題目,改讀 amazon–5 任務資料夾,其中有 instruction.md、task.toml 與 tests/。這題要求找到指定藍色手機並加入購物車,與改名題的成功條件不同。

依 官方單站映像建置程式,映像在建置時移除 verify/、tests/ 和 tasks.jsonl。所以「單站網頁跑起來」仍要再接上對應的任務包,才能做官方評分。不要把改名比對器改個名字,就當成那一題的 verifier。

依 Harbor 整合文件,框架在 Agent 結束後執行任務包的 tests/test.sh,組出操作軌跡、初始與最終資料,再交給該站驗收器;結果寫到 /logs/verifier/reward.json。這題 task.toml 記錄的環境來源為 381dbd9,和本文查閱的程式提交不同;先核對映像 digest 與任務宣告,別把主分支當成已下載映像的版本證明。框架、網站環境與任務包三者都有各自版本;這份整合文件的安裝命令固定 harbor==0.24.0,照著它選用相容 harness。

進階時先讓一題完整走完,再擴大題數。自行操作 Docker 的權限與可信驗收器,不交給被測 Agent;官網也將任務測試檔放在驗收階段。想自行接停止、重試與收件流程,可讀 最小 Agent Harness 實作。

常見問題:八個先講答案的判斷

WebHarbor 是另一個瀏覽器操作工具嗎?

它主要提供練習網站與任務。瀏覽器 Agent 負責動作;本機網站負責接收動作並留下狀態。

第一天要跑全部站點嗎?

先一站就夠。本篇的學習產物是一題可核對、可回到起點的練習紀錄。

可以填真實購物網站的帳密嗎?

這題用種子假帳號。確認位址是本機鏡像,再填題目提供的測試資料;真實帳戶留在練習範圍外。

Agent 說完成,就算通過嗎?

先讀回。UI、資料查詢與工具紀錄各回答不同問題,按預先寫下的標準判定。

單站也要設定控制 token 嗎?

本篇單站流程不啟動多站控制伺服器。選用帶 8101 的多站流程時,再依那套文件設定 token 與存取範圍。

docker restart 就能清掉瀏覽器登入嗎?

瀏覽器狀態另處理。重設後查資料,再用新的瀏覽器工作階段檢查登入。

這裡通過,真實網站也會通過嗎?

還要另測。網站內容、驗證流程、反自動化與外部服務都可能不同;鏡像結果只描述當次環境。

可以直接把它用在商用產品嗎?

先確認授權。11 月 4 日貢獻者回覆將當前用途限於非商業與研究,正式授權仍在處理;公開下載不等於取得商用許可。

給新手的三個重點

  • 把「做什麼」縮成一個欄位;驗收條件寫在 Agent 動手之前。
  • 把「看起來完成」接到儲存資料;核對器檢查哪些欄位,就只對那些欄位下結論。
  • 把「重跑」接到相同起點;環境版本、資料、瀏覽器狀態與預算一起保存。

接著閱讀

左右滑動查看更多推薦

下一步:先交出一份前後對得上的小任務

今天先核對授權與 Docker 條件,啟動一站,保存起點,才交辦改名。完成後讀回、重設,再做同一題。記住:可重跑練習=同版環境+明確任務+獨立驗收+回到起點。等這條小循環清楚了,再去接官方任務包。想繼續練習,可從 AlphaLab AI 專區 選下一題,或透過 AlphaLab 課程安排完整學習路線。

ALPHALAB 社群

有問題?來 Telegram 聊

和 Terry、編輯、其他網友一起討論這篇文章。提問、分享觀點,回覆更即時。

加入 Telegram 討論

📩 訂閱 AlphaLab 電子報

週日 Weekly 週報+週二、週四 Alpha Signal,每週最多三封。

我們不會 spam,隨時可退訂。已訂閱?管理訂閱偏好(會寄登入連結到你的信箱)

主題篩選與退訂說明

寄送日期以台灣時間為準。主題偏好會篩選每期精選,並非每篇新文章的即時通知;當期符合主題的文章不足時會略過寄送。

未勾選任何主題會收到所有主題的精選,並不會停止寄信。

取消勾選 Alpha Signal 可停止週二、週四短報,仍保留週日週報。若要停止所有電子報,請使用信件底部的「取消訂閱」。