
背景:2026年3月31日, Claude Code源代码通过npm注册表中的一个map文件惨遭泄露,全部在线裸奔。
Claude Code代码泄漏:

npm包未加密:

避免侵权:博主先是用python实现一版(clean-room rewrite)又用rust复刻了claude code github 2小时突破5w stared
这次代码泄露的规模非常庞大:超1,900个文件,总计51.2万行TypeScript代码被开源

版本一:基于Python版本分析:
这是一个将 Anthropic Claude Code(TypeScript)重写为 Python 的移植工作空间。项目背景是 2026 年 3 月 31 日 Claude Code 源代码泄露事件后,作者 Sigrid Jin 使用 oh-my-codex (OmX) 工具链驱动,在数小时内完成了核心架构的 Python 清净室重写
指标 | 数据 |
|---|---|
Python 文件数 | 54 |
总代码行数 | ~1,162 行 |
子包数量 | 31 个 |
镜像 Command 条目 | 207 个 |
镜像 Tool 条目 | 184 个 |
原始 TS 文件数 | 1,902 个 |
测试文件 | 1 个 (10 个测试用例) |

架构总览
1. 数据模型层 —
models.py 定义了三个核心数据类:
数据类 | 用途 | 特性 |
|---|---|---|
Subsystem | 表示一个顶层子系统/模块 | frozen=True,包含 name/path/file_count/notes |
PortingModule | 表示一个待移植的命令或工具模块 | frozen=True,含 status 默认为 'planned' |
PortingBacklog | 移植待办清单 | 可变,聚合多个 PortingModule |
2. CLI 入口 —
main.py 提供 8 个子命令:
渲染完整的 Markdown 移植摘要3. 命令 & 工具清单 — commands.py / tools.py
两个模块几乎是镜像对称的,结构完全一致:
# 共同模式:
SNAPSHOT_PATH → load_*_snapshot() → PORTED_* → build_*_backlog()
→ find_*() / get_*()
→ render_*_index()
reference_data/ 下的 JSON 快照文件加载@lru_cache(maxsize=1) 避免重复 I/O动态扫描 src/ 目录结构:
Path.rglob('*.py') 递归查找所有 Python 文件Counter 统计各顶层模块的文件数这是项目中最复杂的模块(139 行),核心功能:
ARCHIVE_ROOT_FILES,17 条)ARCHIVE_DIR_MAPPINGS,30 条)实现了一个简单的基于关键词匹配的路由引擎 PortRuntime:
每个子包(如 assistant/, bridge/, utils/ 等)都只包含一个 __init__.py,模式完全一致:
reference_data/subsystems/*.json 加载元数据ARCHIVE_NAME, MODULE_COUNT, SAMPLE_FILES, PORTING_NOTE全面使用 from __future__ import annotations,所有函数签名都有类型提示问题 | 说明 | 严重度 |
|---|---|---|
代码重复 | commands.py 和 tools.py 几乎完全相同(~95% 重复),应抽象为基类或泛型工厂 | 🟡 中 |
30 个 placeholder 子包 | 每个 __init__.py 的代码模式完全相同,应使用工厂函数或元类自动生成 | 🟡 中 |
搜索算法简单 | find_commands/find_tools 仅用 in 做子串匹配,无权重、无模糊匹配 | 🟢 低 |
缺乏异常处理 | JSON 文件加载无 try/except,若文件损坏会直接崩溃 | 🟡 中 |
测试覆盖不足 | 仅 1 个测试文件 10 个用例,缺少单元测试(如 runtime.py 的路由逻辑未测试) | 🟠 较高 |
无依赖管理 | 缺少 pyproject.toml / requirements.txt / setup.cfg | 🟡 中 |
无日志系统 | 所有输出直接 print(),无 logging 模块 | 🟢 低 |
Claude Code 上下文窗口溢出处理机制 (Python版):
一、总体防线架构

Claude Code 对上下文溢出采用五层纵深防御策略,从"预防"到"恢复"逐层降级处理:
二、Layer 1:预防层 — 硬限制
constants/apiLimits.ts
在发送请求前,对消息列表进行预计算,确保不会超出模型上下文窗口。
推测包含的常量:
export const MAX_TOKENS_BEFORE_COMPACT = 180_000 // ~90% of 200k window
export const CONTEXT_WARNING_THRESHOLD = 0.8 // 80% 时触发警告
export const OUTPUT_TOKEN_BUDGET = 8_192 // 单次最大输出 token
export const MAX_CONTEXT_WINDOW = 200_000 // claude-3.7 最大上下文
constants/toolLimits.ts工具调用结果的输出上限,防止单个工具响应撑爆上下文:
输出截断至 ~100KB三、Layer 2:监控层 — 实时感知
components/ContextVisualization.tsx在 REPL 交互界面实时显示上下文用量的可视化进度条,用户可直观看到:
hooks/notifs/useRateLimitWarningNotification.tsx当上下文使用量接近阈值时,弹出警告通知并建议用户:
/compact 压缩对话commands/clear/)API 响应的 usage 字段
→ services/api/emptyUsage.ts (usage 数据结构)
→ costHook.ts (钩子触发)
→ cost_tracker.py / CostTracker (累计记录)
→ commands/cost/cost.ts (用户查询 /cost)
→ commands/extra-usage/ (扩展用量展示)
→ commands/usage/ (整体用量面板)四、Layer 3:主动压缩层 — 核心机制
这是最关键的一层。Claude Code 的压缩机制有两种触发方式:
/compact 命令commands/compact/compact.ts ← 主逻辑
commands/compact/index.ts ← 命令注册入口
components/CompactSummary.tsx ← 压缩完成后的 UI 展示

Claude Code 核心查询时序图
关键组件说明:
进程入口,负责初始化环境、解析 CLI 参数并启动 TUI。五、Layer 4:记忆持久化层 — 跨轮次保留
压缩丢失的信息通过记忆系统异步持久化,需要时再召回:

核心:管理本次会话的记忆存取六、Layer 5:工具层截断 — 防止单次爆炸
// 推测内容
export const MAX_LINES = 2000
export const MAX_FILE_SIZE_BYTES = 500_000
export const WARN_LINES_THRESHOLD = 500
当文件超出限制时:
line_range 参数指定范围utils/CircularBuffer.ts用于 BashTool 的命令输出流:
// 推测实现
class CircularBuffer {
private buf: string[] = []
private maxLines: number
push(line: string) {
if (this.buf.length >= this.maxLines) {
this.buf.shift() // 循环覆盖,只保留最新的 N 行
}
this.buf.push(line)
}
toOutput(): string {
return this.buf.join('\n')
}
}
七、完整数据流:从溢出到恢复

八、与主流框架的设计对比
方案 | Claude Code | LangChain | OpenAI Assistants |
|---|---|---|---|
主策略 | /compact 主动压缩(AI 生成摘要) | 滑动窗口裁剪 / MapReduce | Threads 自动管理 |
用户可见 | ✅ 完全可见,有 UI 展示 | ❌ 透明裁剪 | ❌ 内部管理 |
信息保留 | 高(AI 摘要 + memdir 持久化) | 低(直接丢弃旧消息) | 中(向量检索) |
多 Agent | Agent 结果只传摘要,不传历史 | 通常共享上下文 | 独立 Thread |
工具输出 | 多层截断(limits.ts + CircularBuffer) | 通常无特殊处理 | 有限制 |
自动触发 | ✅ analyzeContext.ts 自动检测 | 需手动配置 | ✅ 自动 |
九、关键设计原则总结
Claude Code 的上下文管理核心思想是:"压缩而非截断"(Compact, not Truncate)AI 生成摘要优于机械截断
这套机制使 Claude Code 能在单次会话中处理大规模代码库重构等超长任务,是其核心竞争优势之一。
下期详细介绍Rust版本Claude Code实现和源码解析. 谢谢🙏
下下期详细介绍基于Harness工程下的Claude Code架构设计!谢谢