tech stack
Claude Code 的技术选型体现了对性能、开发体验和生态系统的综合考量。
核心技术
运行时环境
Node.js 18+
原因:成熟的生态系统,广泛的平台支持
特性:ESM 模块、Top-level await、Fetch API
限制:最低版本 18.0.0
Bun(构建工具)
用途:打包、转译、依赖管理
优势:极快的启动速度,内置 TypeScript 支持
配置:
bunfig.toml
编程语言
TypeScript 5.x
严格模式:
strict: true目标:ES2022
模块:ESNext
特性:类型推导、泛型、装饰器
类型验证:Zod 3.x
UI 框架
React 19
特性:Hooks、Suspense、并发渲染
用途:组件化 TUI 开发
优势:声明式、可测试、生态丰富
Ink 5.x
特点:
将 React 渲染到终端
支持 Flexbox 布局
键盘事件处理
依赖分析
核心依赖
AI 相关
@anthropic-ai/sdk
用途:调用 Claude API
特性:流式响应、工具调用、消息管理
版本:0.30.0+
@modelcontextprotocol/sdk
用途:MCP 客户端实现
特性:工具发现、资源管理、提示模板
版本:1.0.0+
文件系统
chokidar
用途:文件监听(Hooks 系统)
特性:跨平台、高性能、递归监听
fast-glob
用途:文件搜索和模式匹配
特性:快速、支持 gitignore
fs-extra
用途:增强的文件系统操作
特性:Promise API、递归操作
代码分析
@babel/parser
用途:JavaScript/TypeScript AST 解析
应用:ReadCodeTool 的代码结构分析
typescript
用途:TypeScript 编译和类型检查
应用:GetDiagnostics 工具
网络通信
ws(WebSocket)
用途:Bridge 模式的双向通信
特性:低延迟、全双工
eventsource
用途:SSE (Server-Sent Events) 客户端
应用:远程控制的备用传输
工具库
lodash
用途:工具函数
常用:debounce, throttle, cloneDeep
date-fns
用途:日期处理
应用:时间戳格式化、相对时间
chalk
用途:终端颜色
应用:错误高亮、状态指示
开发工具
构建配置
Bun
TypeScript 配置
代码质量
ESLint
规则:Airbnb + TypeScript
插件:React Hooks、Import
Prettier
配置:单引号、无分号、2 空格缩进
性能考量
为什么选择 Bun?
相比 Webpack/Rollup:
启动速度快 10-100 倍
内置 TypeScript 支持
更小的打包体积
为什么使用 Zod?
相比 TypeScript 类型:
运行时验证
自动生成错误消息
类型推导
相比 JSON Schema:
更好的 TypeScript 集成
更简洁的 API
更小的体积
为什么选择 Ink?
相比原生终端 API:
声明式 UI
组件复用
状态管理
相比 blessed/blessed-contrib:
现代化的 React 生态
更好的类型支持
活跃的维护
版本策略
依赖版本管理
固定主版本 - 核心依赖(React, Ink)
允许小版本更新 - 工具库(lodash, date-fns)
锁定版本 - 安全相关(jsonwebtoken, ws)
向后兼容
使用 feature flags 控制新功能
保持 API 稳定性
提供迁移指南
平台支持
操作系统
macOS - 主要开发和测试平台
Linux - 完整支持
Windows - 通过 WSL 或 PowerShell
终端兼容性
iTerm2 - 最佳体验
Terminal.app - 完整支持
Windows Terminal - 完整支持
VS Code 终端 - 完整支持
Shell 支持
bash - 默认
zsh - 完整支持
fish - 基本支持
PowerShell - Windows 平台
未来技术方向
计划中的技术升级
Rust 核心模块 - 性能关键路径
WASM 插件 - 跨平台插件系统
本地模型支持 - Ollama 集成
LSP 集成 - 更好的代码理解
实验性技术
Speculation - 推测性工具执行
Swarm Mode - 多 Agent 并行协作
Coordinator - 智能任务分解
下一步
查看 架构设计 了解模块组织
阅读 Query Loop 了解核心实现
探索 工具系统 的技术细节