1.3 KiB
1.3 KiB
架构与数据流
flowchart TB
subgraph Browser
C[assistant-ui Composer]
T[Thread + Toolkit Tool UI]
E[Event Timeline]
S[HarnessClientStore]
C --> S
S --> T
S --> E
end
subgraph Server
F[Fastify API]
R[SessionRegistry]
ES[Memory EventStore]
AB[ApprovalBroker]
AS[AttachmentStore]
MS[ModelConnectionStore]
P[Pi AgentSession]
RL[DefaultResourceLoader]
SW[SafeWorkspace]
F --> R --> P
R --> ES
R --> AB
R --> AS
R --> MS
P --> RL
P --> SW
end
S -->|JSON / multipart| F
ES -->|SSE sequence| S
每个 Web Session 有随机 ID、独立 cwd、SessionManager、事件 sequence、运行锁、AbortController、Approval、Attachment 和 ModelRuntime。Fastify 只解析协议、组合依赖并序列化错误;核心状态在 interface + memory implementation 中。
消息 POST 先完成模型/附件/并发校验,接受后立即返回 202 runId。后台 prompt() 的流式 Pi Event 经单一 adapter 映射为 HarnessEvent。SSE reducer 按 sequence/eventId 去重;assistant-ui External Store 只投影 reducer 结果。
Tool 先经过 Pi extension tool_call。只读工具做 workspace/Skill canonical path preflight;保存工具等待服务器 ApprovalBroker。Tool 未通过 preflight 时永不执行。