返回 AI大模型从0到1——理论与实操

C3-10 使用claude code(进阶)


核心原理:代理循环(Agentic Loop)

Claude Code 不仅仅是写代码,它能做任何从命令行可以做的事情

核心概念:Claude Code 的本质是一个"代理循环"——收集上下文 → 采取行动 → 验证结果,不断循环直到任务完成。

之前claude code代码泄露,代码核心逻辑就是一个大的while循环

基本使用:快速上手指南

基础对话:像和同事说话一样

Claude Code 是对话式的,你不需要完美的提示词。就像和一个聪明的同事交流:

四种工作模式

Shift+Tab 可以切换模式:

<grid>
<column width-ratio="0.500000">

📝 ### Default 模式

默认模式。Claude 修改文件或执行命令前会先问你。

适合:初学者、敏感操作

</column>
<column width-ratio="0.500000">

### Auto-accept 模式

Claude 自动编辑文件,只在执行特殊命令时才询问。

适合:熟练用户、快速开发

</column>
</grid>

<grid>
<column width-ratio="0.500000">

🔍 ### Plan 模式

Claude 只探索和制定计划,不修改任何文件。

适合:分析复杂问题、制定方案

</column>
<column width-ratio="0.500000">

🤖 ### Auto 模式

Claude 完全自主运行,后台安全检查代替人工审核。

适合:无人值守任务、CI/CD

</column>
</grid>

常用命令速查

🎁 不需要记命令,使用的时候输入斜杠会自动补全

<colgroup><col/><col/><col/></colgroup>
命令/快捷键功能说明快捷键
📋 会话管理(最常用)
/clear清空上下文,开始全新对话。任务切换时必用!别名:/reset、/new-
/compact压缩上下文(总结对话释放空间),可加焦点:/compact 关注 API 变更-
/rewind回退到之前的状态(代码+对话),类似"撤销"。别名:/undoEsc+Esc
/resume恢复之前的对话(从列表中选择)。别名:/continue-
/rename给当前会话命名,方便之后用 /resume 找到-
中断 Claude立即停止 Claude 当前操作,保留上下文可继续对话Esc
切换模式在 Default/Auto-accept/Plan/Auto 四种模式间切换Shift+Tab
🔧 项目配置(初始设置)
/init分析项目并自动生成 CLAUDE.md(新项目第一件事!)-
/memory编辑 CLAUDE.md 文件、管理自动记忆-
/permissions管理工具权限(允许/禁止哪些命令)。别名:/allowed-tools-
/config打开设置界面(主题、模型、风格等)。别名:/settings-
/doctor诊断安装问题,按 f 可让 Claude 自动修复-
/hooks查看和管理 Hook 配置-
🧠 模型与思考
/model切换 AI 模型(Sonnet 速度快、Opus 推理强)-
/effort调整推理深度:low/medium/high/xhigh/max/ultracode-
/fast切换快速模式(更快的输出速度)-
/plan直接进入 Plan 模式并开始规划,如 /plan 修复认证Bug-
📝 日常开发(高频使用)
/diff查看未提交的代码变更(交互式 diff 查看器)-
/code-review审查当前 diff 的正确性和代码质量。加 --fix 自动修复-
/context可视化上下文使用情况(看什么在占空间)-
/usage查看 token 消耗和费用统计。别名:/cost、/stats-
/copy将 Claude 最后一条回复复制到剪贴板-
/export导出整个对话为纯文本文件-
/btw快速问一个小问题,不会进入对话历史(不占上下文)-
🚀 进阶功能
/goal设置持续目标,Claude 会跨多轮工作直到满足条件-
/deep-research深度研究:多 Agent 并行搜索、交叉验证、生成引用报告-
/mcp管理 MCP 服务器连接(连接外部工具如 Notion、数据库)-
/skills列出所有可用的 Skills-
/workflows查看和管理动态工作流的运行状态-
/feedback提交反馈或报告 Bug。别名:/bug-

Claude配置系统

有没有人用 Claude Code 时遇到过这些困惑:

  • 我在 CLAUDE.md 里写了「回答用中文」,为什么有时候不生效?
  • 我明明改了项目规则,Claude 却像没看见一样。
  • Desktop 客户端怎么不像 CLI 那样有 /memory/context 命令?
  • 为什么我的同事和我的 Claude 表现不一样?

答案都在「Prompt 是怎么拼出来的」里。Claude 看到的不是单一来源的指令,而是七层拼接的结果。理解这七层,你就能精准控制 Claude 的行为。

💡 一句话核心:Claude 的 Prompt 是「层层叠加、按顺序拼接」的结果,后加载的规则优先级更高(不是「覆盖」而是「权重更大」)。

七层速览表

