# 從狀態機到世界狀態機：AI 為何不應每輪重新理解世界

**系列：狀態驅動的本地具身 AI｜第 4 篇**  
**版本：v0.1**  
**日期：2026-08-01**

---

## 摘要

今日許多 LLM Agent 與具身 AI 系統仍保留一種「請求式心智」結構：每當新輸入到來，系統把對話歷史、工具輸出、感知摘要、任務資訊與部分程式說明重新塞回模型，要求模型再次判斷「現在發生了什麼」。這種方法在短任務中簡單有效，但當系統需要長時間存在、持續感知、控制實體裝置或跨設備協作時，會產生上下文重讀、狀態漂移、歷史膨脹、延遲、費用與不一致等問題。

本文提出「世界狀態機（World-State Machine）」作為一種 Runtime 架構，而不是新的生成式 world model。其核心原則是：**世界應被視為持續演化的狀態，而不是每一輪重新從完整歷史中重建的文字敘事。** 系統以事件增量更新目前狀態：

$$
S_{t+1}=U(S_t,E_{t+1},A_t),
$$

大型模型只取得與當前任務相關的狀態投影：

$$
C_t^{(m)}=\phi_m(S_t,G_t,Q_t),
$$

而不是完整歷史 $H_t$ 。

這個想法並非脫離既有理論。POMDP 的 belief state 是完整 action-observation history 的 sufficient statistic；機器人世界模型的工程文獻也長期把 world model 定義為可由其他元件 tell/ask 的持續世界狀態；近期 LLM Agent 研究則再次顯示 state tracking、finite-state memory 與 persistent world model 對長程任務可靠性具有顯著價值。

本文進一步提出三層資料結構：事件日誌、物化世界狀態、模型專用投影，並把不確定性、來源、時間戳、衝突與陳舊性納入狀態單元。這使「世界狀態」不再只是簡化的 key-value cache，而成為具身 AI、長期 Agent 與未來個人 AI Runtime 的核心執行基礎。

**關鍵詞：** 世界狀態機、世界模型、Agent State、POMDP、Belief State、事件驅動、Event Sourcing、持續狀態、LLM Agent、具身智能

---

# 1. 從一個很常見但昂貴的 Agent 迴圈開始

最常見的 LLM Agent 可以粗略寫成：

```text
User / Sensor Input
        ↓
Collect History
        ↓
Build Prompt
        ↓
LLM Re-understands Context
        ↓
Choose Tool / Action
        ↓
Append Result to History
        ↓
Repeat
```

形式上：

$$
a_t=M(H_t,o_t),
$$

其中：

$$
H_t=(o_0,a_0,o_1,a_1,\ldots,o_{t-1},a_{t-1})
$$

代表累積歷史。

這種架構有一個隱藏前提：

> **當前世界可以藉由重新閱讀歷史而重新理解。**

在幾輪聊天中，這很合理。

但若 Agent 連續運作數小時、數天甚至數月，問題便開始出現：

$$
|H_t|\uparrow
\quad\Longrightarrow\quad
\text{Context Cost}\uparrow,
\text{Latency}\uparrow,
\text{State Ambiguity}\uparrow.
$$

更糟的是，歷史不是世界本身。

「五分鐘前門是開的」並不代表「門現在仍然是開的」。

因此：

$$
\boxed{
\text{History}
\neq
\text{Current State}
}
$$

這是從聊天系統走向長期 Agent 時最重要的架構轉折之一。

---

# 2. 世界不是每輪重新生成，而是在變化

如果機器人知道：

```text
門：關閉
主人：客廳
電量：63%
任務：等待主人
```

下一秒只發生：

```text
事件：主人走進廚房
```

那麼合理的更新是：

```text
主人：客廳
    ↓
主人：廚房
```

而不是把過去三小時的攝影機描述、對話紀錄、導航日誌全部重新交給大模型，請它再次判斷主人在哪裡。

形式上：

$$
S_{t+1}
=
U(S_t,E_{t+1},A_t).
$$

其中：

- $S_t$ ：目前世界狀態；
- $E_{t+1}$ ：新事件／觀測；
- $A_t$ ：上一輪行動；
- $U$ ：狀態更新算子。

