<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Hooks on Chico's Tech Blog</title><link>https://realtime-ai.chat/tags/hooks/</link><description>Recent content in Hooks on Chico's Tech Blog</description><image><title>Chico's Tech Blog</title><url>https://github.com/chicogong.png</url><link>https://github.com/chicogong.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 26 Dec 2025 10:00:00 +0800</lastBuildDate><atom:link href="https://realtime-ai.chat/tags/hooks/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code 高级功能实战：MCP、Hooks、SubAgent 与自定义命令</title><link>https://realtime-ai.chat/posts/claude-code-advanced-features/</link><pubDate>Fri, 26 Dec 2025 10:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/claude-code-advanced-features/</guid><description>Claude Code 高级功能实战:MCP、Hooks、SubAgent 与自定义命令,把 AI 编程从「对话写代码」升级为自动化工作流。</description><content:encoded><![CDATA[<h2 id="前言不只是聊天机器人">前言：不只是聊天机器人</h2>
<p>大多数人使用 Claude Code 只是简单地&quot;对话写代码&quot;。但 Claude Code 的真正威力在于它的<strong>可扩展性</strong>和<strong>自动化能力</strong>。</p>
<p>本文将深入介绍 Claude Code 的四大高级功能：</p>
<ol>
<li><strong>MCP（Model Context Protocol）</strong>：让 Claude 连接外部工具和数据源</li>
<li><strong>Hooks</strong>：在关键节点插入自动化脚本</li>
<li><strong>SubAgent 多智能体架构</strong>：并发执行复杂任务</li>
<li><strong>CLAUDE.md 配置系统</strong>：定义项目规范和工作流</li>
</ol>
<p>这些功能组合起来，能让 Claude Code 从一个&quot;AI助手&quot;进化成&quot;AI工程师团队&quot;。</p>
<hr>
<h2 id="一mcp让-claude-连接一切">一、MCP：让 Claude 连接一切</h2>
<h3 id="11-什么是-mcp">1.1 什么是 MCP？</h3>
<p>MCP（Model Context Protocol）是 Anthropic 推出的开放协议，让 AI 模型能够与外部工具和数据源进行标准化交互。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">传统方式：Claude 只能看到你发给它的文本
</span></span><span class="line"><span class="cl">MCP方式：Claude 可以主动调用工具获取信息
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">┌─────────────┐     MCP协议      ┌─────────────┐
</span></span><span class="line"><span class="cl">│  Claude Code │ ◄────────────► │  外部服务    │
</span></span><span class="line"><span class="cl">└─────────────┘                 └─────────────┘
</span></span><span class="line"><span class="cl">                                    ├── 文件系统
</span></span><span class="line"><span class="cl">                                    ├── 数据库
</span></span><span class="line"><span class="cl">                                    ├── GitHub
</span></span><span class="line"><span class="cl">                                    ├── Slack
</span></span><span class="line"><span class="cl">                                    ├── Google Drive
</span></span><span class="line"><span class="cl">                                    └── 自定义工具
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="12-配置-mcp-服务器">1.2 配置 MCP 服务器</h3>
<p><strong>方法一：命令行添加（推荐）</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 添加文件系统访问</span>
</span></span><span class="line"><span class="cl">claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ~/Documents ~/Projects
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 添加 GitHub 集成</span>
</span></span><span class="line"><span class="cl">claude mcp add github -e <span class="nv">GITHUB_TOKEN</span><span class="o">=</span>your_token -- npx -y @modelcontextprotocol/server-github
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 添加内存服务（持久化记忆）</span>
</span></span><span class="line"><span class="cl">claude mcp add memory -- npx -y @modelcontextprotocol/server-memory
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 查看已配置的服务器</span>
</span></span><span class="line"><span class="cl">claude mcp list
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>方法二：JSON 配置文件</strong></p>
<p>编辑 <code>~/.claude/settings.json</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;mcpServers&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;filesystem&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npx&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;args&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;-y&#34;</span><span class="p">,</span> <span class="s2">&#34;@modelcontextprotocol/server-filesystem&#34;</span><span class="p">,</span> <span class="s2">&#34;/Users/me/Projects&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;env&#34;</span><span class="p">:</span> <span class="p">{}</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;github&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npx&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;args&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;-y&#34;</span><span class="p">,</span> <span class="s2">&#34;@modelcontextprotocol/server-github&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;env&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;GITHUB_TOKEN&#34;</span><span class="p">:</span> <span class="s2">&#34;ghp_xxxxxxxxxxxx&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;postgres&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npx&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;args&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;-y&#34;</span><span class="p">,</span> <span class="s2">&#34;@modelcontextprotocol/server-postgres&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;env&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;DATABASE_URL&#34;</span><span class="p">:</span> <span class="s2">&#34;postgresql://user:pass@localhost:5432/mydb&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="13-常用-mcp-服务器">1.3 常用 MCP 服务器</h3>
<table>
  <thead>
      <tr>
          <th style="text-align: left">服务器</th>
          <th style="text-align: left">用途</th>
          <th style="text-align: left">安装命令</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left">filesystem</td>
          <td style="text-align: left">读写本地文件</td>
          <td style="text-align: left"><code>@modelcontextprotocol/server-filesystem</code></td>
      </tr>
      <tr>
          <td style="text-align: left">github</td>
          <td style="text-align: left">GitHub 操作</td>
          <td style="text-align: left"><code>@modelcontextprotocol/server-github</code></td>
      </tr>
      <tr>
          <td style="text-align: left">postgres</td>
          <td style="text-align: left">数据库查询</td>
          <td style="text-align: left"><code>@modelcontextprotocol/server-postgres</code></td>
      </tr>
      <tr>
          <td style="text-align: left">memory</td>
          <td style="text-align: left">持久化记忆</td>
          <td style="text-align: left"><code>@modelcontextprotocol/server-memory</code></td>
      </tr>
      <tr>
          <td style="text-align: left">slack</td>
          <td style="text-align: left">Slack 消息</td>
          <td style="text-align: left"><code>@modelcontextprotocol/server-slack</code></td>
      </tr>
      <tr>
          <td style="text-align: left">puppeteer</td>
          <td style="text-align: left">网页自动化</td>
          <td style="text-align: left"><code>@modelcontextprotocol/server-puppeteer</code></td>
      </tr>
  </tbody>
