Shippy:構建高風險海事 AI 代理的架構與經驗教訓

Shippy:構建高風險海事 AI 代理的架構與經驗教訓

TL;DR

Hugging Face 與 Ai2 推出了 Shippy,這是一款專為高風險作業領域感知設計的海事 AI 代理。為了在錯誤數據可能導致資源浪費或安全風險的環境中確保可靠性,Shippy 採用了將人格(persona)與能力(capability)分離的模組化架構,利用確定性的 CLI 工具與即時數據進行交互,並在隔離的使用者沙盒中運行。

代理解剖:靈魂、技能與配置

Shippy 的結構分為三個不同的組件,以確保版本控制、可審計性與靈活性:

  • Soul:定義代理人格與行為邊界的系統提示詞(system prompt)。這包括明確的限制,例如拒絕做出法律判定或對可用數據之外的內容進行推測。
  • Skills:定義為具有結構化 frontmatter(遵循 agent-skills spec)的純 markdown 檔案,技能為特定任務提供指令。目前的職能包括查詢 Skylight API 以獲取船舶數據與事件、查找專屬經濟區 (EEZ) 與海洋保護區 (MPA) 邊界、解析船舶軌跡數據,以及生成互動式地圖連結。
  • Config:決定代理運行環境 (OpenClaw) 與 LLM (目前為 Claude Opus 4.6) 的執行時設定。

這些組件被封裝在版本化的 Docker 鏡像中,允許開發者透過更改配置來更換模型或運行環境,而無需重新構建整個代理。

用於非確定性代理的確定性工具

為了減輕 LLM 的不確定性,Shippy 並不直接發送原始 API 呼叫。相反,它透過一個專門設計、具備自我說明能力的 CLI 與 Skylight 平台進行交互。

CLI 層

直接的 API 呼叫經常導致分頁格式錯誤、幾何編碼錯誤以及錯誤的篩選類型。Skylight CLI 將這些複雜性簡化為具備類型化的篩選標記(例如 skylight events search),並在內部處理身份驗證與分頁。為了避免管道緩衝區限制並確保程式化存取,CLI 會將所有輸出寫入磁碟上的本地 JSON 檔案。

API 層

在 CLI 之下是一個具有類型化 Schema 與欄位級描述的標準化 API。這種分層方法——類型化 API $ ightarrow$ 確定性 CLI $ ightarrow$ 代理技能——允許每個組件進行獨立測試,縮小每個階段的錯誤空間。

透過 Mothership 實現沙盒託管與隔離

由於 Shippy 為 70 個國家的政府機構與非政府組織提供服務,嚴格的數據隔離是強制性的。Ai2 開發了 Mothership,這是一個代理託管平台,會為每個使用者工作階段配置專用的、臨時性的 Kubernetes 部署。

  • 工作階段隔離:每個使用者工作階段都會啟動一組包含代理運行環境、技能與 Skylight CLI 的 Pods。
  • 安全性:使用者的 Skylight JWT 會在配置時注入,以將 API 呼叫限制在其特定的數據範圍內。網路存取僅限於必要的服務,且分析期間寫入的檔案會在工作階段結束時刪除。
  • 能力:在此沙盒中,代理可以安裝依賴項、執行程式碼並拉取數據集進行多步驟分析,而不會冒著跨使用者數據洩漏的風險。

評估代理性能而非僅評估模型性能

Ai2 並非依賴靜態的通用基準測試,而是使用 Harbor 評估框架,針對即時數據將 Shippy 作為一個完整的系統(模型、技能與沙盒)進行評估。

評估流程

領域專家會創建具有加權標準的情境與評分準則。例如,一個漁業事件查詢會將數據準確性與邊界解析度置於回應風格之上。該流程遵循特定的管線:

  1. 在沙盒中執行自然語言提示詞。
  2. LLM 裁判根據書面推理,對每項準則進行 0 到 1 的評分。
  3. 將加權後的總分與固定的通過門檻進行比較。

發現與迭代

最近的評估發現了特定的失敗模式,例如代理越權進行戰術建議而非決策支持、邊界簡化導致幾何敏感查詢中遺漏事件,以及虛構不存在的 CLI 命令。這些結果直接驅動了下一輪的技能改進迭代。

未來路線圖

Ai2 正在從三個主要方向擴展 Shippy 的能力:

  • 代理驅動的 UI 控制:使 Shippy 能直接操作 Skylight 地圖(調整篩選條件與時間範圍),而不僅僅是提供連結。
  • 模型路由:實現一套系統,將簡單的查詢路由至較小、較快的模型,同時為複雜的調查保留前沿模型。
  • 跨對話記憶:開發持久化記憶,使代理能在不同的對話線索中記住使用者的特定上下文(例如分析師的管轄範圍)。

Sources