项目:
/Users/konghayao/code/ai/claude-code日期: 2026-03-31 包管理器: bun
将 claude-code 项目运行起来,必要时可以删减次级能力。
这是一个 Anthropic 官方的 Claude Code CLI 工具的源码反编译/逆向还原项目。项目的核心目标是:
bun run build 和 bun run dev 的阻塞问题@ant/*)的功能,可以用 stub 替代或直接移除| 模块 | 说明 | 处理方式 |
|---|---|---|
| Computer Use | @ant/computer-use-* 私有包 |
stub 或移除 |
| Claude for Chrome | @ant/claude-for-chrome-mcp |
stub 或移除 |
| Magic Docs | 私有文档处理 | 移除 |
| Voice Mode | 语音模式 | 移除 |
| LSP Server | vscode-languageserver-* |
移除 |
| Analytics/Telemetry | 数据上报 | 空实现 |
| GrowthBook | A/B 实验 | 空实现 |
| Plugins/Marketplace | 插件市场 | 移除 |
| Desktop Upsell | 桌面端推销 | 移除 |
| Ultraplan | 私有功能 | 移除 |
| Tungsten | 私有功能 | 移除 |
| Sentry | 错误上报 | 移除 |
| Auto Dream | 自动后台任务 | 移除 |
| MCP OAuth/IDP | 企业级认证 | 简化 |
| 阶段 | 错误数 | 说明 |
|---|---|---|
| 初始状态 | ~1800 | 仅缺少 npm 依赖的 TS2307 错误 |
| 补全依赖后 | ~1800 | npm 包已安装,开始处理类型 |
| 第一轮 stub 生成 | ~2163 | 自动 stub 生成但质量问题多(全用 export type) |
| 第二轮修复后 | ~1341 | 修复了默认导出、补充命名导出、泛型类型 |
| 错误码 | 数量 | 含义 | 性质 |
|---|---|---|---|
| TS2339 | 701 | 属性不存在 | 主要是源码级问题(unknown 344, never 121, {} 52) |
| TS2322 | 210 | 类型不匹配 | 源码级 |
| TS2345 | 134 | 参数类型不匹配 | 源码级 |
| TS2367 | 106 | 比较类型无交集 | 源码级(编译时死代码) |
| TS2307 | 29 | 缺失模块 | 可修但收益小 |
| TS2693 | 13 | type 当值用 | 少量残留 |
| TS2300 | 10 | 重复标识符 | 小问题 |
| 其他 | ~138 | TS2365/TS2554/TS2578/TS2538/TS2698 等 | 混合 |
剩余 1341 个错误中,绝大多数(~1200+)是源码级别的类型问题,不是 stub 缺失导致的:
unknown 类型访问属性 (344) — 反编译产生的 unknown 需要断言never 类型 (121) — 联合类型穷尽后的死路径{} 空对象 (52) — 空 stub 模块的残留影响继续逐个修复类型错误的投入产出比很低。应该改变方向,尝试直接构建运行。
src/types/global.d.ts)声明了编译时宏和内部标识符:
bun:bundle 提供src/types/internal-modules.d.ts)为 Anthropic 私有包提供了详细的类型导出:
@ant/claude-for-chrome-mcp — BROWSER_TOOLS, ClaudeForChromeContext, Logger 等@ant/computer-use-mcp — ComputerExecutor, ScreenshotResult, buildComputerUseTools 等@ant/computer-use-mcp/types — ComputerUseHostAdapter, CoordinateMode 等@ant/computer-use-mcp/sentinelApps — getSentinelCategory@ant/computer-use-input — ComputerUseInput, ComputerUseInputAPI@ant/computer-use-swift — ComputerUseAPI@anthropic-ai/mcpb — McpbManifest, McpbUserConfigurationOptioncolor-diff-napi — ColorDiff, SyntaxTheme, getSyntaxThemeaudio-capture-napi / image-processor-napi / url-handler-napibun:bundle / bun:ffisrc/entrypoints/sdk/)为缺失的 SDK 子模块创建了 stub 文件:
| 文件 | 说明 |
|---|---|
controlTypes.ts |
控制协议类型(SDKControlRequest/Response) |
runtimeTypes.ts |
运行时类型(SDKSession, Query, Options, SdkMcpToolDefinition 等) |
coreTypes.generated.ts |
从 Zod schema 生成的类型(ModelUsage, HookInput 系列, SDK 消息类型等) |
settingsTypes.generated.ts |
Settings 类型 |
toolTypes.ts |
工具类型 |
sdkUtilityTypes.ts |
NonNullableUsage 等工具类型 |
scripts/create-type-stubs.mjs)编写了自动分析脚本,通过解析 tsc 错误和源码 import 语句,自动创建缺失模块的 stub 文件:
export type X = any stubscripts/fix-default-stubs.mjs — 修复 120 个 export default {} as any 的 stub 文件import type {} vs import {}export type X = any,值导出为 export const X: any = (() => {}) as anyscripts/fix-missing-exports.mjs — 补全空模块的导出成员typeof import("...") 的错误,给 81 个模块添加了 147 个缺失导出将以下类型从非泛型改为泛型(修复 86 个 TS2315):
DeepImmutable<T>, Permutations<T> (src/types/utils.ts)AttachmentMessage<T>, ProgressMessage<T>, NormalizedAssistantMessage<T> (src/types/message.ts 及其多个副本)WizardContextValue<T> (src/components/wizard/types.ts)修复 4 个 export const default 非法语法(buddy/fork/peers/workflows 的 index.ts)
剩余 ~1341 个错误绝大多数不是 stub 缺失问题,而是源码本身的类型问题:
unknown 类型变量直接访问属性"external" === "ant"unknown as any 等模式不影响实际执行bun build 构建 ⭐ 推荐Bun bundler 对类型错误比 tsc 宽容得多。应该直接尝试构建:
bun build src/entrypoints/cli.tsx --target=node --outdir=dist
遇到的构建错误才是真正需要修的问题(缺失模块、语法错误等),而非类型错误。
{
"compilerOptions": {
"strict": false,
"noImplicitAny": false,
"strictNullChecks": false
}
}
已经是 strict: false,但可以进一步添加 "skipLibCheck": true(已有)。
// @ts-nocheck对有大量源码级类型错误的文件加 // @ts-nocheck,快速消除错误。
| 文件 | 用途 |
|---|---|
src/types/global.d.ts |
全局变量/宏声明 |
src/types/internal-modules.d.ts |
内部 npm 包类型声明 |
src/types/react-compiler-runtime.d.ts |
React compiler runtime |
src/types/sdk-stubs.d.ts |
SDK 通配符类型(备用) |
src/types/message.ts |
Message 系列类型 stub (39 types) |
src/types/tools.ts |
工具进度类型 stub |
src/types/utils.ts |
DeepImmutable / Permutations 泛型 |
src/entrypoints/sdk/controlTypes.ts |
SDK 控制类型 stub |
src/entrypoints/sdk/runtimeTypes.ts |
SDK 运行时类型 stub |
src/entrypoints/sdk/coreTypes.generated.ts |
SDK 核心类型 stub |
src/entrypoints/sdk/settingsTypes.generated.ts |
SDK 设置类型 stub |
src/entrypoints/sdk/toolTypes.ts |
SDK 工具类型 stub |
src/entrypoints/sdk/sdkUtilityTypes.ts |
SDK 工具类型 |
scripts/create-type-stubs.mjs |
自动 stub 生成脚本 |
scripts/fix-default-stubs.mjs |
修复 export default stub 为命名导出 |
scripts/fix-missing-exports.mjs |
补全空模块缺失的导出成员 |
tsconfig.json |
TypeScript 配置 |
package.json |
依赖配置 |
# 检查当前错误数
cd /Users/konghayao/code/ai/claude-code && npx tsc --noEmit 2>&1 | grep "error TS" | wc -l
# 错误分类统计
npx tsc --noEmit 2>&1 | grep "error TS" | sed 's/.*error //' | sed 's/:.*//' | sort | uniq -c | sort -rn
# 重新生成 stub(修复脚本后)
node scripts/create-type-stubs.mjs
# 修复默认导出 stub
node scripts/fix-default-stubs.mjs
# 补全缺失导出
node scripts/fix-missing-exports.mjs
# 尝试构建(下一步)
bun build src/entrypoints/cli.tsx --target=node --outdir=dist