</table>
<h3 id="14-实战连接数据库查询">1.4 实战：连接数据库查询</h3>
<p>配置 PostgreSQL MCP 后，你可以这样使用：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">You: 帮我查一下最近7天注册的用户数量，按天分组
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Claude: 我来查询数据库...
</span></span><span class="line"><span class="cl">[调用 postgres MCP 服务器]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">查询结果：
</span></span><span class="line"><span class="cl">| 日期 | 新增用户数 |
</span></span><span class="line"><span class="cl">|------|-----------|
</span></span><span class="line"><span class="cl">| 12-20 | 156 |
</span></span><span class="line"><span class="cl">| 12-21 | 189 |
</span></span><span class="line"><span class="cl">| 12-22 | 203 |
</span></span><span class="line"><span class="cl">| 12-23 | 178 |
</span></span><span class="line"><span class="cl">| 12-24 | 245 |
</span></span><span class="line"><span class="cl">| 12-25 | 312 |
</span></span><span class="line"><span class="cl">| 12-26 | 198 |
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">总计：1,481 位新用户
</span></span><span class="line"><span class="cl">可以看出 12-25（圣诞节）有明显的注册高峰。
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="二hooks自动化工作流的核心">二、Hooks：自动化工作流的核心</h2>
<h3 id="21-什么是-hooks">2.1 什么是 Hooks？</h3>
<p>Hooks 是 Claude Code 生命周期中的&quot;钩子&quot;，让你在特定事件发生时自动执行脚本。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">用户输入 → [UserPromptSubmit Hook] → Claude 思考
</span></span><span class="line"><span class="cl">                                          ↓
</span></span><span class="line"><span class="cl">                              [PreToolUse Hook] → 工具执行
</span></span><span class="line"><span class="cl">                                                      ↓
</span></span><span class="line"><span class="cl">                                          [PostToolUse Hook] → 返回结果
</span></span><span class="line"><span class="cl">                                                                   ↓
</span></span><span class="line"><span class="cl">                                                          [Stop Hook] → 会话结束
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="22-官方-8-大事件">2.2 官方 8 大事件</h3>
<table>
  <thead>
      <tr>
          <th style="text-align: left">事件</th>
          <th style="text-align: left">触发时机</th>
          <th style="text-align: left">可用变量</th>
          <th style="text-align: left">能否阻断</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left"><code>SessionStart</code></td>
          <td style="text-align: left">会话新建/resume</td>
          <td style="text-align: left">无</td>
          <td style="text-align: left">❌</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>UserPromptSubmit</code></td>
          <td style="text-align: left">用户按回车前</td>
          <td style="text-align: left"><code>prompt</code></td>
          <td style="text-align: left">✅</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>PreToolUse</code></td>
          <td style="text-align: left">工具准备执行前</td>
          <td style="text-align: left"><code>tool_name</code>, <code>tool_input</code></td>
          <td style="text-align: left">✅</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>PostToolUse</code></td>
          <td style="text-align: left">工具执行结束后</td>
          <td style="text-align: left"><code>tool_name</code>, <code>tool_input</code>, <code>tool_output</code></td>
          <td style="text-align: left">❌</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>Notification</code></td>
          <td style="text-align: left">Claude 需要用户输入</td>
          <td style="text-align: left"><code>notification_text</code></td>
          <td style="text-align: left">❌</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>Stop</code></td>
          <td style="text-align: left">回答整体结束</td>
          <td style="text-align: left">无</td>
          <td style="text-align: left">❌</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>SubagentStop</code></td>
          <td style="text-align: left">子代理任务结束</td>
          <td style="text-align: left"><code>subagent_name</code>, <code>result</code></td>
          <td style="text-align: left">❌</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>PreCompact</code></td>
          <td style="text-align: left">压缩对话缓存前</td>
          <td style="text-align: left">无</td>
          <td style="text-align: left">❌</td>
      </tr>
  </tbody>
