乐于分享
好东西不私藏

51.2万行源码泄露:拆解 Anthropic 八层架构

51.2万行源码泄露:拆解 Anthropic 八层架构

一次 npm 打包错误,让全球开发者免费获得数亿美元研发成果。这不是代码泄露,而是一场 AI 编程架构的公开课。


前言

2026 年 3 月 31 日凌晨, Anthropic 工程师的一次 npm 发布,意外将 51.2 万行 Claude Code 源码完整暴露给全球开发者。

暴露的不只是代码,更是一套经过实战验证的八层架构:从 Runtime 到 QueryEngine ,从 ExecutionRegistry 到 Permission 系统,每一层都凝聚了 200+ 工程年的经验

对于开发者而言,这是一次弯道超车的黄金机会


一、八层架构全景

1.1 架构分层

层级 核心组件 代码量
L1 接口层 CLI / REPL / IDE / Web
L2 运行时层 PortRuntime 193 行
L3 查询引擎层 QueryEnginePort 194 行
L4 执行层 ExecutionRegistry 52 行
L5 命令系统 PORTED_COMMANDS 91 行
L6 工具系统 PORTED_TOOLS 97 行
L7 权限层 ToolPermissionContext 21 行
L8 存储层 SessionStore / TranscriptStore 60 行

1.2 数据流

用户输入 → Runtime路由 → ExecutionRegistry → Permission检查
  → QueryEngine → 执行层 → TranscriptStore → SessionStore → 返回

1.3 设计原则

职责分离:每层专注单一职责
不可变性:核心数据使用 @dataclass(frozen=True)
流式处理: Python 生成器实现流式响应

二、 Runtime 运行时层

2.1 智能路由

源码:src/runtime.py( 193 行)

defroute_prompt(self, prompt: str, limit: int = 5):
"""智能路由:将用户输入匹配到命令/工具"""
    tokens = {token.lower() for token in prompt.split()}
    by_kind = {
        'command': self._collect_matches(tokens, PORTED_COMMANDS),
        'tool': self._collect_matches(tokens, PORTED_TOOLS),
    }
    selected = [by_kind[k].pop(0) for k in ('command', 'tool') if by_kind[k]]
    return selected[:limit]

可复用价值:优先级算法 + 大小写不敏感匹配


三、 QueryEngine 查询引擎层

3.1 消息压缩

源码:src/query_engine.py( 194 行)

defcompact_messages_if_needed(self):
"""智能压缩:保留最近 N 条对话"""
    if len(self.mutable_messages) > self.config.compact_after_turns:
        self.mutable_messages[:] = self.mutable_messages[-self.config.compact_after_turns:]
    self.transcript_store.compact(self.config.compact_after_turns)

价值:自动管理上下文窗口,避免 Token 超限


四、 Execution 执行层

4.1 统一执行注册表

源码:src/execution_registry.py( 52 行)

@dataclass(frozen=True)
classExecutionRegistry:
    commands: tuple[MirroredCommand, ...]
    tools: tuple[MirroredTool, ...]

    defcommand(self, name: str):
        lowered = name.lower()
        for cmd in self.commands:
            if cmd.name.lower() == lowered:
                return cmd
        return None

设计亮点:统一接口 + 不可变数据结构


五、 Permission 权限层

5.1 细粒度权限控制

源码:src/permissions.py(仅 21 行!)

@dataclass(frozen=True)
classToolPermissionContext:
    deny_names: frozenset[str] = frozenset()
    deny_prefixes: tuple[str, ...] = ()

    defblocks(self, tool_name: str) -> bool:
        lowered = tool_name.lower()
        return (lowered in self.deny_names or 
                any(lowered.startswith(p) for p in self.deny_prefixes))

价值: 21 行实现完整权限系统,双重匹配机制


六、 Storage 存储层

6.1 会话持久化

源码:src/session_store.py( 36 行)

defsave_session(session, directory=None):
    target_dir = directory or DEFAULT_SESSION_DIR
    target_dir.mkdir(parents=True, exist_ok=True)
    path = target_dir / f'{session.session_id}.json'
    path.write_text(json.dumps(asdict(session), indent=2))
    return path

6.2 消息抄录

源码:src/transcript.py(仅 24 行!)

@dataclass
classTranscriptStore:
    entries: list[str] = field(default_factory=list)

    defcompact(self, keep_last: int = 10):
        if len(self.entries) > keep_last:
            self.entries[:] = self.entries[-keep_last:]

七、商业价值

7.1 研发投入

投入项 估算
人力成本 200+ 工程年
算力成本 250 亿+ tokens
时间成本 2 年+
资金投入 2-5 亿美元

7.2 竞争格局

阶段 Anthropic 竞品公司 时间差距
泄漏前 2024 ─────────→ 2026 从零开始 落后 2-3 年
泄漏后 2024 ──●──→ 2026 快速跟进 落后 6-12 月

技术门槛降低约 70%


八、可复用设计模式

8.1 核心模式

模块 代码量 复杂度
permissions.py 21 行
transcript.py 24 行
session_store.py 36 行
execution_registry.py 52 行
query_engine.py 194 行
runtime.py 193 行

8.2 复用路径

第一阶段(1-2天):核心模块
├─permissions.py权限系统
├─transcript.py消息抄录
└─session_store.py会话存储

第二阶段(3-5天):执行层
├─execution_registry.py执行注册表
└─models.py数据模型

第三阶段(1-2周):查询引擎
├─query_engine.py查询处理
└─消息压缩机制

第四阶段(2-4周):完整运行时
└─runtime.py路由与启动

九、行业价值

9.1 技术栈对比

技术领域 缩短差距
Runtime 设计 12-18 月
QueryEngine 18-24 月
Execution 层 12-18 月
Permission 系统 6-12 月

9.2 跟进案例

项目 语言 进度
claw-code Rust 架构已移植
open-claw-py Python Tool 系统完成
claude-replica TypeScript Agent 层实现

十、结语

51.2 万行代码的泄漏,是一次知识解放

架构:实战验证的八层设计
模式:可复用的核心设计
代码:精简高效的实现
价值:绕过数亿研发成本

“好的架构被设计出来,就是为了被学习、被改进、被超越。”