市场与经济
撮合市场
一个实时的、双边的容量市场。可互换的稀缺资源(GPU、同质机器人车队、仿真名额)在一个订单簿上按价格-时间优先级出清——任何订单都可以携带一个位置,把它变成「机器人与计算机的 Uber」:工作被锚定在某个地点,与最近的、能完成它的供给方相匹配。
订单
卖方发布要价(他们每单位分钟愿意接受的最低价格);买方发布出价(他们愿意支付的最高价格)。当出价与要价相遇时,它们按挂单方的价格、以匹配到的数量成交。对卖方车队挂牌的一次成交,会变成按该价格可兑现的一份租约。
# Post a bid (buyer) or ask (seller) on a fungible class.
curl https://api.commandagi.com/market/vm.gpu-l4/orders \
-H "Authorization: Bearer $COMMANDAGI_API_KEY" \
-H "content-type: application/json" \
-d '{ "side": "bid", "price": 24, "qty": 1 }' # ≤ 24 credits/min市场视图
GET /market/:resourceClass 返回实时订单簿(最优出价/要价、价差、深度)、最近的成交记录、一张滚动价格图,以及当前的需求信号——终端渲染的一切都来自这里。/market/class/<resourceClass> 上的网页终端会实时轮询它。
{
"book": { "bestBid": 20, "bestAsk": 25, "spread": 5, "bidDepth": […], "askDepth": […] },
"tape": [ { "price": 22, "qty": 1, "createdAt": … } ],
"signals": { "utilization": 0.82, "queueDepth": 3, "totalSlots": 4 }
}定位工作与出价
任何订单都可以携带一个 geo 定位点——{ lat, lng, radiusM? }。一笔出价与一笔要价只有在彼此的定位点都落在对方半径之内时才会成交(省略半径表示「任意位置」)。这就是为什么一份锚定在时代广场的挂单出价,只会与物理上邻近的供给方成交,而一个流动的供给方也只能看到自己服务半径之内的工作。出价还可以附带一个 job 提示(label、estMinutes、setupCost、switchCost),买方会把它展示给供给方,撮合器也会用它来定价。
在要价一侧,卖方设置一个 convenience 滑块(0→1):0 表示接受所有按其要价成交的订单以最大化收益,1 表示更少的打扰——撮合器会为短程、准备工作繁重或路途遥远的工作加价,使一个偏好便利的卖方自动被这些麻烦事排除在定价之外。这一个滑块会在服务端映射为一组系数。要价也可以设置 supplyKind(machine 或 human)以及一个 ttlSeconds 过期时间。
供给方通过 POST /me/presence 注册可用性(在线状态、位置、服务半径、他们服务的类别,以及是否希望被通知),通过 GET /jobs/nearby 发现工作,并用 POST /market/:resourceClass/orders/:orderId/accept 一键接受一笔定位出价。注册在 /me/push-tokens 的推送令牌,让我们能在匹配的工作出现的那一刻唤醒附近的供给方。
# A located bid: only fills against supply physically within range.
curl https://api.commandagi.com/market/robot.humanoid/orders \
-H "Authorization: Bearer $COMMANDAGI_API_KEY" \
-H "content-type: application/json" \
-d '{
"side": "bid", "price": 60, "qty": 1,
"geo": { "lat": 40.7580, "lng": -73.9855, "radiusM": 300 },
"job": { "label": "Record in Times Square", "estMinutes": 20, "setupCost": 50 }
}'
# A convenience-leaning ask: the matcher surcharges hassle jobs so you
# auto-price out of short / high-setup / far work. One 0→1 slider is enough.
curl https://api.commandagi.com/market/robot.humanoid/orders \
-H "Authorization: Bearer $COMMANDAGI_API_KEY" \
-d '{ "side": "ask", "price": 40, "convenience": 0.8, "supplyKind": "human" }'
# Suppliers go online, then accept located bids nearby.
curl "https://api.commandagi.com/jobs/nearby?lat=40.7580&lng=-73.9855&radiusM=1000&class=robot.humanoid"
curl -X POST https://api.commandagi.com/market/robot.humanoid/orders/<id>/accept \
-d '{}'动态浮动定价
不想使用订单簿的卖方,可以改用 dynamic 定价模型:一个随实时利用率和排队深度浮动、并被限定在最小/最大值之间的基础费率。同样的需求信号,挂牌更简单。