# 项目文件统计分析 ## 代码规模 | 目录 | 文件数(估算) | 说明 | |------|---------------|------| | `commands/` | 189 | 命令实现,约 82 个命令目录 | | `components/` | 180+ | UI 组件 | | `hooks/` | 70+ | React Hooks | | `tools/` | 80+ | 工具实现,约 40 个工具 | | `services/` | 50+ | 服务层 | | `bridge/` | 30+ | IDE 桥接 | | `utils/` | 50+ | 工具函数 | | `types/` | 10+ | 类型定义 | | 其他 | 50+ | 状态、Schema、Vim 等 | | **总计** | **~1,900** | **512,000+ 行代码** | ## 核心文件规模 | 文件 | 行数 | 说明 | |------|------|------| | `main.tsx` | ~804K (含内联) | CLI 入口(可能包含内联数据) | | `QueryEngine.ts` | ~46K | 查询引擎 | | `query.ts` | ~68K | 查询管道 | | `commands.ts` | ~25K | 命令注册 | | `Tool.ts` | ~29K | 工具类型定义 | | `tools.ts` | ~17K | 工具注册 | | `interactiveHelpers.tsx` | ~57K | 交互辅助 | | `history.ts` | ~23K | 历史记录 | | `setup.ts` | ~20K | 初始化设置 | | `context.ts` | ~6K | 上下文管理 | ## 技术栈依赖 ### 运行时和语言 - **Bun** — JavaScript/TypeScript 运行时,提供 `bun:bundle` 编译时特性开关 - **TypeScript (strict)** — 类型安全 ### 终端 UI - **React** — 组件化 UI 框架 - **Ink** — React 终端渲染器 ### CLI 和工具 - **Commander.js** — CLI 参数解析 - **ripgrep** — 代码搜索(通过子进程调用) - **Zod v4** — Schema 验证 ### 协议和 API - **Anthropic SDK** — Claude API 客户端 - **MCP SDK** — Model Context Protocol - **LSP** — Language Server Protocol ### 遥测和分析 - **OpenTelemetry** — 遥测数据收集 - **gRPC** — 远程过程调用 - **GrowthBook** — 特性开关和 A/B 测试 ### 认证和安全 - **OAuth 2.0** — 用户认证 - **JWT** — Token 认证 - **macOS Keychain** — 凭据安全存储 ## 模块依赖关系 ```mermaid graph LR subgraph 入口 MAIN[main.tsx] end subgraph 核心 QE[QueryEngine] QUERY[query.ts] CTX[context.ts] end subgraph 能力层 TOOLS[tools.ts] CMDS[commands.ts] end subgraph 实现层 TOOL_IMPL[tools/] CMD_IMPL[commands/] end subgraph 基础设施 SERVICES[services/] BRIDGE[bridge/] HOOKS[hooks/] end subgraph UI COMPONENTS[components/] SCREENS[screens/] end MAIN --> QE MAIN --> CMDS MAIN --> COMPONENTS QE --> QUERY QE --> CTX QE --> TOOLS TOOLS --> TOOL_IMPL CMDS --> CMD_IMPL TOOL_IMPL --> SERVICES TOOL_IMPL --> HOOKS TOOL_IMPL --> BRIDGE COMPONENTS --> HOOKS QE --> SERVICES ``` ## 关键设计决策 ### 1. Bun 运行时 选择 Bun 而非 Node.js,获得: - 更快的启动时间 - 原生 TypeScript 支持 - `bun:bundle` 编译时特性开关(死代码消除) - 内置的文件系统 API ### 2. React + Ink 终端 UI 使用 React 组件模型构建 Terminal UI,获得: - 声明式 UI 编程 - 状态管理一致性 - 丰富的组件复用 ### 3. 工具/命令分离 - **工具 (Tools)** — Agent 可调用的能力,通过 API 对话使用 - **命令 (Commands)** — 用户直接调用的交互功能,通过 `/` 前缀使用 - 两者解耦,但命令可以调用工具 ### 4. MCP 协议 通过 Model Context Protocol 支持外部工具扩展: - 标准化的工具注册和调用 - 支持多种传输方式(stdio、SSE、SDK) - 动态工具发现 ### 5. 代理集群架构 支持多代理并行工作: - `AgentTool` 生成子代理 - `coordinator/` 编排多代理 - `TeamCreateTool`/`TeamDeleteTool` 管理代理团队 - `SendMessageTool` 代理间通信 - Git Worktree 隔离