06-上下文管理
第 6 篇:上下文管理 — 无限对话的秘密 本篇是《深入 Claude Code 源码》系列的第 6 篇。我们将深入分析 Claude Code 如何在有限的 context window 内支撑无限长度的对话——从 token 预算管理、多级压缩策略,到文件状态缓存与 compact 后恢复的设计。 范围说明:上下文的”构建”(System Prompt 组装、CLAUDE.md 注入、git status 获取)已在第 4 篇中覆盖,缓存策略的横切视角将在第 7 篇中展开。本篇聚焦于上下文构建完成后的压缩、清理与恢复——即当 context window 不够用时,Claude Code 如何在不中断对话的情况下释放空间并重建必要的工作上下文。 为什么上下文管理如此重要?LLM 的 context window 是有限的。Claude 的模型通常有 200K token 的窗口(部分模型支持 1M),看起来很大,但在实际使用中消耗极快: 一次 System Prompt 可能占 5K-15K token 用户附带的 CLAUDE.md 文件可能占 3K-10K token...
05-对话循环
第 5 篇:对话循环 — query.ts 如何驱动一次完整的 AI 交互 本篇是《深入 Claude Code 源码》系列的第 5 篇。我们将深入 query.ts 这个 1729 行的核心文件,揭示一次完整的 AI 对话是如何被驱动的——从消息组装、API 调用、工具执行到错误恢复,理解这个 Agent 运行时的”心跳”。 为什么需要理解对话循环?如果把 Claude Code 比作一个人体,那 query.ts 就是它的心脏——对话循环的编排入口。当然,心脏需要血管系统才能工作:重试逻辑在 services/api/withRetry.ts,工具执行在 services/tools/,停止钩子在 query/stopHooks.ts,环境配置在 query/config.ts。本篇会覆盖这个完整的”循环系统”,而不仅仅是 query.ts 一个文件。每一次用户提问,都会触发这个循环: 1用户输入 → 组装消息 → 调用 API → 模型返回 → 执行工具 → 结果回传 → 模型继续... 这个循环看似简单,但实际的工程复杂度远超预期。一个生产级的 AI 对话循环需要处理...
04-System-Prompt-工程
第 4 篇:System Prompt 工程 — 精密控制模型行为的提示词体系 本篇是《深入 Claude Code 源码》系列的第 4 篇。我们将深入 constants/prompts.ts(约 915 行)这个核心文件,揭示 Claude Code 如何通过精心设计的 System Prompt 架构,在「精确控制模型行为」和「最大化 Prompt Cache 命中率」之间取得平衡。 为什么 System Prompt 值得单独一篇?在大多数 AI 应用中,System Prompt 就是一段硬编码的字符串。但在 Claude Code 这样的生产级 AI Agent 中,System Prompt 是一个工程系统: 它不是一段话,而是十几个独立模块的组装结果 — 每个模块有独立的生命周期和缓存策略 它直接影响 API 成本 — Anthropic 的 Prompt Cache 机制可以大幅降低重复 token 的费用,但前提是 prompt 前缀保持稳定 它是模型行为的根基 — 代码风格约束、安全指令、工具使用优先级、输出格式,全部编码在这里 它有内外版差异 — 通过...
03-状态管理
第 3 篇:状态管理 — React 与非 React 世界的状态桥接 本篇是《深入 Claude Code 源码》系列的第 3 篇。我们将深入分析 Claude Code 如何用一个 35 行的极简 Store 实现,桥接 React UI 与非 React 业务逻辑之间的状态管理,并理解三层状态架构的设计哲学。 为什么状态管理值得单独一篇?Claude Code 面临一个独特的状态管理难题:它既是一个 React 应用,又不完全是。 终端 UI 用 Ink(React for CLI)渲染,组件需要响应式的状态更新。但核心业务逻辑 —— API 调用、工具执行、Agent 编排 —— 运行在 React 树之外。一次工具调用的结果需要同时: 更新 React 组件(显示在终端 UI 上) 被非 React 的 query.ts 对话循环读取 被 Agent 子系统使用(可能运行在隔离的上下文中) 如果用 Redux/Zustand 这类库?太重了。React 内置的 useState/useReducer?无法从 React 树外部访问。模块级全局变...
02-启动优化
第 2 篇:启动优化 – 毫秒级 CLI 启动的工程艺术 本篇是《深入 Claude Code 源码》系列的第 2 篇。我们将深入 cli.tsx 和 main.tsx 的启动路径,揭示 Claude Code 团队如何将 CLI 启动时间优化到毫秒级别。 为什么启动速度如此重要?CLI 工具的第一印象就是启动速度。用户在终端输入 claude 并回车的那一刻,心理预期是”即时响应”。如果启动需要 2 秒,用户会觉得卡顿;如果需要 5 秒,用户会开始怀疑是不是命令输错了。 对于 Claude Code 这样一个重量级应用——近 1900 个 TypeScript 文件、依赖 React/Ink/Yoga 渲染引擎、需要连接 MCP 服务器和 Anthropic API——要做到毫秒级启动,绝非易事。 本篇将揭示 Claude Code 采用的 6 大启动优化策略: 快速路径(Fast Path):对简单命令实现零 import 返回 侧效果前置(Side-Effect Hoisting):利用模块求值时间并行执行 I/O API 预连接(Prec...
01-项目全景
第 1 篇:项目全景 — 一个 AI CLI 产品的技术蓝图 本篇是《深入 Claude Code 源码》系列的开篇。我们将从技术栈选型、启动链路、模块依赖三个维度,建立对整个项目的全局认知。 为什么要从全景开始?当你面对一个约 1900 个源码文件(其中 TypeScript 文件约 1884 个)、核心文件超过 4000 行的大型项目时,最大的挑战不是读懂某个函数,而是不知道从哪里开始读。 Claude Code 是 Anthropic 公司开发的 AI 驱动命令行编程助手。它不是一个简单的 API wrapper —— 它是一个完整的 AI Agent 运行时,包含了从终端 UI 渲染、多 Agent 编排、工具系统、权限安全到 Prompt 工程的全技术栈。理解它的全貌,等于理解了一个生产级 AI 产品的完整架构。 本篇将回答三个核心问题: 为什么选择这些技术? — Bun + TypeScript + Ink + Commander.js 的技术栈选型逻辑 程序是怎么启动的? — 从 cli.tsx 到 REPL 的启动链路 代码是怎么组织的? — 约 1900 个...
legal-and-compliance
法律和合规 Claude Code 的法律协议、合规认证和安全信息。 Starting June 15, 2026, Agent SDK and `claude -p` usage on subscription plans will draw from a new monthly Agent SDK credit, separate from your interactive usage limits. See [Use the Claude Agent SDK with your Claude plan](https://support.claude.com/en/articles/15036540-use-the-claude-agent-sdk-with-your-claude-plan) for details. 法律协议许可证您对 Claude Code 的使用受以下条款约束: 商业条款 - 适用于 Team、Enterprise 和 Claude API 用户 消费者服务条款 - 适用于 Free、Pro 和 Max 用户 商业协议无论您是直接使用 ...
jetbrains
JetBrains IDEs 在 JetBrains IDE(包括 IntelliJ、PyCharm、WebStorm 等)中使用 Claude Code Claude Code 通过专用插件与 JetBrains IDE 集成,提供交互式差异查看、选择上下文共享等功能。 支持的 IDEClaude Code 插件适用于大多数 JetBrains IDE,包括: IntelliJ IDEA PyCharm Android Studio WebStorm PhpStorm GoLand 功能 快速启动:使用 Cmd+Esc(Mac)或 Ctrl+Esc(Windows/Linux)直接从编辑器打开 Claude Code,或点击 UI 中的 Claude Code 按钮 差异查看:代码更改可以直接在 IDE 差异查看器中显示,而不是在终端中显示 选择上下文:IDE 中的当前选择或标签页会自动与 Claude Code 共享。Read 拒绝规则会阻止对匹配文件的此共享 文件引用快捷方式:使用 Cmd+Option+K(Mac)或 Alt+Ctrl+K(Linux...
gitlab-ci-cd
Claude Code GitLab CI/CD 了解如何将 Claude Code 集成到您的 GitLab CI/CD 开发工作流中 Claude Code for GitLab CI/CD 目前处于测试阶段。随着我们完善体验,功能和特性可能会发生变化。 此集成由 GitLab 维护。如需支持,请参阅以下 GitLab issue。 此集成基于 [Claude Code CLI and Agent SDK](/zh-CN/agent-sdk/overview) 构建,可在您的 CI/CD 作业和自定义自动化工作流中以编程方式使用 Claude。 为什么在 GitLab 中使用 Claude Code? 即时 MR 创建:描述您的需求,Claude 会提议一个完整的 MR,包含更改和说明 自动化实现:使用单个命令或提及将问题转化为可工作的代码 项目感知:Claude 遵循您的 CLAUDE.md 指南和现有代码模式 简单设置:向 .gitlab-ci.yml 添加一个作业和一个掩码 CI/CD 变量 企业就绪:选择 Clau...
github-actions
Claude Code GitHub Actions 了解如何将 Claude Code 集成到您的开发工作流中,使用 Claude Code GitHub Actions Claude Code GitHub Actions 为您的 GitHub 工作流带来了 AI 驱动的自动化。只需在任何 PR 或 issue 中简单地提及 @claude,Claude 就可以分析您的代码、创建拉取请求、实现功能和修复错误 - 所有这些都遵循您项目的标准。如需在每个 PR 上自动发布评论而无需触发器,请参阅 GitHub Code Review。 Claude Code GitHub Actions 建立在 [Claude Agent SDK](/zh-CN/agent-sdk/overview) 之上,该 SDK 支持将 Claude Code 以编程方式集成到您的应用程序中。您可以使用该 SDK 构建超越 GitHub Actions 的自定义自动化工作流。 **Claude Opus 4.8 现已推出。** Claude Code GitHub Actions 默认使...