Hugging Face BlogAI Agent

從建造 Shippy 學到的代理建構教訓

2026年7月15日 17:29

重點摘要

Shippy 是一款專為高風險決策打造的海洋 AI 代理,錯誤答案可能帶來真實影響。本文揭露其架構設計,以及我們如何將這些經驗應用於 Ai2 的其他環境監測平臺。例如,當 Shippy 回應關於迦納專屬經濟區的即時查詢時,它會詳細展示邊界來源、資料截止時間、查詢時間戳,並提供 Skylight 地圖的深層連結,讓分析師能逐一驗證每個數字。

站內 AI 整理稿

Back to Articles What building Shippy taught us about building agents Enterprise Article Published July 15, 2026 Upvote - Kyle Wiggers Ai2Comms Follow allenai Shippy is a maritime AI agent built for high-stakes decisions, where the wrong answer has real impacts. Here's the architecture behind it—and the lessons we're carrying into Ai2's other environmental platforms. Shippy answering a live query about Ghana's EEZ. The response shows its work: the boundary source, the data cutoff, the query timestamp, and a deep link back to the Skylight map so the analyst can verify every number. Building an AI agent for a high-stakes operational domain like protecting the ocean is, above all, a problem of reliability. For a maritime analyst, a wrong answer could send a patrol vessel miles in the wrong direction, costing significant resources that are already stretched thin and potentially putting personnel in harm's way. So when the Skylight team set out to build Shippy, our AI for real-time maritime domain awareness, the real work wasn't the model. It was building a system we could trust to be correct, to stay within its limits, and to hold up across a wide range of tasks. And we had to verify all of it against Skylight's live data, updated continuously as new satellite and vessel signals arrive—not a static snapshot. Agent anatomy: skills, soul, and config We think of an agent like Shippy as three things: a soul, skills, and config. The soul is the system prompt that frames Shippy's persona and sets behavioral boundaries. Skills tell Shippy how to handle specific kinds of requests. Together, the soul and skills are baked into a Docker image—a versioned, deployable artifact that defines what Shippy is. Config covers everything else: which agent harness to run (in Shippy’s case, OpenClaw, an open-source agent framework), which LLM to use (currently, Shippy relies on Claude Opus 4.6), and runtime settings. Secrets like API keys are injected at runtime; swapping the model or the harness is a config change, not a rebuild. Shippy’s skills follow the same agent-skills spec used by coding tools like Claude Code and Codex—plain markdown files with structured frontmatter. This keeps each skill comprehensible, versioned, and easy to revise. Shippy currently includes skills for: Querying the Skylight API for Events (the vessel behaviors Skylight surfaces, like fishing or transshipment between two vessels) and vessel data Looking up Exclusive Economic Zones (EEZ) and Marine Protected Area (MPA) boundaries Interpreting vessel track data, the position and movement signals ships broadcast, building on the activity classifications Skylight's models, including Atlantes, already produce Generating interactive map links that let an analyst jump from a Shippy in-chat answer to an exact location on the Skylight map For example, the Skylight API query skill encodes the full workflow for answering a question about a specific area. When an analyst or user asks, "show me fishing activity in Panama's EEZ last month," the skill's instructions direct Shippy to first resolve "Panama EEZ" to a boundary polygon through Skylight's regions API instead of guessing or hard-coding coordinates, then query Fishing Events within that geometry, format the results with deep links back to the Skylight map, and attribute any vessel metadata drawn from Skylight partners like Global Fishing Watch or TMT. A single question posed to Shippy can hook into several skills at once. "Are there vessels operating near the Cordillera de Coiba MPA?" draws on the Skylight skill for data query, our partner ProtectedSeas’ database for MPA boundary context, and the vessel track skill for interpreting vessel behavior. All of this happens in a single dialogue turn. The soul defines what Shippy will and won't do. It won't make legal determinations about whether a vessel is breaking the law—that is a determination for people, not an agent. It also won't speculate beyond what the data supports. These boundaries are explicit in the system prompt, not implicit in fine-tuning, which makes them auditable and easy to revise. Deterministic tools for a nondeterministic agent Agents are nondeterministic. You can't control what the model decides to do, but you can make the tools it reaches for predictable. To that end, Shippy 'talks' to Skylight through a purpose-built CLI that calls the API, rather than issuing raw calls itself. Our API has dozens of input types, nested filter objects, pagination cursors, and complex geometry inputs. In early prototypes, we let Shippy construct API calls from scratch. It produced a steady stream of subtle bugs: malformed pagination that silently dropped results, geometry encoding errors, and correct-looking queries that returned wrong data because of a misunderstood filter type. The Skylight CLI collapses that complexity into a predictable interface. Shippy issues a single command – skylight events search with typed filter flags – and the CLI handles authentication, pagination, and structured output. The CLI is also self-documenting: extensive --help text and detailed error messages give the agent (and human developers) enough context to recover from mistakes without guessing. Its output is always written to a local JSON file rather than piped through the shell. Early on, large result sets would hit pipe buffer limits or break downstream tools like jq. Writing to disk sidesteps both problems and lets the agent programmatically access query results across subsequent steps. Underneath the CLI is a standardized API: multiple resource types – Skylight Events, vessels, regions, satellite imagery, vessel tracks, and more – accessible through a common pair of operations, search and aggregate. The APIs' inputs and outputs are defined as typed schemas with field-level descriptions. This layering – typed API, deterministic CLI, and agent skills that reference the CLI's commands – means that each of Shippy's components can be tested independently. The API has its own test suite. The CLI can be exercised by a human or an agent. And the agent skills reference CLI commands that handle the plumbing so that Shippy doesn't have to reinvent the wheel every time it hits the Skylight API. Each layer narrows what the next layer can get wrong. Sandboxed hosting and isolation Skylight serves hundreds of government agencies and NGOs across over 70 countries. A fisheries officer in the Philippines has Areas of Interest, vessel watchlists, and alert configurations that are scoped to their Skylight account. When they ask Shippy a question, the agent's API calls need to return their data, and their conversation history must never be visible to anyone else. Every user talks to Shippy inside their own ephemeral, isolated session, and making that work reliably at scale was one of the most significant engineering efforts behind the project. We built Mothership, an agent hosting platform that provisions a dedicated Kubernetes deployment for each user session. When a user opens a conversation, the system spins up a set of pods packaging the agent runtime, its skills, and the Skylight CLI. The user's Skylight JWT is injected at provision time so the agent's API calls are scoped to that user's data. Files the agent writes during a multi-step analysis exist only within that session and are never shared across users. Inside the sandbox, the agent can write and run code, install dependencies, pull in datasets, and work through multi-step analyses. At the network level, the sandbox is restricted to only the services it needs. Evaluating an agent, not a model Most benchmarks rank general-purpose AI on static questions. They don't capture how an agent behaves once it's wired into a real workflow: how it selects tools, queries live data, acts on results, and knows where to stop. So we built our own eval system around how Shippy works, scoring the whole agent – model, skills, and sandbox together – against live data. In our eval framework, subject-matter experts write scenarios and rubrics, choosing which criteria apply to each task and setting the weights, so every task is graded on what actually matters for it. A fishing-events query, for instance, weights data accuracy most heavily, with boundary resolution and timeframe next, and source attribution and response style carrying less. They also annotate individual responses as correct or incorrect, giving the judge ground truth to score against. Subject-matter experts additionally annotate individual responses as correct or incorrect, giving the judge ground truth to score against. The pipeline is straightforward: a natural-language prompt runs through the sandbox, an LLM judge grades each criterion from 0 to 1 and explains in writing why the response did or didn't meet it, and the weighted aggregate is checked against a fixed pass threshold, as the diagram below shows. How a single task is scored in our pipeline. A natural-language prompt runs through the sandbox, an LLM judge grades each rubric criterion with written reasoning, and the weighted aggregate resolves to a pass or fail against a fixed threshold. Tasks are executed through Harbor, an open evaluation framework. We wrote a Harbor plugin that spins up a real Shippy session on the exact version being tested, against the same real data a user would encounter. The suite runs in parallel against a specific versioned Shippy build, producing a timestamped results file and a report of score changes against the previous run. We rerun the suite whenever the skills, model, or underlying data change, and a version of Shippy that regresses on our eval criteria doesn't reach end users. Shippy scores consistently across data retrieval and guardrail tasks, correctly refusing military intelligence requests, maintaining user data isolation, and attributing sources accurately. In our latest run, the clearest patterns were patrol-planning tasks where Shippy overstepped into tactical recommendations rather than decision support, geometry-sensitive queries where boundary simplification caused missed Events, and one case where the agent invented a CLI command that didn't exist. Each of these directly informs our next round of skill improvements. Shippy's eval suite running inside Skylight: each scenario is scored on weighted criteria, with the judge's reasoning visible so a failure points to a specific behavior to fix. Where we're headed We're opening Shippy to early adopters on a rolling basis and inviting them to stress-test it—to find the questions the agent answers poorly and guardrails that may need tightening. Here’s what we're building next: Agent-driven UI control. Shippy returns map links today; next it will drive the Skylight map itself, moving to a region, applying filters, and adjusting time ranges. Model routing. Not every question needs a frontier model, so we're routing simple lookups to smaller, faster ones and saving the full-weight model for complex investigations. Cross-thread memory. Conversation history persists within a thread, but context doesn't carry across threads. We're building memory so Shippy carries persistent facts (e.g., an analyst's jurisdiction, preferred sources) and applies them automatically. So, "Show me fishing activity this week" won't mean re-specifying an analyst's EEZ each time. Our work on Shippy is already shaping how we think about agents elsewhere at Ai2—most immediately EarthRanger, our wildlife-conservation platform, and OlmoEarth, our open suite of Earth observation tools. Mothership was built to be general and to host other agents, so while maritime is the first domain we're applying it to, we don't expect it to be the last. Shippy is built by the Skylight team at Ai2. Skylight is a free maritime domain awareness platform used by 300+ partners across 70 countries. More from this author DiScoFormer: One transformer for density and score, across distributions 6 June 29, 2026 Which tokens does a hybrid model predict better? 8 Ju

