mirror of
https://github.com/roger2ai/Claude-Code-Compiled.git
synced 2026-05-07 08:35:54 +08:00
- Move all .md documentation into docs/ directory - Rewrite README.md with English documentation covering: - All 22 missing source stubs added - Source code fixes (useEffectEvent, version check, auth, sandbox-runtime) - Bun compatibility shims (macro, bun-bundle) - 28 missing npm dependencies - Build and run instructions - Remove dist/ from tracking (users compile themselves)
296 lines
10 KiB
Markdown
296 lines
10 KiB
Markdown
# Utils 架构详细文档
|
||
|
||
> 290 个独立工具文件 + 32 个子目录,总计 ~88,500 行代码
|
||
> 占项目总代码量的 ~17%,是最大的单一模块
|
||
|
||
---
|
||
|
||
## 1. 子目录概览 (32 个)
|
||
|
||
按文件数量排序:
|
||
|
||
| 目录 | 文件数 | 职责 |
|
||
|------|--------|------|
|
||
| `plugins/` | 44 | 插件系统:加载、安装、版本、市场、验证 |
|
||
| `permissions/` | 24 | 权限引擎:模式、规则、分类器、路径验证 |
|
||
| `bash/` | 23 | Bash 解析器:AST、heredoc、shell completion |
|
||
| `swarm/` | 22 | 团队协作:后端、生成、权限同步、重连 |
|
||
| `settings/` | 19 | 配置系统:验证、缓存、MDM、变更检测 |
|
||
| `hooks/` | 17 | 钩子系统:注册、执行、事件、配置 |
|
||
| `model/` | 16 | 模型管理:别名、能力、deprecation、提供商 |
|
||
| `computerUse/` | 15 | 计算机使用:执行器、截图、输入、清理 |
|
||
| `shell/` | 10 | Shell 抽象:Bash/PowerShell 提供者、前缀 |
|
||
| `telemetry/` | 9 | 遥测:事件、追踪、性能、插件追踪 |
|
||
| `claudeInChrome/` | 7 | Chrome 集成:native host、MCP server |
|
||
| `secureStorage/` | 6 | 安全存储:macOS Keychain、明文 fallback |
|
||
| `deepLink/` | 6 | 深度链接:解析、协议处理、终端启动 |
|
||
| `task/` | 5 | 任务框架:输出格式化、磁盘持久化 |
|
||
| `suggestions/` | 5 | 补全建议:命令、目录、shell 历史 |
|
||
| `nativeInstaller/` | 5 | 原生安装器:下载、安装、包管理器 |
|
||
| `teleport/` | 4 | 远程传送:API、环境选择、git bundle |
|
||
| `processUserInput/` | 4 | 用户输入处理:bash 命令、斜杠命令、文本 |
|
||
| `powershell/` | 3 | PowerShell:危险 cmdlet、解析器 |
|
||
| `git/` | 3 | Git 操作:config 解析、文件系统、gitignore |
|
||
| `ultraplan/` | 2 | 超级计划:CCR 会话、关键词 |
|
||
| `sandbox/` | 2 | 沙箱:适配器、UI 工具 |
|
||
| `messages/` | 2 | 消息映射:SDK 消息转换 |
|
||
| `memory/` | 2 | 记忆:类型、版本 |
|
||
| `mcp/` | 2 | MCP 工具:日期解析、验证 |
|
||
| `filePersistence/` | 2 | 文件持久化:扫描器 |
|
||
| `dxt/` | 2 | DXT:辅助函数、zip |
|
||
| `background/` | 2 | 后台任务:远程预检查、会话 |
|
||
| `todo/` | 1 | Todo 类型定义 |
|
||
| `skills/` | 1 | 技能变更检测 |
|
||
| `github/` | 1 | GitHub 认证状态 |
|
||
|
||
---
|
||
|
||
## 2. 核心工具文件 (根目录 290 个)
|
||
|
||
### 2.1 文件系统与路径 (~25 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `file.ts` | 文件操作辅助 |
|
||
| `fileRead.ts` | 文件读取(带缓存、限制) |
|
||
| `fileReadCache.ts` | 文件读取缓存 |
|
||
| `fileStateCache.ts` | 文件状态缓存 (clone, merge, size limit) |
|
||
| `fileHistory.ts` | 文件历史快照追踪 |
|
||
| `fileOperationAnalytics.ts` | 文件操作分析 |
|
||
| `filePersistence/filePersistence.ts` | 文件持久化 |
|
||
| `glob.ts` | Glob 模式匹配 |
|
||
| `ripgrep.ts` | ripgrep 封装(代码搜索) |
|
||
| `fsOperations.ts` | 文件系统操作 |
|
||
| `path.ts` | 路径工具 |
|
||
| `tempfile.ts` | 临时文件生成 |
|
||
| `xdg.ts` | XDG 目录标准 |
|
||
| `systemDirectories.ts` | 系统目录 |
|
||
| `cachePaths.ts` | 缓存路径 |
|
||
| `getWorktreePaths.ts` | Worktree 路径 |
|
||
| `getWorktreePathsPortable.ts` | 跨平台 worktree 路径 |
|
||
| `worktree.ts` | Worktree 管理 |
|
||
| `worktreeModeEnabled.ts` | Worktree 模式开关 |
|
||
| `windowsPaths.ts` | Windows 路径处理 |
|
||
|
||
### 2.2 Git 相关 (~10 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `git.ts` | Git 操作:findGitRoot, getBranch, getIsGit, getWorktreeCount |
|
||
| `gitDiff.ts` | Git diff 解析和格式化 |
|
||
| `git/gitConfigParser.ts` | Git config 解析 |
|
||
| `git/gitFilesystem.ts` | Git 文件系统抽象 |
|
||
| `git/gitignore.ts` | Gitignore 处理 |
|
||
| `gitSettings.ts` | Git 设置 |
|
||
| `github/ghAuthStatus.ts` | GitHub 认证状态 |
|
||
| `githubRepoPathMapping.ts` | GitHub 仓库路径映射 |
|
||
| `ghPrStatus.ts` | PR 状态查询 |
|
||
| `commitAttribution.ts` | Commit 归因 |
|
||
|
||
### 2.3 进程与执行 (~10 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `process.ts` | 进程工具:writeToStderr, peekForStdinData |
|
||
| `execFileNoThrow.ts` | 安全 exec (无异常) |
|
||
| `execFileNoThrowPortable.ts` | 跨平台 exec |
|
||
| `execSyncWrapper.ts` | 同步 exec 包装 |
|
||
| `genericProcessUtils.ts` | 通用进程工具 |
|
||
| `subprocessEnv.ts` | 子进程环境变量 |
|
||
| `Shell.ts` | Shell 管理:cwd、执行 |
|
||
| `ShellCommand.ts` | Shell 命令构建 |
|
||
| `which.ts` | 可执行文件查找 |
|
||
| `findExecutable.ts` | 可执行文件发现 |
|
||
| `tree-kill` | 进程树终止 |
|
||
|
||
### 2.4 加密与安全 (~8 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `crypto.ts` | 加密工具 |
|
||
| `secureStorage/index.ts` | 安全存储入口 |
|
||
| `secureStorage/macOsKeychainStorage.ts` | macOS Keychain |
|
||
| `secureStorage/keychainPrefetch.ts` | Keychain 预取 (启动优化) |
|
||
| `secureStorage/fallbackStorage.ts` | Fallback 明文存储 |
|
||
| `secureStorage/plainTextStorage.ts` | 明文存储 |
|
||
| `caCerts.ts` / `caCertsConfig.ts` | CA 证书 |
|
||
| `mtls.ts` | mTLS 支持 |
|
||
|
||
### 2.5 配置与设置 (~15 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `config.ts` | 全局配置:读写 ~/.claude/ |
|
||
| `configConstants.ts` | 配置常量 |
|
||
| `env.ts` / `envDynamic.ts` / `envUtils.ts` / `envValidation.ts` | 环境变量管理 |
|
||
| `managedEnv.ts` / `managedEnvConstants.ts` | 管理环境变量 |
|
||
| `settings/settings.ts` | 设置加载(多源合并) |
|
||
| `settings/validation.ts` | Zod schema 验证 |
|
||
| `settings/settingsCache.ts` | 设置缓存 |
|
||
| `settings/changeDetector.ts` | 文件变更检测 |
|
||
| `settings/mdm/` | MDM 企业设置 |
|
||
|
||
### 2.6 认证与 API (~12 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `auth.ts` | 认证:OAuth token、Claude.ai 订阅 |
|
||
| `authFileDescriptor.ts` | 认证文件描述符 |
|
||
| `authPortable.ts` | 跨平台认证 |
|
||
| `api.ts` | API 工具 |
|
||
| `apiPreconnect.ts` | API 预连接 (启动优化) |
|
||
| `billing.ts` | 计费 |
|
||
| `user.ts` | 用户信息 |
|
||
| `sessionIngressAuth.ts` | 会话入口认证 |
|
||
| `jwt` 相关 | JWT 工具 |
|
||
| `proxy.ts` | 代理配置 |
|
||
|
||
### 2.7 Diff 与比较 (~5 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `diff.ts` | Diff 工具 |
|
||
| `treeify.ts` | 树形展示 |
|
||
| `highlightMatch.tsx` | 匹配高亮 |
|
||
| `contentArray.ts` | 内容数组操作 |
|
||
| `truncate.ts` | 文本截断 |
|
||
|
||
### 2.8 UI 与渲染 (~12 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `ansiToPng.ts` / `ansiToSvg.ts` | ANSI 转图片/SVG |
|
||
| `cliHighlight.ts` | CLI 高亮 |
|
||
| `format.ts` | 格式化(token、时间、文件大小) |
|
||
| `markdown.ts` | Markdown 处理 |
|
||
| `renderOptions.ts` | 渲染选项 |
|
||
| `staticRender.tsx` | 静态渲染 |
|
||
| `fullscreen.ts` | 全屏模式 |
|
||
| `hyperlink.ts` | 终端超链接 |
|
||
| `ink.ts` | Ink 工具 |
|
||
| `screenshotClipboard.ts` | 截图剪贴板 |
|
||
| `theme.ts` / `systemTheme.ts` | 主题管理 |
|
||
| `exportRenderer.tsx` | 导出渲染器 |
|
||
|
||
### 2.9 会话管理 (~12 文件)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `sessionStart.ts` | 会话启动钩子 |
|
||
| `sessionState.ts` | 会话状态 |
|
||
| `sessionStorage.ts` | 会话存储(transcript 读写) |
|
||
| `sessionStoragePortable.ts` | 跨平台会话存储 |
|
||
| `sessionRestore.ts` | 会话恢复 |
|
||
| `sessionTitle.ts` | 会话标题 |
|
||
| `sessionUrl.ts` | 会话 URL |
|
||
| `sessionActivity.ts` | 会话活动追踪 |
|
||
| `sessionEnvVars.ts` | 会话环境变量 |
|
||
| `sessionEnvironment.ts` | 会话环境 |
|
||
| `concurrentSessions.ts` | 并发会话检测 |
|
||
| `conversationRecovery.ts` | 对话恢复 |
|
||
|
||
### 2.10 其他重要文件
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `abortController.ts` | AbortController 工具 |
|
||
| `array.ts` | 数组工具(count, uniq 等) |
|
||
| `bufferedWriter.ts` | 缓冲写入 |
|
||
| `circularBuffer.ts` | 环形缓冲区 |
|
||
| `cleanupRegistry.ts` | 清理注册表 |
|
||
| `cron.ts` / `cronScheduler.ts` / `cronTasks.ts` | Cron 定时任务 |
|
||
| `debug.ts` / `debugFilter.ts` | 调试工具 |
|
||
| `errors.ts` | 错误处理 |
|
||
| `fpsTracker.ts` | FPS 追踪 |
|
||
| `gracefulShutdown.ts` | 优雅关闭 |
|
||
| `hash.ts` | 哈希工具 |
|
||
| `http.ts` | HTTP 工具 |
|
||
| `json.ts` / `jsonRead.ts` | JSON 解析 |
|
||
| `lockfile.ts` | 文件锁 |
|
||
| `log.ts` | 日志 |
|
||
| `memoize.ts` | Memoize 工具 |
|
||
| `modifiers.ts` | 修饰键检测 |
|
||
| `platform.ts` | 平台检测 |
|
||
| `queueProcessor.ts` | 队列处理器 |
|
||
| `sanitization.ts` | 输入清理 |
|
||
| `semver.ts` | 语义版本 |
|
||
| `sequential.ts` | 顺序执行器 |
|
||
| `signal.ts` | 信号处理 |
|
||
| `sleep.ts` | 延迟 |
|
||
| `stringUtils.ts` | 字符串工具 |
|
||
| `uuid.ts` | UUID 生成/验证 |
|
||
| `words.ts` | 单词工具 |
|
||
| `yaml.ts` | YAML 解析 |
|
||
| `xml.ts` | XML 工具 |
|
||
| `zodToJsonSchema.ts` | Zod → JSON Schema 转换 |
|
||
|
||
---
|
||
|
||
## 3. 关键设计模式
|
||
|
||
### 3.1 启动预取
|
||
|
||
多个文件实现启动时并行预取:
|
||
- `apiPreconnect.ts` — API 连接预热
|
||
- `secureStorage/keychainPrefetch.ts` — macOS Keychain 预读
|
||
- `settings/mdm/rawRead.ts` — MDM 设置预读
|
||
|
||
### 3.2 缓存层级
|
||
|
||
```
|
||
内存缓存 (memoize / LRU)
|
||
→ 文件缓存 (settingsCache, fileReadCache)
|
||
→ 文件系统 (config.json, settings.json)
|
||
```
|
||
|
||
### 3.3 多源配置合并
|
||
|
||
`settings/settings.ts` 实现多层配置合并:
|
||
```
|
||
远程管理 → 策略 → 用户 → 项目 → 本地 → CLI → 环境变量
|
||
(优先级从低到高)
|
||
```
|
||
|
||
### 3.4 安全沙箱
|
||
|
||
- `sandbox/sandbox-adapter.ts` — 沙箱适配器
|
||
- `permissions/dangerousPatterns.ts` — 危险模式检测
|
||
- `permissions/bashClassifier.ts` — Bash 命令分类器
|
||
- `permissions/yoloClassifier.ts` — YOLO 分类器
|
||
|
||
### 3.5 跨平台兼容
|
||
|
||
多处实现平台抽象:
|
||
- `shell/shellProvider.ts` — Bash/PowerShell 抽象
|
||
- `secureStorage/` — macOS Keychain / 明文 fallback
|
||
- `getWorktreePathsPortable.ts` — 跨平台路径
|
||
- `execFileNoThrowPortable.ts` — 跨平台 exec
|
||
|
||
---
|
||
|
||
## 4. 依赖关系
|
||
|
||
utils/ 是最底层的模块,被所有其他模块依赖:
|
||
|
||
```
|
||
main.tsx → utils/ (config, env, auth, platform, ...)
|
||
REPL.tsx → utils/ (session, file, git, ...)
|
||
QueryEngine → utils/ (model, tokens, ...)
|
||
Tools → utils/ (bash, permissions, ...)
|
||
Components → utils/ (format, theme, ...)
|
||
Services → utils/ (http, crypto, ...)
|
||
|
||
utils/ ← 无外部依赖(纯工具层)
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 代码质量特征
|
||
|
||
- **88,500 行**,占项目 17%
|
||
- **290 + 32×N 个文件**,高度模块化
|
||
- 大量 memoize 使用(lodash-es)
|
||
- Zod schema 验证贯穿配置系统
|
||
- 完善的错误处理(`errors.ts` 统一错误类型)
|
||
- 详细的调试日志(`debug.ts`, `log.ts`)
|