Skip to content

♻️ refactor(sdk): 简化批——token 估算口径统一、五组重复实现收敛单源 (#389) - #481

Merged
CavinHuang merged 6 commits into
mainfrom
chore/389-sdk-simplify-batch-x9k
Aug 23, 2026
Merged

♻️ refactor(sdk): 简化批——token 估算口径统一、五组重复实现收敛单源 (#389)#481
CavinHuang merged 6 commits into
mainfrom
chore/389-sdk-simplify-batch-x9k

Conversation

@CavinHuang

Copy link
Copy Markdown
Owner

Fixes #389

已修 7 项

  1. 工具 token 估算漏算 inputSchema:estimateToolSchemaTokens 只算 name+description,系统性偏低。改委托 getDeferredToolTokenCount(name+description+inputSchema、原生计数);getContextUsage 内联 reduce 与 systemTools/deferredBuiltinTools 明细共三处同病灶一并统一;estimateToolTokens 单工具口径导出复用。sidecar run-tools.ts 同名函数已含 schema(跨包独立)未动。
  2. writeFileAtomic 三份私有副本 → 收敛 utils/fs-atomic 单源:session/notebook-edit 删本地副本改 import;file-checkpoints 的 mkdir -p 前置留在调用点;公共签名 content 扩 string | Uint8Array
  3. skills/registry 双轨 → 全局函数组委托 globalRegistry 单例,删两套注册/别名/归一化重复逻辑;overwrite 警告(含大小写碰撞)与 unregister 语义保留,导出面不变。
  4. validateManifest 逐字重复 → normalized.ts 改调 validateManifest。
  5. sliceSessionMessages 两份逐字符相同 → session.ts 导出为单源(可选参数守卫超集版),agent.ts 改 import,依赖方向无环。
  6. retry 错误分类三元链流式/非流式两份 → 提取 classifyRetryError 共用;api_retry 事件 phase 字段差异保留。
  7. truncateText 零调用副本 → 删函数及 index.ts 再导出(mcp/manager 私有版语义不同,保留)。

随既有 PR 消失 3 项

不在本批范围 2 项(#388 认领域)

  • 2 createAgentProgressTracker 绝对/累计混用:死代码清单内,未触碰
  • 5 commandToolFromManifest 缺 sandbox 分支:核实仍在 loader.ts 且被使用(非死代码),按约束不动

核实为零改动 1 项

  • 14 | string 吸收字面量:原 stopReason 命中点随 🔥 移除 SDK 内置 LLM providers,统一宿主注入契约 #283 消失;现存命中均为设计内开放值域(runtime-event trigger/callerKind 反序列化兜底、threadType 含 "main"、chatType 含 IM 渠道值),收窄会破编译与 IM 渠道,其余为函数返回类型或外部 API 解析联合,非污染。

留评估 1 项(详见 issue 评论)

  • 11 scrapers @ts-nocheck 摘除:sdk 包配置下全摘 typecheck 零错误(含阴性对照),但 sidecar 以 noUncheckedIndexedAccess 视角暴露 222 处错误 / 45+ 文件,估算修复量超阈值,已原样还原并留评估数据。

验证

  • bun run typecheck 六包(shared/ui/sdk/sidecar/web/desktop)全绿
  • sdk 定向测试 registry/engine/session-persistence/manifest 四文件组合 102 pass / 0 fail(含新增 inputSchema 口径与单轨回归测试)

🤖 Generated with Claude Code

TaTaLiao and others added 6 commits August 23, 2026 14:28
estimateToolSchemaTokens 只算 name+description 系统性偏低,改委托 getDeferredToolTokenCount(含 inputSchema、原生计数);getContextUsage 内联 reduce 与 systemTools/deferredBuiltinTools 明细三处同病灶一并统一,estimateToolTokens 单工具口径导出复用。retry 错误分类三元链流式/非流式两份提取 classifyRetryError 共用,api_retry 事件 phase 差异保留。新增 inputSchema 口径测试。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
session/notebook-edit 直接删本地副本改 import;file-checkpoints 保留 mkdir -p 前置于调用点;公共签名 content 扩 string | Uint8Array。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
全局单例函数组与 SkillRegistry 类平行维护两套注册/别名/归一化逻辑,收敛为委托 globalRegistry 实例;overwrite 警告(含大小写碰撞)与 unregister 语义保留,导出面不变。新增单轨回归测试。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
agent.ts 与 session.ts 两份逐字符相同副本合一,保留可选参数守卫超集版导出,依赖方向无环。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

♻️ sdk: 简化批——token 估算口径矛盾、四份 writeFileAtomic、registry 双轨、@ts-nocheck 摘除

2 participants