名称 存放位置 能否编辑
1 Anthropic 内置 base prompt 服务端 ❌ 不可见不可改
2 CLAUDE.md 文件链 多层级文件 ✅ 主要编辑对象
3 Skills 元信息 ~/.claude/skills/.claude/skills/ ✅ 通过 SKILL.md
4 MCP 工具描述 ~/.claude.json.mcp.json ✅ 通过 MCP 配置
5 Subagents 描述 ~/.claude/agents/.claude/agents/ ✅ 通过 agent 配置
6 Hooks 注入 ~/.claude/settings.json hooks 段 ✅ 编写 hook 脚本
7 用户 Prompt + 附件 每次会话输入 ✅ 完全可控

第 2 层 — CLAUDE.md 文件链(⭐ 重点)

加载顺序:

flowchart TB Start[启动 Claude 会话] --> M1[2a Managed policy CLAUDE.md Windows: C:\Program Files\ClaudeCode\CLAUDE.md macOS: /Library/Application Support/ClaudeCode/CLAUDE.md Linux: /etc/claude-code/CLAUDE.md 最高优先级 / 企业管控用] M1 --> M2[2b 用户级 ~/.claude/CLAUDE.md] M2 --> M3[2c 项目级 ./.claude/CLAUDE.md 或 ./CLAUDE.md] M3 --> M4[2d 个人项目级 ./CLAUDE.local.md 通常加入 .gitignore] M4 --> M5[2e 项目规则 .claude/rules/*.md 可按 paths 懒加载] M5 --> M6[2f 用户规则 ~/.claude/rules/*.md] M6 --> M7[2g @path 引入的外部文件 递归深度 ≤ 4 层 / 启动时全部展开] M7 --> M8[2h 子目录 CLAUDE.md Claude 访问该目录时按需懒加载] M8 --> M9[2i Auto memory MEMORY.md 前 200 行 / 25KB 上限] style M4 fill:#ff6b6b style M9 fill:#4ecdc4

  • 全部拼接,不是覆盖。所有 CLAUDE.md 都会被加载,按顺序拼接成一大段指令。
  • 顺序敏感。越靠后加载的规则,Claude 越倾向遵守。教学要点:项目级要放在 user 级后面
  • CLAUDE.md 作为 user message 注入(不是 system prompt)

🎼 /memory 命令查看自己项目里被加载的指令文件

演示:CLAUDE.md 优先级验证

第 3 层 — Skills 元信息

Skills 是 Anthropic 提供的能力扩展机制,每个 Skill 是一个目录,里面有 SKILL.md 描述这个 Skill 是干什么的。

加载机制:

  • Claude 启动时只加载每个 Skill 的 name + description(元信息),不加载完整内容
  • 当 Claude 判断某个 Skill 与当前任务相关,或用户手动调用 /skill-name 时,才懒加载完整正文
  • 存放位置:~/.claude/skills/(用户级)、.claude/skills/(项目级)

🏕️ /skills 查看当前会话注入了哪些 Skill 的元信息

第 4 层 — MCP 工具描述

MCP(Model Context Protocol)服务器会把自己的「我能做什么工具」注入到 Claude 的 context,让 Claude 知道可以调用它们。

场景 CLI 读取 Desktop 读取
Claude Code 引擎 ~/.claude.json.mcp.json 同上(共用)
Claude Desktop 聊天应用 claude mcp add-from-claude-desktop 导入 claude_desktop_config.json(Electron 应用数据目录)

🎹 Cli: /mcp 查看有哪些mcp可用。

Desktop: Settings → Claude Code → MCP Servers 查看

第 5 层 — Subagents 描述

Subagents 是 Claude Code 提供的「派生子任务」机制。每个 subagent 有自己的 description 字段,这个描述会注入到主会话的 context,让主 Claude 知道「什么任务该派给哪个子 agent」。

  • 存放位置:~/.claude/agents/(用户级)、.claude/agents/(项目级)
  • 只在本会话内可见,不会跨会话污染

查看方式:

  • CLI:/agents
  • Desktop:Settings → Claude Code → Agents

第 6 层 — Hooks 注入的 additionalContext(⭐ 最神奇的一层)

Hooks 是 Claude Code 的「事件钩子」机制,可以在 Claude 执行某些动作前后自动运行外部脚本。脚本可以通过返回 JSON 向 Claude 的 context 注入额外指令。

💡 核心区别:CLAUDE.md 里的规则是"建议",Claude 可能忽略。Hooks 是"法律",100% 确定执行,没有例外。

Hook 注入位置规则:

Hook 类型 注入位置 上限
SessionStart / Setup / SubagentStart 对话开头 10,000 字符 / hook
UserPromptSubmit 与用户 prompt 并列 同上
PreToolUse / PostToolUse 紧邻工具结果 同上
Stop / SubagentStop 当轮末尾 同上

演示:对话开头hook注入

🎯 常见用法:读 Git 历史自动注入「最近 3 次 commit 信息」

第 7 层 — 用户 Prompt + 附件

最后一层,是完全可控的部分。每次发送消息时,Claude 看到的最末尾就是你的 prompt 和附件。

  • 支持文本、图片(粘贴或拖拽)
  • 支持 @文件路径 语法引用项目内文件
  • 支持 /命令 前缀调用斜杠命令
  • Desktop 支持拖拽多个文件

Subagents & Agent Teams & Workflows

Subagents:独立的"专家顾问" 🧑‍💼

类比:Subagent 就像请一个外部专家来做特定的审查——他有自己独立的工作空间,做完后给你一份报告,不会弄乱你的桌面。

Subagents 的关键特点

- 独立上下文:在自己的上下文窗口中工作,不占用主对话空间,没有父对话历史

  • 只返回结论:探索了 100 个文件,但只返回简洁的总结
  • 可并行:父可同时发起多个子代理处理不同任务

创建自定义 Subagent

Markdown
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
---
name: security-reviewer
description: Reviews code for security vulnerabilities
tools: Read, Grep, Glob, Bash
model: opus
---
You are a senior security engineer. Review code for:
- Injection vulnerabilities (SQL, XSS, command injection)
- Authentication and authorization flaws
- Secrets or credentials in code
- Insecure data handling

Provide specific line references and suggested fixes.

AgentTeams:团队协作模式 🤝

💡 注意:Agent Teams 目前是实验性功能,需要手动启用。在 settings.json 中设置 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS 环境变量为 1。

启用方法

Plain Text
1
2
3
4
5
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

使用示例

示例 1:并行代码审查(不同视角同时审查)

JSON
1
2
3
4
5
Spawn three teammates to review PR #142:
- One focused on security implications(安全视角)
- One checking performance impact(性能视角)
- One validating test coverage(测试覆盖视角)
Have them each review and report findings.

效果:三位"审查专家"同时从不同角度审查代码,最后由负责人综合所有发现。

示例 2:竞争假设调试(用辩论找到真相)

Plain Text
1
2
3
4
5
Users report the app exits after one message.
Spawn 5 teammates to investigate different hypotheses.
Have them talk to each other to disprove each other theories,
like a scientific debate.
Update the findings doc with whatever consensus emerges.

效果:5 个 Agent 各自提出不同的假设,然后互相质疑、试图推翻对方的理论。最终存活下来的假设最可能是真正的根因。

💡 为什么"辩论"比"顺序调查"更有效?

单个 Agent 调查时容易"锚定"——一旦找到一个看似合理的解释就停止寻找。多个独立调查者积极互相反驳,能避免确认偏误,存活下来的理论更可靠。

Dynamic Workflows:脚本驱动的编排器 ⚙️

核心区别:Agent Teams 靠负责人"开会协调",Workflows 靠"脚本代码"确定性执行。就像工厂流水线——每个工位做什么、做完去哪里,都由程序预先写好。

触发方式

方式 说明
关键词触发 在提示中使用 ultracode 关键词,Claude 自动编写工作流
设置 effort 级别 运行 /effort ultracode,Claude 为每个复杂任务自动规划工作流
运行已有工作流 使用 /deep-research 等内置命令,或自己保存的工作流
自然语言请求 "使用工作流来审计所有 API 端点"

内置工作流:/deep-research

Claude Code 内置了 /deep-research 工作流,用于深度研究:

  1. 从多个角度扇出网络搜索
  2. 获取并阅读找到的来源
  3. 对每个声明进行交叉检查投票
  4. 返回一份引用的报告(未通过交叉检查的声明被过滤掉)
Plain Text
1
/deep-research Node.js 权限模型在 v20 和 v22 之间有什么变化?

保存和复用工作流

当 Claude 为你编写了一个有用的工作流后:

  1. 运行 /workflows 查看已完成的运行
  2. 选择想保留的运行,按 s 保存
  3. 选择保存位置:项目目录(团队共享)或 \~/.claude/(个人使用)
  4. 之后用 /工作流名称 直接运行

三种模式对比

特性 Subagents(子代理) Agent Teams(团队) Workflows(工作流)
它是什么 Claude 生成的工作者 能互相沟通的对等会话 脚本驱动的编排器
谁做决策 Claude,逐轮决定 负责人 + 队友自治 脚本代码
Agent 间通信 ❌ 只向主 Agent 汇报 ✅ 队友直接互发消息 ✅ 通过脚本变量传递
可重复性 低(依赖当时决策) 中(依赖负责人协调) 高(脚本确定性执行)
类比 派实习生查资料 项目组开会协作 工厂流水线