CtxFST CH21 - 整合 OpenClaw:把 Agent Skills 升級成 Semantic World Model
CtxFST CH21:整合 OpenClaw,把 Agent Skills 升級成 Semantic World Model
走到 CH20 為止,CtxFST 本身其實已經長成一個很完整的世界模型 runtime 了。
它現在已經有:
world_state.py管理 runtime stateskill_selector.py做 graph-aware routingagent_loop.py做 multi-step planning 與 execution orchestration--explain讓 planner 可解釋--critique讓 planner 進入 human-in-the-loop 協作模式
到這裡,一個很自然的問題就會冒出來:
這套東西如果不只在 CtxFST repo 裡跑,而是裝進一個真正的 agent runtime,例如 OpenClaw,會發生什麼事?
這就是 CH21 要回答的問題。
而答案其實很令人興奮:
把 CtxFST 裝進 OpenClaw,不只是多一個 skill,而是讓 OpenClaw 開始具備 semantic world model 能力。
先講一句最短的結論
這一章最值得記住的一句話是:
OpenClaw 原本擅長的是 skills orchestration;整合 CtxFST 之後,它開始多出一層 semantic world model substrate。
這個差別非常大。
因為它意味著 OpenClaw 不再只是:
- 讀 skill
- 叫 skill
- 記錄結果
而是開始能:
- 用 entity graph 理解世界
- 用 world state 追蹤當前條件
- 用 graph-aware routing 決定下一步
- 用 multi-step planning 搜尋 skill chain
- 把執行結果回寫成 graph edges 與 runtime state
也就是說,這不是單純「在 OpenClaw 裡多一個 repo」,而是讓它的 skill system 開始有世界模型層。
為什麼 OpenClaw 是一個很適合的整合點?
因為 CtxFST 和 OpenClaw 之間,有一個很關鍵的共通介面:
SKILL.md
這件事非常重要。
OpenClaw 本來就支援:
SKILL.md- YAML frontmatter
- progressive disclosure
- 以 skills 為中心的 agent runtime
而 CtxFST v2.x 剛好也把整個 world model contract 很多部分壓在 SKILL.md 上:
preconditionspostconditionsrelated_nodesrelated_skillscostidempotent
所以兩者之間其實天然就有一個相容層。
這代表整合時不需要發明一套全新 protocol,而是可以用一個很實際的方式:
直接把
skill-chunk-md放進 OpenClaw 的skills/目錄,讓它作為 AgentSkills-compatible skill 被載入。
這個路徑非常漂亮,因為它讓整合成本很低,但能力提升很大。
最簡單的整合方式:把 skill-chunk-md 放進 skills/
整合上最直觀的做法其實很簡單:
openclaw/
├── skills/
│ ├── some-existing-skill/
│ ├── cognitive-memory/
│ ├── ontology/
│ └── skill-chunk-md/
│ ├── SKILL.md
│ ├── scripts/
│ ├── tests/
│ └── ...
當 skill-chunk-md 被放進 OpenClaw 的 skills/ 目錄之後,OpenClaw 會把它當作一個標準 SKILL.md skill 載入。
這一步的價值不只在於「可以被叫用」,而在於:
CtxFST 整套 world model metadata 會開始進入 OpenClaw 的 skill 解譯流程。
也就是說,OpenClaw 不只是讀到一個 skill 名稱,而是讀到一個帶有:
- world state transition 語意
- planning 語意
- graph anchor 語意
的 skill 定義。
這就讓 OpenClaw 原本的技能系統開始往更深的語意層下沉。
這裡最關鍵的是什麼?不是安裝,而是語意相容
要強調的是,整合的難點其實不是「檔案怎麼放」,而是「語意怎麼對上」。
而 CtxFST 之所以能很自然地裝進 OpenClaw,是因為它和 OpenClaw 在 skill contract 上剛好高度相容:
| OpenClaw 能讀的東西 | CtxFST 提供的東西 |
|---|---|
SKILL.md frontmatter |
SKILL.md frontmatter |
| 觸發時機與技能說明 | description, progressive disclosure |
| 前置條件 / 後置條件 | preconditions, postconditions |
| skills 之間的串接線索 | related_skills |
| context-aware 呼叫 | related_nodes, world-state-driven routing |
換句話說,CtxFST 不是硬塞進 OpenClaw,而是剛好把 OpenClaw 原本 skill 介面往更高維度延伸。
這也是為什麼我會說:
這次整合不是 plug-in 式的小功能,而是 OpenClaw skill runtime 的一次能力升級。
整合後,OpenClaw 會多出哪三層能力?
如果用最清楚的方式來拆,我會說 OpenClaw 至少多出三層能力。
1. Semantic Graph Layer
這是最直接的一層。
整合 CtxFST 之後,OpenClaw 不再只是面對一堆 text chunks 或技能說明,而是可以透過 CtxFST 的 pipeline 建出:
- chunk nodes
- entity nodes
SIMILAR / REQUIRES / LEADS_TO / COMPLETED邊- entity graph
如果再接上:
LanceDBHelixDB
這一層就能支援:
- chunk/entity 檢索
- graph traversal
- relation-aware navigation
- 更準的 GraphRAG
也就是說,OpenClaw 本來如果比較像在操作一組 skills,整合後就會開始比較像在操作一個 semantic graph-backed world。
2. Agent Loop Layer
這是第二層,也是我覺得最關鍵的一層。
一旦 OpenClaw 能透過 callback 或工具調用去呼叫:
world_state.pyskill_selector.pyagent_loop.py
它就不再只是單次調用 skill,而是能進入:
read world state
-> select next skill
-> execute
-> write back postconditions
-> append graph edges
-> replan
這就是真正的 world model loop。
而這件事對 OpenClaw 的提升非常大,因為它代表:
OpenClaw 不再只是在 orchestration skills,而是在一個會演化的語意世界裡持續規劃。
3. Memory + Planning Layer
第三層則是把 OpenClaw 既有的持久化記憶和 CtxFST 的 graph-aware planning 接起來。
例如 OpenClaw 自己如果已經有:
- 持久化記憶
- 長期任務上下文
- 像
~/.openclaw/memory.md這類記錄層
那 CtxFST 可以補上的是:
- graph-aware routing
- multi-step lookahead
- relation-specific explanations
- interactive critique
也就是說,記憶不再只是「存下來」,而是開始被拿來:
驅動下一步的 graph-aware decision making。
這點非常關鍵。
這代表 OpenClaw 會從什麼,變成什麼?
我會這樣總結這次整合的本質。
沒整合前
OpenClaw 比較像:
- 一個 skill-oriented agent runtime
- 有技能
- 有記憶
- 有工具
但它對「世界」的表示仍然比較鬆散。
整合後
OpenClaw 開始更像:
- 一個以
SKILL.md為介面的 semantic world model runtime
它不只知道:
- 有哪些 skills
還開始知道:
- 世界目前有哪些 active states
- 哪些 entities 正在構成當前語意子圖
- 哪些關係是因果、哪些只是相似
- 哪條 skill chain 更接近 goal
這個差別,就是世界模型層的差別。
一張圖看懂整合後的架構
flowchart LR
A[OpenClaw Runtime] --> B[skills/skill-chunk-md/SKILL.md]
B --> C[CtxFST World Model Layer]
C --> D[world_state.py]
C --> E[skill_selector.py]
C --> F[agent_loop.py]
C --> G[entity graph / chunks / entities]
G --> H[LanceDB / HelixDB]
A --> I[persistent memory]
I --> D
F --> D
F --> G
這張圖裡最重要的不是檔案名稱,而是 flow:
- OpenClaw 透過
SKILL.md載入 CtxFST - CtxFST 提供 world model runtime
- runtime 同時讀寫 world state、graph、memory
這就讓 OpenClaw 從「技能系統」開始長成「技能 + 世界狀態 + 圖譜 + 規劃」的系統。
為什麼這比一般 RAG integration 更有價值?
因為一般把某個系統接到 agent 裡,常常只是:
- 多一個 retrieval backend
- 多一個 vector search
- 多一個 tool call
但 CtxFST 整合進 OpenClaw 之後,不只是 retrieval 升級而已。
它真正做的是:
把 OpenClaw 的技能系統接上一個可操作的世界模型層。
所以提升不只在:
- 找資料更準
還在:
- 規劃更有方向
- 記憶更可結構化
- 任務更能長期推進
- 執行歷史能回寫成 graph trace
這些都是一般 RAG integration 沒辦法自然帶來的。
CallbackExecutor 在這裡扮演什麼角色?
如果要真的讓 OpenClaw 調用 CtxFST runtime,CallbackExecutor 會是一個很自然的整合點。
因為它讓 agent_loop.py 不用自己知道 OpenClaw 的內部執行方式,而只需要:
把某個 OpenClaw skill execution function 包成 callback。
這會讓整合變得很乾淨:
- OpenClaw 保持自己的 execution model
- CtxFST 保持自己的 world model orchestration
- 兩者只在 executor protocol 上接起來
這種設計很重要,因為它避免把兩個系統硬耦合在一起。
也就是說,OpenClaw 可以把 CtxFST 當成:
- 一個 skill package
- 一個 world model runtime layer
- 一個 planning backend
而不一定要把整個內部架構重寫掉。
這和 OpenClaw 既有的 memory / ontology skills 有什麼關係?
這點我覺得很值得講。
如果 OpenClaw 本來就已經有像:
cognitive-memoryontology
這類 skills,那麼 CtxFST 整合進去之後,不會是重複造輪子,而更像是:
把這些能力往 production-grade world model 再推進一步。
為什麼?
因為 CtxFST 補上的不是單一功能,而是一整條能力鏈:
- schema
- chunk/entity graph
- world state
- graph-aware routing
- multi-step planning
- explanation
- critique
- writeback
所以它可以被視為:
把 OpenClaw 原本偏知識管理、偏技能管理的能力,升級成可規劃、可回寫、可互動的 semantic world model stack。
這不是替代,而是擴張。
一個很實際的使用場景:長期任務規劃
如果要用一句話講這次整合最適合的場景,我會說:
長期任務規劃。
例如:
- 長時間的技術學習計畫
- 長週期的研究任務
- 多階段的職涯規劃
- 跨多次 session 的任務推進
在這些場景裡,最重要的不是單次回答對不對,而是:
- 狀態能不能持續累積
- world model 能不能持續演化
- 下一步能不能根據前面的執行結果來重算
- 人類能不能在中途修正規劃
這正是 CtxFST 擅長的地方。
而 OpenClaw 如果接上這一層,就會在這類任務上變得特別有力。
這一章真正想說的是什麼?
我覺得最核心的一句話其實是:
CtxFST 裝進 OpenClaw,不只是讓 OpenClaw 多一個 skill,而是讓它的 skills 開始共享同一個語意世界。
這句話很重要。
因為沒有 world model 時,skills 往往只是:
- 一個一個分散的能力
- 靠 prompt 臨時串起來
- 缺乏穩定的共享 state
有了 CtxFST 之後,這些 skills 開始能:
- 共享 entities
- 共享 world state
- 共享 graph
- 共享 execution trace
這就是從「技能集合」走向「共享語意世界」的差別。
這一步也意味著什麼?
如果把整個系列拉高來看,這其實是很關鍵的一步。
前面 CH1 到 CH20 比較像是在把 CtxFST 自己做完整:
- schema
- graph
- runtime
- planning
- explanation
- critique
到了 CH21,第一次真正往外部 agent runtime 接。
也就是說,這一章的意義不是再多一個 feature,而是:
證明 CtxFST 不只是能自洽地工作,也能成為別的 agent 系統的 world model backend。
這很重要,因為這代表它開始有平台價值,而不只是 repo 內部價值。
結語:從這一章開始,CtxFST 不只是自己的 world model,而是別人的 semantic substrate
如果 CH20 的重點是:
planner 已經能進入 human-in-the-loop
那 CH21 的重點就是:
這整套東西已經不只屬於 CtxFST 自己,而是可以作為其他 agent runtime 的 semantic substrate。
這是很重要的成熟標誌。
因為一個系統真正有生命力,往往不是只靠自己能跑,而是:
它能不能成為別的系統的底座。
而 CtxFST 整合進 OpenClaw 之後,開始具備的正是這種能力:
- skill-compatible
- graph-aware
- stateful
- explainable
- critique-capable
也就是說,它不只是能做 semantic world model。
它已經開始能:
把 semantic world model 能力輸出給別的 agent 系統。
而這,正是我認為 CH21 最值得記住的地方。
參考整合方向
- 將
skill-chunk-md放入 OpenClaw 的skills/目錄 - 透過
SKILL.mdfrontmatter 作為 OpenClaw 與 CtxFST 的 skill contract - 以
agent_loop.py的CallbackExecutor作為 execution bridge - 以
skill_selector.py與world_state.py作為 world model runtime 核心
📌
CH20讓 planner 變成可協作介面,而CH21則把這套介面帶進 OpenClaw,讓 agent skills 開始共享同一個 semantic world model。
- ← Previous
CtxFST CH20 - Interactive Plan Critique:讓 Planner 進入真正的人機協作 - Next →
CtxFST CH22 - Entity-Aware Retrieval vs Pure RAG:用真實筆記集跑一次,差在哪裡