這裡真正處理的是：

$$
\Delta S_t,
$$

而不是重新求：

$$
S_t=f(H_t)
$$

的完整重建。

因此世界狀態機的第一條原則是：

$$
\boxed{
\text{Update the difference; do not repeatedly reconstruct the whole.}
}
$$

---

# 3. POMDP 早就提供了一個重要數學直覺

真實世界通常不是完全可觀測的。

我們不能直接知道真實狀態 $s_t$ ，只能取得 observation：

$$
o_t.
$$

在 POMDP 中，可以維持 belief state：

$$
b_t(s)
=
P(s_t=s\mid H_t).
$$

而 belief state 有一個非常重要的理論性質：在標準 POMDP 假設下，它是完整 action-observation history 的 sufficient statistic。

也就是：

$$
\pi^*(H_t)
=
\pi^*(b_t).
$$

控制策略不必每次把完整歷史當輸入，只要有正確更新後的 belief state 即可。

其更新可以抽象成：

$$
b_{t+1}
=
\tau(b_t,a_t,o_{t+1}).
$$

這與本文想表達的世界狀態機非常接近：

$$
S_{t+1}
=
U(S_t,A_t,E_{t+1}).
$$

但必須強調：

> **任意壓縮狀態都不是 sufficient statistic。**

只有當 $S_t$ 保留了當前任務真正需要的資訊，它才可以取代完整歷史。

因此，世界狀態機不是「把歷史摘要一下」。

它是一個持續被校正、被驗證、面向決策而設計的狀態表示。

---

# 4. 「世界模型」這個詞其實有兩種不同意思

今天談 world model，很容易混淆兩類東西。

第一類是：

$$
\text{Predictive / Generative World Model}
$$

例如學習：

$$
P(S_{t+1}\mid S_t,A_t)
$$

甚至生成未來影像、物理軌跡或多模態世界。

第二類則是傳統機器人軟體架構中的：

$$
\text{World State Representation}.
$$

2023 年的《Robotic world models—conceptualization, review, and engineering best practices》回顧了數十年的機器人 world model 文獻，並把 world model 描述為內部表示世界狀態、讓其他模組透過 tell/ask 介面更新與查詢的軟體元件。

本文主要談的是第二種：

$$
\boxed{
\text{World-State Runtime}
}
$$

它不一定需要生成未來。

也不一定是神經網路。

它首先要回答：

> **現在，系統相信世界是什麼狀態？**

未來的 predictive world model 可以接在這個 Runtime 上，但兩者不應概念混用。

---

# 5. 世界狀態不是一個巨大 JSON

最粗糙的實作可能是：

```json
{
  "user_location": "kitchen",
  "battery": 63,
  "door": "closed"
}
```

這可以作為 MVP，但長期系統還不夠。

因為真實世界的狀態至少需要：

$$
x_i=
(v_i,c_i,t_i,s_i,\ell_i),
$$

其中：

- $v_i$ ：value；
- $c_i$ ：confidence；
- $t_i$ ：timestamp；
- $s_i$ ：source；
- $\ell_i$ ：lifetime / staleness policy。

例如：

```text
user.location = kitchen
confidence = 0.91
timestamp = 12:31:05
source = camera_2
valid_for = 5 sec
```

這與：

```text
user.name = Neo
confidence = 1.0
source = identity_database
valid_for = persistent
```

不是同一種類型的狀態。

所以：

$$
\boxed{
\text{State Value}
+
\text{Epistemic Metadata}
}
$$

才構成真正可維護的世界狀態。

---

# 6. 狀態至少要分成五類

一個長期具身 Agent 可以把 $S_t$ 分成：

$$
S_t=
(
P_t,
D_t,
T_t,
R_t,
B_t,
M_t
).
$$

## 6.1 Physical State：物理世界

例如：

- 人的位置；
- 門是否開啟；
- 障礙物；
- 房間；
- 光線；
- 溫度；
- 物體姿態。

---

## 6.2 Device State：自身裝置

例如：

