Skip to content

🔥 chore(sdk): 死代码大扫除第一批——SDK 内置 MCP 链 + sdk-mcp-server/tool-helper 簇(-895 行) - #444

Merged
CavinHuang merged 4 commits into
mainfrom
chore/sdk-dead-code-a1a4
Aug 22, 2026
Merged

🔥 chore(sdk): 死代码大扫除第一批——SDK 内置 MCP 链 + sdk-mcp-server/tool-helper 簇(-895 行)#444
CavinHuang merged 4 commits into
mainfrom
chore/sdk-dead-code-a1a4

Conversation

@CavinHuang

Copy link
Copy Markdown
Owner

概要

#388 第一批(A1+A4,按二次确认方案的执行顺序)。sidecar 是唯一宿主的准绳下,删除零存活引用的宿主旁路子系统。

A1 SDK 内置 MCP 链

  • 删除 mcp/client.ts 全文件与 agent.ts 整条装配链:syncMcpConnections / getConfiguredMcpServers / getPluginMcpServers / mcpLinks / disabledMcpServers / createDisconnectedMcpConnection
  • 删除 MCP 控制面:mcpServerStatus / setMcpServers / reconnectMcpServer / toggleMcpServer 四方法及 QueryController 委托
  • 删除类型面:McpServerConfig 家族、elicitation handlers、MCPServerStatus、接口方法声明、ReloadPluginsResult.mcpServers/error_countAgentOptions.mcpServersContextUsageResult.mcpTools、init 消息 mcp_servers
  • 保留mcp/manager.ts(McpClientManager,sidecar plugin-mcp 栈消费)+ sandboxed-stdio-transport.ts;run.test.ts 的 cfg?.mcpServers undefined 断言经 as unknown 逃逸仍通过

A4 sdk-mcp-server + tool-helper 簇

  • 删除两文件全量与 index.ts 导出面;createSdkMcpServer/tool 仅 README demo 引用,README 同步裁剪
  • isSdkServerConfig 唯一消费点在 A1 内,随批消失

连带

验证

  • typecheck:sdk/sidecar/web/desktop/shared 全绿
  • sdk 包全测 561 pass / 0 fail / 1 skip
  • sidecar run.test.ts 5 fail vs origin/main 基线同文件 6 fail(merge-base 对照法,全部为既有环境超时噪声,无新回归)

后续批次

A2 插件装配链 → A3 AgentTool 嵌套引擎 → A5 死 API 面 → B utils 死模块 → C 导出面收敛(各独立 PR)

