Claude Code 深度解构

"Bash is All You Need" — 探究自主编程 Agent 的极简主义革命

🎤 讲者: Jared (Prompt Layer) 📅 2025年 AI Engineer 峰会 ⏱️ 核心摘要

从复制粘贴到自主 Agent 的演变

Phase 1: 复制粘贴时代

ChatGPT 刚出现时,开发者手动复制代码,来回粘贴。这是最原始的交互。

Phase 2: Cursor (早期)

VS Code 的 fork 版本,引入 `Cmd+K`。最初体验一般,但开启了 IDE 集成的先河。

Phase 3: Cursor Assistant / Composer

引入 Agent 概念,多文件编辑,速度极快。

Phase 4: Claude Code (Headless)

无头模式,彻底的自主性。 不再是辅助写代码,而是接管终端,自主循环。

核心哲学:极简主义 (Zen of Python)

Claude Code 之所以现在能成功,是因为它放弃了早期 Agent 复杂的“过度工程化”,回归了最简单的设计:

  • Simple Architecture: 简单的循环结构优于复杂的图(DAG)。
  • Better Models: 依赖 Anthropic 模型强大的 Tool Calling 能力,而不是复杂的代码脚手架。
  • Get out of the way: 给它工具,然后让开,让模型自己探索和纠错。
  • Bash is all you need: Bash 是通用适配器,因为训练数据中包含海量 Shell 脚本,模型天生擅长。

Claude Code 的架构拆解

没有复杂的向量库,没有复杂的检索链,只有简单的工具循环。

📜
Constitution (宪法)
CLAUDE.md

CLAUDE.md / .ai-docs

极简记忆库:

不再使用复杂的向量数据库来“理解”代码库。直接使用一个 Markdown 文件记录项目指令。

优势: 用户和 Agent 都可以读写,透明、简单、有效。

🔄
The Master Loop
N0 Loop

主循环 (While Loop)

核心代码可能只有4行:

While tool_calls:
1. 运行工具
2. 获取结果
3. 喂回模型
4. 重复

依赖模型自我纠错能力,而不是复杂的条件判断分支。

💻
Bash Universal
核心工具

Bash Is All You Need

不需要为每个操作发明新工具。

为什么? 训练数据丰富(GitHub 上无数的 Shell 脚本)。

能力: 它可以运行测试、Git 操作、文件管理、环境配置。它是连接一切的胶水。

核心工具集 (The Toolkit)

EDIT (Unified Diff)

不重写整个文件。生成 Diff 片段。节省 Token,速度更快,大幅减少幻觉(因为不需要重写未修改的部分)。

GREP / GLOB

放弃 RAG (检索增强生成)。直接使用传统的文件搜索工具。在代码库导航中,Grep 往往比向量相似度搜索更精准。

READ

读取文件内容。配合 Context Compression 使用。

Tasks (Sub-Agents)

为了防止上下文污染,将任务分叉给子 Agent。

关键机制:如何在限制中跳舞

To-Dos (待办事项)
规划与恢复

结构化的 Prompt 注入

定义: 不是代码强制的,而是通过 System Prompt 注入的结构化文本。

作用:
1. 强制模型规划。
2. 崩溃恢复: 如果 Agent 崩溃,重启后读取 To-Do 列表即可知道进度。
3. 改善 UX,让用户知道 Agent 在干什么。

🐙
Sub-Agents (Tasks)
上下文隔离

子智能体机制

问题: 上下文越长,模型越笨。

方案: 对于“研究”、“阅读文档”、“运行测试”等任务,启动一个全新的 Agent(Task)。

关键点: 子 Agent 跑完后,只返回最终结果给主 Agent,中间过程的噪音直接丢弃,保持主上下文干净。

📉
H2A Async Buffer
上下文压缩

IO 与推理分离

当输出(如大量 Log)填满上下文(如达到 92%)时,自动触发压缩。

策略: 保留头部和尾部,概括或丢弃中间部分。确保持续运行而不爆显存/Token。

🧩
Skills (技能)
扩展能力

按需加载的 System Prompt

类似于插件。例如“深度研究”、“Office文档处理”、“特定代码风格”。

只有在需要时才加载进上下文,避免通用 Prompt 过于臃肿。

🧠 System Prompt Leaks (泄露的提示词策略)

  • Concise Outputs: 严禁废话,不要说 "Here is..."。
  • Tool usage over text: 强迫模型用工具行动,而不是用文本解释它要行动。
  • No Comments: 尽量不要在代码中添加无关注释(减少 Token)。
  • Read before Edit: 强制先读取文件确认内容(虽然可能增加 Token,但减少错误)。

百家争鸣:不同的设计哲学

Jared 认为没有一种“最好的”架构,就像没有最好的心理治疗师一样(AI Therapist Problem)。不同的场景需要不同的设计。

🤖

CodeAct (OpenAI 早期 / 开源社区)

Rust Core | Event Driven

特点: 开源,强调内核级的沙盒(Linux Land / Seatbelt)。架构上更偏向事件驱动和并发线程。适合研究和极客。

Cursor / Composer

UI First | Speed | Distilled Models

特点: 极致的速度。使用特定微调(Fine-tuning)的小模型(蒸馏模型)来实现低延迟。利用用户数据建立了强大的护城河。适合日常高频编码。

🤝

AMP (Sourcegraph)

Context Handoff | Model Switching

特点:
1. 模型切换: 可以在 Fast, Smart, Oracle (推理模型) 之间切换。
2. Context Handoff (交接): 就像游戏中“切换武器比换弹夹快”。通过开启新线程并将必要上下文交接过去,来规避上下文过长的问题。

🦊

Claude Code

CLI First | Human-like

特点: 最像人类开发者的行为(使用 Bash, Git, Diff)。适合处理环境配置、大型重构、跨文件依赖等复杂任务。

未来趋势与评估标准

如何评估 Agent? (Evals)

基准测试(Benchmarks)大多已沦为营销工具,意义不大。

推荐方案:

  • Agent Smell (嗅觉测试): 监控行为指标。它调用了多少次工具?重试了多少次?是否陷入死循环?
  • Backtesting (回测): 记录真实的历史数据,反复跑测试。
  • End-to-End Tests: 关注结果而非过程。例如:给一个破坏的仓库,看它能否修复并通过测试。

未来趋势 (Next)

  • Headless SDKs:
    未来可能不需要直接调用 LLM API,而是调用“Claude Code SDK”。
    场景: 每天凌晨自动运行脚本 -> 启动 Headless Claude -> 读取最新代码 -> 更新文档 -> 提交 PR。全自动,无人值守。
  • Mega Tool vs Many Tools:
    Jared 预测:我们会倾向于更少、更强大的工具(如 Bash),而不是几百个细碎的工具。
  • Rigorous Tools:
    对于需要严格格式输出的任务(如特定格式的报告),构建严格的、确定性的工具,而不是依赖模型的发挥。

核心总结 (Takeaways)

Trust the Model (相信模型) Simple Design Wins (简单致胜) Bash is All You Need Context is the Enemy (管理上下文)

原文

源链接