# free-code 项目结构完整分析报告 ## 一、项目概览 | 项目 | 详情 | |---|---| | **名称** | free-code (Claude Code 的开源重建版本) | | **版本** | 2.1.87 | | **来源** | Anthropic Claude Code CLI 的源码快照(2026-03-31 npm 分发包 source map 暴露后重建) | | **运行时** | Bun >= 1.3.11 | | **语言** | TypeScript (ESNext, JSX: react-jsx) | | **总代码量** | ~1,997 个 TS/TSX 文件,共 ~512,834 行代码 | | **核心框架** | React 19 + Ink 6 (终端 UI) | ### 三大修改方向 1. **遥测移除** — 所有 OpenTelemetry/gRPC、GrowthBook 分析、Sentry 报告等外发遥测全部替换为空实现(stub) 2. **安全提示护栏移除** — 移除了 Anthropic 注入的额外限制性系统提示 3. **实验性功能解锁** — 88 个 feature flag 中 54 个可编译通过并启用 --- ## 二、目录结构与代码量 | 目录 | 文件数 | 代码行数 | 职责 | |---|---|---|---| | `../src/utils/` | 577 | 178,924 | 工具函数(模型管理、认证、设置、权限等) | | `../src/components/` | 400 | 81,808 | Ink/React 终端 UI 组件 | | `../src/services/` | 147 | 54,351 | API 客户端、OAuth、MCP、分析(已 stub) | | `../src/tools/` | 210 | 51,068 | 40+ Agent 工具实现 | | `../src/commands/` | 218 | 26,526 | 70+ 斜杠命令 | | `../src/ink/` | 98 | 19,844 | Ink 框架内部(终端渲染引擎) | | `../src/hooks/` | 104 | 19,205 | React hooks | | `../src/bridge/` | 32 | 12,614 | IDE 远程控制桥接 | | `../src/cli/` | 21 | 12,408 | CLI 参数解析和命令分发 | | `../src/screens/` | 3 | 5,981 | 主界面 REPL | | `../src/entrypoints/` | 11 | 4,162 | 入口点 | | `../src/skills/` | 50 | 4,092 | 技能系统 | | `../src/native-ts/` | 4 | 4,081 | 原生模块绑定 | | `../src/types/` | 12 | 3,468 | 类型定义 | | `../src/tasks/` | 14 | 3,288 | 后台任务管理 | | `../src/keybindings/` | 14 | 3,159 | 快捷键配置 | | `../src/constants/` | 22 | 2,725 | 常量定义 | | 其他 (18 个目录) | — | — | vim、状态、迁移、MCP 等 | ### 完整目录列表 ``` ../src/ assistant/ # 助手会话管理 bootstrap/ # 启动引导 bridge/ # IDE 远程控制桥接(32 文件) buddy/ # Buddy 功能 cli/ # CLI 参数解析和快速路径分发(21 文件) commands/ # 70+ 斜杠命令实现(218 文件) components/ # Ink/React 终端 UI 组件(400 文件) constants/ # 常量定义(22 文件) context/ # React 上下文 coordinator/ # 协调器模式 daemon/ # 后台守护进程 entrypoints/ # 入口点(11 文件) environment-runner/ # BYOC 环境运行器 hooks/ # React hooks(104 文件) ink/ # Ink 终端渲染引擎(98 文件) jobs/ # 作业系统 keybindings/ # 快捷键配置(14 文件) memdir/ # 记忆目录管理 migrations/ # 数据迁移(11 文件) moreright/ # 扩展权限 native-ts/ # 原生 TypeScript 模块(4 文件) outputStyles/ # 输出样式 plugins/ # 插件系统(2 文件) proactive/ # 主动任务 query/ # 查询管道(4 文件) remote/ # 远程会话管理(4 文件) schemas/ # JSON Schema screens/ # 主界面屏幕(3 文件) self-hosted-runner/ # 自托管运行器 server/ # 服务器模式(11 文件) services/ # 服务层(147 文件) skills/ # 技能系统(50 文件) ssh/ # SSH 远程会话 state/ # 应用状态管理(6 文件) tasks/ # 后台任务类型(14 文件) tools/ # Agent 工具实现(210 文件) types/ # 类型定义(12 文件) upstreamproxy/ # 上游代理 utils/ # 工具函数(577 文件) vendor/ # 第三方内联代码 vim/ # Vim 编辑模式(5 文件) voice/ # 语音输入 ``` --- ## 三、核心架构 ### 3.1 启动流程 ``` cli.tsx (快速路径分发) ├─ --version → 直接输出,零模块加载 ├─ --dump-system-prompt → 转储系统提示(feature-gated) ├─ --computer-use-mcp → Chrome/Computer Use 模式 ├─ --daemon-worker → 后台守护进程 ├─ remote-control → 远程控制桥接 └─ 默认交互模式 → main.tsx ├─ 并行初始化(MDM、Keychain 预取) ├─ Commander.js CLI 解析 ├─ 插件/技能加载 ├─ MCP 服务器初始化 └─ REPL.tsx (主 UI) ``` **入口文件详解:** - **../src/entrypoints/cli.tsx** — 主入口,实现零导入快速路径优化 - 所有导入都是动态的,以最小化模块评估 - 特殊模式处理:Chrome 集成、daemon、bridge、后台会话、模板任务等 - 环境特定优化(CCR 容器分配 8GB 堆内存) - **../src/main.tsx** — 完整初始化流程 - 带性能分析检查点的重型初始化 - 并行启动优化(MDM 原始读取、Keychain 预取) - Commander.js CLI 设置 - 会话管理和恢复 - 插件/技能初始化 - MCP 服务器管理 - 分析和遥测设置 ### 3.2 查询引擎 (`../src/QueryEngine.ts`) `QueryEngine` 是整个 LLM 交互的核心: - **异步生成器模式** — `submitMessage()` 以 async generator 流式输出 SDK 消息 - **系统提示组装** — 整合自定义提示、记忆机制、思考配置 - **权限管理** — `canUseTool()` 包装,追踪拒绝情况 - **对话循环** — 多轮对话,带 budget/turn 限制 - **会话持久化** — API 响应前保存会话,防崩溃丢数据 - **Snip-boundary 回放** — 长会话的内存管理 - **结构化输出执行** — 带重试限制 - **错误追踪** — 基于 watermark 的 turn 范围界定 **查询管道:** ``` User Input → processUserInput() → QueryEngine.submitMessage() ↓ System Prompt Assembly ↓ Permission Checking ↓ LLM API Call (query.ts) ↓ Stream Response → SDK Messages ``` ### 3.3 工具注册 (`../src/tools.ts`) `getAllBaseTools()` 注册 80+ 工具,通过以下方式过滤: - Feature flag 条件编译 - 权限上下文过滤 - 模式过滤(SIMPLE/REPL/普通) - 工具预设配置 关键函数: - `getAllBaseTools()` — 所有工具的真实来源 - `getTools()` — 按权限上下文和模式过滤 - `assembleToolPool()` — 组合内置 + MCP 工具,去重 - 稳定排序以确保 prompt-cache 效率 ### 3.4 命令注册 (`../src/commands.ts`) `getCommands()` 加载 ~150 个命令,来源包括: - 内置命令 - Bundled skills - 插件 skills - MCP 命令 - Workflow 命令 关键特性: - 通过 lodash memoization 实现延迟求值 - 多源命令组合 - 技能缓存与粒度失效 - `REMOTE_SAFE_COMMANDS` / `BRIDGE_SAFE_COMMANDS` 安全过滤 - `meetsAvailabilityRequirement()` 基于认证/提供商的过滤 ### 3.5 REPL 屏幕 (`../src/screens/REPL.tsx`) - 基于 React 的 Ink TUI,支持虚拟滚动 - 基于消息的状态管理,不可变更新 - 复杂的权限处理(auto-mode、sandbox、swarm) - 实时流式 LLM 响应 - 多模式输入处理(normal、vim、search) - 成本追踪和预算执行 - 后台任务管理 - Swarm/Teammate 多 Agent 协调 --- ## 四、五大 API 提供商支持 | 提供商 | 环境变量 | 认证方式 | |---|---|---| | **Anthropic(默认)** | — | `ANTHROPIC_API_KEY` 或 OAuth | | **OpenAI Codex** | `CLAUDE_CODE_USE_OPENAI=1` | OpenAI OAuth | | **AWS Bedrock** | `CLAUDE_CODE_USE_BEDROCK=1` | AWS credentials | | **Google Vertex AI** | `CLAUDE_CODE_USE_VERTEX=1` | gcloud ADC | | **Anthropic Foundry** | `CLAUDE_CODE_USE_FOUNDRY=1` | API Key | **API 客户端架构:** `../src/services/api/client.ts` 是统一的 API 客户端工厂,根据配置自动路由到不同提供商。 **Codex 适配器:** `../src/services/api/codex-fetch-adapter.ts` 负责将 Anthropic 消息格式转换为 OpenAI Codex 格式: - Anthropic `base64` 图像 schema 映射到 Codex `input_image` 载荷 - `tool_result` 项路由为顶层 `function_call_output` 对象 - 剥离 Anthropic 专有的 `cache_control` 注解 - 拦截 Codex `response.reasoning.delta` SSE 帧并包装为 Anthropic `` 事件 - 绑定 `response.completed` 事件以追踪 token 使用量 ### 支持的模型 **Anthropic (Direct API) — 默认:** | Model | ID | |---|---| | Claude Opus 4.6 | `claude-opus-4-6` | | Claude Sonnet 4.6 | `claude-sonnet-4-6` | | Claude Haiku 4.5 | `claude-haiku-4-5` | **OpenAI Codex:** | Model | ID | |---|---| | GPT-5.3 Codex (recommended) | `gpt-5.3-codex` | | GPT-5.4 | `gpt-5.4` | | GPT-5.4 Mini | `gpt-5.4-mini` | ### 环境变量参考 | Variable | Purpose | |---|---| | `ANTHROPIC_API_KEY` | Anthropic API key | | `ANTHROPIC_AUTH_TOKEN` | Auth token (alternative) | | `ANTHROPIC_MODEL` | Override default model | | `ANTHROPIC_BASE_URL` | Custom API endpoint | | `ANTHROPIC_DEFAULT_OPUS_MODEL` | Custom Opus model ID | | `ANTHROPIC_DEFAULT_SONNET_MODEL` | Custom Sonnet model ID | | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Custom Haiku model ID | | `CLAUDE_CODE_OAUTH_TOKEN` | OAuth token via env | | `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | API key helper cache TTL | | `AWS_REGION` / `AWS_DEFAULT_REGION` | AWS region for Bedrock | | `ANTHROPIC_BEDROCK_BASE_URL` | Custom Bedrock endpoint | | `ANTHROPIC_FOUNDRY_API_KEY` | Foundry API key | --- ## 五、Feature Flag 系统 ### 构建系统 (`scripts/build.ts`) - 使用 `bun:bundle` 的 `feature()` 宏实现编译时死代码消除 - Bun 编译带字节码生成 - 宏系统提供构建时常量(VERSION、BUILD_TIME 等) ### 构建变体 | 命令 | 输出 | Feature Flags | 描述 | |---|---|---|---| | `bun run build` | `./cli` | 仅 VOICE_MODE | 生产构建 | | `bun run build:dev` | `./cli-dev` | 仅 VOICE_MODE | 开发版 | | `bun run build:dev:full` | `./cli-dev` | 全部 54 个实验性 flag | 完整解锁构建 | | `bun run compile` | `./dist/cli` | 仅 VOICE_MODE | 替代输出路径 | | 自定义 | 自定义 | 指定 flags | `bun run ./scripts/build.ts --feature=ULTRAPLAN --feature=ULTRATHINK` | ### 54 个可工作 Feature Flags #### 交互与 UI(14 个) | Flag | 描述 | |---|---| | `AWAY_SUMMARY` | 离开键盘摘要行为 | | `HISTORY_PICKER` | 交互式提示历史选择器 | | `HOOK_PROMPTS` | 将 prompt/request 文本传入 hook 执行流程 | | `KAIROS_BRIEF` | 简短转录布局和 BriefTool UX | | `KAIROS_CHANNELS` | 频道通知和回调 | | `LODESTONE` | 深度链接/协议注册相关流程 | | `MESSAGE_ACTIONS` | 消息操作入口点 | | `NEW_INIT` | 新版 `/init` 决策路径 | | `QUICK_SEARCH` | 提示快速搜索 | | `SHOT_STATS` | 额外的 shot-distribution 统计视图 | | `TOKEN_BUDGET` | Token 预算追踪和警告 UI | | `ULTRAPLAN` | 远程多 Agent 规划(Opus 级别) | | `ULTRATHINK` | 深度思考模式 | | `VOICE_MODE` | 语音切换、听写、语音通知和 UI | #### Agent/记忆/规划(10 个) | Flag | 描述 | |---|---| | `AGENT_MEMORY_SNAPSHOT` | 存储 Agent 记忆快照状态 | | `AGENT_TRIGGERS` | 本地 cron/触发器工具 | | `AGENT_TRIGGERS_REMOTE` | 远程触发器工具路径 | | `BUILTIN_EXPLORE_PLAN_AGENTS` | 内置 explore/plan agent 预设 | | `CACHED_MICROCOMPACT` | 通过查询和 API 流程缓存的微压缩状态 | | `COMPACTION_REMINDERS` | 压缩和附件流程的提醒 | | `EXTRACT_MEMORIES` | 查询后记忆提取 hooks | | `PROMPT_CACHE_BREAK_DETECTION` | 压缩/查询流程中的缓存中断检测 | | `TEAMMEM` | 团队记忆文件和 watcher hooks | | `VERIFICATION_AGENT` | 验证 Agent 指导 | #### 工具/权限/远程(13 个) | Flag | 描述 | |---|---| | `BASH_CLASSIFIER` | 分类器辅助的 bash 权限决策 | | `BRIDGE_MODE` | 远程控制 / REPL 桥接命令 | | `CCR_AUTO_CONNECT` | CCR 自动连接默认路径 | | `CCR_MIRROR` | 仅出站 CCR 镜像会话 | | `CCR_REMOTE_SETUP` | 远程设置命令路径 | | `CHICAGO_MCP` | Computer-use MCP 集成 | | `CONNECTOR_TEXT` | 连接器文本块处理 | | `MCP_RICH_OUTPUT` | 更丰富的 MCP UI 渲染 | | `NATIVE_CLIPBOARD_IMAGE` | 原生 macOS 剪贴板图像快速路径 | | `POWERSHELL_AUTO_MODE` | PowerShell 自动模式权限处理 | | `TREE_SITTER_BASH` | tree-sitter bash 解析器后端 | | `TREE_SITTER_BASH_SHADOW` | tree-sitter bash 影子发布路径 | | `UNATTENDED_RETRY` | API 重试流程中的无人值守重试 | #### 支撑性 Flag(17 个) | Flag | 描述 | |---|---| | `ABLATION_BASELINE` | CLI 消融/基线入口开关 | | `ALLOW_TEST_VERSIONS` | 允许原生安装程序中的测试版本 | | `ANTI_DISTILLATION_CC` | 添加反蒸馏请求元数据 | | `BREAK_CACHE_COMMAND` | 注入 break-cache 命令路径 | | `COWORKER_TYPE_TELEMETRY` | 添加协作者类型遥测字段 | | `DOWNLOAD_USER_SETTINGS` | 启用设置同步拉取路径 | | `DUMP_SYSTEM_PROMPT` | 启用系统提示转储路径 | | `FILE_PERSISTENCE` | 启用文件持久化管道 | | `HARD_FAIL` | 启用更严格的失败/日志行为 | | `IS_LIBC_GLIBC` | 强制 glibc 环境检测 | | `IS_LIBC_MUSL` | 强制 musl 环境检测 | | `NATIVE_CLIENT_ATTESTATION` | 添加原生证明标记文本 | | `PERFETTO_TRACING` | 启用 perfetto 追踪 hooks | | `SKILL_IMPROVEMENT` | 启用技能改进 hooks | | `SKIP_DETECTION_WHEN_AUTOUPDATES_DISABLED` | 自动更新禁用时跳过更新检测 | | `SLOW_OPERATION_LOGGING` | 启用慢操作日志 | | `UPLOAD_USER_SETTINGS` | 启用设置同步推送路径 | ### 运行时注意事项 部分 flag 虽然编译通过但有运行时限制: - `VOICE_MODE` — 需要 claude.ai OAuth 和本地录制后端 - `NATIVE_CLIPBOARD_IMAGE` — 仅在 macOS 且存在 `image-processor-napi` 时加速 - `BRIDGE_MODE`、`CCR_*` — 运行时需要 claude.ai OAuth + GrowthBook 权限检查 - `KAIROS_BRIEF`、`KAIROS_CHANNELS` — 仅暴露已存在的 brief/channel 特定接口 - `CHICAGO_MCP` — 运行时仍需 `@ant/computer-use-*` 外部包 ### 34 个不可编译 Flag #### 易修复(15 个)— 缺少单个文件或资产 | Flag | 缺失内容 | |---|---| | `AUTO_THEME` | `../src/utils/systemThemeWatcher.js`(OSC 11 watcher) | | `BG_SESSIONS` | `../src/cli/bg.js` | | `BUDDY` | `../src/commands/buddy/index.js` | | `BUILDING_CLAUDE_APPS` | `../src/claude-api/csharp/claude-api.md`(文档资产) | | `COMMIT_ATTRIBUTION` | `../src/utils/attributionHooks.js` | | `FORK_SUBAGENT` | `../src/commands/fork/index.js` | | `HISTORY_SNIP` | `../src/commands/force-snip.js` | | `KAIROS_GITHUB_WEBHOOKS` | `../src/tools/SubscribePRTool/SubscribePRTool.js` | | `KAIROS_PUSH_NOTIFICATION` | `../src/tools/PushNotificationTool/PushNotificationTool.js` | | `MCP_SKILLS` | `../src/skills/mcpSkills.js` | | `MEMORY_SHAPE_TELEMETRY` | `../src/memdir/memoryShapeTelemetry.js` | | `OVERFLOW_TEST_TOOL` | `../src/tools/OverflowTestTool/OverflowTestTool.js` | | `RUN_SKILL_GENERATOR` | `../src/runSkillGenerator.js` | | `TEMPLATES` | `../src/cli/handlers/templateJobs.js` | | `TORCH` | `../src/commands/torch.js` | | `TRANSCRIPT_CLASSIFIER` | `../src/utils/permissions/yolo-classifier-prompts/auto_mode_system_prompt.txt` | #### 中等修复(16 个)— 缺少较大子系统部分 | Flag | 缺失内容 | |---|---| | `BYOC_ENVIRONMENT_RUNNER` | `../src/environment-runner/main.js` | | `CONTEXT_COLLAPSE` | `../src/tools/CtxInspectTool/CtxInspectTool.js` | | `COORDINATOR_MODE` | `../src/coordinator/workerAgent.js` | | `DAEMON` | `../src/daemon/workerRegistry.js` | | `DIRECT_CONNECT` | `../src/server/parseConnectUrl.js` | | `EXPERIMENTAL_SKILL_SEARCH` | `../src/services/skillSearch/localSearch.js` | | `MONITOR_TOOL` | `../src/tools/MonitorTool/MonitorTool.js` | | `REACTIVE_COMPACT` | `../src/services/compact/reactiveCompact.js` | | `REVIEW_ARTIFACT` | `../src/hunter.js` | | `SELF_HOSTED_RUNNER` | `../src/self-hosted-runner/main.js` | | `SSH_REMOTE` | `../src/ssh/createSSHSession.js` | | `TERMINAL_PANEL` | `../src/tools/TerminalCaptureTool/TerminalCaptureTool.js` | | `UDS_INBOX` | `../src/utils/udsMessaging.js` | | `WEB_BROWSER_TOOL` | `../src/tools/WebBrowserTool/WebBrowserTool.js` | | `WORKFLOW_SCRIPTS` | `../src/commands/workflows/index.js` 及多个相关文件 | #### 大型缺失(3 个)— 需要重建完整子系统 | Flag | 缺失内容 | |---|---| | `KAIROS` | `../src/assistant/index.js` 及大部分助手栈 | | `KAIROS_DREAM` | `../src/dream.js` 及 dream-task 行为 | | `PROACTIVE` | `../src/proactive/index.js` 及主动任务/工具栈 | --- ## 六、核心子系统详解 ### 6.1 状态管理 (`../src/state/`) 自定义 Store 模式(非 Redux/Zustand): **核心文件:** - **store.ts** — `getState()/setState()/subscribe()` 基础实现 - 可选 `onChange` 回调用于状态变更追踪 - Listener set 用于 React 风格订阅 - **AppStateStore.ts** — 450+ 行的类型定义,涵盖: - 设置和配置 - 任务状态管理(tasks、agentNameRegistry) - MCP 状态(clients、tools、commands、resources) - 插件状态(enabled、disabled、errors、installation status) - 远程桥接状态(connection、session、polling) - UI 状态(expandedView、footerSelection、spinnerTip) - 权限上下文和模式 - 文件历史和归属追踪 - Tungsten (tmux) 集成状态 - Computer Use (chicago MCP) 状态 - Team/swarm 上下文和收件箱管理 - **AppState.tsx** — React 集成: - `AppStateProvider` 上下文组件 - `useAppState(selector)` — 使用 `useSyncExternalStore` 的优化 hook - `useSetAppState()` — 非订阅 setter - `useAppStateStore()` — 直接 store 访问 - `useAppStateMaybeOutsideOfProvider()` — 可选上下文的安全版本 - **selectors.ts** — 纯选择器函数: - `getViewedTeammateTask()` — 获取当前查看的 teammate - `getActiveAgentForInput()` — 确定输入路由(leader/viewed/named) - **onChangeAppState.ts** — 状态变更副作用处理器: - 权限模式同步到 CCR/SDK - 模型设置持久化 - 展开视图持久化 - 设置变更时清除认证缓存 ### 6.2 服务层 (`../src/services/`) 28 个主要服务区域: #### API 客户端 (`../src/services/api/`) - **client.ts** — 统一 API 客户端工厂,支持五大提供商 - **codex-fetch-adapter.ts** — Anthropic → OpenAI Codex 格式转换 - OAuth token 刷新、自定义 headers、CCH 签名、代理支持 - 错误处理、重试逻辑、使用量追踪 #### OAuth (`../src/services/oauth/`) - **index.ts** — OAuthService 类,实现 OAuth 2.0 Authorization Code Flow + PKCE - **client.ts** — OAuth 客户端操作(构建 auth URL、交换 code 为 token、获取 profile) - **auth-code-listener.ts** — 本地 HTTP 服务器用于自动 OAuth 回调处理 - **crypto.ts** — PKCE code verifier/challenge 生成 - **codex-client.ts** — Codex 特定 OAuth 客户端 #### MCP 集成 (`../src/services/mcp/`) - **client.ts** — MCP 客户端管理 - **types.ts** — MCP 服务器配置的全面类型定义(stdio、SSE、HTTP、WebSocket、SDK、IDE 特定) - **config.ts** — MCP 配置管理 - **useManageMCPConnections.ts** — MCP 连接生命周期的 React hook - **channelPermissions.ts** — MCP 频道权限处理(Telegram、iMessage 等) - 支持 XAA(Cross-App Access)、elicitation 处理、资源管理 #### 分析 (`../src/services/analytics/`) — 已 STUB - 所有函数都是空操作(logEvent、attachAnalyticsSink 等) - 作为兼容性边界,使现有调用点保持不变而遥测被禁用 - 包括:datadog.ts、firstPartyEventLogger.ts、growthbook.ts、sink.ts #### 其他主要服务 | 服务 | 职责 | 状态 | |---|---|---| | `compact/` | 上下文压缩(auto-compact、micro-compact、reactive compact) | 完整 | | `tools/` | 工具执行编排(StreamingToolExecutor、toolOrchestration) | 完整 | | `plugins/` | 插件操作和安装管理 | 完整 | | `SessionMemory/` | 会话记忆持久化和检索 | 完整 | | `skillSearch/` | 技能搜索,带远程状态管理 | 完整 | | `remoteManagedSettings/` | 远程托管设置同步 | 完整 | | `extractMemories/` | 从对话上下文中提取记忆 | 完整 | | `lsp/` | Language Server Protocol 集成 | 完整 | | `contextCollapse/` | 上下文窗口优化 | 完整 | | `tips/` | 用户提示和指导系统 | 完整 | | `voice.ts` | 语音集成(STT、keyterms、streaming) | 完整 | ### 6.3 IDE 桥接 (`../src/bridge/`) 远程控制架构: 1. 注册环境到后端(机器名、目录、分支、仓库 URL) 2. 轮询获取 work items(要执行的会话) 3. 为每个会话创建子进程 4. 管理会话生命周期(心跳、停止、归档) 5. 权限响应回传 6. 支持多种生成模式(单会话、worktree、同目录) **核心文件:** - **bridgeApi.ts** — Bridge API 客户端(环境注册/注销、工作轮询/确认、会话生命周期管理) - **types.ts** — 全面的桥接类型定义(260+ 行) - **bridgeConfig.ts** — 桥接认证/URL 解析 - **remoteBridgeCore.ts** — 远程桥接核心逻辑 - **replBridgeHandle.ts** — REPL 桥接句柄实现 - **replBridgeTransport.ts** — 桥接传输层 - **createSession.ts** — 会话创建逻辑 - **sessionRunner.ts** — 会话执行运行器 - **jwtUtils.ts** — JWT token 工具 - **peerSessions.ts** — 对等会话管理 - **trustedDevice.ts** — 受信任设备认证 ### 6.4 任务系统 (`../src/tasks/`) 7 种任务类型: | 任务类型 | 用途 | |---|---| | `LocalShellTask` | 后台 Bash 命令执行 | | `LocalAgentTask` | 本地 Agent 子进程(自主工作) | | `RemoteAgentTask` | 远程 CCR Agent(通过 CCR API 执行) | | `InProcessTeammateTask` | 进程内 Teammate(共享主进程) | | `LocalWorkflowTask` | 预定义工作流脚本 | | `MonitorMcpTask` | MCP 资源变更监控 | | `DreamTask` | 异步/Dream 任务 | **任务管理特性:** - 任务状态:pending → in_progress → completed(或 deleted) - 后台任务:带 `isBackgrounded` 标志 - 任务依赖:`blocks` 和 `blockedBy` 关系 - 任务所有权:可分配给特定 Agent - 团队任务列表:团队共享任务列表以协调工作 ### 6.5 工具系统 (`../src/tools/`) 40+ 工具按功能分类: #### 文件操作 | 工具 | 功能 | |---|---| | FileReadTool | 读取文件(支持图像、PDF、Jupyter notebook) | | FileWriteTool | 写入文件(需先读取现有文件) | | FileEditTool | 精确字符串替换(支持 replace_all) | | GlobTool | 快速文件模式匹配 | | GrepTool | 基于 ripgrep 的内容搜索 | | NotebookEditTool | Jupyter notebook 单元格编辑 | | SnipTool | 代码片段管理 | | SendUserFileTool | 向用户发送文件 | #### Shell 和系统 | 工具 | 功能 | |---|---| | BashTool | 执行 bash 命令(支持后台执行、超时、沙盒) | | PowerShellTool | 执行 PowerShell 命令(Windows) | | SleepTool | 等待指定时间 | | TerminalCaptureTool | 终端捕获 | #### 通信和规划 | 工具 | 功能 | |---|---| | AskUserQuestionTool | 向用户提问(支持多选、预览) | | SendMessageTool | 向其他 Agent 发送消息 | | EnterPlanModeTool | 进入规划模式 | | ExitPlanModeTool | 退出规划模式 | | BriefTool | 向用户发送消息(主通信通道) | #### Web 和网络 | 工具 | 功能 | |---|---| | WebFetchTool | 获取 URL 内容(HTML → markdown,15 分钟缓存) | | WebSearchTool | Web 搜索 | | WebBrowserTool | Web 浏览器面板 | | RemoteTriggerTool | 管理远程 Agent 触发器 | #### MCP | 工具 | 功能 | |---|---| | MCPTool | 通用 MCP 工具包装器 | | ListMcpResourcesTool | 列出 MCP 服务器资源 | | ReadMcpResourceTool | 读取 MCP 服务器资源 | | McpAuthTool | MCP 认证处理 | #### Agent 和团队 | 工具 | 功能 | |---|---| | AgentTool | 启动专门的 Agent 子进程 | | TeamCreateTool | 创建 Agent 团队 | | TeamDeleteTool | 删除 Agent 团队 | #### 任务管理 | 工具 | 功能 | |---|---| | TaskCreateTool | 创建任务列表 | | TaskUpdateTool | 更新任务 | | TaskGetTool | 获取任务详情 | | TaskListTool | 列出所有任务 | | TaskStopTool | 停止后台任务 | | TaskOutputTool | 查看后台任务输出 | #### Git | 工具 | 功能 | |---|---| | EnterWorktreeTool | 创建隔离的 git worktree | | ExitWorktreeTool | 退出 worktree | #### 调度 | 工具 | 功能 | |---|---| | CronCreateTool | 创建定时任务 | | CronDeleteTool | 删除定时任务 | | CronListTool | 列出定时任务 | #### 配置和发现 | 工具 | 功能 | |---|---| | ConfigTool | 获取/设置配置 | | ToolSearchTool | 获取延迟加载工具的 schema | | DiscoverSkillsTool | 发现可用技能 | | LSPTool | LSP 服务器交互(goToDefinition、findReferences 等) | #### 验证 | 工具 | 功能 | |---|---| | VerifyPlanExecutionTool | 验证计划执行 | **工具延迟加载:** - 工具可被延迟加载(不包含在初始 prompt 中)以减少上下文 - 延迟加载的工具需要 ToolSearch 来获取 schema - MCP 工具始终延迟加载 - 部分工具永不延迟(Agent、Brief when KAIROS enabled) ### 6.6 命令系统 (`../src/commands/`) 70+ 斜杠命令: #### 配置和设置 | 命令 | 功能 | |---|---| | `/config` (别名: `/settings`) | 打开配置面板 | | `/keybindings` | 打开/创建快捷键配置文件 | | `/add-dir` | 添加新的工作目录 | | `/memory` | 编辑记忆文件 | | `/sandbox` | 切换沙盒模式 | | `/vim` | 切换 Vim/普通编辑模式 | | `/terminal-setup` | 安装 Shift+Enter 换行绑定 | | `/color` | 设置提示栏颜色 | | `/effort` | 设置模型努力级别 | | `/model` | 更改模型设置 | | `/fast` | 切换快速模式 | | `/theme` | 更改主题 | #### 任务和会话管理 | 命令 | 功能 | |---|---| | `/tasks` (别名: `/bashes`) | 列出和管理后台任务 | | `/plan` | 启用规划模式或查看当前计划 | | `/branch` (别名: `/fork`) | 在当前点创建对话分支 | | `/resume` (别名: `/continue`) | 恢复之前的对话 | | `/session` | 会话管理 | | `/compact` | 清除对话历史但保留摘要 | | `/exit` | 退出 CLI | | `/btw` | 快速旁问(不打断主对话) | #### 信息和诊断 | 命令 | 功能 | |---|---| | `/help` | 显示帮助信息 | | `/context` | 可视化当前上下文使用情况 | | `/cost` | 显示当前会话的总成本和时长 | | `/usage` | 显示使用信息 | | `/stats` | 显示统计信息 | | `/doctor` | 诊断和验证安装 | | `/status` | 显示状态信息 | | `/statusline` | 状态栏管理 | | `/release-notes` | 显示发行说明 | #### 功能和集成 | 命令 | 功能 | |---|---| | `/ide` | 管理 IDE 集成 | | `/agents` | 管理 Agent 配置 | | `/skills` | 技能管理 | | `/plugin` | 插件管理 | | `/mcp` | MCP 管理 | | `/voice` | 语音模式 | | `/remote-control` (别名: `/rc`) | 远程控制会话 | | `/chrome` | Chrome 集成 | #### Git 和版本控制 | 命令 | 功能 | |---|---| | `/commit` | 创建 git 提交(技能) | | `/commit-push-pr` | 提交、推送并创建 PR | | `/diff` | 显示差异 | | `/tag` | 标签管理 | #### 账户和认证 | 命令 | 功能 | |---|---| | `/login` | 登录账户 | | `/logout` | 登出账户 | | `/upgrade` | 升级到 Max | | `/permissions` | 管理权限 | | `/hooks` | Hooks 管理 | | `/init` | 初始化 Claude Code | ### 6.7 技能系统 (`../src/skills/`) 13+ 个内置技能: | 技能 | 功能 | |---|---| | `/update-config` | 通过 settings.json 配置 hooks 和自动化行为 | | `/simplify` | 审查代码质量(启动 3 个并行 Agent) | | `/loop` | 定时循环执行命令 | | `/verify` | 验证代码变更 | | `/remember` | 审查自动记忆并提议提升到 CLAUDE.md | | `/debug` | 调试技能 | | `/keybindings` | 快捷键管理 | | `/batch` | 批量操作 | | `/stuck` | 获取解困帮助 | | `/skillify` | 创建新技能 | | `/claudeApi` | Claude API 文档和示例 | | `/dream` | Dream 技能 | | `/hunter` | 代码审查工件 | | `/runSkillGenerator` | 运行技能生成器 | **技能系统架构:** - **注册** — `registerBundledSkill()` 在启动时注册技能 - **定义** — 技能包含 name、description、aliases、whenToUse、allowedTools、model、hooks - **引用文件** — 首次调用时提取到磁盘 - **发现** — 技能出现在 Skill 工具提示中(bundled 技能永不截断) - **调用** — 通过 Skill 工具或 `/skill-name` 斜杠命令 ### 6.8 插件系统 (`../src/plugins/`) - 内置插件格式:`{name}@builtin` - 区别于市场插件:`{name}@{marketplace}` - 可提供 skills、hooks、MCP servers - 通过 `/plugin` UI 管理 - 用户设置控制启用状态(默认:`defaultEnabled ?? true`) --- ## 七、React Hooks (`../src/hooks/`) 104 个 React hooks 按类别: ### 数据获取和状态 - `useTasksV2`、`useTaskListWatcher` — 任务管理 - `useSettings`、`useSettingsChange` — 设置同步 - `useApiKeyVerification` — API key 验证 - `useInboxPoller` — 消息收件箱轮询 - `useDiffData` — Diff 数据计算 ### UI/交互 - `useTypeahead` — 输入自动完成 - `useSearchInput` — 搜索功能 - `useArrowKeyHistory` — 命令历史导航 - `useVirtualScroll` — 虚拟滚动 - `usePasteHandler` — 剪贴板粘贴处理 - `useBlink` — 光标闪烁效果 ### IDE 集成 - `useIdeLogging` — IDE 日志 - `useDiffInIDE` — IDE diff 查看 - `useIdeAtMentioned` — IDE @mention 处理 - `useLspPluginRecommendation` — LSP 插件建议 ### 功能特定 - `useVoice`、`useVoiceIntegration`、`useVoiceEnabled` — 语音功能 - `useDirectConnect` — 直接连接模式 - `useSSHSession` — SSH 会话管理 - `useBackgroundTaskNavigation` — 后台任务路由 - `useSwarmInitialization`、`useSwarmPermissionPoller` — Agent swarm 管理 ### 工具 - `useTerminalSize` — 终端尺寸 - `useMemoryUsage` — 内存监控 - `useScheduledTasks` — 任务调度 - `useDynamicConfig` — 动态配置加载 --- ## 八、UI 组件 (`../src/components/`) 27 个主要组件目录: ### 核心 UI - **ui/** — 基础 UI 组件(按钮、输入框等) - **design-system/** — 设计系统组件 ### 功能组件 - **tasks/** — 任务列表和管理 UI - **messages/** — 消息显示和渲染 - **permissions/** — 权限请求对话框 - **mcp/** — MCP 服务器管理 UI - **diff/** — 代码差异查看 - **shell/** — Shell/输出显示 - **memory/** — 记忆管理 UI - **sandbox/** — 沙盒权限 - **agents/** — Agent 创建和管理 ### 设置和配置 - **Settings/** — 设置面板 - **ManagedSettingsSecurityDialog/** — 托管设置安全对话框 ### 集成 - **groove/** — Grove 集成 - **teams/** — 团队协作 - **skills/** — 技能管理 - **wizard/** — 引导向导 - **LspRecommendation/** — LSP 插件建议 ### 专用 - **TrustDialog/** — 信任/安全对话框 - **FeedbackSurvey/** — 用户反馈 - **Spinner/** — 加载旋转器 - **PromptInput/** — 输入提示组件 - **HelpV2/** — 帮助系统 - **LogoV2/** — Logo 组件 --- ## 九、构建与依赖 ### 运行时依赖(关键) | 类别 | 包 | |---|---| | **AI SDK** | @anthropic-ai/sdk, @anthropic-ai/bedrock-sdk, @anthropic-ai/vertex-sdk, @anthropic-ai/foundry-sdk | | **Agent SDK** | @anthropic-ai/claude-agent-sdk | | **MCP** | @modelcontextprotocol/sdk, @anthropic-ai/mcpb | | **终端 UI** | react, ink, chalk, cli-highlight | | **搜索** | fuse.js, picomatch | | **协议** | vscode-jsonrpc, vscode-languageserver-protocol | | **可观测性** | @opentelemetry/* (完整 suite,但遥测已 stub) | | **验证** | zod, ajv | | **图片** | sharp | | **网络** | axios, undici, ws, https-proxy-agent | | **CLI** | @commander-js/extra-typings | | **其他** | diff, marked, yaml, lodash-es, lru-cache, semver, chokidar | ### 开发依赖 - `@types/bun` — Bun 类型定义 - `typescript ^6.0.2` — TypeScript 编译器 --- ## 十、Git 状态 当前仓库只有 **1 个 commit**: ``` a4deee0 因无法 fork,手动迁移代码 source: https://github.com/paoloanzn/free-code ``` **76 个未跟踪文件/目录**,包括许多新增的子系统文件(assistant、buddy、fork、workflows、daemon、ssh 等),对应于之前不可编译但已被手动补充代码的 feature flags。 **3 个已修改文件**:`bun.lock`、`package.json`、`scripts/build.ts`。 --- ## 十一、架构亮点与设计模式 1. **编译时 Feature Flag** — `bun:bundle` 的 `feature()` 宏实现真正的死代码消除,非运行时 if/else 2. **异步生成器查询管线** — QueryEngine 用 async generator 实现流式 LLM 响应 3. **多 Agent 协作** — Agent Swarm 支持 Team 创建、共享任务列表、跨会话消息传递 4. **工具延迟加载** — 大型工具集通过 ToolSearch 按需加载 schema,优化 context window 5. **多提供商 API 抽象** — 统一接口适配 5 个 API 提供商 6. **自定义状态管理** — 轻量 store + useSyncExternalStore,非 Redux 7. **IDE 桥接轮询架构** — 远程控制通过环境注册 + work polling 实现 8. **上下文压缩** — 多级压缩策略(auto-compact、micro-compact、reactive-compact) 9. **MCP 协议完整实现** — 支持 stdio、SSE、HTTP、WebSocket、SDK 等多种传输方式 10. **沙盒安全** — 文件/网络访问控制,支持 macOS/Linux 平台 --- ## 十二、工具函数层 (`../src/utils/`) 最大的源码目录(577 文件,178,924 行): ### 模型管理 (`../src/utils/model/`) - **model.ts** — 核心模型选择逻辑、别名、规范化 - **modelStrings.ts** — 模型名称常量和映射 - **providers.ts** — API 提供商检测 - **modelCapabilities.ts** — 模型能力标志 - **modelAllowlist.ts** — 模型访问控制 - **validateModel.ts** — 模型验证 - **modelCost.ts** — 模型定价信息 - **check1mAccess.ts** — 1M 上下文访问检查 ### 设置管理 (`../src/utils/settings/`) - **settings.ts** — 设置加载和持久化 - **validation.ts** — 设置验证 - **types.ts** — 设置类型定义 - **applySettingsChange.ts** — 设置变更应用 - **permissionValidation.ts** — 权限验证 - **mdm/** — 移动设备管理集成 ### 其他重要工具模块 - **auth.ts** — 认证和凭证管理(67KB,1800+ 行) - **attachments.ts** — 附件处理(127KB) - **analyzeContext.ts** — 上下文分析(43KB) - **ansiToPng.ts** — ANSI 转 PNG(215KB) - **bash/** — Bash 命令执行 - **permissions/** — 权限系统 - **config.ts** — 配置管理 - **todo/** — TODO 列表管理 - **commitAttribution.ts** — Git 提交归属 --- *报告生成日期:2026-04-05*