跳转到内容

可视化参考

Claude Code 核心概念的 ASCII 图表合集。涵盖上下文管理、权限模式、工作流、架构、安全和决策树的快速可视化参考。


根据上下文窗口使用率(通过 /status 查看)采取对应操作:

上下文使用率
0% 50% 70% 90% 100%
├───────────┼───────────┼───────────┼──────────┤
│ 绿色 │ 黄色 │ 橙色 │ 红色 │
│ 自由 │ 谨慎选择 │ 立即 │ 必须 │
│ 工作 │ 操作 │ /compact │ /clear │
└───────────┴───────────┴───────────┴──────────┘
^ ^
| |
减少不必要的 风险:遗忘指令、
读取和工具调用 产生幻觉
区间上下文 %操作
绿色0-50%全速前进,自由读取文件和探索
黄色50-70%谨慎选择,避免不必要的文件读取
橙色70-90%立即执行 /compact,上下文正在退化
红色90%+执行 /clear 并重启,响应已不可靠

使用 Shift+Tab 循环切换:

Shift+Tab Shift+Tab
┌──────────┐ ──────────→ ┌───────────────┐ ──────────→ ┌───────────┐
│ 默认 │ │ 自动接受 │ │ 计划模式 │
│ │ │ │ │ │
│ edit=ask │ │ edit=auto │ │ edit=no │
│ exec=ask │ │ exec=ask │ │ exec=no │
└──────────┘ ←────────── └───────────────┘ ←────────── └───────────┘
Shift+Tab Shift+Tab
模式适用场景风险等级
默认日常开发——逐一审查每个变更
自动接受可信任务(格式化、重构)
计划模式复杂/高风险操作——安全探索

每个任务的推荐工作流:

┌─────────┐ ┌──────────┐ ┌────────────┐ ┌─────────────┐
│ 1.启动 │───→│ 2./status│───→│ 3. 计划? │───→│ 4. 描述任务 │
│ claude │ │ 查看上下文│ │ Shift+Tab×2│ │ 做什么/在哪 │
└─────────┘ └──────────┘ │ (若有风险) │ │ 怎么做/验证 │
└────────────┘ └──────┬──────┘
┌───────────────────────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 5.审查 │───→│ 6. y/n │───→│ 7. 测试 │───→│ 8. 提交 │───→│9./compact│
│ diff │ │ 接受? │ │ 运行 │ │ 完成时 │ │ >70% 时 │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘

核心原则:

  • 第 2 步:开始前务必检查上下文。超过 70% 先 /compact
  • 第 3 步:高风险、复杂或多文件操作使用计划模式。
  • 第 4 步:描述要具体——模糊的提示产生模糊的结果。
  • 第 5 步:阅读每个 diff,切勿盲目接受。
  • 第 9 步:每个任务后压缩上下文,保持在绿色区间。

你需要什么?
├─ 简单任务 ─────────────────→ 直接问 Claude
├─ 复杂任务
│ ├─ 单个会话 ──────────────→ /plan + Tasks API
│ └─ 多个会话 ──────────────→ Tasks API + CLAUDE_CODE_TASK_LIST_ID
├─ 重复任务 ─────────────────→ 创建 Agent 或 Command
├─ 上下文 >70% ──────────────→ /compact
├─ 上下文 >90% ──────────────→ /clear(重启对话)
├─ 需要类库文档 ─────────────→ Context7 MCP
├─ 深度调试 ─────────────────→ Opus 模型 + Alt+T(思考)
├─ 从设计稿到 UI ────────────→ Figma MCP 或截图输入
└─ 团队推广 ─────────────────→ 阅读采纳指南

整个架构是一个简单的 while 循环——没有 DAG、没有分类器、没有 RAG。

┌─────────────────────────────────────────────────────────────┐
│ CLAUDE CODE 主循环 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ │
│ │ 你的提示词 │ │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ CLAUDE 推理 │ │
│ │ (无分类器,无路由层) │ │
│ └────────────────────────┬─────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────┐ │
│ │ 工具调用? │ │
│ └───────┬────────┘ │
│ │ │
│ 是 │ 否 │
│ ┌─────────────────┴─────────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌────────────┐ ┌────────────┐ │
│ │ 执行工具 │ │ 文本 │ │
│ │ │ │ 响应 │ │
│ │ │ │ (完成) │ │
│ └─────┬──────┘ └────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 将结果反馈 │ │
│ │ 给 Claude │──────────────────┐ │
│ └─────────────┘ │ │
│ ▼ │
│ ┌────────────────┐ │
│ │ 循环回到 │ │
│ │ (下一轮) │ │
│ └────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Hook 如何拦截 Claude Code 的执行流水线:

┌─────────────────────────────────────────────────────────┐
│ 事件流 │
├─────────────────────────────────────────────────────────┤
│ │
│ 用户输入消息 │
│ │ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ UserPromptSubmit │ ← 添加上下文(git status) │
│ └────────────────────┘ │
│ │ │
│ ▼ │
│ Claude 决定运行工具(如 Edit) │
│ │ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ PreToolUse │ ← 安全检查 │
│ └────────────────────┘ │
│ │ │
│ ▼(如果允许) │
│ 工具执行 │
│ │ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ PostToolUse │ ← 自动格式化 │
│ └────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘

使用 Claude Code 时哪些数据离开你的机器:

┌─────────────────────────────────────────────────────────────┐
│ 你的本地机器 │
├─────────────────────────────────────────────────────────────┤
│ - 你输入的提示词 │
│ - Claude 读取的文件(包括 .env 如果未排除!) │
│ - MCP 服务器结果(SQL 查询、API 响应) │
│ - Bash 命令输出 │
│ - 错误消息和堆栈追踪 │
└───────────────────────┬─────────────────────────────────────┘
▼ HTTPS
┌─────────────────────────────────────────────────────────────┐
│ ANTHROPIC API │
├─────────────────────────────────────────────────────────────┤
│ - 处理你的请求 │
│ - 根据保留策略存储对话 │
│ - 可能用于模型训练(如果未选择退出) │
└─────────────────────────────────────────────────────────────┘

恶意 MCP 服务器如何利用一次性审批模型:

┌─────────────────────────────────────────────────────────────┐
│ 1. 攻击者发布无害的 MCP "code-formatter" │
│ | │
│ 2. 用户添加到 ~/.claude.json,一次性批准 │
│ | │
│ 3. MCP 正常工作 2 周(建立信任) │
│ | │
│ 4. 攻击者推送恶意更新(无需重新审批!) │
│ | │
│ 5. MCP 窃取 ~/.ssh/*、.env、凭据 │
└─────────────────────────────────────────────────────────────┘
缓解措施:版本锁定 + 哈希验证 + 持续监控

为 Claude Code 自主会话提供完全隔离:

┌──────────────────────────────────────────────────────────┐
│ 宿主机 │
│ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ DOCKER 沙箱(microVM) │ │
│ │ │ │
│ │ ┌──────────────┐ ┌───────────────────────────┐ │ │
│ │ │ Claude Code │ │ 私有 Docker 守护进程 │ │ │
│ │ │ (--dsp 模式) │ │ (与宿主机隔离) │ │ │
│ │ └──────────────┘ └───────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ 工作空间:~/my-project(与宿主机同步) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 基础环境:Ubuntu, Node.js, Python 3, Go, Git, │ │
│ │ Docker CLI, GitHub CLI, ripgrep, jq │ │
│ │ 用户:非 root 的 'agent'(有 sudo 权限) │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ 宿主机 Docker 守护进程:沙箱内不可访问 │
│ 宿主机文件系统:不可访问(工作空间除外) │
└──────────────────────────────────────────────────────────┘

选择正确搜索工具的三级决策树:

你知道确切的文本/模式吗?
├─ 知道 → 使用 rg(ripgrep)
│ ├─ 已知函数名:rg "createSession"
│ ├─ 已知导入:rg "import.*React"
│ └─ 已知模式:rg "async function"
└─ 不知道 → 进入第二级
你的搜索意图是什么?
├─ "按含义/概念查找"
│ → 使用 grepai
├─ "查找函数/类定义"
│ → 使用 Serena
├─ "按代码结构查找"
│ → 使用 ast-grep
└─ "理解依赖关系"
→ 使用 grepai trace
结果太多?
├─ rg → 添加 --type 过滤或缩小路径
├─ grepai → 添加 --path 过滤或使用 trace
├─ Serena → 按符号类型过滤(函数/类)
└─ ast-grep → 为模式添加约束

根据风险等级决定对 AI 生成代码的审查力度:

┌─────────────────────────────────────────────────────────┐
│ 信任校准流程 │
├─────────────────────────────────────────────────────────┤
│ │
│ AI 生成代码 │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 什么类型? │ │
│ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 模板 业务 安全 │
│ 代码 逻辑 关键 │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 浏览 测试+ 全面审查 │
│ 即可 审查 + 工具 │
│ │ │ │ │
│ └────┴────┘ │
│ │ │
│ ▼ │
│ 测试通过? ──否──> 调试修复 │
│ │ │
│ 是 │
│ │ │
│ ▼ │
│ 发布 │
│ │
└─────────────────────────────────────────────────────────┘

┌──────────────────────────┐
│ │
▼ │
┌──────────────┐ │
│ RED │ │
│ 编写一个 │ │
│ 失败的 │ │
│ 测试 │ │
└──────┬───────┘ │
│ 测试失败 │
│ (预期的) │
▼ │
┌──────────────┐ │
│ GREEN │ │
│ 编写最小 │ │
│ 代码使 │ │
│ 测试通过 │ │
└──────┬───────┘ │
│ 测试通过 │
│ (最小化) │
▼ │
┌──────────────┐ │
│ REFACTOR │ │
│ 在测试 │ │
│ 保持通过 │ │
│ 的前提下 │ │
│ 清理代码 │ │
└──────┬───────┘ │
│ 下一个功能 │
└───────────────────────────┘

核心规则:

  • RED:在编写实现前,测试必须失败
  • GREEN:只写刚好能通过测试的代码(不多写)
  • REFACTOR:改善结构,测试必须保持通过
  • 循环:一次一个功能,始终按此顺序

┌─────────────────────────────────────────────────────────────┐
│ 安全三层防御 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 时间 ──────────────────────────────────────────────────> │
│ 事前 事中 事后 │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌───────────────┐ │
│ │ 第一层 │ │ 第二层 │ │ 第三层 │ │
│ │ 预防 │ │ 检测 │ │ 响应 │ │
│ │ │ │ │ │ │ │
│ │ - MCP 审查 │ │ - 提示注入 │ │ - 密钥 │ │
│ │ - 版本锁定 │ │ 检测 │ │ 轮换 │ │
│ │ - .claudeignore │ │ - 输出扫描 │ │ - MCP │ │
│ │ - 输入 Hook │ │ - 异常监控 │ │ 隔离 │ │
│ │ - 权限设置 │ │ - 密钥泄露 │ │ - 历史 │ │
│ │ │ │ 检测 │ │ 重写 │ │
│ │ │ │ │ │ │ │
│ │ 目标:在入口 │ │ 目标:实时 │ │ 目标:限制 │ │
│ │ 点阻断威胁 │ │ 捕获攻击 │ │ 损失并恢复 │ │
│ └─────────────────┘ └─────────────────┘ └───────────────┘ │
│ │
│ 采纳路径: │
│ 个人开发者 → 第一层基础 │
│ 团队 → 第一层 + 第二层 │
│ 企业 → 全部三层 │
│ │
└─────────────────────────────────────────────────────────────┘

密钥(API 密钥、令牌、密码)泄露时的紧急响应:

密钥泄露 — 应急响应时间线
═══════════════════════════════════════════════════════════
0 分钟 15 分钟 1 小时 24 小时
│ │ │ │
▼ ▼ ▼ ▼
┌──────────────────┐ ┌─────────────────┐ ┌────────────────┐
│ 前 15 分钟 │ │ 第一个小时 │ │ 前 24 小时 │
│ 止血 │ │ 评估损失 │ │ 补救 │
│ │ │ │ │ │
│ 1. 立即吊销 │ │ 3. 审计 git │ │ 6. 轮换所有 │
│ 密钥 │ │ 历史 │ │ 相关凭据 │
│ │ │ │ │ │
│ 2. 确认泄露 │ │ 4. 扫描依赖 │ │ 7. 通知团队 │
│ 范围 │ │ 中的密钥 │ │ /合规部门 │
│ │ │ │ │ │
│ │ │ 5. 检查 CI/CD │ │ 8. 记录事件 │
│ │ │ 日志 │ │ 时间线 │
└──────────────────┘ └─────────────────┘ └────────────────┘
严重程度指南:
┌─────────────────────────────────────────────────────────┐
│ 仅本地(未推送) → 吊销 + 轮换(步骤 1-2) │
│ 已推送到远程 → 完整时间线(步骤 1-8) │
│ 公开仓库泄露 → 假设已被利用,轮换所有凭据, │
│ 检查是否有滥用 │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│ 1. 研究(如 Perplexity 深度研究) │
│ "研究 Next.js 15 中 JWT 刷新令牌的最佳实践" │
│ → 输出:附带来源的详细规格说明 │
└───────────────────────────┬─────────────────────────────┘
| 导出为 spec.md
┌─────────────────────────────────────────────────────────┐
│ 2. CLAUDE CODE │
│ "按照 spec.md 实现 JWT 刷新令牌, │
│ 使用推荐的 jose 库。" │
│ → 输出:带测试的可工作实现 │
└─────────────────────────────────────────────────────────┘

┌─ "我要高质量代码" ──────────→ Claude TDD 工作流
├─ "我要先写规格再写代码" ────→ 规格优先工作流
├─ "我需要规划架构" ──────────→ 计划驱动开发
├─ "我在迭代某个功能" ────────→ 迭代优化工作流
└─ "我需要方法论理论" ────────→ 方法论概述