startup

启动速度直接影响用户体验,Claude Code 通过多种技术实现 < 1 秒的冷启动。

优化目标

  • 冷启动: < 1 秒(首次运行)

  • 热启动: < 300ms(后续运行)

  • 首次交互: < 2 秒(到第一个 AI 响应)

多级 Fast-Path

1

Level 1: 最小化导入

// ❌ 启动时导入所有模块
import * as tools from './tools';
import * as services from './services';
import * as plugins from './plugins';

// ✅ 延迟导入
async function loadTools() {
  return await import('./tools');
}
2

Level 2: 并行预取

async function startup() {
  // 并行加载
  const [config, state, tools] = await Promise.all([
    loadConfig(),
    loadState(),
    loadTools(),
  ]);
  
  return { config, state, tools };
}
3

Level 3: 按需加载

// Skills 和 Plugins 按需加载
async function getSkills() {
  if (!skillsCache) {
    skillsCache = await loadSkills();
  }
  return skillsCache;
}

代码分割

动态导入

// 主入口只加载核心模块
async function main() {
  const { query } = await import('./query');
  const { tools } = await import('./tools');
  
  // 启动 UI
  await startUI(query, tools);
}

条件加载

缓存策略

配置缓存

System Prompt 缓存

避免同步 I/O

异步文件操作

并行 I/O

预编译

Bun 构建

使用 Bun 预编译 TypeScript:

优势

  • 无需运行时转译

  • 更快的启动速度

  • 更小的内存占用

启动流程

优化后的流程

性能测量

启动时间分析

下一步

  • 了解 流式工具执行 的并发机制

  • 探索 缓存策略 的详细实现

  • 查看 并发控制 的限制策略