本體

本體即軟體。

一份可執行的業務本體。AI 編寫它,執行時執行它,Agent 操作它,你擁有它。這一頁說清這個詞在這裡指什麼。本體是你的業務裡那份由執行時直接執行的定義:以型別化後設資料寫在你的倉庫裡,編譯成一個工件,然後執行——資料庫、API、介面和 Agent 工具都從它派生,定義本身在每一次呼叫時被強制執行。同時寫給做選擇的人和寫定義的 Agent。

ObjectOS product surface connecting business data, applications, and AI agents
AI 編寫後設資料 物件、權限、流程、工具
人 審閱 diff 業務權限、資料訪問、審批
執行時 執行策略 UI、API、審計、MCP、動作
6 類
核心由六類東西構成:物件與欄位、關係、動作、權限、流程、Agent 與工具定義
4 種投影
檢視、儀表盤、應用和翻譯——同樣用後設資料編寫、過同一道門禁,但不是本體的一部分
4 道閘門
型別化、校驗、審閱、治理——橫在 Agent 與你的使用者之間

執行時如何執行它

一份定義進去,其餘全部派生。

本體以型別化後設資料寫在 objectstack.config.ts 裡,編譯成 objectstack.json 工件。執行時從這個工件派生可更換驅動之上的資料庫結構、生成的 REST 與即時 API、Console 的服務端驅動介面,以及一個 MCP 伺服器——並在每一次呼叫時強制執行這份定義。RBAC、行級與欄位級安全、共享和審計,對一次 REST 請求、一次 Console 點選和一次 Agent 工具呼叫一視同仁。執行時不做任何推理:跑的就是被校驗過的東西。

objectstack.config.ts
  # 本體:用型別化後設資料寫下的定義
        │  編譯
        ▼
objectstack.json
  # 執行時載入的工件
        │  派生
        ▼
資料庫結構 · REST 與即時 API
服務端驅動介面 · MCP 伺服器
        │  每一次呼叫都強制執行
        ▼
RBAC · 行級與欄位級安全 · 共享 · 審計

核心

六類東西,一份定義

本體是一份定義,開放、帶版本。它以普通 TypeScript 的形式住在你的倉庫裡,可以當作一個 diff 來審閱,規範與許可證都是 Apache-2.0——而不是一張鎖在廠商系統裡、只能通過那家廠商的控制台觸達的圖。其餘一切都由執行時從它派生。

指南

物件與欄位 

業務裡的實體及其型別化屬性——校驗、公式、預設值、檔案。

關係

物件之間的查詢與主從關聯。

動作

使用者或 Agent 可以對一條記錄發起的操作,以及它們顯示的條件。

指南

權限 

誰可以讀取、建立、編輯和刪除什麼——RBAC、行級與欄位級安全、共享。

指南

流程 

業務過程——DAG 流程、記錄觸發器、定時任務、審批、工作流。

指南

Agent 與工具定義 

應用自帶的 AI Agent、它們可以呼叫的工具,以及塑造它們的技能。

投影

檢視、儀表盤、應用和翻譯是它的投影

投影同樣用後設資料編寫、由同一道門禁校驗,但它們不是本體的一部分。改動核心,投影跟著變;刪掉一個投影,它所展示的業務不變。這個區分劃定了 Agent 為了推理業務必須裝下的範圍:是核心,而不是每一個螢幕。

投影

檢視

把一個物件的欄位和權限投影到一張網格上。

投影

儀表盤

把物件上的查詢投影到圖表上。

投影

應用

把物件、檢視和動作組合成一個可導航的產品。

投影

翻譯

把每一個標籤投影到一種語言。

它不是什麼

關於這個詞的四道護欄

「本體」這個詞涵蓋好幾種不同的東西,還有兩種思維習慣隨它一起出現。四者在這裡都不成立;ObjectStack 與它們的逐項對比在對比頁。

不是知識本體

OWL、RDF 和知識圖譜描述一個領域,帶有類繼承和公理,並由推理引擎推理。ObjectStack 沒有物件繼承、沒有公理、沒有推理器:定義先被校驗——由 Zod schema 和 os validate——然後被執行。abstract 這個鍵正是因此從規範中移除。

不是業界所說的語義層

語義層是架在現有系統之上的一層只讀對映:它描述業務,但不執行業務。ObjectStack 的本體就是系統——資料庫、API、介面和 Agent 工具都從它派生。聯邦接入外部資料來源是可以的,預設只讀,而且還處於早期。

不是哲學意義上的形式本體

它不對「什麼東西普遍存在」做任何斷言。它是一家企業的一個應用,定義得精確到足以執行。

不是「程式碼消失了」

程式碼搬進了執行時。鉤子、動作體,以及公式、謂詞和策略裡的 CEL 表示式,都在執行時的權限與審計圍欄內執行;頁面裡的受限 JSX 被解析成服務端驅動的介面樹,從不當作程式碼執行。沒有一樣散落在一個本體隨後還得去描述的程式碼庫裡。

四個承諾

每個承諾都點名兌現它的機制

定位句後面的四個詞不是形容詞。每一個都由執行時、工具鏈或許可證裡某個具體的東西兌現,這裡把那個東西逐一列出。

指南

可執行 

定義就是在跑的那個東西。執行時從編譯後的工件派生資料庫、REST 與即時 API、Console 介面和 MCP 伺服器,並在每一次呼叫時強制執行權限與審計——REST 請求、Console 點選和 Agent 工具呼叫一視同仁。

指南

AI 可編寫 

腳手架安裝 AI 技能包並寫入一份 AGENTS.md,編碼 Agent 一開始就帶著協議的規則。Strict TypeScript 和 Zod 在編輯器裡拒掉形狀錯誤;os validate 拒掉型別檢查能過、執行時卻會靜默失敗的後設資料——懸空繫結、錯誤的 CEL 謂詞、缺失的安全姿態——並以定位到位置、可據以修正的文字返回,Agent 自己讀、自己改。你審批一個小而可讀的 diff。

指南

Agent 可操作 

跑起來的應用就是一個 MCP 伺服器,預設開啟:每個物件是一個工具,每個暴露出來的動作是一個工具,權限決定 Agent 可以呼叫什麼,審計記錄它做了什麼。Agent 通過與人相同的型別化、權限感知的表面操作應用——從不是裸 SQL 或抓取介面。

原始碼

歸你所有 

定義以普通 TypeScript 的形式住在你的倉庫裡,在你的版本控制裡帶版本、可以當作 diff 審閱——不是一張鎖在廠商系統裡的圖。ObjectStack 倉庫裡的一切都是開放棧——協議、微核心、SDK、CLI 和生產執行時——Apache-2.0,沒有 open-core 的星號;腳手架生成的專案開箱即可容器化自託管。

決策面

改什麼、誰來審、跑什麼

你宣告執行時派生執行時強制執行
物件、欄位、關係可更換驅動之上的資料庫結構;生成的 REST 與即時 API欄位上宣告的校驗、公式與預設值
動作帶權限檢查的按鈕與服務端操作;每個暴露的動作同時是一個 MCP 工具動作顯示的條件,以及誰可以發起它
權限無需生成——它本身就是圍欄RBAC、行級與欄位級安全、共享和審計,對 REST 請求、Console 點選和 Agent 工具呼叫一視同仁
流程DAG 流程、記錄觸發器、定時任務、帶佇列的審批多級審批鏈與完整的審計軌跡
Agent 與工具定義應用對外提供的 MCP 伺服器,預設開啟權限決定 Agent 可以呼叫什麼;審計記錄它做了什麼
檢視、儀表盤、應用、翻譯Console 的服務端驅動介面檢視投影的是物件的欄位和權限——刪掉它,業務不變

FAQ

常見問題

它和 Palantir 那種本體是一回事嗎?

詞彙相近,住的地方不同。運營本體在從其他系統整合來的資料之上定義物件、連結、動作和權限,並把編輯寫回去;Palantir Ontology 是這一類的參照。它仍然是架在別處系統之上的一層,而且在 Palantir 這裡是一個專有平臺。ObjectStack 從定義本身派生資料庫結構、API、介面和 MCP 工具,而且是 Apache-2.0。

有了本體,是不是就沒人寫程式碼了?

不是。程式碼不會消失——它搬進了執行時。鉤子、動作體,以及公式、謂詞和策略裡的 CEL 表示式,在執行時的權限與審計圍欄內執行;頁面裡的受限 JSX 被解析成服務端驅動的介面樹,而不是被執行。變化在於:沒有一樣散落在一個本體隨後還得去描述的程式碼庫裡。

為什麼大小這麼重要?

因為閉環的兩半都依賴它。寫定義的 Agent 和操作應用的 Agent 都需要把整件東西裝下:小到 AI 能一次讀全的應用,才能被整體閱讀、整體推理、整體重構。自帶的示例 CRM——物件、檢視、一個儀表盤、一條線索轉化流程、權限集、動作、翻譯——小到 Agent 可以端到端載入,回答得出「改這裡會弄壞什麼」。

ObjectOS 在哪裡?

想把同一個迴圈託管起來、在瀏覽器裡用、什麼都不用安裝?那就是 ObjectOS——建立在 ObjectStack 之上的商業執行環境。ObjectOS 既可託管在瀏覽器中、無需安裝(ObjectOS Cloud),也可自管部署在你自己的基礎設施上(ObjectOS Enterprise);無論哪個版本,你都可以匯出本體,拿到開源的 ObjectStack 執行時上執行。

下一步

繼續完善你的評估材料。