- 電量；
- 馬達；
- 網路；
- 攝影機；
- 充電狀態；
- 故障；
- CPU/NPU 負載。

---

## 6.3 Task State：任務

例如：

- 當前目標；
- 子任務；
- pending tool calls；
- checkpoint；
- 失敗次數；
- timeout。

---

## 6.4 Relational / Social State：關係與互動

例如：

- 誰正在與我說話；
- 上一個對話主題；
- 是否正在等待回答；
- 對方是否剛離開；
- 某個互動是否被打斷。

---

## 6.5 Belief State：不確定狀態

例如：

```text
主人可能在：
廚房 0.65
書房 0.28
其他 0.07
```

世界狀態不應假裝所有資訊都確定。

---

## 6.6 Memory State：長期可檢索狀態

例如：

- 穩定偏好；
- 歷史事件；
- 人物知識；
- 長期計畫；
- 技能紀錄。

Memory 與 Current State 必須分開：

$$
\boxed{
\text{What was true}
\neq
\text{What is true now}.
}
$$

---

# 7. 三層資料結構：Event、State、View

本文建議把世界狀態 Runtime 拆成三層。

---

## Layer 1：事件日誌

保存：

$$
L_t=(e_1,e_2,\ldots,e_t).
$$

例如：

```text
12:30:01 camera_1 sees user in living_room
12:30:03 user says "我要去拿水"
12:30:07 camera_2 sees user in kitchen
12:30:08 robot pauses follow mode
```

事件最好盡量 append-only。

這與軟體架構中的 Event Sourcing 有相似性：事件不是直接被覆蓋，而是作為狀態變化的歷史來源。

---

## Layer 2：物化世界狀態

從事件更新出：

$$
S_t=\operatorname{Reduce}(S_{t-1},e_t).
$$

目前可能是：

```text
user.location = kitchen
robot.mode = waiting
current_dialogue = paused
battery = 63%
```

日常決策直接讀取這一層，不必每次重播完整事件。

---

## Layer 3：模型專用 View

不同模型不應取得整個 $S_t$ 。

而應由投影函數：

$$
C_t^{(m)}
=
\phi_m(S_t,G_t,Q_t)
$$

生成需要的上下文。

例如語言模型只看到：

```text
Current user: Neo
Current location: kitchen
Dialogue state: paused 8 seconds ago
Last utterance: "我要去拿水"
Current robot task: waiting
```

導航模型可能只看到：

```text
robot_pose
local_map
obstacles
target_pose
```

安全控制器甚至只需要：

```text
velocity
distance_to_human
cliff_sensor
motor_status
```

因此：

$$
\boxed{
\text{One World State}
\rightarrow
\text{Many Task-Specific Views}
}
$$

這比「每個模型自己重新理解世界」穩定得多。

---

# 8. 為什麼 Event Log 與 Current State 都要保留？

如果只保存 Current State：

```text
door = closed
```

我們不知道：

- 它一直是關的？
- 剛被主人關上？
- 感測器重新校正？
- 之前曾打開？

如果只保存 Event Log，則每次都必須：

$$
S_t=\operatorname{Reduce}(e_1,\ldots,e_t),
$$

長期成本又會上升。

因此實務上可以：

$$
\boxed{
\text{Snapshot}
+
\text{Event Delta}
}
$$

例如每隔一段時間建立 snapshot：

$$
\hat S_k,
$$

之後只需要 replay：

$$
e_{k+1},\ldots,e_t.
$$

這同時提供：

- 快速查詢；
- 稽核；
- replay；
- debug；
- 歷史重建；
- 當前狀態。

---

# 9. 世界狀態最大的敵人不是遺忘，而是「錯誤地確定」

具身世界充滿感知錯誤。

攝影機可能誤認。

聲音可能從另一個房間傳來。

GPS 會漂移。

物體會被人移動。

因此狀態更新不能總是：

```text
new observation
→ overwrite old value
```

更合理的是：

$$
S_{t+1}
=
\operatorname{Fuse}
(
S_t,
E_{t+1},
\text{confidence},
\text{source},
\text{age}
).
$$

例如：

