| name | psi-shared-state-architecture-v2 |
| description | PSI (Persistent Shared Interface): Shared-state architecture for coherent AI-generated instruments in personal AI agents. Transforms isolated AI-generated modules into persistent, connected, chat-complementary artifacts through a shared personal-context bus. Activation: PSI, shared state, personal AI, AI-generated instruments, coherent computing, context bus. |
| category | systems-engineering |
PSI: Shared-State Architecture for Coherent AI-Generated Instruments
åºäºè®ºæ "PSI: Shared State as the Missing Layer for Coherent AI-Generated Instruments in Personal AI Agents" (Wang et al., 2026) çæ¹æ³è®ºæèœã
æ žå¿ææ³
䞪人AIå·¥å
·ç°åšå¯ä»¥ä»èªç¶è¯èšè¯·æ±çæïŒäœå®ä»¬åšå建ååŸåŸä¿æå€ç«ãPSIæ¯äžäžªå
±äº«ç¶ææ¶æïŒå°ç¬ç«çæçæš¡å蜬å䞺è¿èޝçå·¥å
·(instruments)ïŒæä¹
ãè¿æ¥ãäžè倩äºè¡¥ç工件ïŒå¯éè¿GUIåéçšè倩代ç访é®ã
éè¿å°åœåç¶æååååèœååžå°å
±äº«ç䞪人äžäžææ»çº¿ïŒæš¡åå®ç°è·šæš¡åæšçåè·šæ¥å£ç忥æäœã
æ žå¿æŠå¿µ
InstrumentïŒå·¥å
·ïŒå®ä¹
åçšBeaudouin-Lafonçä¹åšäº€äºæš¡åïŒPSIå®ä¹å·¥å
·äžºå
·æä»¥äžç¹æ§ççæå·¥ä»¶ïŒ
- PersistentïŒæä¹
ïŒïŒæ ééæ°çæå³å¯ä¿æå¯çš
- ConnectedïŒè¿æ¥ïŒïŒå°ç¶æååžå°å
±äº«äžªäººäžäžæå±ïŒå¯æŽé²åååèœ
- Chat-ComplementaryïŒè倩äºè¡¥ïŒïŒæ¯æäžç¥åŒçæ§ïŒåæ¶è倩å€ç绌åãæ§ä¹æ¶è§£åæç¶ææäœ
ModuleïŒæš¡åïŒå®ä¹
æš¡åæ¯å·¥å
·èåç宿Žèœ¯ä»¶å
ïŒå
æ¬ïŒ
- GUIçé¢
- æ°æ®æäŸè
(provider)
- å¯éæå¡
é®é¢èæ¯
äžªäººæ°æ®ç¢çåé®é¢
äººä»¬è¶æ¥è¶äŸèµäžªäººæ°åå·¥å
·çæç³»ç»ïŒ
- å¥åº·åºçšïŒè®°åœé»çŒåç¡ç ïŒ
- å蜊æå¡ïŒè·èžªæ¶éŽåæ¯ä»ïŒ
- æ¥åãäœçœ®èœšè¿¹
- å¯ç©¿æŽäŒ æåš
- æ¥åžžä»ªè¡šæ¿
æ žå¿é®é¢ïŒç®åæ
å¢é®é¢åŠ"æç°åšçå¿çæ¯åŠå€ªé«ïŒ"å¯èœéèŠç»åïŒ
- æè¿çé»çŒæŽ»åš
- åœåè¿åšç¶æ
- ç¡ç 莚é
- æ
å¢ä¿¡å·ïŒæ¯åŠæ£åšèµ°åå³å°è¿æçå蜊äœïŒ
å°éŸäžåšäºå䞪信å·äžå¯çšïŒèåšäºè¿äºä¿¡å·åæ£åšåºçšãæå¡åæ¥å£ä¹éŽã
ç°æç³»ç»å±éæ§
| ç³»ç» | 对è¯AI | æä¹
GUI | ç»æåäžäžæ | è·šæš¡å绌å | åºçšçº§åå |
|---|
| ChatGPT/Claude | â
| â ïž | â ïž | â | â |
| Siri/Google婿 | â
| â | â ïž | â | â |
| Shortcuts/IFTTT | â | â | â | â ïž | â ïž |
| Home Assistant | â ïž | â | â
| â
| â
|
| v0/Lovable | â
| â
| â | â | â ïž |
| M365 Copilot | â
| â | â ïž | â
| â ïž |
| PSI | â
| â
| â
| â
| â
|
PSIæ¶æ
ç³»ç»æŠè§
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â PSI Architecture â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â ââââââââââââââââ Generate âââââââââââââââââââââââââââ â
â â User Intent â ââââââââââââââââ â AI Generation Engine â â
â â (Natural â â (e.g., Claude, GPT) â â
â â Language) â âââââââââââââ¬ââââââââââââââ â
â ââââââââââââââââ â â
â ⌠â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â Shared Personal-Context Bus â â
â â âââââââââââââââ âââââââââââââââ âââââââââââââââââââ â â
â â â BoBo â â Health â â Parking â â â
â â â (Timeline) â â (Workouts) â â (Status) â â â
â â â â â â â â â â
â â â State: â â State: â â State: â â â
â â â - motion â â - heart_rateâ â - location â â â
â â â - steps â â - calories â â - time_remainingâ â â
â â â - sleep â â - duration â â - cost â â â
â â âââââââââââââââ âââââââââââââââ âââââââââââââââââââ â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â
â âââââââââââââââââŒââââââââââââââââ â
â ⌠⌠⌠â
â âââââââââââââââââââ ââââââââââââââââ ââââââââââââââââââââ â
â â Persistent â â Facai â â Write-Back â â
â â GUIs â â (Chat Agent)â â Affordances â â
â â â â â â â â
â â - Glanceable â â Cross-Module â â - Update parking â â
â â dashboards â â Reasoning â â - Log workout â â
â â - Interactive â â - Synthesis â â - Set reminder â â
â â timelines â â - Actions â â â â
â âââââââââââââââââââ ââââââââââââââââ ââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
å
³é®ç»ä»¶
1. å
±äº«äžªäººäžäžææ»çº¿ (Shared Personal-Context Bus)
- ç»æåç¶æååžïŒæš¡å以æ åæ ŒåŒååžåœåç¶æ
- Provider ContractïŒæäŸè
å¥çºŠç¡®ä¿äºæäœæ§
- 宿¶åæ¥ïŒæææ¥å£è®¿é®åäžç¶æ
2. æä¹
GUI (Persistent GUIs)
- äžç¥åŒçæ§ïŒæ éæåŒè倩å³å¯æ¥çç¶æ
- å¯å®å¶ä»ªè¡šæ¿ïŒçšæ·å¯èªå®ä¹æŸç€ºå
容
- 亀äºåŒæ¶éŽçº¿ïŒçºµåè¶å¿çæ§
3. éçšè倩代ç (Facai)
- è·šæš¡åæšçïŒåºäºå
±äº«ç¶æè¿è¡ç»Œå
- æ
墿ç¥åçïŒç»åå€äžªæš¡åçæ°æ®
- æç¶ææäœïŒæ§è¡éèŠç»Žæ€ç¶æçä»»å¡
4. åååèœ (Write-Back Affordances)
- ååæäœïŒäžä»
读åç¶æïŒè¿èœä¿®æ¹
- åºçšçº§éæïŒäžå€éšåºçšäº€äº
- 忥åšäœïŒè·šæ¥å£åæ¥æäœ
å·¥äœæµçš
1. ä»çšæ·æåŸçæ
çšæ·: "å建äžäžªå·¥å
·æ¥è·èžªæçæ¥åžžæ¶éŽçº¿ïŒ
äœ¿çšææºåæè¡šçäŒ æåšæ°æ®"
â
AIçæåŒæ â å建BoBoæš¡å
2. ç¶æååžå°æ»çº¿
bobo_state = {
"module": "BoBo",
"timestamp": "2026-04-09T14:30:00Z",
"state": {
"motion": "walking",
"steps": 8432,
"heart_rate": 95,
"sleep_quality": 0.72,
"sleep_duration": 6.5
},
"affordances": ["log_workout", "set_reminder"]
}
publish_to_context_bus(bobo_state)
3. è·šæš¡åæ¥è¯¢å€ç
çšæ·: "䞺ä»ä¹ææè¿æè§è¿ä¹ç²æ«ïŒ"
â
Facaiæ¥è¯¢å
±äº«æ»çº¿:
- BoBo: ç¡ç 莚é(0.72), ç¡ç æ¶é¿(6.5h)
- Health: æè¿é»çŒ(é«åŒºåºŠ), å¿çååŒæ§
- Calendar: å·¥äœèŽèœœ(é«), äŒè®®å¯åºŠ
â
Facai绌ååç:
"æ ¹æ®äœ çæ°æ®ïŒå¯èœåå å
æ¬ïŒ
1. ç¡ç æ¶é¿äžè¶³ïŒå¹³å6.5å°æ¶ïŒ
2. æè¿é«åŒºåºŠé»çŒåæ¢å€äžè¶³
3. å·¥äœèŽèœœèŸé
建议ïŒä»æå°è¯æ©ç¹äŒæ¯ïŒæå€©è¿è¡èœ»åºŠæŽ»åšã"
4. äž»åšéç¥
BoBoæ£æµå°:
- çšæ·æ£åšèµ°åå蜊äœ
- å蜊æ¶éŽå³å°è¿æïŒå©äœ5åéïŒ
- åœåå¿ç100ïŒæ£åžžïŒèèå°åé»çŒå®ïŒ
â
äž»åšéç¥:
"äœ çå蜊å°åš5åéåè¿æïŒå»ºè®®å å¿«æ¥äŒã
äœ çå¿ç100æ¯æ£åžžçïŒèèå°äœ åé»çŒå®ã"
å®ç°æå
æ¥éª€1ïŒå®ä¹Provider Contract
from dataclasses import dataclass
from typing import Dict, List, Any, Optional
from datetime import datetime
@dataclass
class InstrumentState:
"""æ å仪åšç¶ææ ŒåŒ"""
module: str
timestamp: datetime
state: Dict[str, Any]
affordances: List[str]
metadata: Optional[Dict] = None
class ContextBus:
"""å
±äº«äžªäººäžäžææ»çº¿"""
def __init__(self):
self._state = {}
self._subscribers = []
def publish(self, state: InstrumentState):
"""ååžç¶æå°æ»çº¿"""
self._state[state.module] = state
self._notify_subscribers(state)
def query(self, module: str = None,
state_key: str = None) -> Any:
"""æ¥è¯¢æ»çº¿ç¶æ"""
if module:
return self._state.get(module)
._state
():
._subscribers.append(callback)
():
callback ._subscribers:
callback(state)
æ¥éª€2ïŒå建Instrumentæš¡å
class Instrument:
"""PSI Instrumentåºç±»"""
def __init__(self, name: str, context_bus: ContextBus):
self.name = name
self.bus = context_bus
self.state = {}
self.affordances = []
def update_state(self, new_state: Dict):
"""æŽæ°å¹¶ååžç¶æ"""
self.state.update(new_state)
instrument_state = InstrumentState(
module=self.name,
timestamp=datetime.now(),
state=self.state,
affordances=self.affordances
)
self.bus.publish(instrument_state)
def execute_affordance(self, action: str, params: Dict):
"""æ§è¡ååæäœ"""
if action not in self.affordances:
raise ValueError(f"Unknown affordance: {action}")
return self._handle_action(action, params)
def _handle_action(self, action: str, params: Dict):
"""åç±»å®ç°å
·äœæäœ"""
raise NotImplementedError
æ¥éª€3ïŒå®ç°Chat Agent
class FacaiAgent:
"""PSIéçšè倩代ç"""
def __init__(self, context_bus: ContextBus, llm_client):
self.bus = context_bus
self.llm = llm_client
self.bus.subscribe(self._on_state_update)
def _on_state_update(self, state: InstrumentState):
"""çå¬ç¶ææŽæ°"""
pass
def process_query(self, user_query: str) -> str:
"""å€ççšæ·æ¥è¯¢"""
context = self._assemble_context()
prompt = self._build_prompt(user_query, context)
response = self.llm.generate(prompt)
actions = self._parse_actions(response)
self._execute_actions(actions)
return response
def _assemble_context(self) -> str:
"""ç»è£
è·šæš¡åäžäžæ"""
context_parts = []
for module_name, state in self.bus.query().items():
context_parts.append(
f"[{module_name}]\n"
)
.join(context_parts)
æ¥éª€4ïŒå建æä¹
GUI
class PersistentGUI:
"""æä¹
GUIç»ä»¶"""
def __init__(self, context_bus: ContextBus):
self.bus = context_bus
self.instruments = {}
self.bus.subscribe(self._on_state_update)
def _on_state_update(self, state: InstrumentState):
"""æŽæ°GUIæŸç€º"""
self.instruments[state.module] = state
self._render()
def _render(self):
"""æž²æä»ªè¡šæ¿"""
pass
def create_instrument_card(self, state: InstrumentState) -> Widget:
"""䞺仪åšå建å¡çè§åŸ"""
card = Widget()
card.title = state.module
card.content = self._format_state(state.state)
card.actions = state.affordances
return card
讟计åå
1. æ¬å°éæä¹å¡
- æ¯äžªæš¡åèŽèŽ£ååžæ åæ ŒåŒçç¶æ
- éææ¯æš¡åçæ¬å°ä¹å¡ïŒèéæå¯¹é®é¢
- æäŸè
å¥çºŠç¡®ä¿äºæäœæ§
2. åå·¥æç¡®
- å·¥å
·ïŒäžç¥åŒçæ§ååžžè§æ§å¶
- è倩ïŒè·šæš¡å绌ååæç¶ææäœ
- 䞀è
æäœåäžå
±äº«ç¶æ
3. æžè¿åŒéæ
- åæçæç仪åšå¯éè¿çžåå¥çºŠèªåšéæ
- æ éä¿®æ¹ç°ææš¡å
- ååå
Œå®¹æ§
åœåéå¶äžæªæ¥å·¥äœ
åœåéå¶
- æ æ¡ä»¶æ³šå
¥ïŒæç€ºé¿åºŠéæš¡åæ°éå¢é¿
- äžäžææ±¡æïŒè¿æ¶æè¯¯å¯Œæ§æèŠå¯èœéäœç³»ç»ååºèŽšé
- åçšæ·éªè¯ïŒåœåè¯æ®æ¥èªåäžªææ¯çç»çšæ·çäžåšéšçœ²
æªæ¥æ¹å
- å€§è§æš¡è·¯ç±ïŒæš¡åæ°éå¢é¿æ¶çè·¯ç±åéæ©çç¥
- éç§åææïŒäžªäººèåŽæäœçéç§ä¿æ€
- éçšåºåå¯è®¿é®æ§ïŒäœ¿åè§æš¡åçæå¯¹éçšåºåå¯è®¿é®
- äžäžæéæ©ïŒæºèœéæ©çžå
³äžäžæåé
äžç°ææ¶ææ¯èŸ
| ç¹æ§ | äŒ ç»MVC | 埮å端 | æä»¶ç³»ç» | PSI |
|---|
| ç¶æå
±äº« | â | â ïž | â ïž | â
|
| è·šæš¡åæšç | â | â | â | â
|
| èªç¶è¯èšçæ | â | â | â | â
|
| æä¹
GUI | â
| â
| â
| â
|
| è倩äºè¡¥ | â | â | â | â
|
åºçšåºæ¯
1. 䞪人å¥åº·å©æ
- æŽåå¥åº·åºçšãå¯ç©¿æŽè®Ÿå€ãæ¥å
- è·šæ°æ®æºç»Œåå¥åº·æŽå¯
2. æºèœå®¶å±
æ§å¶äžå¿
- ç»äžæ§å¶äžåååçæºèœè®Ÿå€
- æ
墿ç¥çèªåšå
3. 䞪人ç产åå¥ä»¶
- æŽåæ¥åãä»»å¡ãç¬è®°ãé®ä»¶
- æºèœæ¶éŽç®¡çåæé
4. æ
è¡å©æ
- æŽåèªçãé
åºãå°åŸãæ¥å
- 宿¶è¡çšè°æŽåéç¥
è§Šåè¯
- PSI
- shared state architecture
- personal AI
- AI-generated instruments
- coherent computing
- context bus
- persistent GUI
- chat-complementary
- cross-module reasoning
- å
±äº«ç¶ææ¶æ
- 䞪人AI
- è¿èŽ¯è®¡ç®
çžå
³æèœ
- discounted-mpc-robust-control: ææ£MPC鲿£æ§å¶
- density-driven-multi-agent-control: 倿ºèœäœå¯åºŠæ§å¶
- agent-memory-framework: 代çè®°å¿æ¡æ¶
åèæç®
Wang, Z., Hu, E., Rucker, M., & Barnes, L. E. (2026). PSI: Shared State as the Missing Layer for Coherent AI-Generated Instruments in Personal AI Agents. arXiv:2604.08529 [cs.HC].
å®ç°æ³šæäºé¡¹
- ç¶ææ ŒåŒæ ååïŒç¡®ä¿æææš¡å䜿çšäžèŽçç¶ææ ŒåŒ
- 宿¶æ§ïŒæ»çº¿æŽæ°åºåæ¶äŒ æå°æææ¥å£
- é误å€çïŒæš¡åæ
éäžåºåœ±åæŽäžªç³»ç»
- éç§ä¿æ€ïŒææäžªäººæ°æ®éèŠéåœçè®¿é®æ§å¶
- 坿©å±æ§ïŒè®Ÿè®¡åºæ¯ææš¡åæ°éçå¢é¿