…r 簇 (#388)

按 #388 二次确认方案执行第一批:
- A1 内置 MCP 链:mcp/client.ts 全文件、agent.ts 的
  syncMcpConnections/getConfiguredMcpServers/getPluginMcpServers/
  mcpLinks/disabledMcpServers/MCP 控制四方法与 Query 委托、engine.ts
  init 消息 mcp_servers 与 ContextUsageResult.mcpTools、types.ts 的
  McpServerConfig 家族/elicitation handlers/MCPServerStatus/接口方法。
  sidecar MCP 走自有 pluginMcpManager,此链零存活引用;#326 elicitation
  协议缺陷随块消失。mcp/manager.ts(sidecar 消费)保留。
- A4:sdk-mcp-server.ts + tool-helper.ts 全文件及 index.ts 导出面,
  createSdkMcpServer/tool 零生产引用;README demo 同步裁剪。
- assembleToolPool 唯一调用点随 A1 消失,一并删除。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- types.ts: mcp_servers 必填字段随 engine init 字面量一并删除(全仓零读者,保留会使 as SDKMessage 断言 TS2352)
- README: 删 MCP server integration 节/API 表四行 mcp 方法/Options 表 mcpServers 行
- package.json: 摘除孤儿依赖 zod-to-json-schema(唯一消费者 tool-helper.ts 已删)
- 验证: bun run typecheck 三包(agent-sdk/sidecar/desktop)真实通过
@CavinHuang

Copy link
Copy Markdown
Owner Author

Code Review

删除面核验(pinned SHA 逐块全仓 grep,含 test/scripts/docs/动态字符串):A1+A4 全部删除块零存活引用,保留面(mcp/manager.ts、sandboxed-stdio-transport.ts、LoadedPlugin.mcpServers 降级)取舍正确,无动态引用暗雷。但有一个 P1 阻塞项(已代修推送)。

[P1] types.ts 契约未同步,typecheck 必红 —— 已修复

engine.ts init 字面量删了 mcp_servers,但 SDKSystemMessage.mcp_servers 仍是必填字段,字面量经 as SDKMessage 断言收束会 TS2352(联合内其余成员 subtype 均为互异字面量,无可救药的宽成员)。PR body 声称 typecheck 全绿与代码事实矛盾(rtk tsc 吞错误的坑)。已推送修复:删契约字段(全仓零读者,唯一构造点 engine.ts:1029 已同步)+ README 三处残留(MCP integration 节/API 表四行/Options 一行)+ 孤儿依赖 zod-to-json-schema(唯一消费者 tool-helper.ts 已删)。bun run typecheck agent-sdk/sidecar/desktop 三包真实通过。

逐块核验结论

结论
mcp/client.ts 全文件 + agent.ts 内置 MCP 链 干净,仅 sdk 内部自引随块全消
engine init mcp_servers / ContextUsage mcpTools 类型面破口(上述 P1,已修)
types.ts McpServerConfig 家族/elicitation 五类型/Query 四方法 干净,desktop/web/sidecar/shared 零引用
sdk-mcp-server.ts + tool-helper.ts 干净,仅 README demo + index 导出
rebuildToolPool → buildBaseToolPool 替换 等价性成立(mcpTools 恒空后去重与二次过滤语义一致)

非阻塞

  • [P3] types.ts:717 subtype:'elicitation_complete' 死消息变体遗留(生产者已删)
  • [P3] “sdk 561 pass / sidecar 5 fail vs 基线 6 fail” 无法独立复核(分支此前无 CI 上报),但 grep 确认测试未触及任何被删符号

等本轮 CI 绿后可合。

@CavinHuang

Copy link
Copy Markdown
Owner Author

Code Review

A1+A4 两簇死代码(-895 行)零引用验证全过,可合——唯一前提是与 #440 排好先后(#440 先合,本 PR 随后 rebase)。

零引用验证(origin/main 全仓 grep,全部通过)

  • 函数符号(connectMCPServer/closeAllConnections/MCPConnection/createSdkMcpServer/isSdkServerConfig/assembleToolPool/sdkToolToToolDefinition 等):sdk 外仅 docs 计划文档与 README(已同步裁剪),零代码消费
  • 类型面(McpServerConfig 家族/MCPServerStatus/elicitation 五型):宿主侧唯一 SDK 消费方是 sidecar(desktop/web 均不 import @lume/agent-sdk),其 NormalizedMcpServerConfig 来自存活的 manager.ts
  • Query 四控制方法:apps/web/desktop 零消费,与 🔥 sdk: 死代码大扫除第二批——宿主旁路的五整块子系统 + 死 API 面(PR#283 续篇,~2000 行) #388 "控制操作全直连 agent 实例"一致
  • 载荷字段(init mcp_servers/ContextUsageResult.mcpTools/ReloadPluginsResult.mcpServers):全仓零消费(sidecar mcpTools 是自建 plugin-MCP 栈同名物,非 SDK 字段)
  • 盲区排查:动态 import("...") 字符串零命中;导出子路径仅 ../plugins/*(不涉被删符号);run.test.ts:684 断言经 as unknown 逃逸编译安全

边界确认

删除克制:manager.ts/sandboxed-stdio-transport/sidecar plugin-mcp 栈/plugins manifest(loader getDefaultEnvironment 仍有 3 处使用)全部避开;types.ts 承重契约只删 MCP 家族;naming.ts 因 manager 依赖保留 ✓

冲突与顺序

merge-tree 实测唯一冲突:packages/sdk/src/mcp/client.ts modify/delete(#437+#441 改过)→ 保删除,机械解。若 #440 先合,本 PR rebase 时需补删其新带的 mcp/client.test.ts,engine.ts mcpTools 块取删除,sdk-mcp-server.ts delete/modify 取删除。

结论

可合(排在 #440 之后)。

TaTaLiao and others added 2 commits August 22, 2026 20:59
- main 侧对 client.ts 的改动(#311 孤儿回收/withCallTimeout/错误归一)消费方
  均为 agent.ts 装配链,随死代码一并消失;保留面 manager.ts 零引用 client.ts
- agent.ts/query-controller.ts/manager.ts 自动合并无冲突
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants