[AI IDE 深度洞察 #2] Claude Code:98.4% 是确定性基础设施,只有 1.6% 是 AI

May 20, 2026

[AI IDE 深度洞察 #2] Claude Code:98.4% 是确定性基础设施,只有 1.6

引言:一个反直觉的事实

2025 年底,Claude Code 的源码被泄露。VILA-Lab 的团队分析后发现了一个令人震惊的事实:

Claude Code 约 512,000 行 TypeScript 代码中,只有约 1.6%(约 8,000 行)是 AI 决策逻辑。其余 98.4% 是确定性基础设施。

这意味着什么?意味着 Claude Code 不是"一个聪明的 AI 被塞进了终端"——它是一个为 Agent 精密设计的操作系统,AI 只是在其中扮演"大脑"的角色。肌肉、骨骼、神经系统——全部是工程代码。

这是本系列最特别的一篇。因为 Claude Code 不是 IDE——它是终端 Agent。它与 Cursor/Antigravity/Copilot 有本质的架构差异。

技术全景:7 组件 × 5 层架构

graph TB subgraph "Surface 层:入口点" CLI["CLI
React + Ink 终端 UI"] HEADLESS["Headless
SDK / CI 模式"] IDE["IDE 集成
VS Code / JetBrains"] end subgraph "Core 层:代理循环" QUERY["queryLoop
1,700 行 AsyncGenerator"] COMPRESS["5 级压缩管线
Budget→Snip→Microcompact
→Collapse→Auto-Compact"] SUBAGENT["子代理生成
6 种内置 + 自定义"] end subgraph "Safety 层:权限与沙箱" PERM["7 级权限模式
plan→default→auto→bypass"] CLASSIFIER["Auto-Mode ML 分类器
独立 LLM 安全评估"] SANDBOX["沙箱 srt
bubblewrap / sandbox-exec
双重隔离模型"] end subgraph "State 层:持久化" JSONL["JSONL 会话转录"] CLAUDE["CLAUDE.md 4 级层级
Managed→User→Project→Local"] MEMORY["自动记忆
文件化 · 无向量DB"] end subgraph "Backend 层:执行" SHELL["Shell 执行
7 种传输类型"] MCP["MCP Servers
54 内置工具"] HOOKS["27 个钩子事件
4 种执行类型"] end CLI --> QUERY HEADLESS --> QUERY IDE --> QUERY QUERY --> PERM QUERY --> COMPRESS QUERY --> SUBAGENT PERM --> SANDBOX PERM --> CLASSIFIER CLI --> CLAUDE CLI --> JSONL SHELL --> SANDBOX MCP --> SHELL style QUERY fill:#ef4444,stroke:#dc2626,color:#fff style COMPRESS fill:#2563eb,stroke:#1d4ed8,color:#fff style SANDBOX fill:#7c3aed,stroke:#6d28d9,color:#fff style PERM fill:#f59e0b,stroke:#d97706,color:#000

核心技术壁垒

壁垒 1:queryLoop — 统一所有入口的单一代理循环

Claude Code 的核心引擎是一个约 1,700 行的 AsyncGenerator 函数 queryLoop。关键是:所有入口点共享同一个 queryLoop。CLI、headless SDK、IDE 集成——它们的外壳不同,但核心逻辑完全相同。

每轮循环执行 9 步管线

sequenceDiagram participant Setup as 1.设置解析 participant Init as 2.状态初始化 participant Ctx as 3.上下文组装 participant Compress as 4.压缩管线x5 participant Model as 5.模型调用 participant Tool as 6.工具分发 participant Gate as 7.权限门控 participant Exec as 8.工具执行 participant Stop as 9.停止条件 Setup->>Init: 加载配置 Init->>Ctx: 恢复会话 Ctx->>Compress: 传入原始上下文 Compress->>Model: 压缩后上下文 Model-->>Tool: tool_calls Tool->>Gate: 权限检查 Gate-->>Exec: 通过 -> 执行 Gate-->>Stop: 拒绝 -> 终止 Exec->>Ctx: 结果回传 Ctx->>Compress: 下一轮 Note over Stop: 5种停止条件:
无工具调用 | 最大轮数
上下文溢出 | 钩子干预 | 显式中止

两条执行路径:StreamingToolExecutor 用于边流式输出边执行(延迟优化),回退 runTools 将工具分类为可并发或互斥执行。

恢复机制:最大输出 Token 升级重试(每轮最多 3 次)、每轮最多触发 1 次反应式压缩、Prompt-too-long 的逐级降级。

壁垒 2:5 级压缩管线 — 上下文管理的工程艺术

这是 Claude Code 最精妙的部分。每次模型调用前,执行 5 级压缩管线,按成本从低到高依次触发:

阶段策略触发条件破坏性
Budget Reduction每消息大小上限始终活跃否 — 截断
Snip修剪较旧历史功能门控 HISTORY_SNIP否 — 跳帧
Microcompact缓存感知细粒度压缩始终(基于时间)
Context Collapse读取时虚拟投影功能门控 CONTEXT_COLLAPSE否 — 非破坏性!
Auto-Compact完整模型生成摘要最后手段是 — 但仅当其他全部失败

最精妙的设计:Chain Patching。压缩边界记录 headUuid/anchorUuid/tailUuid,会话加载器在读取时修补消息链。磁盘上没有任何内容被破坏性编辑。这意味着压缩是可逆的——你随时可以"解压"回到完整历史。这与大多数 Agent 框架的"暴力截断"有天壤之别。

壁垒 3:7 级权限 + 7 层纵深防御

Claude Code 的权限系统不是简单的"允许/拒绝"——它是一个渐进信任光谱

graph LR PLAN["plan
仅思考不行动"] --> DEFAULT["default
每次工具调用询问"] DEFAULT --> ACCEPT["acceptEdits
自动接受编辑"] ACCEPT --> AUTO["auto
ML 分类器判断"] AUTO --> DONT["dontAsk
信任所有"] DONT --> BYPASS["bypassPermissions
完全绕过"] BYPASS --> BUBBLE["bubble
内部子代理专用"] style PLAN fill:#10b981,stroke:#059669,color:#fff style AUTO fill:#f59e0b,stroke:#d97706,color:#000 style BYPASS fill:#ef4444,stroke:#dc2626,color:#fff

内部是 7 层纵深防御,请求必须通过所有适用层,任何一层都可阻止:

  1. 工具预过滤 — 从模型视野中完全移除被拒绝的工具
  2. Deny-first 规则评估 — Deny 始终覆盖 Allow
  3. 权限模式约束 — 当前模式决定基线处理方式
  4. Auto-mode ML 分类器 — 独立 LLM 调用评估安全性(两阶段:快速过滤 + CoT)
  5. Shell 沙箱 — 文件系统 + 网络双重隔离
  6. 恢复时不恢复权限 — 跨会话边界永不复原权限
  7. 钩子拦截 — PreToolUse 钩子可修改或阻止操作

Auto-mode ML 分类器值得单独说明:当用户选择 auto 模式时,每次工具调用都会触发一个独立的 LLM 调用来评估安全性。两阶段——快速过滤 + Chain-of-Thought 深度分析。这意味着即使是"自动信任"模式,也有一个独立的 AI 在做安全审查。

壁垒 4:双重隔离沙箱 (srt)

Anthropic 开源了 Sandbox Runtime (srt),这是一个OS 级的双重隔离模型

  • 文件系统隔离:拒绝-然后-允许模式。写入默认全局拒绝,必须显式允许
  • 网络隔离:仅允许模式。默认拒绝所有网络访问。通过宿主机 Unix socket 代理路由流量

OS 级原语:macOS 使用 sandbox-exec + 动态生成的 Seatbelt 配置,Linux 使用 bubblewrap + 网络命名空间隔离。

关键区别:Claude Code 的沙箱在终端进程外运行。Cursor 的沙箱在IDE 进程内

壁垒 5:子代理 + Sidechain Transcripts

Claude Code 的子代理机制是其最独特的能力之一:

  • 6 种内置子代理类型:Explore、Plan、General-purpose、Guide、Verification、Statusline-setup
  • 自定义子代理.claude/agents/*.md,YAML frontmatter 定义 tools/model/permissions/hooks/skills
  • SkillTool vs AgentTool:SkillTool 将指令注入当前上下文(低成本),AgentTool 生成隔离上下文窗口(高成本 ~7x token)

Sidechain Transcripts 是设计精髓:每个子代理写自己的 .jsonl 文件。只有摘要返回给父代理。完整历史从不进入父代理的上下文。多实例协调通过 POSIX flock()——零外部依赖。

架构洞察:98.4% 是基础设施

VILA-Lab 的源码分析揭示了一个冷酷的事实:Claude Code 的竞争力不在于模型,而在于围绕模型构建的工程体系

  • 54 个内置工具的提示工程(约 60,000 token 的提示文本)
  • 27 个钩子事件 + 4 种执行类型(shell、LLM、webhook、子代理验证器)
  • 89 个功能门控——精细控制哪些功能在什么条件下激活
  • 38,000 行安全代码(7.5%)

这意味着任何想"做个 Claude Code 替代品"的人,需要复制的不是那 8,000 行 AI 逻辑——而是 50 万行的工程基础设施

与 IDE 工具的架构差异

维度Claude CodeCursor / Copilot
执行模型终端中的自主代理循环IDE 中的补全/内联建议
操作范围完整 OS 访问(shell、文件系统、网络)IDE 沙箱范围内的代码编辑
用户交互异步——提交任务后离开同步——与编辑器紧密耦合
上下文读取整个代码库 + 运行命令 + 搜索网络当前文件 + 附近文件
权限7 级渐进信任 + deny-first基本允许/拒绝
持久化JSONL 会话转录 + CLAUDE.md 文件记忆无跨会话持久化
子代理内置子代理生成(Task 工具)无原生子代理
沙箱OS 级(bubblewrap/sandbox-exec)容器/IDE 沙箱

面向未来的演进趋势

趋势 1:终端 Agent 作为操作系统级接口:Claude Code 已可嵌入 GitHub Actions、CI/CD 管道、被其他 Agent 调用。终端不是辅助窗口——是 Agent 的原生栖息地。

趋势 2:权限系统的自动驾驶化:auto-mode ML 分类器是第一步。未来可能演化为基于 session 历史的动态权限调整——Agent 证明自己在某个领域可靠,就自动获得更多自主权。

趋势 3:子代理的团队协作化:Sidechain Transcripts + flock() 协调已展示多代理协作的基础设施。Plan 模式下的代理团队约消耗 7x token——效率不高,但范式正确。

一句话总结

Claude Code 不是一个聪明的 AI Agent——它是一个为 Agent 设计的操作系统,AI 只是其中的 CPU。真正的技术壁垒是那 98.4% 的确定性基础设施——7 层防御、5 级压缩、OS 级沙箱、54 个工具的工程化——这些是任何竞争者都需要数年才能复制的护城河。