Dev Log · Architecture

Runtime First:Operator X02 的架構設計

從 AUTOSAR Runtime 到 AI Engineering Runtime

如何建構一個能夠長期運行、管理工程知識、控制硬體、協調 AI 與工程工作流的 Runtime?

前言

過去十多年,我一直從事汽車電子軟體開發,主要專注於 AUTOSAR、ADAS、Vehicle Functional Safety(ISO 26262)等安全關鍵系統。在設計 Operator X02 時,我發現自己思考問題的方式,與很多 AI IDE 的設計方式並不相同。

很多 AI IDE 的出發點 如何把 AI 加進一個編輯器?
我真正思考的問題 如何建構一個能長期運行的 Runtime?

後來我才意識到,這種思維方式,其實來自我多年來的汽車軟體架構經驗。Operator X02,並不是把 AI 放進 IDE,而是嘗試把 AUTOSAR Runtime 的設計理念,帶入 AI Engineering Platform。

AUTOSAR 教會我的第一件事:Runtime 比 Editor 更重要

傳統 IDE 的架構,大多可以簡化為:

Editor First

Editor Extension Host Plugin AI

所有能力都不斷往 Plugin 或 Extension 中堆疊:AI Chat、AI Completion、Search、Git、Debug、Build、Memory。隨著功能越來越多,整個 Extension Host 也越來越複雜。

但是,在 AUTOSAR 世界,並不是這樣。AUTOSAR 從一開始,就把 Runtime 放在整個系統的中心。Application 不直接控制 Hardware,所有能力都必須經過 Runtime。因為 Runtime 才負責:

這也是我設計 Operator X02 時最大的影響。

Operator X02 不是 Editor First,而是 Runtime First

因此,X02 的架構並不是 Editor → Plugin → AI → Hardware,而是:

Client

  • Editor
  • CLI
  • Web
  • Chat
  • Dashboard
  • Report
Rust Runtime
Engineering Runtime

Services

  • Engineering Memory
  • AI Agent
  • Search Engine
  • Build Engine
  • Hardware Runtime
  • Report Engine
  • Process Manager

未來甚至可以增加 CLI、Web UI、Mobile App —— 它們都可以共用同一個 Runtime。

在這個架構裡,React 只負責介面;真正工作的,是 Rust Runtime。
Editor 只是 Runtime 的一個 Client。

AUTOSAR 教會我的第二件事:Service 比直接呼叫更重要

AUTOSAR 一直強調:Application 不應該直接操作硬體。例如,Application 不需要知道 CAN Driver 是哪一家廠商的實作,因為 Runtime 已經完成抽象。

Operator X02 同樣如此。AI Agent 不應該直接控制 Serial、CAN 或 Flash。正確的方式應該是:

Service Path

AI Agent Runtime Service API Driver Hardware

AI 只知道:「我要讀取 Serial。」而不知道底層 Driver 如何實現。這樣不僅更安全,也更容易維護。

AUTOSAR 教會我的第三件事:生命週期比執行一次任務更重要

汽車軟體不會只執行一次。它可能連續運行數小時、數天、數個月。因此,AUTOSAR 非常強調 Lifecycle:

Lifecycle

Init Start Run Error / Recovery Shutdown

Operator X02 同樣如此。打開一個 Workspace 後,Runtime 會持續運行 File Watcher、Search Engine、Engineering Memory、AI Agent、Git Monitor、Hardware Monitor。這些都不是一次性的任務,而是持續運行的 Service。

因此,我更關心的是:如何安全啟動?如何恢復?如何關閉?而不是:如何執行一次 Prompt?

Functional Safety 對我的影響

很多人認為,ISO 26262 只是安全標準。但對我而言,它更是一種設計思想。它讓我習慣思考:

因此,我希望未來的 X02 不是「AI → 直接執行硬體操作」,而是:

High-risk Operation

AI Policy Engine Permission Control User Confirmation Audit Trail 執行

危險操作 —— 例如 Flash ECU —— 必須經過確認,而不是由 AI 直接執行。這種思想,其實就是 Functional Safety 帶給我的影響。

為什麼最後選擇 Rust Runtime?

很多人問我:為什麼不是 Electron?為什麼不是 Node.js?為什麼是 Rust?我的答案其實很簡單:不是因為 Rust 更快,而是因為 Rust 更適合 Runtime。

Runtime 需要長期運行、管理資源、管理執行緒、管理硬體、管理生命週期、管理背景 Service。這些都是 Rust 擅長的事情。

這些概念,具體解決了什麼問題?

Ownership

所有權

Rust 在編譯期就決定了每一個資源由誰持有、何時釋放。對 Runtime 來說,這代表一個 Serial Port、一個 File Handle、一條硬體連線,永遠只有一個明確的擁有者。長時間運行時,不會出現資源洩漏,也不需要 GC 在背後暫停整個系統。

Tokio

非同步 Runtime

X02 同時要等待很多事情:Serial 資料、檔案變動、AI API 回應、Build 輸出。Tokio 讓這些等待可以並行發生,而不需要為每一個任務開一條執行緒。一個 Build 跑十分鐘,不會讓 Serial Monitor 停止刷新。

Channel

訊息通道

模組之間不共用記憶體,而是互相傳送訊息。這其實就是 AUTOSAR 的思想:不直接呼叫,而是透過定義好的介面溝通。它還帶來一個額外的好處 —— 每一次跨模組的互動,都是可以攔截、記錄、審計的。

Actor

獨立服務單元

Serial、Build、Memory、AI Agent,各自是一個擁有自己狀態的獨立單元,只透過訊息與外界溝通。這與 AUTOSAR 的 SWC 概念非常接近。其中一個出錯,不會污染其他模組的狀態。

Supervisor

監督者

Supervisor 負責監看這些 Actor,並在失敗時決定:重啟、降級,還是停止。這正是前面提到的 Lifecycle 與 Error Handling 的具體落實。Serial 連線斷掉,只會重啟 Serial Service,而不是讓整個 Runtime 崩潰。

換句話說,這五個概念加起來,其實就是一句話:

Rust 讓我可以用寫車用軟體的方式,去寫一個 IDE 的 Runtime。

Operator X02 的真正目標

不是 一個更聰明的 AI Editor
而是 一個 AI Engineering Runtime Platform

AI 只是其中一個能力。Runtime,才是真正的平台。

結語

Operator X02 的設計,並不是來自傳統 IDE。它更多來自我多年汽車軟體開發的經驗。

  • AUTOSAR教會我:如何建立 Runtime。
  • Functional Safety教會我:如何管理風險。
  • Rust則讓我能夠把這些理念真正落地。

所以,我希望 Operator X02 不只是一個 AI IDE,而是一個真正能夠長期運行、連接 AI 與真實工程世界的 AI Engineering Runtime Platform。