01 · AI Circularity Ledger
機器人丟了回執之後

一個帶著記分板的商業循環。
想象一臺倉庫機器人收到指令,要把箱子放上傳送帶。它已經放好了,回執卻在返回途中丟失。調度系統只看到一片沉默,於是再發一次指令。
這樣一個小缺口,就可能把一次成功作業變成兩次作業嘗試。結論很簡單:可靠的自主系統,需要先查清發生了什麼,再決定重複什麼。更強的推理幫助系統選對動作;恢復規則則防止對動作結果的不確定,變成第二次現實效果。
這是一個假想案例,並非已報道的倉庫事故。它值得討論,恰恰因為幾乎不需要什麼嚴重故障:電機正常、計劃合理,網絡只是丟了一條回覆。幾個單獨看都合格的部件,組合起來仍可能交出不合格的結果。
更新說明裏那行有意思的小字
DroneDeploy在2026年9月24日發佈的1.7.52非穩定版說明,提到啓動任務重試,以及把地圖部署觸發與等待完成分開。這些是軟件改動,還不是已公佈的現場可靠性結果。 DroneDeploy release notes
我更關心它引出的問題:發送請求之後,調用方究竟知道什麼?發送、接收、執行、確認是四件事。如果界面把它們壓縮成一個愉快的綠色勾號,停機時缺少的判斷就得由操作員補上。這個勾號把最難的工作外包了。
開發趨勢讓這個問題更值得關注。NVIDIA的9月22日Isaac ROS 5.0公告加入智能體輔助機器人開發。這證明開發工具更豐富,卻沒有告訴我們,部署後的機器需要人救場多少次。 NVIDIA announcement
我的判斷是,機器人編程越容易,系統越需要精確區分“提出了指令”與“完成了工作”。更多人能夠編寫流程,更多流程能夠接觸硬件。因此,用來證明流程成功的證據,至少應得到與啓動指令同等的設計重視。
沉默有好幾種意思
回到那個箱子。調度系統沒有收到回覆,可能對應幾種完全不同的情況:指令根本沒有到達;已經到達卻被拒絕;機器人還在移動;或者箱子早已上了傳送帶,只是確認消息丟失了。
這些情況需要不同的處理。第一種適合再發一次,第三種會被重發弄亂,第四種則可能重複執行。如果統統標成“失敗”,恰好就丟掉了恢復工作最需要的區別。
所以,超時只能回答一個很窄的問題:調用方沒有在規定等待時間內收到預期證據。單憑超時,無法判斷箱子在哪裏。把沉默翻譯成失敗,是界面的誘惑,並非物理世界給出的結論。
人與人協作也有類似情形。你請同事辦件事,卻沒收到回覆,再發一條消息或許合理。但再派另一位同事去做同一件不可逆的事,就是另一個決定了。機器需要明確規定這種區別,禮貌救不了一個含糊的任務隊列。
給工作一個不隨對話消失的身份
一個可討論的設計起點,是給每項預期工作分配持久身份。重試沿用同一個身份,真正的新工作則使用新身份。接收方纔能分清:這是同一次請求又說了一遍,還是又多了一項責任。
AWS介紹過調用方提供請求標識符的做法,使重試具備冪等性:重複請求可以保持同一個預期效果。這是已有的分佈式系統方法,並不代表任意物理動作因此自動安全。 AWS retry design
在假想傳送帶裏,指令記錄可以包含任務編號、指定箱子、目的地與獲准操作。如果有人拿同一個編號傳來不同內容,接收方應拒絕。否則,“同一項”就成了漏洞:舊身份被誤用,裏面卻裝了一項新任務。
記錄還需要明確保留期。機器人重啓後若忘記編號,遲到的重試就可能被當作新請求。上游調度器若每次重連都生成新編號,接收方再認真去重也無從發揮。恢復能力屬於整條路徑。
這個方案也有成本。持久記錄佔用存儲,責任歸屬需要定義,被放棄的任務需要處置規則。這些負擔應該與含糊狀態的成本比較。後果很輕的任務可以採用更簡單的安排;會搬動貴重物品的任務,則值得更仔細一些。
消息結果與物理結果,是兩類證據
ROS 2的action設計把目標、反饋、結果分開,也支持取消長時間運行的工作。這套接口讓“開始”與“完成”的區別變得可見。 ROS 2 action design
我們的驗收約定仍須回答,怎樣纔算結果。“控制器返回成功”與“正確的箱子到了正確的傳送帶位置”有關聯,卻未必相等。傳感器、庫存記錄或下游工位可以提供額外證據,但各自也有失效方式。
最棘手的情況,是物體已經移動,持久確認尚未寫入,系統就重啓了。數據庫沒有記錄,箱子卻已經挪走。如果先寫記錄再移動,又會出現相反問題:記錄存在,動作尚未發生。軟件事務不能隨手把現實世界倒回去。
可行方向是圍繞可觀測狀態設計核對流程。不確定發生後,先建立機器人獲准處於的狀態,檢查物體,再判斷哪些狀態轉換仍然有效。指令身份能夠防止一部分重複;物理觀察則幫助查清指令日誌無法證明的效果。
不要把任何單個傳感器當成魔法。舊圖像可能顯示的是先前位置,庫存更新可能滯後,兩項觀察可能互相矛盾。恢復規則應允許任務繼續處於未解決狀態,並明確誰有權消除分歧。承認這一邊界,是有用的工程。
進程重啓成功,不等於工作完成
ROS 2的託管節點設計區分已配置、非活動、活動及其他生命週期狀態。因此,部件是否就緒可以與它執行的工作分開管理。 ROS 2 managed nodes
在這個例子中,重啓進程只是恢復的一步。它可能還需要正確地圖、有效的位置估計、新鮮的觀察,以及確認沒有另一個控制器接管。重啓成功證明的是進程狀態,操作員需要知道的卻是工作與周邊環境的狀態。
這會改變對供應商的提問。“能不能重連?”是好的開場。“重連之後立即允許做什麼?”更進一步。“哪項記錄和觀察支持這份權限?”則能分清,答案究竟是已實現的規則,還是樂觀描述。
取消也一樣。取消請求無法回到過去,撤銷已經完成的移動。如果取消與完成消息在網絡上交錯,系統需要誠實報告最終狀態。請求取消是一項意圖,確認安全狀態纔是結果。
因此,我不會讓單一在線率承擔全部商業敘事。機器可能一直在線,卻等着人核對它做過什麼;也可能短暫掉線後自行恢復乾淨。即使儀表板塗上相似顏色,兩種情況的運營成本仍然不同。
先畫清恢復邊界,再去衡量
圖中提出,回執丟失後可以通向三種不同結果:證據足以證明完成,就確認原任務;當前狀態允許,就只繼續尚未完成且仍獲授權的部分;無法分清安全恢復與重複工作,就暫停。
暫停也需要一個好用的界面。操作員應看到最初意圖、最後可信觀察、矛盾或缺失的證據,以及還需要作出的決定。如果只丟出通用錯誤碼,讓人從頭重建整個故事,不確定性的成本不會減少,只是賬單被藏起來了。
對買方或投資者而言,這張賬單可以成為盡調對象。多少項工作需要人工核對?每次多久?人力由供應商客服承擔,還是客戶承擔?事故按會話、機器人還是請求任務計數?分母不同,同一套運營就可能顯得完全不同。
這些是問題,並非針對DroneDeploy、NVIDIA或某個客戶測出的結論。本文引用的公開材料,沒有提供回答這些問題的匹配現場試驗。這套框架的用途,是說明需要什麼證據,才能把自主能力轉成可理解的經濟性。
一個邊界明確的小測試
下一步有用的實驗,可以是一條模擬傳送帶、一個箱子、一個指令發送方和一個接收方,不需要真實機器人。保持預期任務相同,在消息交換的不同位置有意中斷,就能把恢復表現與原計劃的聰明程度分開。
先跑正常流程,定義應有的回執。然後分別模擬:請求送達前丟失、執行後回覆丟失、效果發生與確認之間接收方重啓,以及重連後重放舊請求。再加入一項觀察相互矛盾的情形;這一項應該繼續未解決,而非被方便地標成成功。
每種情況記錄嘗試效果數、觀測到的完成效果數、得到合格結果的時間、人工介入及未解決狀態。期望性質很容易描述:一項授權任務至多產生一次被驗收的物理效果,每次完成聲明都有約定證據。可用性和及時性仍然重要;什麼都不做當然沒有重複,卻不是好服務。
比較時,讓簡單重試策略與核對恢復策略面對相同中斷和觀察,同時計算重複效果與未完成任務。報告兩者的取捨,不要只挑複雜方案獲勝的指標。這是一份擬議測試規格;我沒有為本文執行這組比較,也沒有測試真實機器人。
規格故意做得很小,以便失敗清晰可見。責任含糊、重啓遺失記錄、遲到消息改變結果,都應在軌跡裏暴露出來。這些問題沒解決就增加更多智能體,只會增加參與者,不會增加理解。
買方應當看一次中斷演示
漂亮的演示展示系統順利運行的路線。有用的採購討論,還應請供應商在自己的書面恢復流程下解釋一次有邊界的中斷。這必須遵守機器獲准的運行條件;本文建議的實驗,不是在真實設備上臨時製造故障。
最重要的交付物,是第二個人也能看懂的軌跡:請求了什麼?誰接下責任?現實中改變了什麼?哪項觀察支持完成?如果系統停了,憑什麼允許下一步?可回放的答案,比“模型通常很聰明”的保證更有價值。
這個角度也給供應商一種建設性的競爭方式。有的能自動恢復更多任務,有的因證據清晰而減少人工升級處理,有的通過減少必須達成一致的系統,簡化安裝。每項改進都可以用完成了多少工作、消耗多少人力來描述。
我會保留一張四欄觀察卡:預期任務、效果證據、恢復成本、必須暫停的條件。供應商公佈可復現的恢復軌跡,或客戶提供可比較的運營證據時再更新。在此之前,讓性能主張繼續待證,不用演示填補缺口。
一臺在恰當時刻求助的機器人,可能正在做一件有價值的事:找到了自己記錄能夠證明到哪裏。自主能力的下一階段,部分就在於一次次觀察充分的恢復,把這條邊界向外推進。箱子應該只上傳送帶一次,而且每個人都能解釋,為什麼相信它已經到了。
Categories and keywords
Categories: 具身AI;智能體基礎設施;系統工程。
Keywords: 機器人恢復、冪等性、指令身份、ROS 2、核對、每項完成任務成本。
Hashtags: #PhysicalAI #Robotics #AgenticAI #SystemsEngineering