Skip to main content

5.2 Claude Code 深度解析

Claude Code 是 Anthropic 官方推出的 AI 编程助手,代表了当前 Agent 技术的最高水平之一。它的设计理念和实现方式值得深入学习。

Claude Code 的定位

不是代码补全,是代码 Agent

传统 AI 编程助手:
用户:补全这行代码
AI:(给出建议)

Claude Code:
用户:给这个项目加一个用户认证功能
Claude Code:
1. 理解现有代码结构
2. 设计认证方案
3. 编写代码
4. 运行测试
5. 修复问题
6. 完成!

核心设计理念

1. 渐进式权限(Progressive Authorization)

不是一开始就给所有权限,而是按需请求:

Level 0:只读模式
- 可以查看文件
- 可以列出目录
- 不能做任何修改

Level 1:开发模式
- 可以修改项目文件
- 可以运行测试

Level 2:完全模式
- 可以执行任意命令
- 可以提交代码
- 危险操作需要确认

2. 透明性优先

用户永远知道 Agent 在做什么:

📖 读取 src/app.ts
✏️ 修改 src/auth.ts (+42 -8)
⚙️ 运行 npm test
✅ 15 passed, 0 failed
📝 写入 docs/auth.md

3. 尊重用户控制

用户随时可以:
⏸️ 暂停
↩️ 回滚
✏️ 干预修改
❌ 停止

Harness 实现机制

沙箱化的命令执行

// 命令执行的包装层
async function safeExecute(command: string) {
// 1. 风险评估
const risk = assessRisk(command);

// 2. 高风险需要用户确认
if (risk === 'high') {
const approved = await askUserConfirmation(command);
if (!approved) return 'Command rejected by user';
}

// 3. 在沙箱中执行
const result = await executeInSandbox(command, {
timeout: 30000,
cwd: projectRoot,
env: sanitizedEnv
});

// 4. 结果截断(防止上下文爆炸)
return truncateResult(result);
}

文件操作的事务性

每次修改前自动备份:
.claude/backups/
└── 2024-01-15T10:30:00/
├── src-auth.ts.bak
└── ...

出了问题一键回滚。

MCP 集成架构

Claude Code 是 MCP 协议的主要推动者和第一个大规模落地者。

┌─────────────────────────────────────────┐
│ Claude Code │
├─────────────────────────────────────────┤
│ MCP Client / 工具发现层 │
├─────────────┬─────────────┬─────────────┤
│ Filesystem │ Git │ GitHub │
│ Server │ Server │ Server │
└─────────────┴─────────────┴─────────────┘

动态工具发现

Claude Code 启动时:
1. 扫描配置的 MCP Servers
2. 获取每个 Server 提供的工具、资源、Prompt
3. 动态构建工具调用接口
4. 按需提供给 LLM

状态管理与持久化

会话状态

{
"sessionId": "abc123",
"startedAt": "2024-01-15T10:00:00Z",
"messages": [...],
"toolHistory": [
{
"tool": "read_file",
"input": "src/app.ts",
"timestamp": "..."
}
],
"checkpoints": [
{ "step": 5, "description": "完成文件分析" }
]
}

长期记忆

.claude/
├── memory/
│ ├── project-knowledge.md # 项目特定知识
│ ├── user-preferences.md # 用户偏好
│ └── learned-patterns.md # 学习到的模式
└── settings.json # 配置

Claude Code 的源码学习要点

如果你想研读 Claude Code 的源码(或 fork),重点关注:

1. Prompt 工程

Claude Code 的系统 Prompt 长达数千 token,精心设计了:

  • 角色定位和行为准则
  • 工具使用规范
  • 错误处理策略
  • 与用户沟通的方式

2. Harness 层

这是最有价值的部分:

  • 权限控制机制
  • 沙箱执行
  • 操作审计
  • 回滚机制

3. MCP 集成

  • 协议消息格式
  • 服务生命周期管理
  • 错误处理和降级
  • 工具描述的动态注入

4. 用户体验

  • 流式输出和进度反馈
  • diff 展示
  • 确认对话框
  • 状态持久化和恢复

Claude Code vs 开源实现

特性Claude CodeOpenClaw其他开源 Agent
官方支持✅ Anthropic❌ 社区
MCP 协议✅ 原生支持⚠️ 部分支持
渐进式权限✅ 完善⚠️ 简单
沙箱执行
多入口❌ 只有 CLI✅ CLI + 飞书
开源❌ 闭源

从 Claude Code 学到的经验

1. 可靠比聪明更重要

用户能容忍 Agent 慢一点,但不能容忍它乱删文件。

2. 透明建立信任

让用户看到 Agent 在做什么,比让它"默默做好"更重要。

3. 渐进式释放能力

从只读开始,用户信任了再逐步给更多权限。

4. 犯错是正常的,关键是可恢复

Agent 一定会犯错,设计系统时要假设这一点。

Claude Code 不是完美的,但它是目前最接近"理想 Agent"的产品。研究它,超越它。