乐于分享
好东西不私藏

基于Claude Code泄露源码的深度解析

基于Claude Code泄露源码的深度解析

昨天发生了一件大事,Claude Code代码被泄露了,基于这份代码,我使用Claude Code工具让它自己分析了一下自己的代码,想想也挺魔幻的。

一、项目整体定位

Claude Code 是一个以 Agent 为核心的 AI 编程助手,运行在终端里。它不只是”调用 LLM 然后返回文本”,而是一个完整的 Agentic Loop 系统,能够:

  • 自主规划任务

  • 调用工具(读写文件、执行命令、搜索代码)

  • 生成子 Agent 并行处理复杂任务

  • 管理上下文、记忆、权限

    技术栈:TypeScript + Bun 运行时,React + Ink 做终端 UI,Claude API 作为 LLM 后端。


    二、核心架构:Query Loop

    整个 Agent 的心脏是 query.ts(约 5000 行),它是一个异步生成器(async generator),实现了经典的 ReAct 循环:

    关键设计:用 async generator 而不是 callback/Promise,使得 UI 层可以 for await 消费事件流,实现真正的流式渲染,同时 Agent 逻辑保持线性可读。


    三、Agent 系统设计

    3.1 Agent 的三种来源

    每个 Agent 定义包含:

    • tools:该 Agent 可用的工具列表

    • model:使用哪个 Claude 模型

    • mcpServers:挂载哪些 MCP 服务

    • permissions:权限约束

    • systemPrompt:专属系统提示

      3.2 AgentTool:子 Agent 的生命周期

      tools/AgentTool/AgentTool.tsx(235K,最大文件)管理子 Agent 的完整生命周期:

      三种执行模式

      1. Fork 模式:子Agent继承父Agent的完整上下文(适合需要全局知识的任务)

      2. Worktree 模式:在独立 git worktree 中运行(代码隔离)

      3. Remote 模式:在云端 CCR 环境运行(长时任务)

        3.3 多 Agent 并行编排

        工具编排层(toolOrchestration.ts)会自动分析工具调用的并发安全性

        • 并发安全(可并行):file_readglobgrepweb_search

        • 非并发安全(串行):file_writebashagent_spawn


          四、上下文管理:解决长对话的核心挑战

          这是整个系统最精妙的部分之一。随着对话变长,token 消耗爆炸,Claude Code 实现了多层上下文压缩策略:

          4.1 五种压缩策略

          上下文压缩策略(从轻到重)

          4.2 Prompt Cache 共享(关键优化)

          这是一个非常聪明的工程优化:子 Agent 不需要重新”理解”整个项目上下文,直接复用父 Agent 已经缓存的 prefix。


          五、工具系统设计

          5.1 工具接口(Tool.ts,约 30K)

          每个工具实现统一接口:

          5.2 内置工具集

          5.3 MCP(Model Context Protocol)集成

          MCP 是 Anthropic 提出的工具扩展协议,允许第三方服务以标准化方式向 Agent 暴露工具:

          每个 Agent 可以挂载不同的 MCP Servers,实现工具的动态组合。


          六、权限与安全系统

          6.1 多层权限控制

          6.2 26 个生命周期 Hook

          Hook 系统使得用户可以在不修改核心代码的情况下,注入自定义逻辑(审计日志、安全过滤、自动化流程等)。


          七、记忆系统

          7.1 三层记忆架构

          7.2 记忆注入机制

          系统提示构建时,记忆内容按优先级合并注入:


          八、System Prompt 构建

          System Prompt 是动态构建的,包含多个模块:

          这种动态构建方式使得每次对话的 System Prompt 都精确反映当前状态,同时通过 Prompt Cache 避免重复计算。


          九、关键技术亮点总结

          技术点

          实现方式

          解决的问题

          流式 Agent 循环

          async generator

          实时 UI 更新 + 线性代码逻辑

          Prompt Cache 继承

          fork 时传递 cache key

          子 Agent 节省 80% token

          工具并发分析

          静态安全性标注

          最大化并行度,保证正确性

          多层上下文压缩

          snip/compact/microcompact

          支持超长对话

          Hook 系统

          26 个生命周期事件

          无侵入扩展

          MCP 协议

          标准化工具接口

          生态扩展

          三层记忆

          优先级合并注入

          个人/项目/本地知识分离

          Worktree 隔离

          git worktree

          代码修改安全隔离


          十、Agent 设计的核心思想

          从架构层面看,Claude Code 体现了几个重要的 Agent 设计原则:

          1. 单一循环,多层扩展:核心是一个简单的 ReAct 循环,复杂性通过工具、Hook、MCP 扩展,而不是修改核心逻辑。

            1. 上下文即状态:Agent 的”状态”完全存在于 messages 数组中,这使得 fork、压缩、恢复都变得自然。

              1. 工具是能力边界:Agent 能做什么完全由工具集决定,通过限制工具集来限制 Agent 的权限范围。

                1. 缓存是一等公民:Prompt Cache 不是优化项,而是架构设计的核心考量,子 Agent 的 fork 机制围绕缓存继承设计。

                  1. 流式优先:从 API 调用到 UI 渲染,全链路 streaming,避免任何不必要的等待。