Related

相關文章

階躍這臺手機錢誰來收?

階躍手機的商業模式並非靠硬體獲利,而是寄望於AI代理服務帶來的Token消耗。然而,Token的收費權掌握在運營商手中,且運營商的Token套餐目前採通用算力定價,不特定綁定階躍品牌,這使得階躍的記憶獨佔性與收款權之間存在根本矛盾。

51 分鐘前

AI時代的行研:獨特洞察從哪裡來?

好的,這是一篇根據您提供的素材重寫的新聞稿。 --- ### AI時代的行研:獨特洞察從哪裡來? 隨著AI技術迅速滲透商業領域,行業研究的模式正經歷一場深刻的變革。效率提升已成為顯而易見的紅利,資料蒐集、報告初稿、圖表製作乃至頁面生成,無一不因AI的介入而加速。然而,當工具日益強大,一個更核心的問題浮出水面:在AI時代,行業研究真正的護城河究竟在哪裡? 近期落幕的「2026第四屆全國大學生預見未來行研大賽」,為這個問題提供了一些啟發性的答案。

7 小時前
IT之家AI Agent

AI 網頁開發平臺 Canva Code 2.0 上線:代碼生成提速 75%,從提示到發佈提速 30%

首頁 > 智能時代>人工智能 AI 網頁開發平臺 Canva Code 2.0 上線:代碼生成提速 75%,從提示到發佈提速 30% 2026/7/15 9:03:34 來源:IT之家 作者:故淵 責編:故淵 評論: 感謝IT之家網友 對的時間點 的線索投遞! IT之家 7 月 15 日消息,Canva 昨日(7 月 14 日)發佈公告,宣佈正式上線 Canva Code 2.

9 小時前
何夕2077AI Agent

蘋果訴訟牽動協議競爭

蘋果訴訟牽動協議競爭。 蘋果與OpenAI的法律爭議升溫。馬斯克也被指加入公開戰局。事件脈絡見人工智能行業爭議綜合報道。谷歌微軟正支持新代理協議。MCP標準面臨首輪強力挑戰。

18 小時前
IT之家AI Agent

全球首個可變形個人機器人,上緯新材啟元 T1 今日正式登場

首頁 > 智能時代>具身智能 全球首個可變形個人機器人,上緯新材啟元 T1 今日正式登場 2026/7/14 21:47:10 來源:IT之家 作者:歸瀧 責編:歸瀧 評論: IT之家 7 月 14 日消息,上緯新材今日官宣,全球首個可變形個人機器人 —— 啟元 T,正式登場。

21 小時前