35 KiB
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) |
三大修改方向
- 遥测移除 — 所有 OpenTelemetry/gRPC、GrowthBook 分析、Sentry 报告等外发遥测全部替换为空实现(stub)
- 安全提示护栏移除 — 移除了 Anthropic 注入的额外限制性系统提示
- 实验性功能解锁 — 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 映射到 Codexinput_image载荷 tool_result项路由为顶层function_call_output对象- 剥离 Anthropic 专有的
cache_control注解 - 拦截 Codex
response.reasoning.deltaSSE 帧并包装为 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
交互与 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的优化 hookuseSetAppState()— 非订阅 setteruseAppStateStore()— 直接 store 访问useAppStateMaybeOutsideOfProvider()— 可选上下文的安全版本
-
selectors.ts — 纯选择器函数:
getViewedTeammateTask()— 获取当前查看的 teammategetActiveAgentForInput()— 确定输入路由(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/)
远程控制架构:
- 注册环境到后端(机器名、目录、分支、仓库 URL)
- 轮询获取 work items(要执行的会话)
- 为每个会话创建子进程
- 管理会话生命周期(心跳、停止、归档)
- 权限响应回传
- 支持多种生成模式(单会话、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
- 通过
/pluginUI 管理 - 用户设置控制启用状态(默认:
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。
十一、架构亮点与设计模式
- 编译时 Feature Flag —
bun:bundle的feature()宏实现真正的死代码消除,非运行时 if/else - 异步生成器查询管线 — QueryEngine 用 async generator 实现流式 LLM 响应
- 多 Agent 协作 — Agent Swarm 支持 Team 创建、共享任务列表、跨会话消息传递
- 工具延迟加载 — 大型工具集通过 ToolSearch 按需加载 schema,优化 context window
- 多提供商 API 抽象 — 统一接口适配 5 个 API 提供商
- 自定义状态管理 — 轻量 store + useSyncExternalStore,非 Redux
- IDE 桥接轮询架构 — 远程控制通过环境注册 + work polling 实现
- 上下文压缩 — 多级压缩策略(auto-compact、micro-compact、reactive-compact)
- MCP 协议完整实现 — 支持 stdio、SSE、HTTP、WebSocket、SDK 等多种传输方式
- 沙盒安全 — 文件/网络访问控制,支持 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