本章总览
src/entrypoints/(14 文件 · 约 4167 行)是 Claude Code 的 进程入口与对外类型边界:cli.tsx /bootstrap 快路径、init.ts 全局初始化、mcp.ts MCP stdio 服务器、agentSdkTypes.ts Agent SDK 公共 API,以及 sdk/* 下从 Zod schema 生成的类型。本模块帮助理解「二进制从哪里启动」与「SDK 消费者 import 什么」。
总览图
学完本章你应该能
- 建立 cli.tsx 快路径 vs main.tsx 全量 CLI 的分层
- 理解 init.ts memoize 初始化顺序与延迟加载策略
- 区分 coreTypes / runtimeTypes / controlTypes 三套 SDK 类型
- 会从子章节进入 cli、sdk-types、mcp、sandbox 深度讲解
建议学习步骤
- 浏览 SourceTree 确认 entrypoints 14 文件布局
- 读 cli-entrypoint 理解 --version 零 import 快路径
- 读 sdk-types 理解 schema 生成链
- 读 mcp-entrypoint 与 sandbox-types 理解对外协议边界
模块在架构中的位置
entrypoints 是 src/ 下的一级目录,共 14 个文件、4,167 行。一句话概括:CLI 启动、参数解析、OAuth 认证、GrowthBook 特性开关初始化,决定走 REPL 交互还是 Headless/SDK 模式。
概览
| 指标 | 数值 |
|---|---|
| 行数 | 4,167 |
| 文件 | 14 |
子章节导航
| 子章节 | 主题 | 核心路径 |
|---|---|---|
| cli-entrypoint | Bootstrap、快路径、main 委托 | cli.tsx, init.ts |
| sdk-types | core/control/runtime 类型与 schema | sdk/coreTypes.ts, controlTypes.ts, runtimeTypes.ts |
| mcp-entrypoint | MCP stdio 服务器 | mcp.ts, agentSdkTypes.ts |
| sandbox-types | 沙箱 Zod schema 单一真相源 | sandboxTypes.ts, coreSchemas.ts |
启动链简图:
node cli.js → entrypoints/cli.tsx::main()
├─ --version → console.log(MACRO.VERSION); return
├─ --daemon-worker / bridge / bg / … → 各 fast-path dynamic import
└─ default → import main.tsx → init() → Ink REPL
Agent SDK 消费者:
import { … } from '@anthropic-ai/claude-code/agent-sdk'
→ agentSdkTypes.ts → sdk/coreTypes + runtimeTypes
entrypoints 与 src 根目录的关系
cli.tsx 是 npm bin 的真实入口;main.tsx(数千行)处理 Commander 选项、信任对话框、launchRepl,但不被 --version 等快路径加载。
init.ts 被 main 与 headless 路径调用,负责 enableConfigs、telemetry 延迟 init、OAuth populate、policy limits promise 等——与 cli 解耦以便测试单独 init。
sdk/ 子目录:
coreSchemas.ts/coreTypes.generated.ts— 可序列化消息与配置controlTypes.ts— stdin/stdout 控制协议(SDK builder 用)runtimeTypes.ts— 回调、Session 接口等非序列化类型settingsTypes.generated.ts— settings.json schema 生成
修改 SDK 公开类型时,优先改 schema 再跑 bun scripts/generate-sdk-types.ts。
点击文件跳转子章节。注意 sdk/ 下 generated 文件勿手改。
本章小结与延伸
entrypoints = 启动 + SDK 类型出口。建议:cli-entrypoint → init 衔接 → sdk-types → mcp / sandbox。 继续学习: