服务层
服务层是 Claude Code 的后端基础设施,由 36+ 个服务模块(130 文件)组成,提供从 API 通信到遥测的全套能力。
服务架构
┌──────────────────────────────────────────┐
│ 核心服务 │
│ API Client · Query Engine · Cost Track │
├──────────────────────────────────────────┤
│ 协议服务 │
│ MCP Server · LSP Client · OAuth │
├──────────────────────────────────────────┤
│ 数据服务 │
│ Memory · Compression · History │
├──────────────────────────────────────────┤
│ 运维服务 │
│ Telemetry · Analytics · RateLimit │
├──────────────────────────────────────────┤
│ 交互服务 │
│ Voice · Notifications · Plugins │
└──────────────────────────────────────────┘
核心服务
API 客户端 (services/api/)
封装 Anthropic SDK,提供:
- 流式消息传递
- 文件上传(图片、PDF)
- Token 计数
- 错误处理与重试
- 多模型支持
成本追踪 (cost-tracker.ts)
实时跟踪 Token 使用和费用:
- 输入/输出 Token 计数
- 按模型计费
- 会话累计统计
- 缓存命中追踪
协议服务
MCP 服务器管理 (services/mcp/)
管理 Model Context Protocol 服务器的完整生命周期:
- 服务器发现与连接
- 工具动态注册
- 资源管理
- 心跳与健康检查
- 并发多服务器支持
LSP 集成 (services/lsp/)
Language Server Protocol 集成,提供代码智能:
- 符号查找
- 跳转到定义
- 引用查找
- 代码补全
- 诊断信息
OAuth 认证 (services/oauth/)
OAuth 2.0 认证流程:
- 授权码流程
- Token 刷新
- 安全存储(macOS Keychain)
数据服务
上下文压缩 (services/compression/)
当对话变长时,智能压缩上下文:
- 保留关键信息
- 移除冗余内容
- 维持对话连贯性
- 自动触发或手动
/compact
记忆提取 (services/memory/)
自动从对话中提取值得记住的信息:
- 用户偏好
- 项目上下文
- 反馈和纠正
- 跨会话持久化
运维服务
遥测 (services/telemetry/)
基于 OpenTelemetry 的诊断追踪:
- 性能指标采集
- 错误追踪
- 使用模式分析
- 本地优先,可选上报
分析 (services/analytics/)
GrowthBook 特性管理:
- A/B 测试
- 特性开关
- 渐进式发布
- 用户分群
速率限制 (services/rateLimit/)
组织级别的速率控制:
- API 调用频率限制
- Token 配额管理
- 策略执行
交互服务
语音 (services/voice/)
语音输入处理:
- 语音转文本
- 关键词提取
- 实时流式处理
通知 (services/notifications/)
用户通知系统:
- 任务完成通知
- 错误告警
- 离开摘要(Away Summary)
插件加载 (services/plugins/)
插件系统的加载器:
- 插件发现与安装
- 版本管理
- 依赖解析
- 生命周期管理