</table>
<h3 id="23-配置-hooks">2.3 配置 Hooks</h3>
<p><strong>全局配置</strong> <code>~/.claude/settings.json</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;PreToolUse&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;matcher&#34;</span><span class="p">:</span> <span class="s2">&#34;Bash&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;echo &#39;[AUDIT] Bash command: $TOOL_INPUT&#39; &gt;&gt; ~/.claude/audit.log&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;PostToolUse&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;matcher&#34;</span><span class="p">:</span> <span class="s2">&#34;Write&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span> 
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npx prettier --write $FILE_PATH 2&gt;/dev/null || true&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;UserPromptSubmit&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;/path/to/validate-prompt.sh&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>项目级配置</strong> <code>.claude/settings.local.json</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;PostToolUse&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;matcher&#34;</span><span class="p">:</span> <span class="s2">&#34;Write&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npm run lint:fix -- $FILE_PATH&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="24-实战示例">2.4 实战示例</h3>
<p><strong>示例1：自动格式化代码</strong></p>
<p>每次 Claude 写入文件后，自动运行 Prettier：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;PostToolUse&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;matcher&#34;</span><span class="p">:</span> <span class="s2">&#34;Write|Edit|MultiEdit&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npx prettier --write \&#34;$TOOL_INPUT\&#34; 2&gt;/dev/null || true&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>示例2：危险命令拦截</strong></p>
<p>阻止执行危险的 Bash 命令：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span><span class="c1"># ~/.claude/scripts/validate-bash.sh</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">DANGEROUS_PATTERNS</span><span class="o">=</span><span class="s2">&#34;rm -rf|DROP TABLE|DELETE FROM|format|mkfs&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="nb">echo</span> <span class="s2">&#34;</span><span class="nv">$TOOL_INPUT</span><span class="s2">&#34;</span> <span class="p">|</span> grep -qE <span class="s2">&#34;</span><span class="nv">$DANGEROUS_PATTERNS</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;BLOCKED: 检测到危险命令&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">exit</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">exit</span> <span class="m">0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;PreToolUse&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;matcher&#34;</span><span class="p">:</span> <span class="s2">&#34;Bash&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;~/.claude/scripts/validate-bash.sh&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>示例3：Slack 通知</strong></p>
<p>任务完成后发送 Slack 通知：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;Stop&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;curl -X POST -H &#39;Content-type: application/json&#39; --data &#39;{\&#34;text\&#34;:\&#34;Claude Code 任务完成!\&#34;}&#39; $SLACK_WEBHOOK_URL&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="三subagent多智能体并发架构">三、SubAgent：多智能体并发架构</h2>
<h3 id="31-架构原理">3.1 架构原理</h3>
<p>Claude Code 采用分层多 Agent 架构，通过<strong>主 Agent</strong>和<strong>SubAgent</strong>协作处理复杂任务：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">用户请求
</span></span><span class="line"><span class="cl">    ↓
</span></span><span class="line"><span class="cl">主 Agent (nO 函数)
</span></span><span class="line"><span class="cl">    ↓
</span></span><span class="line"><span class="cl">是否调用 Task 工具？
</span></span><span class="line"><span class="cl">    ├── 否 → 直接处理 → 返回结果
</span></span><span class="line"><span class="cl">    └── 是 → 创建 SubAgent
</span></span><span class="line"><span class="cl">              ↓
</span></span><span class="line"><span class="cl">         并发执行调度器 (UH1)
</span></span><span class="line"><span class="cl">              ↓
</span></span><span class="line"><span class="cl">         多个 SubAgent 并行执行
</span></span><span class="line"><span class="cl">              ↓
</span></span><span class="line"><span class="cl">         结果合成器 (KN5)
</span></span><span class="line"><span class="cl">              ↓
</span></span><span class="line"><span class="cl">         返回合成结果
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="32-核心特性">3.2 核心特性</h3>
<ol>
<li><strong>完全隔离的执行环境</strong>：每个 SubAgent 在独立上下文中运行</li>
<li><strong>智能并发调度</strong>：支持最多 10 个 Agent 并发执行</li>
<li><strong>安全权限控制</strong>：SubAgent 无法调用 Task 工具（防止递归）</li>
<li><strong>高效结果合成</strong>：智能合并多个 Agent 的输出</li>
</ol>
<h3 id="33-task-工具使用">3.3 Task 工具使用</h3>
<p>当你给 Claude Code 一个复杂任务时，它会自动决定是否使用 SubAgent：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">You: 分析这个项目的代码质量，包括：
</span></span><span class="line"><span class="cl">1. 代码结构是否合理
</span></span><span class="line"><span class="cl">2. 是否有潜在的性能问题
</span></span><span class="line"><span class="cl">3. 测试覆盖率如何
</span></span><span class="line"><span class="cl">4. 安全漏洞检查
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Claude: 这是一个复杂的分析任务，我会启动多个 SubAgent 并行处理：
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[启动 SubAgent 1] 分析代码结构...
</span></span><span class="line"><span class="cl">[启动 SubAgent 2] 检查性能问题...
</span></span><span class="line"><span class="cl">[启动 SubAgent 3] 分析测试覆盖率...
</span></span><span class="line"><span class="cl">[启动 SubAgent 4] 扫描安全漏洞...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[等待所有 SubAgent 完成...]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[合成结果] 综合所有 Agent 的分析：
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="34-subagent-可用工具">3.4 SubAgent 可用工具</h3>
<p>SubAgent 可以使用以下工具：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">SUBAGENT_ALLOWED_TOOLS</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="s1">&#39;Read&#39;</span><span class="p">,</span>       <span class="c1">// 读取文件
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;Write&#39;</span><span class="p">,</span>      <span class="c1">// 写入文件
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;Edit&#39;</span><span class="p">,</span>       <span class="c1">// 编辑文件
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;MultiEdit&#39;</span><span class="p">,</span>  <span class="c1">// 多处编辑
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;Glob&#39;</span><span class="p">,</span>       <span class="c1">// 文件搜索
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;Grep&#39;</span><span class="p">,</span>       <span class="c1">// 内容搜索
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;Bash&#39;</span><span class="p">,</span>       <span class="c1">// 执行命令
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;WebFetch&#39;</span><span class="p">,</span>   <span class="c1">// 网页获取
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;WebSearch&#39;</span><span class="p">,</span>  <span class="c1">// 网络搜索
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;TodoRead&#39;</span><span class="p">,</span>   <span class="c1">// 读取任务
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s1">&#39;TodoWrite&#39;</span><span class="p">,</span>  <span class="c1">// 写入任务
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// 被禁用的工具（防止递归）
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span> <span class="nx">BLOCKED_TOOLS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Task&#39;</span><span class="p">];</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="35-并发执行示例">3.5 并发执行示例</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">You: 帮我同时搜索项目中所有的 TODO 注释、FIXME 标记和废弃的 API 调用
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Claude: 我会并行启动 3 个搜索任务：
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[SubAgent 1] 搜索 TODO 注释...
</span></span><span class="line"><span class="cl">[SubAgent 2] 搜索 FIXME 标记...
</span></span><span class="line"><span class="cl">[SubAgent 3] 搜索废弃 API 调用...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">--- 3 秒后 ---
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[SubAgent 1 完成] 找到 23 个 TODO
</span></span><span class="line"><span class="cl">[SubAgent 2 完成] 找到 8 个 FIXME
</span></span><span class="line"><span class="cl">[SubAgent 3 完成] 找到 5 个废弃 API
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[合成结果]
</span></span><span class="line"><span class="cl">## 代码待办事项汇总
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">### TODO (23处)
</span></span><span class="line"><span class="cl">- src/api/user.ts:45 - TODO: 添加缓存
</span></span><span class="line"><span class="cl">- src/components/Table.tsx:123 - TODO: 优化渲染性能
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">### FIXME (8处)
</span></span><span class="line"><span class="cl">- src/utils/date.ts:67 - FIXME: 时区处理有问题
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">### 废弃 API (5处)
</span></span><span class="line"><span class="cl">- src/legacy/auth.ts:12 - 使用了已废弃的 crypto.createCipher
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="四claudemd-配置系统">四、CLAUDE.md 配置系统</h2>
<h3 id="41-三级配置文件">4.1 三级配置文件</h3>
<p>Claude Code 使用三类 <code>.md</code> 文件进行配置，优先级从高到低：</p>
<table>
  <thead>
      <tr>
          <th style="text-align: left">文件</th>
          <th style="text-align: left">位置</th>
          <th style="text-align: left">作用范围</th>
          <th style="text-align: left">版本控制</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left"><code>CLAUDE.local.md</code></td>
          <td style="text-align: left">项目根目录</td>
          <td style="text-align: left">当前用户</td>
          <td style="text-align: left">❌ 不提交</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>CLAUDE.md</code></td>
          <td style="text-align: left">项目根目录</td>
          <td style="text-align: left">当前项目</td>
          <td style="text-align: left">✅ 提交</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>~/.claude/CLAUDE.md</code></td>
          <td style="text-align: left">用户目录</td>
          <td style="text-align: left">所有项目</td>
          <td style="text-align: left">❌ 不提交</td>
      </tr>
  </tbody>
