Skip to content

🔥 sdk: 死代码大扫除第二批——宿主旁路的五整块子系统 + 死 API 面(PR#283 续篇,~2000 行) #388

Description

@CavinHuang

严重度: P2(维护性/安全面)

PR#283 以「sidecar 是唯一宿主」为准绳删除了内置 providers。同一准绳贯穿全 SDK review,发现五整块宿主旁路的子系统与死 API 面仍留守(合计 ~2000+ 行)。均已逐条验证调用链。

A. 五整块子系统

位置 规模 证据
SDK 内置 MCP 链 agent.ts:536-595,1527-1639 + mcp/client.ts 全文件 ~500 行 sidecar 不传 mcpServers/plugins,syncMcpConnections 循环体永不进入;sidecar MCP 走自己的 pluginMcpManager。注:#326、mcp/client.ts:126 的 elicitation 协议缺陷(读 params.type 恒 undefined,实际判别字段是 mode)随本块删除一并消失
SDK 插件装配链 plugins/loader.ts loadPlugins 簇(:355-477,251-305) + agent.ts:745-776 装配点 + hooks.ts:212-246,308-379 shell-hook ~250 行 loadPlugins(cwd,[],[]) 恒 [];sidecar 有自己的 plugin-registry + plugin-hooks-bridge(后者注释明说复制了 SDK 私有 executeShellHook)
AgentTool 嵌套 QueryEngine tools/agent-tool.ts:175-550 + BUILTIN_AGENTS(:58-69) + registerAgents(:44-53) ~400 行 sidecar 两入口均 {...AgentTool, call: 自定义} 整体替换;splitDeferredTools 唯一活调用点(:226)随之死
sdk-mcp-server + tool-helper 簇 两文件主体 ~140 行 createSdkMcpServer 全仓零调用(仅 README);tool()/sdkToolToToolDefinition 唯一消费者是 sdk-mcp-server
死 API 面 QueryController 15 个委托方法(query-controller.ts:104-182 + agent.ts:1230-1246);Agent 方法群 ~300 行(resumeInterruptedRun/discardInterruptedRun——sidecar 用导出的 detectDanglingToolUses 自建、mcp 控制、rewindFiles、stopTask 等);session.ts 8 个导出函数(~180 行,sidecar 注释明说删会话不经 SDK);顶层 query() 函数 ~600 行 宿主只把 agent.query() 返回值当 AsyncIterable 迭代,控制操作全部直连 agent 实例

B. utils 死模块与死函数

  • utils/context.ts 全文件 187 行:engine.ts:295 if (config.systemPrompt) 早退 + sidecar 恒传 systemPrompt 且自有 context-assembler → git 注入/AGENT.md 发现整模块不可达;连带 clearContextCache 进程级 memoize 永不失效的潜伏缺陷一并消失
  • getAutoCompactThreshold/AUTOCOMPACT_BUFFER_TOKENS/calculateAutoCompactThreshold:与活路径 shouldAutoCompact 同名概念两套算法(死函数多减 13k/30k/50k buffer),误导性强
  • getTokenCountFromUsage、getCachedTokens、createAgentProgressTracker(连带 types.ts:780 AgentProgressUsage + SDKResultMessage.progressUsage 字段)、isAuthError/isRateLimitError/formatApiError 三件套、createUserMessage/createAssistantMessage/extractTextFromContent/createCompactBoundaryMessage/truncateText、createFileStateCache:全仓零生产调用
  • CODEANY_* env 读取链(与 [P2][sdk/agent] PR#283 遗留:auth_status 每 run 恒报 Missing API key,凭据展示链与 apiType 嗅探全部失真 #383 相邻但独立为 env 回退链本身)

C. index.ts 导出面收敛

408 个命名导出中 282 个(69%)宿主零引用。大量「内部自用仅导出面死」可先做一轮再导出修剪;lumeFileUrl/downloadAndLocalizeImages(index.ts:536-548 注释声称 sidecar 需要)实际零引用。

注意事项


来源: packages/sdk 全量 review 第二轮(2026-08-22,PR#283 后),发现已逐条代码实证。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions