Files
claude-code/docs/services-and-infrastructure.md
arno 9074aabe1c Add project documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 09:33:11 +08:00

8.7 KiB
Raw Permalink Blame History

服务层与基础设施分析

服务层架构

graph TB
    subgraph API 服务
        API_CLIENT[client.ts<br/>Anthropic API 客户端]
        API_CLAUDE[claude.ts<br/>Claude API 封装]
        API_BOOTSTRAP[bootstrap.ts<br/>引导逻辑]
        API_FILES[filesApi.ts<br/>文件 API]
        API_USAGE[usage.ts<br/>使用量查询]
        API_SESSION[sessionIngress.ts<br/>会话入口]
        API_ERRORS[errors.ts<br/>错误处理]
        API_RETRY[withRetry.ts<br/>重试逻辑]
        API_GROVE[grove.ts<br/>Grove 集成]
    end

    subgraph MCP 服务
        MCP_MGR[MCPConnectionManager.tsx<br/>MCP 连接管理器]
        MCP_AUTH[auth.ts<br/>MCP 认证]
        MCP_CONFIG[config.ts<br/>MCP 配置]
        MCP_TYPES[types.ts<br/>MCP 类型定义]
        MCP_REGISTRY[officialRegistry.ts<br/>官方注册表]
        MCP_VSCODE[vscodeSdkMcp.ts<br/>VSCode SDK MCP]
        MCP_SDK[SdkControlTransport.ts<br/>SDK 控制传输]
        MCP_NORMAL[normalization.ts<br/>MCP 规范化]
    end

    subgraph OAuth 认证
        OAUTH_FLOW[OAuth 2.0 流程]
        OAUTH_XAA[xaa.ts / xaaIdpLogin.ts<br/>XAA 认证]
        OAUTH_PORT[oauthPort.ts<br/>OAuth 端口]
    end

    subgraph 分析服务
        ANALYTICS_GROWTH[GrowthBook 特性开关]
        ANALYTICS_TELEMETRY[OpenTelemetry 遥测]
        ANALYTICS_TRACKING[diagnosticTracking.ts<br/>诊断追踪]
    end

    subgraph 其他服务
        COMPACT[compact/<br/>上下文压缩]
        POLICY[policyLimits/<br/>组织策略限制]
        REMOTE_SETTINGS[remoteManagedSettings/<br/>远程托管设置]
        EXTRACT_MEM[extractMemories/<br/>自动记忆提取]
        TOKEN_EST[tokenEstimation.ts<br/>Token 估算]
        TEAM_MEM[teamMemorySync/<br/>团队记忆同步]
        SESSION_MEM[SessionMemory/<br/>会话记忆]
        LSP[lsp/<br/>Language Server Protocol]
        PLUGINS[plugins/<br/>插件加载器]
        VOICE[voice.ts / voiceStreamSTT.ts<br/>语音输入/STT]
    end

Bridge 桥接系统

Bridge 是 IDE 扩展与 Claude Code CLI 之间的双向通信层,支持 VS Code 和 JetBrains。

sequenceDiagram
    participant IDE as IDE 扩展<br/>(VS Code / JetBrains)
    participant BridgeMain as bridgeMain.ts
    participant Messaging as bridgeMessaging.ts
    participant ReplBridge as replBridge.ts
    participant JWT as jwtUtils.ts
    participant Session as sessionRunner.ts
    participant CLI as Claude Code CLI

    IDE->>BridgeMain: 建立连接
    BridgeMain->>JWT: JWT 认证
    JWT-->>BridgeMain: 认证通过
    IDE->>Messaging: 发送消息
    Messaging->>ReplBridge: 转发到 REPL
    ReplBridge->>Session: 执行会话
    Session->>CLI: 调用工具/命令
    CLI-->>Session: 返回结果
    Session-->>ReplBridge: 处理结果
    ReplBridge-->>Messaging: 构建响应
    Messaging-->>IDE: 返回结果

Bridge 核心模块

文件 功能
bridgeMain.ts Bridge 主循环
bridgeMessaging.ts 消息协议定义
bridgePermissionCallbacks.ts 权限回调处理
bridgeConfig.ts Bridge 配置
bridgeApi.ts Bridge API 接口
bridgeDebug.ts Bridge 调试工具
bridgeEnabled.ts Bridge 启用状态检测
bridgeUI.ts Bridge UI 组件
replBridge.ts REPL 会话桥接
replBridgeHandle.ts REPL Bridge 句柄
replBridgeTransport.ts REPL Bridge 传输层
initReplBridge.ts REPL Bridge 初始化
jwtUtils.ts JWT 认证工具
sessionRunner.ts 会话执行管理
createSession.ts 会话创建
codeSessionApi.ts Code 会话 API
capacityWake.ts 容量唤醒
remoteBridgeCore.ts 远程 Bridge 核心
trustedDevice.ts 受信任设备
workSecret.ts 工作密钥

多代理协调器

flowchart TD
    A[coordinatorMode.ts] --> B{协调器模式?}
    B -->|是| C[分发任务给 Worker]
    B -->|否| D[普通模式]

    C --> E[Worker 1<br/>AgentTool]
    C --> F[Worker 2<br/>AgentTool]
    C --> G[Worker N<br/>AgentTool]

    E --> H[SendMessage<br/>消息传递]
    F --> H
    G --> H
    H --> I[Coordinator<br/>汇总结果]

    C --> J[TaskCreate<br/>任务创建]
    J --> K[TaskUpdate<br/>任务更新]
    K --> L[TaskList<br/>任务列表]