</table>
<h3 id="42-创建项目配置">4.2 创建项目配置</h3>
<p>使用 <code>/init</code> 命令自动生成：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">claude
</span></span><span class="line"><span class="cl">&gt; /init
</span></span></code></pre></td></tr></table>
</div>
</div><p>这会在项目根目录创建 <code>CLAUDE.md</code> 文件。</p>
<h3 id="43-配置示例">4.3 配置示例</h3>
<p><strong>项目级 CLAUDE.md</strong>（提交到 Git）：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gh"># 项目配置
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl"><span class="gu">## 项目概述
</span></span></span><span class="line"><span class="cl"><span class="gu"></span>这是一个 Next.js 14 电商平台，使用 TypeScript + Prisma + PostgreSQL。
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 技术栈
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 框架：Next.js 14 (App Router)
</span></span><span class="line"><span class="cl"><span class="k">-</span> 语言：TypeScript 5.x (严格模式)
</span></span><span class="line"><span class="cl"><span class="k">-</span> 数据库：PostgreSQL + Prisma ORM
</span></span><span class="line"><span class="cl"><span class="k">-</span> 样式：Tailwind CSS
</span></span><span class="line"><span class="cl"><span class="k">-</span> 状态管理：Zustand
</span></span><span class="line"><span class="cl"><span class="k">-</span> 测试：Vitest + Testing Library
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 代码规范
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 使用 ESLint + Prettier 格式化
</span></span><span class="line"><span class="cl"><span class="k">-</span> 组件使用函数式写法
</span></span><span class="line"><span class="cl"><span class="k">-</span> 所有函数必须有 JSDoc 注释
</span></span><span class="line"><span class="cl"><span class="k">-</span> 禁止使用 any 类型
</span></span><span class="line"><span class="cl"><span class="k">-</span> 错误处理使用自定义 Error 类
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 目录结构
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>src/
├── app/           # Next.js App Router 页面
├── components/    # React 组件
├── lib/           # 工具函数和配置
├── hooks/         # 自定义 Hooks
├── types/         # TypeScript 类型定义
└── prisma/        # 数据库 Schema</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">## 常用命令
</span></span><span class="line"><span class="cl">- `npm run dev` - 启动开发服务器
</span></span><span class="line"><span class="cl">- `npm run build` - 构建生产版本
</span></span><span class="line"><span class="cl">- `npm run test` - 运行测试
</span></span><span class="line"><span class="cl">- `npm run lint` - 代码检查
</span></span><span class="line"><span class="cl">- `npx prisma studio` - 打开数据库管理界面
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">## Git 提交规范
</span></span><span class="line"><span class="cl">- feat: 新功能
</span></span><span class="line"><span class="cl">- fix: 修复 Bug
</span></span><span class="line"><span class="cl">- refactor: 重构
</span></span><span class="line"><span class="cl">- docs: 文档
</span></span><span class="line"><span class="cl">- test: 测试
</span></span><span class="line"><span class="cl">- chore: 构建/工具
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">## 注意事项
</span></span><span class="line"><span class="cl">- 数据库敏感操作需要人工确认
</span></span><span class="line"><span class="cl">- 不要直接修改 prisma/migrations 目录
</span></span><span class="line"><span class="cl">- API 路由必须有权限验证
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>个人本地配置 CLAUDE.local.md</strong>（不提交）：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gh"># 本地配置
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl"><span class="gu">## 个人偏好
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 我喜欢详细的注释
</span></span><span class="line"><span class="cl"><span class="k">-</span> 代码示例要完整可运行
</span></span><span class="line"><span class="cl"><span class="k">-</span> 解释时使用中文
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 本地环境
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> Node.js: v20.10.0
</span></span><span class="line"><span class="cl"><span class="k">-</span> 数据库：本地 Docker 容器
</span></span><span class="line"><span class="cl"><span class="k">-</span> 端口：3000 (开发), 5432 (PostgreSQL)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 调试配置
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 使用 VS Code 调试
</span></span><span class="line"><span class="cl"><span class="k">-</span> 断点调试端口: 9229
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>全局配置 ~/.claude/CLAUDE.md</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gh"># 全局配置
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl"><span class="gu">## 通用规范
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 使用 2 空格缩进
</span></span><span class="line"><span class="cl"><span class="k">-</span> 变量命名使用 camelCase
</span></span><span class="line"><span class="cl"><span class="k">-</span> 常量使用 UPPER_SNAKE_CASE
</span></span><span class="line"><span class="cl"><span class="k">-</span> 组件使用 PascalCase
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 默认工具
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 包管理器：pnpm
</span></span><span class="line"><span class="cl"><span class="k">-</span> 版本控制：Git
</span></span><span class="line"><span class="cl"><span class="k">-</span> 编辑器：VS Code
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 安全规则
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 不要在代码中硬编码密钥
</span></span><span class="line"><span class="cl"><span class="k">-</span> 敏感文件（.env）不要提交
</span></span><span class="line"><span class="cl"><span class="k">-</span> API 调用必须有超时设置
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="44-自定义斜杠命令">4.4 自定义斜杠命令</h3>
<p>在 <code>.claude/commands/</code> 目录下创建 Markdown 文件，即可定义自定义命令：</p>
<p><strong>文件结构</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">.claude/
</span></span><span class="line"><span class="cl">└── commands/
</span></span><span class="line"><span class="cl">    ├── review.md      # /review 命令
</span></span><span class="line"><span class="cl">    ├── test.md        # /test 命令
</span></span><span class="line"><span class="cl">    └── deploy.md      # /deploy 命令
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>示例：review.md</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">请对当前项目进行代码审查：
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">1.</span> 检查代码质量
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 是否有重复代码
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 函数是否过长
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 命名是否清晰
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">2.</span> 检查潜在问题
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 是否有未处理的错误
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 是否有性能问题
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 是否有安全漏洞
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">3.</span> 检查最佳实践
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 是否遵循项目规范
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 是否有充分的测试
</span></span><span class="line"><span class="cl">   <span class="k">-</span> 是否有必要的注释
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">请提供详细的改进建议。
</span></span></code></pre></td></tr></table>
</div>
</div><p>使用：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&gt; /review
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="五综合实战打造个人-ai-工作流">五、综合实战：打造个人 AI 工作流</h2>
<h3 id="51-完整配置示例">5.1 完整配置示例</h3>
<p>结合以上所有功能，配置一个完整的 AI 开发工作流：</p>
<p><strong>~/.claude/settings.json</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;mcpServers&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;filesystem&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npx&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;args&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;-y&#34;</span><span class="p">,</span> <span class="s2">&#34;@modelcontextprotocol/server-filesystem&#34;</span><span class="p">,</span> <span class="s2">&#34;~/Projects&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;env&#34;</span><span class="p">:</span> <span class="p">{}</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;github&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npx&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;args&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;-y&#34;</span><span class="p">,</span> <span class="s2">&#34;@modelcontextprotocol/server-github&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;env&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;GITHUB_TOKEN&#34;</span><span class="p">:</span> <span class="s2">&#34;${GITHUB_TOKEN}&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;PostToolUse&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;matcher&#34;</span><span class="p">:</span> <span class="s2">&#34;Write|Edit&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;npx prettier --write \&#34;$FILE_PATH\&#34; 2&gt;/dev/null || true&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;Stop&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;hooks&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;echo \&#34;[$(date)] Task completed\&#34; &gt;&gt; ~/.claude/activity.log&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;permissions&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;allow&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="s2">&#34;Bash(npm run *)&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="s2">&#34;Bash(git *)&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="s2">&#34;Bash(npx prettier *)&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;deny&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="s2">&#34;Bash(rm -rf *)&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="s2">&#34;Bash(sudo *)&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="52-工作流示例">5.2 工作流示例</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">1. 启动项目
</span></span><span class="line"><span class="cl">   &gt; claude
</span></span><span class="line"><span class="cl">   &gt; /init  # 生成 CLAUDE.md
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">2. 查看项目状态
</span></span><span class="line"><span class="cl">   &gt; /review  # 运行自定义代码审查命令
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">3. 开发新功能
</span></span><span class="line"><span class="cl">   &gt; 帮我实现用户头像上传功能，要支持裁剪和压缩
</span></span><span class="line"><span class="cl">   
</span></span><span class="line"><span class="cl">   [Claude 自动]:
</span></span><span class="line"><span class="cl">   - 分析项目结构
</span></span><span class="line"><span class="cl">   - 创建组件文件（自动格式化）
</span></span><span class="line"><span class="cl">   - 编写测试用例
</span></span><span class="line"><span class="cl">   - 更新文档
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">4. 提交代码
</span></span><span class="line"><span class="cl">   &gt; 提交这些改动，写一个清晰的 commit message
</span></span><span class="line"><span class="cl">   
</span></span><span class="line"><span class="cl">   [Claude 使用 GitHub MCP]:
</span></span><span class="line"><span class="cl">   - 生成 commit message
</span></span><span class="line"><span class="cl">   - 创建 commit
</span></span><span class="line"><span class="cl">   - 可选：创建 PR
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="总结">总结</h2>
<p>Claude Code 的高级功能让它从一个简单的 AI 聊天工具，变成了一个真正的<strong>AI 开发平台</strong>：</p>
<table>
  <thead>
      <tr>
          <th style="text-align: left">功能</th>
          <th style="text-align: left">作用</th>
          <th style="text-align: left">收益</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left"><strong>MCP</strong></td>
          <td style="text-align: left">连接外部工具和数据</td>
          <td style="text-align: left">扩展能力边界</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>Hooks</strong></td>
          <td style="text-align: left">自动化工作流</td>
          <td style="text-align: left">减少重复操作</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>SubAgent</strong></td>
          <td style="text-align: left">并发处理复杂任务</td>
          <td style="text-align: left">提升效率</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>CLAUDE.md</strong></td>
          <td style="text-align: left">定义项目规范</td>
          <td style="text-align: left">保持一致性</td>
      </tr>
  </tbody>
</table>
<p>掌握这些功能，你就能把 Claude Code 打造成专属的 AI 工程师团队。</p>
<hr>
<h2 id="参考资源">参考资源</h2>
<ul>
<li><a href="https://docs.anthropic.com/claude-code">Claude Code 官方文档</a></li>
<li><a href="https://modelcontextprotocol.io">MCP 协议规范</a></li>
<li><a href="https://github.com/modelcontextprotocol/servers">MCP 服务器列表</a></li>
</ul>
]]></content:encoded></item></channel></rss>