```text
camera_1: user in kitchen, conf 0.72
microphone: user voice from living room, conf 0.55
phone: user device in kitchen, conf 0.94
```

系統可以維持 belief：

$$
P(\text{kitchen})=0.86,
\qquad
P(\text{living room})=0.12.
$$

而不是強迫現在只能有一個布林真值。

這就是為什麼「世界狀態」與 POMDP belief state 之間有深刻連接。

---

# 10. 時間本身必須進入狀態

許多 Agent 錯誤並不是資訊錯，而是資訊過期。

例如：

```text
door = open
```

若這筆資料來自半小時前，就可能毫無意義。

因此可以定義：

$$
\operatorname{freshness}(x_i,t)
=
f(t-t_i,\ell_i).
$$

當：

$$
\operatorname{freshness}<\theta,
$$

狀態應轉成：

$$
\text{unknown / stale}
$$

而不是繼續當作真實事實。

所以：

$$
\boxed{
\text{Persistent State}
\neq
\text{Permanent Truth}
}
$$

持續保存的是「目前最好的信念」，不是把曾經觀測到的一切永久視為真。

---

# 11. LLM 應讀「狀態投影」，不是資料庫全文

假設完整世界狀態有十萬個欄位。

模型不需要知道：

- 每個馬達的 PWM；
- 所有攝影機 frame ID；
- 每個背景感測器；
- 無關人物的位置；
- 幾年前的所有對話。

模型只需要：

$$
\phi(S_t\mid G_t),
$$

即：

> 對當前目標 $G_t$ 有決策價值的狀態投影。

如果任務是：

> 回答主人剛才問的問題。

則需要：

- 當前人物；
- 對話狀態；
- 問題內容；
- 相關記憶；
- 可用工具。

如果任務是：

> 返回充電座。

語言人格資料幾乎沒有必要。

因此：

$$
\boxed{
\text{State Selection}
\text{ is part of intelligence.}
}
$$

不是「上下文越多越聰明」。

有時：

$$
\text{Less but relevant context}
>
\text{More but noisy context}.
$$

---

# 12. 近期 LLM Agent 研究已經開始重新發現這個問題

2025 年 ACL REALM Workshop 的 StateAct 直接加入 state-tracking，並報告在 ALFWorld、TextCraft、WebShop 等 benchmark 相較 ReAct 有明顯提升。

2025 年提出的 SciBORG 則使用 finite-state automata memory，讓 Agent 能持續追蹤狀態並在工具或執行失敗後恢復。

2025 年 EMNLP Findings 的 CoEx 更直接指出：若 Agent 只依賴 LLM 預訓練得到的靜態「內部世界模型」，卻不能把新的 observations 持續寫入動態世界模型，長期規劃會逐漸與真實世界失配。該工作因此維持 persistent neurosymbolic belief state。

換句話說，LLM Agent 領域正在重新碰到機器人與控制理論很早就知道的一件事：

$$
\boxed{
\text{Reasoning needs state.}
}
$$

---

# 13. 世界狀態機與普通 FSM 有什麼不同？

普通 FSM 常寫成：

$$
q_{t+1}
=
\delta(q_t,e_t),
$$

其中 $q_t$ 通常是有限離散狀態，例如：

```text
Idle
Active
Charging
Fault
```

世界狀態機則不是一個單一有限枚舉。

它更接近：

$$
S_t
=
\{
x_t^1,x_t^2,\ldots,x_t^n
\},
$$

其中每個局部狀態可以有：

- 離散值；
- 連續值；
- 機率；
- 時間；
- 關係；
- 任務狀態；
- 記憶指標。

因此：

$$
\text{FSM}
\subset
\text{World-State Runtime}.
$$

FSM 可以成為其中某一個 component，例如：

$$
S_t^{\mathrm{device}}.
$$

但世界狀態機的重點是讓所有子系統共享：

> **當前世界的一致可查詢表示。**

---

# 14. 世界狀態也不能成為新的「上帝資料庫」

這裡需要防止另一個極端。

如果所有模組都可以任意寫入同一份全域狀態，系統很快會變成：

