Files
Claude-Code-Compiled/docs/ARCHITECTURE-UTILS.md
Roger e627a9388d restructure: move docs to docs/, rewrite README in English
- 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)
2026-04-01 07:41:38 +08:00

296 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`