代码导航指南

May 28, 2026 · View on GitHub

本文档只列当前仍然有效的入口。对于 main kernel refactor 覆盖的 migrated path,先看 typed boundary,再往 presenter/runtime 深入,不要一上来就从 legacy presenter 搜。

phase5 之后,如果你在 renderer 做新功能,默认心智模型应当是 single-track: 先看 renderer/api、shared contracts 和 typed events,再看 main route/runtime; 不要把 useLegacyPresenter()window.electronwindow.api 当作默认开发入口。 如果你是在审计剩余兼容路径,直接看 src/renderer/api/legacy/,不要再从 src/renderer/api/legacy/presenters.ts 找入口,它已经在 P5 退役。

先从哪里开始

如果你要追当前 migrated chat path,按这个顺序跳:

  1. src/shared/contracts/routes.ts
  2. src/shared/contracts/events.ts
  3. src/preload/createBridge.ts
  4. src/renderer/api/
  5. src/main/routes/index.ts
  6. src/main/routes/sessions/sessionService.ts
  7. src/main/routes/chat/chatService.ts
  8. src/main/routes/providers/providerService.ts
  9. src/main/routes/hotPathPorts.ts
  10. src/main/presenter/agentSessionPresenter/index.ts
  11. src/main/presenter/agentRuntimePresenter/index.ts

按边界找代码

Renderer-main boundary

功能位置备注
route registry 总入口src/shared/contracts/routes.ts汇总 settings / sessions / chat / providers / system route
typed event 总入口src/shared/contracts/events.ts汇总 settings.changedsessions.updatedchat.stream.*
preload bridge buildersrc/preload/createBridge.ts统一 invoke/on 协议
preload 暴露点src/preload/index.ts把 bridge 暴露到 window.deepchat
renderer clientssrc/renderer/api/migrated path 的 renderer 主入口
renderer legacy quarantinesrc/renderer/api/legacy/仅保留 settings compatibility 所需的 legacy transport adapter

Settings

功能位置备注
settings route dispatchsrc/main/routes/index.tssettings.getSnapshot / settings.listSystemFonts / settings.update
settings handlersrc/main/routes/settings/settingsHandler.tsschema parse + orchestration
settings adaptersrc/main/routes/settings/settingsAdapter.ts对接 configPresenter
settings renderer storesrc/renderer/src/stores/uiSettingsStore.ts通过 SettingsClient 读写和订阅

Session / Chat orchestration

功能位置备注
session route dispatchsrc/main/routes/index.tssessions.create / restore / listMessagesPage / activate / deactivate / getActive
session orchestrationsrc/main/routes/sessions/sessionService.tsScheduler + session/message repositories
chat route dispatchsrc/main/routes/index.tschat.sendMessage / stopStream / respondToolInteraction
chat orchestrationsrc/main/routes/chat/chatService.tssend / stop / permission response owner
schedulersrc/main/routes/scheduler.tstimeout / retry / abort 统一入口
presenter-backed portssrc/main/routes/hotPathPorts.tsroute services 依赖的最小 runtime port

Provider / Permission

功能位置备注
provider routessrc/main/routes/index.tsproviders.listModels / providers.testConnection
provider orchestrationsrc/main/routes/providers/providerService.tsprovider query / test boundary
provider runtime portssrc/main/presenter/runtimePorts.tsprovider catalog / execution port 定义
provider renderer storesrc/renderer/src/stores/providerStore.ts通过 ProviderClient 触发验证和模型查询
permission interaction UIsrc/renderer/src/pages/ChatPage.vue通过 ChatClient.respondToolInteraction 响应

Runtime / persistence

功能位置备注
session runtime entrysrc/main/presenter/agentSessionPresenter/index.tswindow/session 绑定、runtime delegation、legacy import
message runtime entrysrc/main/presenter/agentRuntimePresenter/index.tsprocessMessage()、暂停恢复、stream 生命周期
主循环src/main/presenter/agentRuntimePresenter/process.tsstream + tool loop
工具调度src/main/presenter/agentRuntimePresenter/dispatch.tstool call / paused interaction
流式 echosrc/main/presenter/agentRuntimePresenter/echo.tstyped chat.stream.* 事件与增量回显
runtime storesrc/main/presenter/agentRuntimePresenter/sessionStore.ts / messageStore.ts / pendingInputStore.tssession/message/pending input persistence

Tool system / provider internals

功能位置备注
工具主入口src/main/presenter/toolPresenter/index.tsgetAllToolDefinitions() / callTool()
agent toolssrc/main/presenter/toolPresenter/agentTools/文件系统、命令、settings 等本地工具
MCP toolssrc/main/presenter/mcpPresenter/toolManager.ts外部工具调用
provider facadesrc/main/presenter/llmProviderPresenter/index.tsprovider instance + stream state
ACP runtimesrc/main/presenter/llmProviderPresenter/acp/process/session/persistence/config

兼容与历史数据

功能位置备注
legacy importsrc/main/presenter/agentSessionPresenter/legacyImportService.ts旧数据导入新表
legacy 会话兼容src/main/presenter/sessionPresenter/index.tsmain 内部 compatibility/data layer
用户消息格式化src/main/presenter/sessionPresenter/messageFormatter.tsexporter 复用

搜索建议

优先用 rg

rg "chatSendMessageRoute|chatStopStreamRoute|chatRespondToolInteractionRoute" src
rg "dispatchDeepchatRoute|registerMainKernelRoutes" src/main/routes
rg "createPresenterHotPathPorts|ProviderExecutionPort|SessionPermissionPort" src/main
rg "settingsChangedEvent|sessionsUpdatedEvent|chatStream" src/shared src/main src/renderer

看到这些词时怎么理解

当前含义
renderer/api/*Clientmigrated renderer boundary 的一线入口
src/main/routes/*migrated settings/session/chat/provider path 的 active owner
agentSessionPresenterpresenter-backed runtime collaborator,不是 migrated renderer 的直连入口
agentRuntimePresenter当前聊天 runtime 与持久化 owner
SessionPresenterlegacy conversation 兼容层,不是 migrated chat 主链路
agentPresenter已退休;只应出现在旧提交或已删除的历史 spec 里

不要再从这里找主链路

以下内容都已经退休,不应该再作为活跃实现入口:

  • AgentPresenter
  • startStreamCompletion
  • agentLoopHandler
  • streamGenerationHandler

如果确实需要历史对照,请用 git log / git show 查看旧提交中的文档或源码快照。