泄露代码里看到的 Claude Code:模块怎么分、数据怎么走

"

Claude Code意外泄漏51.2万行TS核心代码

来源:github.com/instructkr/...

备份:github.com/GuiminChen/...

本文档描述本仓库的主要模块划分 、模块间依赖关系 与典型数据流 。仓库由两部分组成: leak 的 TypeScript / Bun 主程序 (src/)与 Rust 兼容脚手架 (rust/),二者在"概念分层"上对齐,但运行时不耦合------Rust 侧通过解析上游 TS 源码完成 harness 验证。


1. 仓库顶层视图

区域 角色 技术栈
src/ 可运行的 Claude Code CLI 实现主体 TypeScript、Bun、React + Ink
rust/ 兼容优先的移植地基:注册表/启动阶段与上游事实抽取 Rust Cargo workspace

2. TypeScript 主程序:模块划分

根目录 README.md 已给出 src/ 目录树;从架构角度可归纳为下列逻辑分层。

2.1 入口与启动

  • src/entrypoints/cli.tsx :轻量 bootstrap 。尽量用动态 import() 走「快路径」(如 --version、专用 MCP/守护进程入口),减少冷启动模块加载。
  • src/main.tsx :完整 CLI 与主运行时。顶层即有 并行预热 (startMdmRawRead、startKeychainPrefetch 等),随后拉取配置、遥测、GrowthBook、策略与远程托管设置等。

两者关系:cli 快路径 → 否则加载完整 main 路径 (与 compat-harness 对 cli.tsx 中字符串模式的探测一致)。

2.2 命令与工具(用户意图 vs 模型能力)

模块 职责
commands.ts + commands/ 以 / 开头的斜杠命令:面向用户的交互面(commit、doctor、mcp、compact 等)。
tools.ts + tools/ Agent 可调用的工具:Bash、读写文件、Grep/Glob、MCP、子 Agent、Skill 等;带 schema 与权限模型。
Tool.ts 工具相关的类型与契约(输入 schema、权限、进度状态等)。

2.3 查询与上下文核心

模块 职责
QueryEngine.ts 与 LLM API 交互的核心:流式响应 、工具调用循环、thinking、重试、token 统计等。
context.ts 系统/用户上下文拼装。
query/ 查询管线相关逻辑。
cost-tracker.ts 费用/token 追踪。

2.4 服务与集成

services/ 集中对外部世界与横切能力:

  • api/:Anthropic API、文件 API、bootstrap 等。
  • mcp/:MCP 服务连接与配置。
  • oauth/:OAuth 2.0。
  • lsp/:语言服务。
  • analytics/ 、compact/、policyLimits/ 等:遥测、压缩、组织策略等。

2.5 终端 UI 与状态

  • components/、hooks/、screens/、ink/:Ink/React 渲染与全屏界面(如 Doctor、REPL、Resume)。
  • state/:会话与应用状态。

2.6 横切子系统

  • bridge/ :与 VS Code / JetBrains 等 IDE 扩展的双向通道(消息、权限回调、REPL bridge、JWT 等)。
  • coordinator/ :多 Agent 编排(与 Agent 工具、Team* 工具等配合)。
  • plugins/、skills/:插件与 Skill 加载与执行路径。
  • hooks/toolPermission/ : 每次工具调用前的权限判定与用户提示(或按模式自动放行)。
  • schemas/、migrations/:配置与迁移。
  • memdir/、tasks/ 等:持久记忆与任务。

2.7 构建期特性

通过 bun:bundle 的 feature() 做死代码剔除,按产品形态裁剪 voice、bridge、daemon、coordinator 等代码路径。


3. TypeScript:模块依赖与数据流(概念)

3.1 依赖关系(由外向内)

  • 命令层 可直接触发查询或副作用;工具层 主要由 QueryEngine 在模型回合中调度。
  • 权限 插在工具执行链上,与 配置/策略 (如 policyLimits、托管设置)共同影响是否可执行。