- 強耦合；
- 欄位衝突；
- 難以追蹤；
- 更新循環；
- 資料權限混亂。

因此 world state 應有明確 ownership。

例如：

```text
physical.pose
    owner = localization_service

battery.level
    owner = power_service

task.current
    owner = task_runtime

social.attention_target
    owner = interaction_runtime
```

其他模組可以：

$$
\text{ask},
$$

但未必可以直接：

$$
\text{write}.
$$

這與機器人 world model 文獻提出的 tell/ask boundary 思想高度一致。

所以統一狀態不等於「所有東西直接共享記憶體」。

它應該是：

$$
\boxed{
\text{Logical Single World}
+
\text{Controlled Update Authority}
}
$$

---

# 15. 模型輸出也必須變成事件，而不是直接偷偷改狀態

假設 LLM 說：

> 「主人應該已經回家了。」

它不能直接寫：

```text
user.location = home
```

更合理的是產生：

```text
inference_event:
  hypothesis = user_is_home
  confidence = 0.61
  source = llm_inference
```

然後世界狀態 Runtime 再決定是否更新 belief。

也就是：

$$
\text{LLM Inference}
\rightarrow
\text{Event}
\rightarrow
\text{Validation}
\rightarrow
\text{State Update}.
$$

這與上一篇的：

$$
\text{LLM Proposal}
\neq
\text{Execution Command}
$$

完全一致。

在這裡變成：

$$
\boxed{
\text{LLM Statement}
\neq
\text{World Truth}
}
$$

模型可以提出世界解釋，但不能靠一句生成文字自行改寫現實。

---

# 16. 狀態修正比狀態更新更重要

假設系統原先相信：

$$
P(\text{user in office})=0.9.
$$

突然新的可靠感測器顯示：

$$
P(\text{user at home})=0.99.
$$

好的 Runtime 必須允許：

$$
S_t
\rightarrow
S_t'
$$

進行 revision。

甚至必要時回溯：

> 哪些計畫是建立在舊錯誤狀態上的？

所以每個計畫最好保存依賴：

$$
\operatorname{Depends}(Plan_i)
=
\{x_3,x_7,x_{21}\}.
$$

當其中關鍵 state 被 invalidated：

$$
x_7\rightarrow\text{invalid},
$$

可以觸發：

$$
Plan_i\rightarrow\text{replan}.
$$

這使世界狀態機真正變成動態決策基礎，而不是一個被動 cache。

---

# 17. 從世界狀態到事件驅動 AI

有了持續狀態，就不必讓大模型一直輪詢：

> 有沒有事情發生？

系統可以定義：

$$
Trigger(E_t,S_t).
$$

只有某些事件滿足條件時：

$$
Trigger=1,
$$

才啟動特定智能模組。

例如：

```text
Battery < 15%
→ charging policy

Known person enters room
→ social interaction runtime

Unknown object blocks route
→ perception escalation

Ambiguous human request
→ LLM

Routine sensor noise
→ no LLM
```

於是：

$$
\boxed{
\text{Persistent State}
+
\text{Event Trigger}
\rightarrow
\text{Sparse Intelligence Invocation}
}
$$

這將直接導向第 5 篇：

**《按需智能：事件驅動、多模型路由與稀疏推理》**

---

# 18. 一個完整的 World-State Runtime

可以將目前架構整理成：

```text
Sensors / Apps / Humans / Tools
            │
            ▼
       Event Normalizer
            │
            ▼
      Append-only Event Log
            │
            ▼
     State Update / Fusion
            │
            ▼
   ┌─────────────────────┐
   │   WORLD STATE       │
   │ physical            │
   │ device              │
   │ task                │
   │ social              │
   │ belief              │
   │ memory refs         │
   └─────────┬───────────┘
             │
       State Projection
       /      |       \
      /       |        \
 Safety      BT/FSM     LLM
 Runtime     Runtime    Context
      \       |        /
       \      |       /
             ▼
        Action Proposal
             │
             ▼
          Actuator
             │
             ▼
       New World Events
```

這形成閉環：

$$
S_t
\rightarrow
A_t
\rightarrow
E_{t+1}
\rightarrow
S_{t+1}.
$$

