41 lines
1.3 KiB
Markdown
41 lines
1.3 KiB
Markdown
# 架构与数据流
|
|
|
|
```mermaid
|
|
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 时永不执行。
|