泄露代码里看到的 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 源码整理。

相关推荐
奔跑中的小象8 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南8 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang8 小时前
LangGraph 状态机实战
人工智能
刹那芳华19928 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作9 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门9 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜9 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟9 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦9 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生10 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能