free-code-dotnet/docs/free-code 项目结构完整分析报告.md
应文浩wenhao.ying@xiaobao100.com e25ac591a7 init easy-code
2026-04-06 07:24:24 +08:00

969 lines
35 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.

# 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 hooks104 文件)
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 `<thinking>` 事件
- 绑定 `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
#### 交互与 UI14 个)
| 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 重试流程中的无人值守重试 |
#### 支撑性 Flag17 个)
| 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 等)
- 支持 XAACross-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 → markdown15 分钟缓存) |
| 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** — 认证和凭证管理67KB1800+ 行)
- **attachments.ts** — 附件处理127KB
- **analyzeContext.ts** — 上下文分析43KB
- **ansiToPng.ts** — ANSI 转 PNG215KB
- **bash/** — Bash 命令执行
- **permissions/** — 权限系统
- **config.ts** — 配置管理
- **todo/** — TODO 列表管理
- **commitAttribution.ts** — Git 提交归属
---
*报告生成日期2026-04-05*