术语表
| 术语 | 本文中的含义 |
|---|---|
| Action | 可从快捷键、菜单、命令面板或代码 dispatch 的类型化用户意图。 |
| ACP | Agent Client Protocol;让通用 Agent UI 对接内置或外部 agent 的协议/模型层。 |
| Anchor | 在并发/后续编辑后仍可解析的稳定文本位置,带左右 bias 和版本/operation 语义。 |
| App | GPUI 进程级运行时,拥有 globals、entities、windows、executors 与平台服务。 |
| Buffer | 单文档文本真相,组合 Rope、operation、Anchor、transaction、language snapshot 等。 |
| BufferId | Buffer 在 project/protocol 中的稳定身份,不等同于内存地址或 path。 |
| BufferPoint | Buffer 文本中的行列坐标;列的单位需结合具体 API 判断。 |
| Context<T> | 更新 Entity T 时提供的 GPUI 上下文,可 notify、emit、spawn、访问 App。 |
| CRDT | 无需中央锁、合法 operation 以不同顺序传播仍可最终收敛的数据类型。 |
| DAP | Debug Adapter Protocol;编辑器与语言/运行时调试适配器的协议。 |
| Dimension | SumTree seek 使用的累计维度,例如 byte、Point、UTF-16、display row 或 height。 |
| DisplayMap | 把 MultiBuffer 文本依次投影为 fold/inlay/tab/wrap 后视觉坐标的组合结构。 |
| DisplayPoint | Editor 最终视觉行列坐标;包含折叠、内嵌提示、tab 展开和软换行影响。 |
| Entity<T> | GPUI 中有 identity、可观察、由 App context 管理的长期可变状态句柄。 |
| EntityId | Entity 在 App 内的稳定身份,用于订阅、缓存或协议映射。 |
| Excerpt | MultiBuffer 引用某个底层 Buffer 的一个 Anchor range,并带上下文/边界信息。 |
| ExtensionStore | 扩展索引、安装更新、load/unload 与 contribution 注册的控制面。 |
| Fragment | 协同文本中由某次 insert operation 引入、带稳定身份和可见性信息的片段。 |
| Global | 注册在 GPUI App 中、按类型访问的进程级服务或配置。 |
| GPUI | Zed 的 GPU UI 框架,组合 Entity runtime、element layout/paint 和平台层。 |
| HandlerSet | RPC message type 到异步 handler 的注册表,随模块/实体生命周期安装和移除。 |
| Inlay | 不直接属于 Buffer 文本、由 LSP/编辑器插入 DisplayMap 的视觉内容。 |
| Item | Workspace pane 中可打开、激活、序列化的内容抽象,例如 Editor、Search 或 Settings。 |
| LanguageRegistry | language、grammar、query 与 language server adapter 的注册/查找服务。 |
| LanguageModel | 把 prompt request 转换为文本、thinking、tool use、usage 等事件流的统一 trait。 |
| LSP | Language Server Protocol;document sync、completion、diagnostics、rename 等语言能力协议。 |
| MultiBuffer | 按 excerpt 组合一个或多个 Buffer 的复合文档,为搜索、diff、references 等复用 Editor。 |
| Operation | Buffer CRDT 中可传播、去重、合并的编辑/undo 等状态变化。 |
| Pane | Workspace 中承载 tab/items 的容器,可 split、激活和移动 item。 |
| Panel | 停靠在 Workspace 左/右/下 dock 的工具 UI,例如 Project、Git、Agent panel。 |
| Patch | 描述旧 snapshot 到新 snapshot 受影响范围的增量映射,用于传播 invalidation。 |
| Peer | RPC 层的连接端点,管理 typed envelope、request id、pending response、stream 和 handler。 |
| Project | 面向 UI 的工程 facade,组合 Worktree/Buffer/LSP/Git/Task 等 store 并封装 local/remote。 |
| ProjectPath | worktree id + 相对路径 的工程身份,避免把本机绝对路径穿过 remote/protocol。 |
| ProtoClient | Project remote store 使用的类型化协议客户端接口。 |
| RemoteClient | 管理 SSH/WSL/Docker 通道、remote_server、heartbeat、重连与会话恢复的长期对象。 |
| Rope | 分块平衡文本树,支持大型 UTF-8 文本的增量 edit、slice 与坐标查询。 |
| Scene | 一帧的 GPU primitives、clip、draw order 与 batch 集合。 |
| Snapshot | 可安全交给 paint/后台 task 的稳定只读状态视图,通常共享底层持久结构。 |
| Store | Project 内某类资源的有状态服务,如 BufferStore、WorktreeStore、LspStore、GitStore。 |
| SumTree | 每个节点带可组合 Summary 的 copy-on-write 平衡树,支持多 Dimension seek。 |
| Task(GPUI) | executor 上的异步工作句柄;其所有权通常决定取消与结果回写生命周期。 |
| Task(工程) | 从模板、上下文变量解析出的外部命令,可运行在 terminal 或 debug adapter。 |
| Thread | Agent 会话 Entity,保存消息、模型、工具、运行 turn、权限、checkpoint 与 compaction。 |
| Tool | Agent 可调用的结构化能力,包含 schema、permission、sandbox、执行与结果语义。 |
| Transaction | 一组可原子提交/undo 的 Buffer 编辑;ProjectTransaction 可组合多个 Buffer。 |
| Version | 文本/实体已知 operation 状态或变更序列,用于判断 snapshot/result 是否过期。 |
| WIT | WebAssembly Interface Types;Zed extension guest/host 之间版本化 ABI 的定义语言。 |
| Worktree | Project 中一棵目录树及 scanner/snapshot,提供 entry、ignore、文件事件和 repo 发现。 |
| Workspace | 顶层产品容器,拥有 Project、window、panes、items、docks、actions 与 session 持久化。 |
容易混用的四组词
Offset、Point、Anchor
- offset 是某个确定 snapshot 中的线性位置;
- Point 是同一 snapshot 中的行列表示;
- Anchor 是跨编辑保存的稳定意图,需要在目标 snapshot 中解析。
Buffer、MultiBuffer、DisplayMap
- Buffer 保存真实文档;
- MultiBuffer 组合真实文档的区段;
- DisplayMap 只改变它们如何显示,不拥有文件文本。
Remote、Collaboration
- Remote 把工程服务放到另一台环境,本地仍负责 UI;
- Collaboration 让多个用户共享 host project,并增加成员、角色与路由语义。
GPUI Task、工程 Task
- GPUI Task 是 Rust future 的运行句柄;
- 工程 Task 是用户要执行的 build/test/script 命令。两者中文都常写“任务”,需按上下文区分。