源码索引
本索引对应仓库内
zed-main源码快照(crates/zed/Cargo.toml版本1.15.0)。行号用于快速定位, 上游更新后可能漂移;优先搜索符号名。zed-ai-notes只包含分析文档,不复制 Zed 源码。
应用启动与装配
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/zed/src/main.rs | 平台入口、CLI/进程初始化 | 启动 |
crates/zed/src/zed.rs | init、全局服务与 action 注册 | 启动 |
crates/workspace/src/workspace.rs | AppState、打开 workspace/project | 启动 |
crates/gpui_platform/src/gpui_platform.rs | 按目标平台选择 GPUI backend | 启动 |
crates/gpui_linux/src/linux.rs | Linux GPUI 平台实现入口 | 启动 |
crates/gpui_macos/src/platform.rs | macOS GPUI 平台实现 | 启动 |
crates/gpui_windows/src/platform.rs | Windows GPUI 平台实现 | 启动 |
GPUI 与渲染
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/gpui/src/app.rs | App、全局状态、Entity 生命周期 | GPUI |
crates/gpui/src/app/context.rs | Context<T>、update/emit/notify/spawn | GPUI |
crates/gpui/src/app/entity_map.rs | Entity<T>、WeakEntity、entity storage | GPUI |
crates/gpui/src/window.rs | window、focus、dispatch、frame | GPUI |
crates/gpui/src/element.rs | Element 三阶段协议 | 渲染 |
crates/gpui/src/scene.rs | primitives、batch、draw order | 渲染 |
crates/gpui/src/platform.rs | 平台窗口/输入抽象 | 渲染 |
crates/gpui/src/text_system.rs | 字体、glyph shaping 与 cache | 渲染 |
数据结构与文本
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/sum_tree/src/sum_tree.rs | SumTree、Summary、Dimension、Cursor | 数据结构 |
crates/rope/src/rope.rs | UTF-8 Rope、Point/offset 转换 | 数据结构 |
crates/text/src/text.rs | Text trait、Point、OffsetRangeExt | 数据结构 |
crates/text/src/anchor.rs | stable Anchor 与 bias | 协同 Buffer |
crates/text/src/text.rs | 底层 Text、Operation、Anchor resolve、CRDT | 协同 Buffer |
crates/language/src/buffer.rs | 语言层 Buffer、transaction、snapshot | 协同 Buffer |
crates/clock/src/clock.rs | replica/logical timestamp/vector clock | 协同 Buffer |
Editor 与视觉映射
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/multi_buffer/src/multi_buffer.rs | MultiBuffer、Excerpt、跨 Buffer transaction | Editor |
crates/editor/src/editor.rs | Editor 状态、input/action、selection | Editor |
crates/editor/src/display_map.rs | DisplayMap 组合与 Snapshot | Editor |
crates/editor/src/display_map/fold_map.rs | fold projection | Editor |
crates/editor/src/display_map/inlay_map.rs | inlay projection | Editor |
crates/editor/src/display_map/tab_map.rs | tab expansion projection | Editor |
crates/editor/src/display_map/wrap_map.rs | soft wrap projection | Editor |
crates/editor/src/selections_collection.rs | 多 Selection、history、merge | Editor |
crates/editor/src/element.rs | viewport layout/paint/hit test | Editor |
Project、Worktree 与语言服务
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/project/src/project.rs | Project facade、local/remote、collaborators | Project |
crates/project/src/worktree_store.rs | Worktree 集合、local/remote dispatch | Project |
crates/worktree/src/worktree.rs | worktree local/remote 实体与事件 | Project |
crates/project/src/buffer_store.rs | open/save/sync Buffer、remote handlers | Project |
crates/fs/src/fs.rs | Fs trait、RealFs/FakeFs 边界 | Project |
crates/language/src/language.rs | Language、grammar、queries、registry | 语言/LSP |
crates/language/src/buffer.rs | syntax snapshot、parse、injections | 语言/LSP |
crates/project/src/lsp_store.rs | server 生命周期、request、diagnostics | 语言/LSP |
crates/project/src/lsp_store.rs | server adapter/状态管理与请求路由 | 语言/LSP |
crates/lsp/src/lsp.rs | LSP process/client 与 protocol helpers | 语言/LSP |
Workspace 与工程能力
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/workspace/src/workspace.rs | panes、items、dock、serialization | Workspace |
crates/workspace/src/item.rs | Item trait 与 item events | Workspace |
crates/workspace/src/pane.rs | tabs、active item、split navigation | Workspace |
crates/workspace/src/dock.rs | left/right/bottom docks 与 panels | Workspace |
crates/task/src/task.rs | Task template、variables、resolved task | 任务/终端/调试 |
crates/project/src/task_store.rs | task discovery/context/local-remote | 任务/终端/调试 |
crates/terminal/src/terminal.rs | terminal state、PTY events | 任务/终端/调试 |
crates/terminal_view/src/terminal_view.rs | terminal GPUI view/input | 任务/终端/调试 |
crates/dap/src/dap.rs | Debug Adapter Protocol client | 任务/终端/调试 |
crates/debugger_ui/src/session.rs | debug session state machine | 任务/终端/调试 |
crates/project/src/git_store.rs | Repository Entity、status/diff/checkpoint | Git/搜索 |
crates/git/src/repository.rs | Repository trait/real implementation | Git/搜索 |
crates/search/src/text_finder/delegate.rs | match → MultiBuffer excerpts | Git/搜索 |
crates/search/src/project_search.rs | streaming project search view/model | Git/搜索 |
协作与 RPC
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/client/src/client.rs | Client、Status、认证/连接/重连 | 协作/RPC |
crates/rpc/src/rpc.rs | protocol version、message traits | 协作/RPC |
crates/rpc/src/message_stream.rs | WebSocket frame、protobuf、heartbeat | 协作/RPC |
crates/rpc/src/peer.rs | request/response/stream、handler dispatch | 协作/RPC |
crates/collab/src/rpc.rs | server RPC 注册、鉴权、项目路由 | 协作/RPC |
crates/project/src/buffer_store.rs | UpdateBuffer、SynchronizeBuffers | 协作/RPC |
Agent 与模型
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/agent/src/thread.rs | Thread、run_turn loop、compaction | Agent |
crates/agent/src/tools.rs | built-in tool registry | Agent |
crates/agent/src/agent.rs | NativeAgent、ACP connection adapter | Agent |
crates/language_model/src/language_model.rs | model/provider traits、stream events | Agent |
crates/acp_thread/src/acp_thread.rs | 通用 thread/tool/permission UI model | Agent |
crates/agent_ui/src/conversation_view/thread_view.rs | Thread UI、消息与 tool cards | Agent |
扩展与远端
| 路径 | 关键符号/职责 | 对应章节 |
|---|---|---|
crates/extension_api/src/extension_api.rs | public Extension trait、register macro | 扩展 |
crates/extension/src/extension.rs | 宿主内部 extension abstraction | 扩展 |
crates/extension_host/src/extension_host.rs | ExtensionStore、index/install/load | 扩展 |
crates/extension_host/src/wasm_host.rs | Wasmtime component host、调用转换 | 扩展 |
crates/extension_host/src/wasm_host/wit/ | versioned WIT worlds | 扩展 |
crates/remote/src/remote_client.rs | RemoteClient、state、reconnect/pool | Remote |
crates/remote_server/src/main.rs | headless remote server 入口 | Remote |
crates/remote/src/transport/ssh.rs | SSH transport | Remote |
crates/remote/src/transport/wsl.rs | WSL transport | Remote |
测试入口建议
| 想验证的机制 | 推荐搜索 |
|---|---|
| GPUI Entity/event/task | #[gpui::test]、TestAppContext |
| Project 文件时序 | FakeFs、TestProject |
| LSP 同步 | FakeLanguageServer、did_open、did_change |
| Buffer 收敛 | random、replica、operations、can_apply |
| Remote 重连 | MockRemoteConnection、Reconnecting |
| Agent tool loop | fake model、ToolUse、run_turn、compaction |
使用索引的方法
- 先从章节的用户动作/调用链确定领域;
- 在本表找到 facade/store,而不是直接跳最低层;
- 用
rg 'struct Symbol|fn method' crates/...定位当前行号; - 同时打开事件 enum 与测试,理解状态变化而不只读 happy path;
- 对比 local/remote handler,确认真正的进程边界。