AI应用开发(Claude Code的技术原理)-Day03

Claude Code(即"claudecode")是 Anthropic 推出的 AI 编程命令行工具。它的开发技术栈和架构非常有代表性,以下是详细拆解:

开源版 Claude Code 杀疯了,怒斩 70k+ Star

ClaudeCode使用教程

OpenCode官网

Claude Code = Anthropic 官方出品,Claude 独占,体验最 polished,适合"放手让它干"。

OpenCode = 开源多供应商反叛者,模型自由、成本可控、可审计,适合"我要掌控一切"。

一、用什么语言开发?

主要语言:TypeScript(Node.js 环境)

Claude Code 是一个单二进制 CLI 工具,90% 的代码据称由 Claude 自己编写 。它运行在 Node.js 上,打包成一个独立的可执行文件分发。

二、核心技术栈

层级 技术选型 作用
UI 渲染 React + Ink 用 React 组件化方式构建终端界面,支持 Flexbox 布局、Hooks 状态管理
布局引擎 yoga-layout (WebAssembly) 提供亚毫秒级的终端字符布局计算
CLI 解析 Commander.js 命令行参数解析
输入验证 Zod 工具调用的输入 schema 校验
样式 Chalk 终端 ANSI 颜色与样式
LLM 通信 Anthropic 原生 SDK + AWS Bedrock SDK + Google Vertex 适配器 多供应商策略,支持云端和本地部署
可观测性 OpenTelemetry (内置) 自动发射 token 用量、成本、工具调用等指标

三、核心架构(六层模型)

Claude Code 的架构围绕一个**"简单的主循环"**(while-loop:调用模型 → 执行工具 → 重复)展开,但真正的复杂度分布在六个外围层级 :

复制代码
┌─────────────────────────────────────────┐
│  1. 输入层 (Input Layer)               │
│     - 会话管理、权限门控、YAML 信任等级   │
├─────────────────────────────────────────┤
│  2. 知识层 (Knowledge Layer)             │
│     - Skill 注册表、上下文压缩器(5层流水线)│
│     - 任务图、跨会话记忆存储              │
├─────────────────────────────────────────┤
│  3. 执行层 (Execution Layer)             │
│     - 工具分发(bash/read/write/grep等) │
│     - 流式运行时、Prompt 缓存             │
├─────────────────────────────────────────┤
│  4. 集成层 (Integration Layer)          │
│     - MCP 运行时连接外部服务              │
│     - 文件系统、Git、自定义工具            │
├─────────────────────────────────────────┤
│  5. 多 Agent 层 (Multi-Agent Layer)      │
│     - 子 Agent(轻量级,父子层级)         │
│     - Agent 团队(独立实例 + git worktree │
│       隔离,通过 JSON 任务列表和邮箱协调) │
├─────────────────────────────────────────┤
│  6. 可观测性层 (Observability Layer)    │
│     - 事件总线、生命周期钩子、审计日志      │
│     - ANR 检测(主循环阻塞检测)           │
└─────────────────────────────────────────┘
           ↓
      主 Agent 循环(单线程)

四、关键设计亮点

1. React 做终端 UI

不同于传统 CLI 的 imperative 状态管理,Claude Code 用 React + Ink 实现声明式终端 UI。每个权限对话框、进度条、并发工具执行都是 React 组件,通过虚拟 DOM diff 后由 yoga-layout 计算终端字符位置 。

2. 五层上下文压缩

当上下文窗口达到约 95% 容量时,触发压缩流水线。它不是简单摘要对话,而是对文件路径、代码片段、错误历史做结构化提取,同时剪枝冗余的工具输出,目标是"保持可用性"而非单纯缩小体积 。

3. 权限系统(7 种模式 + ML 分类器)

每个工具调用都经过权限评估,从完全自动执行到必须人工确认,由 ML 分类器动态判断风险等级 。

4. MCP(Model Context Protocol)

标准化接口让 Claude Code 连接外部数据源(Google Drive、Jira、Slack、数据库等),工具向内注册,记忆向外写入 agent_memory.md 持久化 。

5. 多 Agent 协作

  • 子 Agent:会话内轻量级 worker,独立上下文窗口,完成专注任务后向父 Agent 返回结果
  • Agent 团队:一个会话作为 Team Lead,生成多个独立 Claude Code 实例,各自在 git worktree 隔离的分支上工作,通过共享 JSON 任务列表和邮箱系统协调,避免文件冲突

五、与竞品的对比

工具 技术栈 特点
Claude Code TypeScript + React/Ink DX 优先,组件化终端 UI,启动约 100ms
OpenAI Codex CLI Rust + Native TUI 追求极致性能,启动约 10ms,单文件分发,无需 Node 环境
Cursor VS Code 扩展 可视化 IDE 集成,侧栏 diff 视图

六、总结

Claude Code 是用 TypeScript + React + Ink 开发的终端原生 AI 编程助手,核心是一个"简单的主循环",但围绕它构建了权限系统、上下文压缩、多 Agent 协作、MCP 集成和完整的可观测性体系。它的设计理念是**"把智能放在循环周围的层里,而不是循环本身"**------Anthropic 称之为 "dumb loop" 哲学 。

相关推荐
冬奇Lab1 小时前
开源项目第241期:YuE2 —— 用符号乐谱当“白盒“接口的开源音乐生成模型,SongBench 超越 Suno v5/v6
人工智能
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源