插件系统

flowchart LR
    A[builtinPlugins.ts<br/>内置插件] --> C[插件加载器]
    B[bundled/<br/>捆绑插件] --> C
    D[用户插件目录<br/>.claude/plugins/] --> C
    C --> E[插件注册]
    E --> F[工具扩展]
    E --> G[命令扩展]
    E --> H[Hook 扩展]

技能系统

flowchart LR
    A[bundled/<br/>捆绑技能] --> C[技能加载器]
    B[bundledSkills.ts<br/>技能注册] --> C
    D[loadSkillsDir.ts<br/>用户技能目录] --> C
    E[mcpSkillBuilders.ts<br/>MCP 技能构建] --> C
    C --> F[SkillTool<br/>技能执行]

内置技能清单

技能 功能
update-config 配置 settings.json 和 hooks
simplify 代码简化和质量审查
loop 定时循环执行命令
claude-api Claude API / Anthropic SDK 开发
commit Git 提交
remember 记忆管理

MCP 服务详细架构

MCP (Model Context Protocol) 服务支持多种传输协议:

flowchart TD
    A[MCPConnectionManager] --> B{传输协议}
    B -->|stdio| C[子进程通信]
    B -->|SSE| D[Server-Sent Events]
    B -->|HTTP| E[HTTP 传输]
    B -->|SDK| F[SdkControlTransport<br/>IDE SDK 控制]

    A --> G[officialRegistry.ts<br/>官方 MCP 服务器注册表]
    A --> H[vscodeSdkMcp.ts<br/>VS Code SDK 集成]
    A --> I[normalization.ts<br/>工具名规范化]

    A --> J[auth.ts<br/>认证]
    J --> K[OAuth 认证]
    J --> L[API Key 认证]
    J --> M[XAA 认证<br/>xaa.ts / xaaIdpLogin.ts]

OAuth 认证流程

sequenceDiagram
    participant CLI as Claude Code
    participant Browser as 浏览器
    participant OAuth as OAuth 服务
    participant Listener as 本地监听

    CLI->>OAuth: 生成 PKCE 挑战
    CLI->>Browser: 打开授权页面
    Browser->>OAuth: 用户授权
    OAuth-->>Browser: 授权码
    Browser->>Listener: 回调携带授权码
    Listener->>CLI: 传递授权码
    CLI->>OAuth: 用授权码 + PKCE 换取令牌
    OAuth-->>CLI: Access Token + Refresh Token
    CLI->>CLI: 存储令牌Keychain/文件)

LSP 服务架构

flowchart TD
    A[lsp/manager.ts<br/>LSP 管理器<br/>单例模式] --> B[LSPServerManager<br/>服务器管理]
    B --> C[LSPServerInstance<br/>单个服务器实例]
    B --> D[config.ts<br/>服务器配置]

    C --> E[TypeScript Server]
    C --> F[Python Server]
    C --> G[Go Server]
    C --> H[其他语言服务器]

    A --> I[功能]
    I --> J[代码诊断<br/>被动反馈]
    I --> K[跳转定义<br/>hover 信息]
    I --> L[代码补全]
    I --> M[多项目并行连接]

查询引擎 (QueryEngine.ts)

QueryEngine 是核心的 LLM API 调用引擎(约 46K 行),处理流式响应、工具调用循环、思考模式和 Token 计数。

flowchart TD
    A[QueryEngine.ts<br/>~46K 行] --> B[query.ts<br/>查询管道<br/>~68K 行]
    A --> C[流式响应处理]
    A --> D[工具调用循环]
    A --> E[思考模式管理]
    A --> F[重试逻辑]
    A --> G[Token 计数]

    B --> H[query/ 子模块]
    H --> I[查询管道子步骤]

    D --> J{工具调用?}
    J -->|是| K[执行工具]
    K --> L[收集结果]
    L --> M[继续对话循环]
    J -->|否| N[生成最终响应]

    C --> O[SSE 流解析]
    C --> P[增量渲染]

权限系统

flowchart TD
    A[hooks/toolPermission/<br/>权限系统] --> B[PermissionMode]
    B --> C[default<br/>默认模式]
    B --> D[plan<br/>计划模式]
    B --> E[bypassPermissions<br/>绕过权限]
    B --> F[auto<br/>自动模式]
    B --> G[dontAsk<br/>不询问模式]

    A --> H[工具调用拦截]
    H --> I{权限检查}
    I -->|允许规则| J[执行]
    I -->|拒绝规则| K[拒绝]
    I -->|无规则| L[询问用户]

特性开关体系

通过 Bun 的 bun:bundle 实现编译时死代码消除:

特性开关 控制功能
PROACTIVE 主动模式SleepTool
KAIROS KAIROS 功能集
BRIDGE_MODE IDE Bridge 模式
DAEMON 守护进程模式
VOICE_MODE 语音模式
AGENT_TRIGGERS 定时触发器Cron
AGENT_TRIGGERS_REMOTE 远程触发器
MONITOR_TOOL 监控工具
COORDINATOR_MODE 多代理协调模式
CONTEXT_COLLAPSE 上下文折叠
TERMINAL_PANEL 终端面板
WEB_BROWSER_TOOL Web 浏览器工具
WORKFLOW_SCRIPTS 工作流脚本
HISTORY_SNIP 历史记录剪辑
UDS_INBOX UDS 收件箱
OVERFLOW_TEST_TOOL 溢出测试工具