泄露代码里看到的 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 与主运行时。顶层即有 并行预热startMdmRawReadstartKeychainPrefetch 等),随后拉取配置、遥测、GrowthBook、策略与远程托管设置等。

两者关系:cli 快路径 → 否则加载完整 main 路径 (与 compat-harnesscli.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:bundlefeature() 做死代码剔除,按产品形态裁剪 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 定义 BootstrapPhaseBootstrapPlan(与上游 CLI 启动阶段概念对齐,无 I/O)。
commands CommandRegistryCommandManifestEntryCommandSource(builtin / internal / feature-gated)。
tools ToolRegistryToolManifestEntryToolSource(base / conditional)。
compat-harness src/commands.tssrc/tools.tssrc/entrypoints/cli.tsx解析出上述 manifest 与 bootstrap 阶段;含集成测试。
rusty-claude-cli 薄二进制:dump-manifestsbootstrap-plan--help

4.2 Cargo 依赖图

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

4.3 Harness 数据流

  1. UpstreamPaths :由 workspace 目录推导 repo 根,定位
    src/commands.tssrc/tools.tssrc/entrypoints/cli.tsx
  2. extract_manifest:读入三份源码字符串。
  3. 命令 :扫描 importINTERNAL_ONLY_COMMANDSfeature('...') 条件加载等模式 → CommandRegistry
  4. 工具 :扫描 ./tools/ 导入与 feature 门控 → ToolRegistry
  5. Bootstrap :在 cli.tsx 文本中匹配子串(如 --versionstartupProfiler--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.mdrust/README.mdrust/crates/*/src 源码整理。

相关推荐
大江东去浪淘尽千古风流人物2 小时前
【Basalt】 VIO(sqrt_keypoint_vio)主流程measure函数梳理
数据库·人工智能·python·机器学习·oracle
weixin_446260852 小时前
提高工作效率的OCR利器:Chandra OCR 2![特殊字符]✨
人工智能·ocr
chimooing2 小时前
【AI 自动化测试新范式】基于 OpenClaw 的智能 UI 自动化全景解析与实战
人工智能·ui·自动化
ISACA中国2 小时前
中国与欧盟AI治理框架的比较与应对
人工智能·ai·隐私·欧盟·合规
2601_950760792 小时前
IL-4蛋白的免疫调节功能与临床应用研究
人工智能·蛋白
一点一木2 小时前
🚀 2026 年 3 月 GitHub 十大热门项目排行榜 🔥
人工智能·github
青春不败 177-3266-05202 小时前
北斗高精度数据解算实战:破解城市峡谷/长基线/无网区难题,从毫米级定位到自动化交付的全流程攻坚进阶
人工智能·北斗·环境工程·测绘·测量·地质工程
CSND7402 小时前
什么是Docker,容器是什么,镜像是什么,一文解读
运维·人工智能·docker·容器
东离与糖宝2 小时前
Java 26 FFM API进阶:零JNI调用TensorRT/OpenVINO,AI端到端延迟砍半
java·人工智能