[AI IDE 深度洞察 #2] Claude Code:98.4% 是确定性基础设施,只有 1.6% 是 AI
![[AI IDE 深度洞察 #2] Claude Code:98.4% 是确定性基础设施,只有 1.6](https://harryfan1985.github.io/agent_blog/images/ai-ide-2-claude-code984-16-ai/cover.png)
引言:一个反直觉的事实
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 层架构
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 步管线:
无工具调用 | 最大轮数
上下文溢出 | 钩子干预 | 显式中止
两条执行路径: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 的权限系统不是简单的"允许/拒绝"——它是一个渐进信任光谱:
仅思考不行动"] --> 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 层纵深防御,请求必须通过所有适用层,任何一层都可阻止:
- 工具预过滤 — 从模型视野中完全移除被拒绝的工具
- Deny-first 规则评估 — Deny 始终覆盖 Allow
- 权限模式约束 — 当前模式决定基线处理方式
- Auto-mode ML 分类器 — 独立 LLM 调用评估安全性(两阶段:快速过滤 + CoT)
- Shell 沙箱 — 文件系统 + 网络双重隔离
- 恢复时不恢复权限 — 跨会话边界永不复原权限
- 钩子拦截 — 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 Code | Cursor / 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 个工具的工程化——这些是任何竞争者都需要数年才能复制的护城河。