运行与构建
Bun 运行时
Claude Code 选择 Bun 而非 Node.js 作为运行时,原因包括:
- 更快的启动速度 — Bun 的冷启动比 Node.js 快数倍
- 内置 TypeScript/TSX 支持 — 无需 ts-node 或编译步骤
- 内置打包器 —
bun build直接产出单文件 bundle - 兼容 Node.js API — 大部分 npm 包可直接使用
开发模式
bash
# 直接执行 TSX 入口
bun run dev
# 等价于:
bun run src/entrypoints/cli.tsx开发模式下,Bun 直接解释执行 TypeScript,无需编译步骤。
管道模式
bash
echo "say hello" | bun run src/entrypoints/cli.tsx -p构建配置
单文件打包
bash
bun run build
# 等价于:
bun build src/entrypoints/cli.tsx --outdir dist --target bun产出 dist/cli.js(约 25MB),包含所有依赖。
Source:
package.json:13
TSConfig 配置
关键配置项:
json
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"jsx": "react-jsx",
"paths": {
"src/*": ["./src/*"]
}
}
}jsx: "react-jsx"— 使用自动 JSX 运行时(React 17+ 风格)paths: { "src/*" }— 路径别名,允许import { ... } from 'src/utils/...'moduleResolution: "bundler"— 兼容 Bun 打包器的模块解析
Monorepo 结构
项目使用 Bun workspaces 管理内部包:
json
// package.json
{
"workspaces": [
"packages/*",
"packages/@ant/*"
]
}内部包通过 workspace:* 引用:
json
{
"dependencies": {
"@ant/computer-use-input": "workspace:*",
"@ant/computer-use-mcp": "workspace:*",
"color-diff-napi": "workspace:*"
}
}全局变量与宏
MACRO 对象
cli.tsx 在启动时注入全局 MACRO 对象,模拟构建时宏注入:
typescript
// Source: src/entrypoints/cli.tsx:3-13
globalThis.MACRO = {
VERSION: "2.1.888",
BUILD_TIME: new Date().toISOString(),
FEEDBACK_CHANNEL: "",
ISSUES_EXPLAINER: "",
NATIVE_PACKAGE_URL: "",
PACKAGE_URL: "",
VERSION_CHANGELOG: "",
};| 字段 | 用途 |
|---|---|
VERSION | CLI 版本号,用于 --version 输出 |
BUILD_TIME | 构建时间戳 |
FEEDBACK_CHANNEL | 反馈渠道(反编译版为空) |
PACKAGE_URL | 包下载地址(反编译版为空) |
构建目标变量
typescript
// Source: src/entrypoints/cli.tsx:15-17
globalThis.BUILD_TARGET = "external"; // "external" vs "ant" (内部版)
globalThis.BUILD_ENV = "production";
globalThis.INTERFACE_TYPE = "stdio";BUILD_TARGET— 区分外部发布版和 Anthropic 内部版BUILD_ENV— 当前构建环境INTERFACE_TYPE— 接口类型(终端 I/O)
feature() 函数
typescript
// Source: src/entrypoints/cli.tsx:2
const feature = (_name: string) => false;在正式构建中,feature() 来自 bun:bundle(构建时 API),用于条件编译。在反编译版本中,它被 polyfill 为始终返回 false,意味着所有特性标志对应的代码都是死代码。
已知的特性标志(均被禁用):
| 标志名 | 功能 |
|---|---|
BRIDGE_MODE | 远程桥接模式 |
DAEMON | 后台守护进程 |
BG_SESSIONS | 后台会话管理 |
TEMPLATES | 模板任务 |
KAIROS | 助手模式 |
SSH_REMOTE | SSH 远程执行 |
LODESTONE | 深度链接 URI |
ABLATION_BASELINE | A/B 测试基线 |
COORDINATOR_MODE | 协调器模式 |
PROACTIVE | 主动建议 |
类型系统
全局类型声明
Source:
src/types/global.d.ts
typescript
declare var MACRO: {
VERSION: string;
BUILD_TIME: string;
FEEDBACK_CHANNEL: string;
// ...
};
declare var BUILD_TARGET: "external" | "ant";
declare var BUILD_ENV: "production" | "development";
declare var INTERFACE_TYPE: string;内部模块声明
Source:
src/types/internal-modules.d.ts
为 Bun 特有的模块提供类型:
typescript
declare module 'bun:bundle' {
export function feature(name: string): boolean;
}tsc 错误说明
代码库有 ~1341 个 TypeScript 编译错误,这是反编译的正常产物:
- 大量
unknown/never/{}类型 - 缺失的类型推断
- React Compiler 输出的非标准模式
这些错误不影响 Bun 运行时执行。 Bun 会跳过类型检查直接执行。
下一步
- 入口与引导 — 深入了解从
cli.tsx到 REPL 就绪的完整启动流程