<?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>Claude Code on Chico's Tech Blog</title><link>https://realtime-ai.chat/tags/claude-code/</link><description>Recent content in Claude Code 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>Mon, 18 May 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://realtime-ai.chat/tags/claude-code/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><item><title>AI IDE 这半年:Cursor、Claude Code、Windsurf 之后</title><link>https://realtime-ai.chat/posts/ai-ide-2026/</link><pubDate>Mon, 18 May 2026 11:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/ai-ide-2026/</guid><description>复盘 2026 上半年 AI 编程工具的演变:从代码补全到后台 agent,Cursor、Claude Code、Windsurf、Copilot 的真实定位与差异,以及开发者从写代码转向审代码、派活的工作方式变化。</description><content:encoded><![CDATA[<p>上周三下午,我同时开着四个东西:Cursor 里一个 agent 在改重构,终端里 Claude Code 在跑测试,GitHub 上一个 Copilot 后台 agent 在处理我早上随手丢过去的 issue,还有一个 Cursor 云端 automation 在等 CI 结果。我本人那段时间在干嘛?在看 Linear 上的工单,决定下一个派给谁。</p>
<p>我没写一行代码。但那个下午合并了五个 PR。</p>
<p>这不是什么&quot;未来已来&quot;的感慨。这是 2026 年 5 月一个普通工程师的普通下午。半年前——也就是 2025 年底——我的工作方式还不是这样。那时候 AI 编程工具的主流形态是&quot;一个很聪明的补全&quot;,你在编辑器里写代码,它帮你接下一段。现在,补全这件事我几乎已经感觉不到它的存在了,因为我的注意力整个挪到了别处。</p>
<p>这半年到底发生了什么,值得拆开看看。</p>
<h2 id="三级跳补全--终端-agent--后台-agent">三级跳:补全 → 终端 agent → 后台 agent</h2>
<p>如果要给 AI 编程工具这半年画一条线,它是这样三级跳的:</p>
<pre class="mermaid">flowchart LR
  A[代码补全<br/>2023-2024] --> B[IDE 内 agent<br/>2025] --> C[终端 agent<br/>2025 下半年] --> D[后台/云端 agent<br/>2026]
  style A fill:#e8e8e8,stroke:#999
  style B fill:#fde7c2,stroke:#e8b23c
  style C fill:#fde7c2,stroke:#e8b23c
  style D fill:#c2e0fd,stroke:#3c8ce8
</pre><p>第一级是<strong>补全</strong>:Copilot 那套,光标后面灰字提示,你按 Tab 接受。这个形态决定了一件事——AI 是你的副驾驶,方向盘还在你手里,你得一直盯着路。</p>
<p>第二级是 <strong>IDE 内的 agent</strong>:Cursor 的 Composer、Windsurf 的 Cascade。它不再是接一段,而是&quot;你说要干什么,它跨多个文件改完给你看&quot;。方向盘开始松动了,但你还在车里。</p>
<p>第三级是 <strong>终端 agent</strong>:Claude Code 是把这个形态做出影响力的那个。它干脆不要 IDE 这个壳了,就是个命令行程序,你跟它说话,它自己读文件、改代码、跑测试、看报错、再改。这一步的意义比看上去大——它把 AI 编程从&quot;编辑器里的一个功能&quot;变成了&quot;一个独立的进程&quot;。一旦是独立进程,你就能开很多个,就能让它在后台跑。</p>
<p>第四级,也就是现在,是<strong>后台 / 云端 agent</strong>:活儿不在你机器上跑了。Cursor 的 cloud agents、GitHub 的 coding agent、Cognition 的 Devin,它们在云端的容器里干活,干完给你提个 PR。你甚至可以在手机上派活。</p>
<p>每跳一级,人和代码之间就多隔一层。半年前我的手指还在键盘上,现在我的手指主要在做一件事:点&quot;approve&quot;或者&quot;reject&quot;。</p>
<h2 id="当前四强各自站在哪">当前四强,各自站在哪</h2>
<p>把这半年最主流的四个工具摆在一起,它们其实已经不在同一个赛道上竞争了——这是很多人没意识到的。</p>
<table>
  <thead>
      <tr>
          <th>工具</th>
          <th>当前形态</th>
          <th>真实定位</th>
          <th>适合谁</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Cursor(3.4 / Composer 2.5)</td>
          <td>AI 原生 IDE + 云端 agent</td>
          <td>&ldquo;派活中枢&rdquo;:本地写 + 云端并行</td>
          <td>想一个人指挥一支 agent 小队的人</td>
      </tr>
      <tr>
          <td>Claude Code(2.x)</td>
          <td>终端 agent + Agent View</td>
          <td>&ldquo;干重活的那个&rdquo;:复杂改动、长任务</td>
          <td>信任命令行、要做深度改动的人</td>
      </tr>
      <tr>
          <td>Windsurf(Wave 13)</td>
          <td>AI IDE,归 Cognition</td>
          <td>&ldquo;通往 Devin 的入口&rdquo;</td>
          <td>喜欢 Cascade 体验、赌 Cognition 的人</td>
      </tr>
      <tr>
          <td>GitHub Copilot</td>
          <td>补全 + Agent Mode + 云端 coding agent</td>
          <td>&ldquo;贴着 GitHub 的那个&rdquo;</td>
          <td>重度 GitHub workflow、企业团队</td>
      </tr>
  </tbody>
</table>
<p><strong>Cursor</strong> 这半年走得最稳。3.3、3.4 连着发,Composer 2.5 五月中刚出。它现在的核心卖点已经不是&quot;补全多准&quot;,而是 <code>/multitask</code>——你可以同时开一堆异步子 agent 并行干活,加上云端 automation 能直接从 Linear、Jira、GitHub 读工单、起 PR、回写状态。Cursor 想做的是你的<strong>指挥台</strong>:本地一份 agent,云端一支舰队,你坐中间派活。它甚至能帮你把云端 agent 需要的开发环境(克隆仓库、装依赖、配凭据)自动搭好——因为没有环境,agent 舰队就跑不起来。</p>
<p><strong>Claude Code</strong> 走的是另一条路。它不抢&quot;IDE&quot;这个身份,就守着终端。这半年它加了 Agent View——一个能同时盯多个后台会话的界面,加了 <code>/goal</code>——你给它一个目标,它自己写代码、跑测试、debug、再跑,直到达成。我个人的体感:Claude Code 是这四个里最适合干&quot;脏活重活&quot;的。一个要动二十个文件、还得反复跑测试验证的重构,我现在默认丢给它。它的 fast mode 现在默认跑 Opus 4.7。</p>
<p><strong>Windsurf</strong> 是这半年最唏嘘的一个。2025 年底它被 Cognition(做 Devin 的那家)以约 2.5 亿美元收购,这中间还夹着 Google 的技术授权和 OpenAI 当初的竞购,过程一地鸡毛。产品本身没死,Wave 13 还带来了多 agent 会话和 Git worktree 支持,2026 年 2 月它在 LogRocket 的 AI 开发工具榜上还排第一。但今年 3 月它把原来便宜、可预测的 15 美元信用额度套餐换成了 20 美元加严格日 / 周配额,直接惹毛了一批老用户。更要命的是定位上的不确定:Cognition 明说了想把 Windsurf 的 IDE 能力并进 Devin。所以现在用 Windsurf,你得想清楚——你是在用一个 IDE,还是在用一个早晚会变成 Devin 入口的东西。</p>
<p><strong>GitHub Copilot</strong> 是那个&quot;看起来落后、其实没掉队&quot;的。补全起家的它,这半年把 Agent Mode 和云端 coding agent 都补齐了:coding agent 现在能自己选模型、开 PR 前先用 code review 自审一遍、还在流程里跑代码扫描和密钥泄露检查。它最大的护城河从来不是模型,是它长在 GitHub 身体里——issue、PR、Actions、code review 一条龙。五月它还放出了从 JetBrains IDE 把任务交给本地 Copilot CLI agent 的预览。Copilot 不耀眼,但对一个深度绑在 GitHub 上的企业团队,它是阻力最小的选择。</p>
<p>我的判断是:<strong>别再问&quot;哪个最好&quot;了</strong>。这个问题在 2025 年还成立,现在不成立。Cursor 是指挥台,Claude Code 是重型施工队,Copilot 是贴着 GitHub 的传送带,Windsurf 是一张赌 Cognition 未来的票。它们解决的是不同的问题。我自己是 Cursor + Claude Code 一起用,前者派活、后者啃硬骨头,一点都不冲突。</p>
<h2 id="终端-agent为什么会赢">&ldquo;终端 agent&quot;为什么会赢</h2>
<p>值得单独说一句:为什么 2025 下半年杀出来的是终端 agent 这个形态,而不是更花哨的 IDE?</p>
<p>因为终端 agent 砍掉了&quot;图形界面&quot;这个包袱,换来了三样东西:<strong>可组合、可并行、可上云</strong>。</p>
<p>一个命令行程序,你能用 shell 脚本把它串起来,能在 CI 里调它,能开十个进程同时跑。一个 IDE 你做不到这些——IDE 天生是给&quot;一个人坐在前面&quot;设计的。当 AI 编程从&quot;辅助一个人&quot;变成&quot;同时干很多活&rdquo;,IDE 这个外壳反而成了约束。</p>
<pre class="mermaid">flowchart TB
  Dev[开发者] --> Plan[拆任务 / 写清楚要什么]
  Plan --> A1[agent 1: 后台改 bug]
  Plan --> A2[agent 2: 本地写新功能]
  Plan --> A3[agent 3: 云端跑重构]
  A1 --> Review[人:审 diff / 提 PR / 决定合不合]
  A2 --> Review
  A3 --> Review
  Review --> Dev
  style Dev fill:#fde7c2,stroke:#e8b23c
  style Review fill:#fde7c2,stroke:#e8b23c
</pre><p>注意这张图里,人只出现在两个地方:<strong>开头拆活,结尾审活</strong>。中间那段&quot;写代码&quot;已经不在人的关键路径上了。这就是这半年最实质的变化——它不是工具变好用了,是工作流的形状变了。</p>
<p>Cursor 也很清楚这一点,所以它一边守着 IDE 这个用户习惯,一边拼命往云端 agent 和 <code>/multitask</code> 上加码。它在用 IDE 的外壳,装终端 agent 的内核。</p>
<h2 id="你的工作从写变成了审和派">你的工作从&quot;写&quot;变成了&quot;审&quot;和&quot;派&quot;</h2>
<p>这是我最想说的一段,也是这半年我自己感受最深的。</p>
<p>半年前,我的核心技能是写代码。现在不是了。现在我每天花最多时间的三件事是:</p>
<p><strong>第一,把活拆清楚。</strong> Agent 干得好不好,八成取决于你派活派得清不清楚。一个含糊的&quot;帮我优化下这个模块&quot;,和一个&quot;把这个模块的数据库查询从 N+1 改成批量加载,保持现有接口不变,加上对应测试&quot;——出来的东西天差地别。这半年我越来越觉得,<strong>写清楚需求本身就是一种正在升值的技能</strong>。Claude Code 的 <code>/goal</code> 之所以好用,前提是你得能说清楚那个 goal。</p>
<p><strong>第二,审 diff。</strong> 这是最累、也最危险的一件事。Agent 一天能给你交十几个 PR,业界数据是引入 agent 后 PR 数量涨了 40% 到 60%。问题来了:你审得过来吗?审不过来就会有人开始&quot;假装审过了&quot;——扫一眼,点 approve。这是 2026 年最真实的风险,不是 AI 写出 bug,是<strong>人审不动了,于是不审了</strong>。</p>
<p>我给自己定了条规矩:<strong>agent 写的代码,审查标准要比人写的更高,不是更低</strong>。因为人写错了通常错得&quot;有道理&quot;、好猜;agent 错起来经常错得很离谱、很自信,藏在一堆看着没问题的代码中间。</p>
<p><strong>第三,决定什么不交给 agent。</strong> 这点反直觉但很重要。核心架构、安全边界、那些&quot;错了代价很大&quot;的地方,我现在反而更倾向自己写,或者自己写完让 agent 来挑错。会派活的人不是把所有活都派出去的人,是知道<strong>哪些该派、哪些该自己攥着</strong>的人。</p>
<p>工具厂商其实也在顺着这个变化走。GitHub Copilot 的 coding agent 现在开 PR 前会先自审一遍、跑安全扫描——本质上是它知道&quot;人审不过来了&quot;,所以先帮你过一遍。Cursor 给你看 agent 的 context 用量,也是同一个逻辑:当你不亲自写,你至少得知道它在想什么。</p>
<p>所以如果你问我,这半年一个开发者最该练的是什么,我的答案是三个词:<strong>拆活、审 diff、判断边界</strong>。写代码的肌肉不会废掉——你得能写,才看得懂 agent 写的——但它不再是那块最值钱的肌肉了。</p>
<h2 id="接下来半年我赌什么">接下来半年,我赌什么</h2>
<p>简单说几个判断,赌错了年底再来认。</p>
<p><strong>后台 agent 会变成默认,但&quot;全自动&quot;还早。</strong> 派活给云端 agent、它提 PR 给你审,这套流程会变成常规操作。但&quot;把整个需求扔进去、不管了&quot;——Devin 那个最初的承诺——我认为这半年还到不了。卡点不在模型聪不聪明,在<strong>验证</strong>:你怎么确认它真做对了?在这个问题被解决之前,人必须留在审查这一环。</p>
<p><strong>工具会继续分化,不会收敛。</strong> 不会出现一个&quot;赢家通吃&quot;的 AI IDE。终端 agent、IDE、云端 agent 是三种不同的形态,服务三种不同的场景,它们会长期共存。你最终大概率是手上同时握着两三个,按场景切。</p>
<p><strong>审查会变成瓶颈,然后变成新工具的战场。</strong> 当 agent 产出快到人审不过来,下一波工具竞争的焦点不会是&quot;写得更快&quot;,而是&quot;帮你审得更快、更可信&quot;。谁能让人重新跟得上 agent 的产出速度,谁就赢下 2026 下半年。</p>
<p>半年前我担心的是 AI 会不会写不好代码。现在我不担心这个了——它写得够好。我现在担心的是另一件事:当写代码这件事变得这么便宜,我们会不会因为审不过来,而让一堆没真正看懂的代码,合进了主干。</p>
<p>工具的演化已经跑到前面去了。该追上的,是我们自己审视代码的方式。</p>
]]></content:encoded></item><item><title>AI编程助手怎么选？Copilot vs Cursor vs Claude Code</title><link>https://realtime-ai.chat/posts/ai-coding-tools/</link><pubDate>Thu, 15 Jan 2026 10:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/ai-coding-tools/</guid><description>GitHub Copilot、Cursor、Claude Code 三大 AI 编程助手怎么选:实测体验对比与选型建议。</description><content:encoded><![CDATA[<h2 id="先说结论">先说结论</h2>
<table>
  <thead>
      <tr>
          <th>场景</th>
          <th>推荐</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>公司统一采购</td>
          <td>GitHub Copilot</td>
      </tr>
      <tr>
          <td>个人开发追求效率</td>
          <td>Cursor</td>
      </tr>
      <tr>
          <td>复杂项目重构</td>
          <td>Claude Code</td>
      </tr>
      <tr>
          <td>学生党/尝鲜</td>
          <td>都试试，反正有免费版</td>
      </tr>
  </tbody>
</table>
<p>下面说说为什么。</p>
<hr>
<h2 id="github-copilot稳">GitHub Copilot：稳</h2>
<p><strong>优点：</strong></p>
<ul>
<li>和VS Code集成最好，不卡</li>
<li>企业合规，公司一般都愿意买单</li>
<li>代码补全中规中矩，不会出太离谱的东西</li>
</ul>
<p><strong>缺点：</strong></p>
<ul>
<li>对整个项目的理解不如Cursor</li>
<li>有时候补全太保守，不敢写多</li>
</ul>
<p><strong>适合谁：</strong> 大厂员工、需要合规的团队</p>
<hr>
<h2 id="cursor快">Cursor：快</h2>
<p>我现在主力用Cursor。</p>
<p><strong>为什么？</strong></p>
<ol>
<li>
<p><strong>Tab补全太爽了</strong>。它能预测你下一步要改哪个文件、哪一行，按Tab就跳过去了。用久了回不去普通IDE。</p>
</li>
<li>
<p><strong>对代码库理解深</strong>。问它&quot;这个项目怎么加个新API&quot;，它真的会去翻代码，不是瞎编。</p>
</li>
<li>
<p><strong>Composer模式</strong>。告诉它&quot;帮我重构这个模块&quot;，它能同时改好几个文件。</p>
</li>
</ol>
<p><strong>缺点：</strong></p>
<ul>
<li>有时候太激进，改得多你得仔细review</li>
<li>月费$20，不便宜</li>
</ul>
<p><strong>适合谁：</strong> 追求效率的老手、个人开发者</p>
<hr>
<h2 id="claude-code聪明">Claude Code：聪明</h2>
<p>Claude Code是后来者，但确实有点东西。</p>
<p><strong>亮点：</strong></p>
<ul>
<li>理解能力最强，复杂逻辑描述清楚它就能写对</li>
<li>解释代码特别清楚</li>
<li>处理大项目上下文比较好</li>
</ul>
<p><strong>缺点：</strong></p>
<ul>
<li>速度比Cursor慢一点</li>
<li>还在迭代，功能没那么完善</li>
</ul>
<p><strong>适合谁：</strong> 需要处理复杂项目、喜欢AI帮忙想方案的人</p>
<hr>
<h2 id="我的使用习惯">我的使用习惯</h2>
<p>日常写代码：<strong>Cursor</strong>
遇到复杂问题：切到 <strong>Claude Code</strong> 聊两句
公司项目：用公司配的 <strong>Copilot</strong></p>
<p>不冲突，看场景切换就行。</p>
<hr>
<h2 id="一点建议">一点建议</h2>
<p>别把AI编程工具当&quot;代码生成器&quot;，把它当&quot;结对编程的同事&quot;。</p>
<ul>
<li>它写的代码你得review</li>
<li>它不懂的地方你得教它（给上下文）</li>
<li>它写错了跟它说，它会改</li>
</ul>
<p>用好了效率能提升2-3倍，用不好反而添乱。</p>
<p>有问题留言，我看到会回。</p>
]]></content:encoded></item><item><title>Claude Code 深度体验：终端里的AI编程革命</title><link>https://realtime-ai.chat/posts/claude-code-deep-dive/</link><pubDate>Tue, 13 Jan 2026 10:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/claude-code-deep-dive/</guid><description>Claude Code 深度体验评测:终端里的 AI 编程到底强在哪,与 Cursor、Copilot 的真实差异。</description><content:encoded><![CDATA[<h2 id="开场不是copilot是coder">开场：不是Copilot，是Coder</h2>
<p>2025年，AI编程工具已经卷到飞起。Cursor、Windsurf、GitHub Copilot……每个都说自己是&quot;最强AI编程助手&quot;。</p>
<p>但当我第一次用上 <strong>Claude Code</strong> 时，我意识到：</p>
<blockquote>
<p>这玩意儿不是来&quot;辅助&quot;我写代码的，它是来<strong>替我干活</strong>的。</p></blockquote>
<p>Claude Code 是 Anthropic 推出的命令行AI编程工具。它不是IDE插件，而是一个<strong>独立运行在终端里的Agent</strong>。你给它一个任务，它会：</p>
<ul>
<li>自己读代码</li>
<li>自己写代码</li>
<li>自己跑命令</li>
<li>自己修Bug</li>
<li>自己提交PR</li>
</ul>
<p><strong>这才是2025年该有的AI编程体验。</strong></p>
<hr>
<h2 id="1-安装30秒上手">1. 安装：30秒上手</h2>
<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></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">npm install -g @anthropic-ai/claude-code
</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="nb">cd</span> your-project
</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
</span></span></code></pre></td></tr></table>
</div>
</div><p>首次启动会要求登录 Anthropic 账号，授权后就能用了。</p>
<p><strong>费用</strong>：使用 Claude API 计费，Claude Sonnet 大约 $3/百万token，正常使用一天几毛钱。</p>
<hr>
<h2 id="2-核心能力不只是聊天">2. 核心能力：不只是聊天</h2>
<h3 id="21-自主文件操作">2.1 自主文件操作</h3>
<p>Claude 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></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: 帮我看看 src/api/user.ts 里有什么问题
</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">[读取 src/api/user.ts]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">发现了几个问题：
</span></span><span class="line"><span class="cl">1. 第23行：缺少错误处理
</span></span><span class="line"><span class="cl">2. 第45行：类型定义不完整
</span></span><span class="line"><span class="cl">3. 第67行：存在潜在的内存泄漏
</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">You: 修
</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">[编辑 src/api/user.ts]
</span></span><span class="line"><span class="cl">已完成修复，主要改动：
</span></span><span class="line"><span class="cl">- 添加了 try-catch 包装
</span></span><span class="line"><span class="cl">- 补充了 UserResponse 类型定义
</span></span><span class="line"><span class="cl">- 在 useEffect 中添加了 cleanup 函数
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="22-执行shell命令">2.2 执行Shell命令</h3>
<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><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">You: 跑一下测试，看看有没有挂的
</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">[执行 npm test]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">测试结果：
</span></span><span class="line"><span class="cl">✓ 45 passed
</span></span><span class="line"><span class="cl">✗ 2 failed
</span></span><span class="line"><span class="cl">  - user.test.ts: &#34;should handle empty input&#34;
</span></span><span class="line"><span class="cl">  - auth.test.ts: &#34;should refresh token&#34;
</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="23-git-操作">2.3 Git 操作</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="n">You</span><span class="p">:</span> <span class="err">把今天的改动提交一下，写个清晰的</span><span class="n">commit</span> <span class="n">message</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">Claude</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">执行</span> <span class="n">git</span> <span class="n">status</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">执行</span> <span class="n">git</span> <span class="n">diff</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">我看到你改了这些文件：</span>
</span></span><span class="line"><span class="cl"><span class="o">-</span> <span class="n">src</span><span class="o">/</span><span class="n">api</span><span class="o">/</span><span class="n">user</span><span class="o">.</span><span class="n">ts</span> <span class="p">(</span><span class="err">修复类型问题</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">-</span> <span class="n">src</span><span class="o">/</span><span class="n">components</span><span class="o">/</span><span class="n">Login</span><span class="o">.</span><span class="n">tsx</span> <span class="p">(</span><span class="err">添加</span><span class="n">loading状态</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">-</span> <span class="n">tests</span><span class="o">/</span><span class="n">user</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">ts</span> <span class="p">(</span><span class="err">补充测试用例</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">建议的</span> <span class="n">commit</span> <span class="n">message</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">执行</span> <span class="n">git</span> <span class="n">add</span> <span class="o">.</span> <span class="o">&amp;&amp;</span> <span class="n">git</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> <span class="s2">&#34;fix: 修复用户API类型问题并完善登录组件</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">-</span> <span class="err">修复</span> <span class="n">user</span><span class="o">.</span><span class="n">ts</span> <span class="err">中的类型定义不完整问题</span>
</span></span><span class="line"><span class="cl"><span class="o">-</span> <span class="err">为</span> <span class="n">Login</span> <span class="err">组件添加</span> <span class="n">loading</span> <span class="err">状态处理</span>
</span></span><span class="line"><span class="cl"><span class="o">-</span> <span class="err">补充用户模块的单元测试</span><span class="s2">&#34;]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">已提交。需要我</span> <span class="n">push</span> <span class="err">吗？</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="3-实战场景它能干什么">3. 实战场景：它能干什么</h2>
<h3 id="场景1debug-一个复杂bug">场景1：Debug 一个复杂Bug</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">You: 用户反馈说登录后会闪退，帮我查一下
</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">[读取 src/pages/Login.tsx]
</span></span><span class="line"><span class="cl">[读取 src/hooks/useAuth.ts]
</span></span><span class="line"><span class="cl">[读取 src/store/authSlice.ts]
</span></span><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">[执行 打开浏览器开发者工具 - 等待错误]
</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">在 useAuth.ts 第34行：
</span></span><span class="line"><span class="cl">auth.user.name.toLowerCase()
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">当 user 对象存在但 name 为 null 时会崩溃。
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">修复方案：
</span></span><span class="line"><span class="cl">auth.user?.name?.toLowerCase() ?? &#39;&#39;
</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="场景2重构整个模块">场景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><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</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: 把 src/utils 下的所有 JavaScript 文件迁移到 TypeScript
</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">[扫描 src/utils 目录]
</span></span><span class="line"><span class="cl">发现 12 个 JS 文件需要迁移。
</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">[1/12] helpers.js → helpers.ts
</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">[2/12] formatters.js → formatters.ts
</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/12] 完成！
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[执行 npx tsc --noEmit]
</span></span><span class="line"><span class="cl">类型检查通过，无错误。
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[执行 npm test]
</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 个文件，添加了 45 个类型定义。
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="场景3从零实现一个功能">场景3：从零实现一个功能</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><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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="n">You</span><span class="p">:</span> <span class="err">帮我实现一个用户头像上传功能，要支持裁剪和压缩</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">Claude</span><span class="p">:</span> <span class="err">好的，我来实现这个功能。</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">首先分析一下需求：</span>
</span></span><span class="line"><span class="cl"><span class="mf">1.</span> <span class="err">前端：选择图片</span> <span class="err">→</span> <span class="err">裁剪</span> <span class="err">→</span> <span class="err">预览</span> <span class="err">→</span> <span class="err">上传</span>
</span></span><span class="line"><span class="cl"><span class="mf">2.</span> <span class="err">后端：接收文件</span> <span class="err">→</span> <span class="err">压缩</span> <span class="err">→</span> <span class="err">存储</span> <span class="err">→</span> <span class="err">返回</span><span class="n">URL</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">让我先看看现有的项目结构</span><span class="o">...</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">读取</span> <span class="n">package</span><span class="o">.</span><span class="n">json</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">读取</span> <span class="n">src</span><span class="o">/</span><span class="n">components</span> <span class="err">目录结构</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">我建议使用</span> <span class="n">react</span><span class="o">-</span><span class="n">image</span><span class="o">-</span><span class="n">crop</span> <span class="err">做裁剪，</span><span class="n">browser</span><span class="o">-</span><span class="n">image</span><span class="o">-</span><span class="n">compression</span> <span class="err">做压缩。</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">执行</span> <span class="n">npm</span> <span class="n">install</span> <span class="n">react</span><span class="o">-</span><span class="n">image</span><span class="o">-</span><span class="n">crop</span> <span class="n">browser</span><span class="o">-</span><span class="n">image</span><span class="o">-</span><span class="n">compression</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">现在创建组件</span><span class="o">...</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">创建</span> <span class="n">src</span><span class="o">/</span><span class="n">components</span><span class="o">/</span><span class="n">AvatarUploader</span><span class="o">/</span><span class="n">index</span><span class="o">.</span><span class="n">tsx</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">创建</span> <span class="n">src</span><span class="o">/</span><span class="n">components</span><span class="o">/</span><span class="n">AvatarUploader</span><span class="o">/</span><span class="n">ImageCropper</span><span class="o">.</span><span class="n">tsx</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">创建</span> <span class="n">src</span><span class="o">/</span><span class="n">components</span><span class="o">/</span><span class="n">AvatarUploader</span><span class="o">/</span><span class="n">styles</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">css</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="err">创建</span> <span class="n">src</span><span class="o">/</span><span class="n">api</span><span class="o">/</span><span class="n">upload</span><span class="o">.</span><span class="n">ts</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">组件已创建完成。使用方式：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">import</span> <span class="p">{</span> <span class="n">AvatarUploader</span> <span class="p">}</span> <span class="n">from</span> <span class="s1">&#39;@/components/AvatarUploader&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="n">AvatarUploader</span> 
</span></span><span class="line"><span class="cl">  <span class="n">onUpload</span><span class="o">=</span><span class="p">{(</span><span class="n">url</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="n">updateUserAvatar</span><span class="p">(</span><span class="n">url</span><span class="p">)}</span>
</span></span><span class="line"><span class="cl">  <span class="n">maxSize</span><span class="o">=</span><span class="p">{</span><span class="mi">5</span><span class="p">}</span> <span class="o">//</span> <span class="n">MB</span>
</span></span><span class="line"><span class="cl">  <span class="n">aspectRatio</span><span class="o">=</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="o">/&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">要我写个使用示例吗？</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="4-高级用法">4. 高级用法</h2>
<h3 id="41-自定义指令claudemd">4.1 自定义指令（CLAUDE.md）</h3>
<p>在项目根目录创建 <code>CLAUDE.md</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></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> 使用 TypeScript 严格模式
</span></span><span class="line"><span class="cl"><span class="k">-</span> 组件使用函数式写法
</span></span><span class="line"><span class="cl"><span class="k">-</span> 状态管理使用 Zustand
</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> 组件：PascalCase
</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></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> feat: 新功能
</span></span><span class="line"><span class="cl"><span class="k">-</span> fix: 修复
</span></span><span class="line"><span class="cl"><span class="k">-</span> refactor: 重构
</span></span><span class="line"><span class="cl"><span class="k">-</span> docs: 文档
</span></span></code></pre></td></tr></table>
</div>
</div><p>Claude Code 会自动读取这个文件，所有操作都会遵循你的规范。</p>
<h3 id="42-并行任务">4.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></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: /parallel 同时帮我：1. 升级所有过期依赖 2. 修复 ESLint 警告 3. 补充缺失的测试
</span></span></code></pre></td></tr></table>
</div>
</div><p>Claude Code 会同时执行多个任务，大幅提升效率。</p>
<h3 id="43-持久记忆">4.3 持久记忆</h3>
<p>Claude 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></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">
</span></span><span class="line"><span class="cl">Claude: 记得，上周我们讨论了：
</span></span><span class="line"><span class="cl">1. 将大型列表改为虚拟滚动
</span></span><span class="line"><span class="cl">2. 添加 React.memo 包装
</span></span><span class="line"><span class="cl">3. 使用 useMemo 缓存计算结果
</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><hr>
<h2 id="5-与其他工具对比">5. 与其他工具对比</h2>
<table>
  <thead>
      <tr>
          <th style="text-align: left">特性</th>
          <th style="text-align: left">Claude Code</th>
          <th style="text-align: left">Cursor</th>
          <th style="text-align: left">GitHub Copilot</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left">运行环境</td>
          <td style="text-align: left">终端</td>
          <td style="text-align: left">IDE</td>
          <td style="text-align: left">IDE插件</td>
      </tr>
      <tr>
          <td style="text-align: left">自主执行命令</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">读写任意文件</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">Git操作</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">多文件重构</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">项目理解</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">价格</td>
          <td style="text-align: left">按量付费</td>
          <td style="text-align: left">$20/月</td>
          <td style="text-align: left">$10/月</td>
      </tr>
  </tbody>
</table>
<p><strong>我的建议</strong>：</p>
<ul>
<li><strong>日常补全</strong>：用 Copilot</li>
<li><strong>复杂编辑</strong>：用 Cursor</li>
<li><strong>项目级任务</strong>：用 Claude Code</li>
</ul>
<hr>
<h2 id="6-注意事项">6. 注意事项</h2>
<h3 id="安全性">安全性</h3>
<p>Claude Code 有完整的<strong>权限控制系统</strong>：</p>
<ul>
<li>读取文件：自动允许</li>
<li>写入文件：需要确认（可设置自动）</li>
<li>执行命令：需要确认（可设置白名单）</li>
<li>网络请求：需要确认</li>
</ul>
<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-fallback" data-lang="fallback"><span class="line"><span class="cl">Claude: 我需要执行 rm -rf node_modules，允许吗？
</span></span><span class="line"><span class="cl">[Allow] [Deny] [Allow All npm commands]
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="token-消耗">Token 消耗</h3>
<p>复杂任务可能消耗大量 token。建议：</p>
<ol>
<li>任务描述要清晰具体</li>
<li>大型重构分步进行</li>
<li>使用 <code>/compact</code> 命令压缩上下文</li>
</ol>
<hr>
<h2 id="7-总结">7. 总结</h2>
<p>Claude Code 代表了 AI 编程工具的新方向：</p>
<blockquote>
<p><strong>从&quot;辅助编码&quot;到&quot;自主编码&quot;</strong></p></blockquote>
<p>它不是在你旁边提建议的助手，而是一个能独立完成任务的程序员。</p>
<p><strong>适合场景</strong>：</p>
<ul>
<li>大型代码重构</li>
<li>跨文件修改</li>
<li>自动化运维任务</li>
<li>快速原型开发</li>
</ul>
<p><strong>不太适合</strong>：</p>
<ul>
<li>需要精细控制的核心算法</li>
<li>涉及敏感数据的操作</li>
<li>完全没有代码基础的用户</li>
</ul>
]]></content:encoded></item></channel></rss>