3.2 典型对话数据流(简化)

  1. 输入:用户在 TUI 输入或 IDE 经 bridge 注入消息。
  2. 上下文 :context、历史、system prompt、services 拉取的策略与特性开关参与拼装。
  3. 模型调用 :QueryEngine 发起流式请求;可能多轮 tool use。
  4. 工具循环 :模型返回 tool_call → 经 permission → 执行 tools/* → 结果作为 tool_result 再进入下一轮。
  5. 输出 :流式文本与工具结果驱动 Ink 更新;部分能力经 compact 等减负。

3.3 启动数据流(简化)

  1. cli.tsx 判断是否为 version / 专用模式 / daemon worker 等快路径 → 可能直接退出。
  2. 否则进入 main.tsx :并行 MDM / Keychain 等预取, init/initializeTelemetryAfterTrust,加载全局与远程配置。
  3. 构建 工具列表 (如 getTools)、模型与 advisor 相关选项,进入 REPL 或子命令路径。

4. Rust 工作空间:模块划分

Rust 侧目标在 rust/README.md 中说明:harness-first,先证明能从上游 TS 抽取出可观测事实,再逐步对齐运行时。

4.1 Crate 列表与职责

Crate 职责
runtime 定义 BootstrapPhase 与 BootstrapPlan(与上游 CLI 启动阶段概念对齐,无 I/O)。
commands CommandRegistry 、CommandManifestEntry、CommandSource(builtin / internal / feature-gated)。
tools ToolRegistry 、ToolManifestEntry、ToolSource(base / conditional)。
compat-harness 读 src/commands.ts、src/tools.ts、src/entrypoints/cli.tsx,解析出上述 manifest 与 bootstrap 阶段;含集成测试。
rusty-claude-cli 薄二进制:dump-manifests、bootstrap-plan、--help。

4.2 Cargo 依赖图

  • commands 与 tools crate 互不依赖(仅共享"清单"形状)。
  • runtime 独立,被 harness 与 CLI 引用。
  • compat-harness 是唯一直接依赖上游文件路径与解析逻辑的 crate。

4.3 Harness 数据流

  1. UpstreamPaths :由 workspace 目录推导 repo 根,定位
    src/commands.ts、src/tools.ts、src/entrypoints/cli.tsx。
  2. extract_manifest:读入三份源码字符串。
  3. 命令 :扫描 import、INTERNAL_ONLY_COMMANDS、feature('...') 条件加载等模式 → CommandRegistry。
  4. 工具 :扫描 ./tools/ 导入与 feature 门控 → ToolRegistry。
  5. Bootstrap :在 cli.tsx 文本中匹配子串(如 --version、startupProfiler、--daemon-worker)→ 构造 BootstrapPlan。
  6. rusty-claude-cli dump-manifests :打印条目数量等; bootstrap-plan 打印默认/推断的 phase 列表。

该数据流是 只读、静态 的,用于兼容性与回归验证,不在运行时替代 TypeScript CLI。


5. TS 与 Rust 的对应关系(概念映射)

TypeScript Rust(当前里程碑)
commands.ts 注册的命令集合 CommandRegistry + harness 解析
tools.ts 注册的工具集合 ToolRegistry + harness 解析
entrypoints/cli.tsx 启动分支 BootstrapPhase / BootstrapPlan
QueryEngine、完整 REPL 尚未在 Rust 中实现

6. 小结

  • 主产品架构 是「CLI/Ink UI + QueryEngine + src/tools + services + bridge + 权限 」的闭环;数据主线是 用户/IDE 输入 → 上下文 → LLM → 工具调用(带权限)→ 结果回注。
  • Rust 子工程 是 对齐上游接缝的脚手架 :用独立 crate 划清 runtime / commands / tools ,由 compat-harness 从 TS 源码抽取清单与启动阶段事实,rusty-claude-cli 暴露开发期命令。
  • 两者通过 目录与命名约定对齐,而非进程内链接;后续若扩展 Rust 运行时,可沿同一 crate 边界生长。

文档基于仓库内 README.md、rust/README.md 与 rust/crates/*/src 源码整理。

相关推荐
198******126341 小时前
2026深度解读:Work Agent长程任务的技术机制与落地能力
人工智能
老金带你玩AI1 小时前
别只让AI解释,让它做个你能看懂的东西
人工智能
iffy12 小时前
Deepseek hardness 桌面版 + ollama
人工智能
Xiaofeng36932 小时前
知漫剧入门科普:一站式工作台一句话生成漫剧
人工智能
“AI国潮设计-小江”2 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
MobotStone2 小时前
万物皆插件:DeepSeek Harness 底层揭秘,脚手架如何蜕变为产品
人工智能
youdexiang3 小时前
Android录音软件时间关键词检索功能分析
java·人工智能
WUYOUGYLU3 小时前
大模型时代:人与智能的共同进化
人工智能
netkiller-BG7NYT3 小时前
基于图像识别的人工智能中医望诊方案
人工智能·百度
W***25923 小时前
Work Agent深度解读:AI长程任务的执行机制与落地形态
人工智能