AI 不再只是一個問答函數。

它成為一個持續存在於狀態演化中的決策系統。

---

# 19. 這對本地 AI 特別重要

雲端模型可以很強，但本地裝置有：

- 電量限制；
- 網路中斷；
- 記憶體限制；
- 延遲；
- 隱私要求。

如果所有智能都依賴：

$$
\text{Upload Whole Context}
\rightarrow
\text{Cloud Reasoning},
$$

系統很難真正持續。

但若本地一直維持：

$$
S_t,
$$

雲端模型只需要偶爾收到：

$$
\phi(S_t),
$$

則：

- 傳輸資料減少；
- 隱私暴露減少；
- 雲端斷線仍能維持狀態；
- 換模型不會失去「現在是什麼狀況」；
- 同一世界狀態可以被不同模型共享。

因此：

$$
\boxed{
\text{The persistent intelligence substrate is state,
not necessarily the largest model.}
}
$$

這一點會在第 7、8 篇的本地 AI 手機與跨設備 AI 主腦再次出現。

---

# 20. 結論

當 AI 只是一個被動聊天工具時：

$$
\text{Prompt}
\rightarrow
\text{Response}
$$

已經足夠。

但當 AI 需要長時間生活在一個持續變化的世界中，架構必須變成：

$$
\boxed{
S_t
+
E_{t+1}
+
A_t
\rightarrow
S_{t+1}
}
$$

然後模型只處理：

$$
\phi(S_t,G_t,Q_t).
$$

完整歷史仍然可以保存。

但歷史的角色是：

- 稽核；
- 回放；
- 記憶；
- 重建；
- 學習；

而不是每一輪都重新充當「現在」。

因此本文最核心的區分是：

$$
\boxed{
\text{History stores how we got here;}
\qquad
\text{State tells us where we are now.}
}
$$

當這個區分成立後，大型模型才真正有可能從一個反覆被 Prompt 喚醒的函數，變成一個可以在持續世界中按需出現的高階智能模組。

下一步也因此非常自然：

> 如果世界狀態已經一直存在，大模型還有必要一直運行嗎？

答案很可能是否定的。

第 5 篇將正式進入：

**事件驅動、多模型路由與稀疏推理。**

---

# 參考資料

1. Paquet, S., Tobin, L., & Chaib-draa, B. *Online Planning Algorithms for POMDPs*.  
   PMC: https://pmc.ncbi.nlm.nih.gov/articles/PMC2748358/

2. Aberdeen, D., Buffet, O., & Thomas, O. (2007). *Policy-Gradients for PSRs and POMDPs*. AISTATS.  
   https://proceedings.mlr.press/v2/aberdeen07a.html

3. Tedrake, R. *Underactuated Robotics — Planning Under Uncertainty*. MIT.  
   https://underactuated.csail.mit.edu/belief.html

4. Waibel, M. et al. (2023). *Robotic world models—conceptualization, review, and engineering best practices*. Frontiers in Robotics and AI.  
   https://www.frontiersin.org/journals/robotics-and-ai/articles/10.3389/frobt.2023.1253049/full

5. Rozanov, N., & Rei, M. (2025). *StateAct: Enhancing LLM Base Agents via Self-prompting and State-tracking*. REALM 2025, ACL Anthology.  
   https://aclanthology.org/2025.realm-1.27/

6. Muhoberac, M. et al. (2025). *State and Memory is All You Need for Robust and Reliable AI Agents*.  
   https://arxiv.org/abs/2507.00081

7. Kim, M., & Hwang, S.-w. (2025). *CoEx – Co-evolving World-model and Exploration*. Findings of EMNLP 2025.  
   https://aclanthology.org/2025.findings-emnlp.1179/

8. AWS Prescriptive Guidance. *Event sourcing pattern*.  
   https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/event-sourcing-pattern.html

9. Dixon, M. F. (2026). *Model Validation of Agentic AI Systems: A POMDP-Based Framework for Belief-State, Forecast, and Policy Validation*.  
   https://arxiv.org/abs/2606.17383
