# 服务层与基础设施分析

## 服务层架构

```mermaid
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。

```mermaid
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` | 工作密钥 |

## 多代理协调器

```mermaid
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/>任务列表]
```

## 插件系统

```mermaid
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 扩展]
```

## 技能系统

```mermaid
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) 服务支持多种传输协议：

```mermaid
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 认证流程

```mermaid
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 服务架构

```mermaid
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 计数。

```mermaid
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[增量渲染]
```

## 权限系统

```mermaid
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` | 溢出测试工具 |
