3.7 KiB
3.7 KiB
项目文件统计分析
代码规模
| 目录 | 文件数(估算) | 说明 |
|---|---|---|
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 — 凭据安全存储
模块依赖关系
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 隔离