
代码组织架构以下是src/下各顶层目录及其作用的汇总表目录作用assistant助手模式Assistant Mode相关逻辑包括模式判断、云端会话发现与历史拉取bootstrap全局运行时启动状态保存会话 ID、项目根目录、Token 计数等启动期快照bridgeRemote Control / Bridge 远程控制桥接负责与 CCR 云端通信、会话拉起、权限回调与 JWT 刷新buddy输入框旁的「伙伴」宠物精灵Companion含精灵生成、渲染与提示词注入cli非交互式 CLI 与结构化输出含打印模式、NDJSON I/O、远程 I/O 及子命令处理器commands所有斜杠命令实现如/help、/config、/login、/mcp由根目录commands.ts统一注册components终端 UIInk/React组件库含主应用壳、对话框、权限请求、消息列表等 TUI 元素constants跨模块共享常量API 限制、系统提示前缀、工具名、OAuth、文件路径等contextReact Context 提供者管理通知队列、弹层、统计、邮箱消息、语音与 FPS 等 UI 横切状态coordinator协调者模式Coordinator Mode定义多 Agent 团队编排下的工具白名单与 worker 代理配置entrypoints应用启动入口与 SDK 类型定义含 CLI 引导cli.tsx、初始化流程及 Agent SDK 公共类型hooksReact 自定义 Hook 集合覆盖输入历史、权限审批、文件建议、通知等 REPL 交互逻辑ink定制版终端渲染引擎Ink fork负责屏幕缓冲、ANSI 解析、文本测量与终端 I/Ojobs后台任务分类器当前多为 stub用于对任务做自动分类keybindings键盘快捷键系统默认绑定、用户自定义加载、按键解析与上下文感知的动作解析memdir记忆目录Memory子系统管理MEMORY.md、自动记忆扫描、团队记忆路径与相关提示词migrations一次性配置迁移脚本将旧版全局配置或模型默认值迁移到新版settings.jsonmoreright内部「右侧面板」功能的 Hook 桩外部构建用 stub开源版本中为空实现native-ts原生 Rust/NAPI 模块的纯 TypeScript 移植版含模糊文件搜索、布局、颜色差分等outputStyles从.claude/output-styles/*.md加载自定义输出风格提示词供用户/项目级定制回复风格plugins内置插件注册表管理可通过/plugin启用/禁用的捆绑插件技能、Hook、MCP 等proactive主动式 Agent 模式的全局状态机控制激活/暂停/上下文阻塞及订阅通知query查询引擎子模块不可变查询配置、依赖注入、状态转移、Token 预算与停止 Hookremote远程会话 WebSocket 管理连接 CCR 后端、转发 SDK 消息并桥接权限请求schemas共享 Zod 校验模式主要为 Hook 事件 schema用于打破 settings 与 plugins 之间的循环依赖screens顶层屏幕组件主 REPL 界面、诊断页Doctor、恢复会话页serverDirect Connect 直连服务端通过 WebSocket 接收远程控制消息并处理权限请求services后端服务层大集合分析埋点、API 调用、OAuth、上下文压缩、语音 STT、MCP、策略限制等skillsAgent 技能加载与内置技能注册支持从目录/MCP 发现并初始化技能sshSSH 远程会话管理当前多为占位预留给 SSH 隧道/远程开发场景state应用级 React 状态存储用轻量 subscribe 模式管理 REPL 全局 UI 状态tasks后台任务类型与实现本地 Shell、Agent、远程 Agent、工作流、MCP 监控、Dream 任务等toolsAgent 可调用的工具集Bash、文件读写/编辑、子 Agent、用户提问、计划模式等types全项目共享 TypeScript 类型消息、命令、权限、Hook、插件、工具等核心数据结构upstreamproxyCCR 容器内上游代理配置读取会话 Token、启动 CONNECT→WebSocket 中继、设置代理环境变量utils通用工具函数大库认证、设置、权限、消息映射、会话存储、模型选择、Shell 执行等vimVim 风格输入编辑动作motions、操作符operators、文本对象与状态转移用于输入框 Vi 模式voice语音模式开关与鉴权检查通过特性门控和 OAuth 令牌判断是否可用语音输入补充说明src/根目录还有一些核心文件不属于上述子目录但同样重要文件/模块作用main.tsxCLI 主入口参数解析与启动流程query.ts主查询循环与模型对话的核心引擎commands.ts斜杠命令注册表tools.ts工具注册与聚合Tool.ts工具抽象基类replLauncher.tsx启动交互式 REPLdev-entry.ts开发环境入口体量最大的目录services/业务能力、utils/底层工具、tools/Agent 工具、commands/斜杠命令、components/TUI 组件。占位/stub 目录jobs/、ssh/、moreright/等在当前还原版中尚未完整实现属于预留或内部功能桩。Claude Codesrc/的整体架构图从启动入口到核心引擎、UI、能力与外部连接分层说明。总体分层架构核心查询循环Query Loop这是整个应用的心脏query.ts中的query()异步生成器。模块依赖关系简化关键数据流总结阶段路径说明启动cli.tsx→init.ts→main.tsx快速路径--version→ 加载配置/OAuth/策略 → 解析参数交互 UIreplLauncher→App→REPLInk 渲染终端hooks 管理输入/权限/通知对话引擎REPL→query()→services/api异步生成器驱动多轮对话与工具循环工具执行query→Tool.ts→tools/*权限门控后执行 Bash/文件/子 Agent 等命令处理用户/xxx→commands/*→ 可能 bypass query配置、登录、MCP 等本地操作远程模式bridge↔remote↔serverWebSocket 连接 CCR权限桥接记忆注入memdirskillsoutputStyles在 system prompt 构建阶段合并进上下文目录在架构中的定位修正版mindmap root((Claude Code src)) 入口 entrypoints main.tsx dev-entry.ts 表现层 ink screens components hooks state context 核心 query.ts query/ bootstrap/ 能力 tools/ commands/ skills/ plugins/ tasks/ 服务 services/api services/oauth services/mcp services/compact services/analytics 远程 bridge/ remote/ server/ cli/ 基础 utils/ types/ constants/ migrations/子模块Remote Control远程控制」桥接层src/bridge就是 Claude Code 的「远程控制基础设施」——连接本地 CLI 与 claude.ai让会话可以在网页端被查看、操控和审批。src/bridge是 Claude Code 的「Remote Control远程控制」桥接层负责把本地终端里的 Claude Code 会话和 claude.ai 上的远程控制服务CCRClaude Code Remote连起来实现双向通信。在本地跑claude别人或你自己可以在网页端 claude.ai 上查看会话、发消息、审批工具权限等本地 CLI 负责真正执行代码和工具。本地 Claude Code CLI ←→ src/bridge ←→ claude.ai / CCR 后端主要模块分工replBridge.ts/initReplBridge.ts— REPL 侧桥接初始化把本地消息、工具活动同步到远程并接收远程输入bridgeMain.ts—remote-control守护进程主逻辑注册环境、轮询任务、spawn 子会话remoteBridgeCore.ts— 较新的「无 Environment API」直连路径OAuth →/v1/code/sessions/{id}/bridgebridgeApi.ts/workSecret.ts— 与后端 Environments API 通信、解析 work secretbridgeMessaging.ts— 入站/出站消息协议文本、工具开始、结果、错误等bridgePermissionCallbacks.ts— 远程审批工具权限时的回调createSession.ts/sessionRunner.ts— 创建远程会话、在本地 spawn Claude 子进程trustedDevice.ts/jwtUtils.ts— 可信设备、JWT 刷新bridgeEnabled.ts— 功能开关需 claude.ai 订阅 GrowthBook 特性门控types.ts— 协议类型定义WorkSecret、SpawnMode等和项目其他部分的关系src/hooks/useReplBridge.tsx— React REPL UI 里启动/管理桥接src/cli/print.ts— SDK-p模式下的远程控制src/commands/bridge/—/remote-control斜杠命令src/tools/SendMessageTool— 通过桥接发消息两种启动方式模式入口说明REPL 桥接/remote-control命令或 REPL 自动连接把当前这一个交互式会话挂到远程Bridge 守护进程claude remote-control常驻 worker可拉起多个子会话支持 worktree / 同目录等src/cli与src/commands的职责划分两者都和「命令」有关但指的是不同层级的命令面向的场景也不一样。src/commands是「聊天里的斜杠命令」src/cli是「进程怎么跑起来」——无头模式、传输、Shell 子命令 handler。都叫 command但一个是会话内 UX一个是 CLI 运行时。目录实际是什么典型用法src/commandsREPL 会话内斜杠命令/help、/login、/compact在聊天界面里输入/xxxsrc/cli进程级 CLI 基础设施无头模式、传输层、子命令 handlerclaude -p、claude auth login、claude mcp listsrc/commands— 会话里的斜杠命令这是 REPL 交互模式下的命令系统用户在对话里输入/触发。在commands.ts里通过getCommands()统一注册命令类型包括local— 纯逻辑无 UIlocal-jsx— 带 React/Ink 界面如/login、/helpprompt— 转成 prompt 发给模型如/review约 200 个模块覆盖配置、会话、插件、远程控制等src/cli— Shell 级 CLI 运行时这是 启动 Claude Code 进程时用的底层能力不负责/xxx斜杠路由。主要模块文件/目录作用print.ts无头/SDK 模式claude -p的主循环约 5500 行structuredIO.ts/remoteIO.tsSDK 模式的输入输出格式JSON、stream-jsontransports/远程桥接传输SSE、WebSocket、CCR 客户端handlers/Commander 子命令的实现auth、mcp、plugins等exit.tsCLI 退出码与错误输出main.tsx用 Commander.js 解析 argv再动态 importcli/handlers/*claude auth login → cli/handlers/auth.tsclaude mcp list → cli/handlers/mcp.tsxclaude -p ... → cli/print.ts特点面向脚本/CI/SDK输出到 stdout一般不启动完整 REPL TUI。用户启动 claude │ ├─ main.tsx (Commander 解析 argv) │ ├─ claude auth/mcp/plugin ... → src/cli/handlers/* │ ├─ claude -p (print 模式) → src/cli/print.ts │ └─ claude (默认 REPL) → launchRepl() │ └─ REPL 里输入 /help、/login ... → src/commands/* (经 commands.ts 路由)总结Claude Code 是一个以query.ts查询循环 为核心、Ink/React TUI 为界面、tools/commands/skills/为 Agent 能力、services/为后端服务的终端 AI 编程助手支持本地 REPL、非交互 CLI、Agent SDK 和 Remote Control 多种运行模式。PS:宠物src/buddy 这个代码中主要实现的是什么功能src/buddy实现的是 Buddy / Companion伙伴宠物 功能在 CLI 输入框旁显示一只 ASCII 精灵宠物偶尔用气泡说话并可通过/buddy命令孵化与管理。文件职责types.ts物种、稀有度、属性等类型与常量companion.ts基于 userId 的随机生成与读取逻辑sprites.tsASCII 精灵绘制CompanionSprite.tsxReact/Ink UI 组件prompt.ts主模型 system prompt 集成useBuddyNotification.tsx启动提示与输入高亮整体由 特性开关BUDDY控制feature(BUDDY)未开启时相关逻辑基本不运行。可孵化的随机伙伴Companion用户通过/buddy命令「孵化」一只伙伴命令实现在src/commands/buddy/当前仓库里可能未完整还原。伙伴分两层数据Bones外观骨架物种、稀有度、眼睛、帽子、是否闪光、五项属性DEBUGGING、PATIENCE、CHAOS、WISDOM、SNARK——由userId哈希确定性随机生成不写入配置防止篡改稀有度。Soul灵魂名字、性格描述——由模型生成后持久化到config.companionsrc/buddy是 Claude Code CLI 的彩蛋式陪伴宠物系统——随机孵化、ASCII 动画、偶尔评论对话并与主 AI 助手分工协作而不是替代主助手。