前言

這個部落格你正在看的每一頁,大部分的程式碼都是我和 Claude Code 一起寫的。沒錯,我用 AI 來寫一個關於 AI 的技術部落格,聽起來很 meta 對吧?

Claude Code 是 Anthropic 推出的 CLI 工具,讓你可以在終端機裡直接跟 Claude 對話,它能讀你的程式碼、改你的檔案、跑指令。跟一般的 ChatGPT 網頁介面不同,它真正「住在」你的開發環境裡。這篇文章我想分享用 Claude Code 開發這個部落格系統的完整過程,以及我對 AI pair programming 的一些心得。

Claude Code 是什麼?

基本介紹

Claude Code 是一個在終端機運行的 AI 開發助手。它的核心能力包括:

  • 讀取整個專案的檔案結構:它會自動理解你的 codebase
  • 直接修改檔案:不需要複製貼上,它可以直接編輯
  • 執行終端指令:可以跑 git、npm、docker 等命令
  • 多檔案同時操作:一次修改多個相關檔案
  • 記憶專案上下文:透過 CLAUDE.md 檔案記住專案的重要資訊

安裝與設定

# 安裝 Claude Code
npm install -g @anthropic-ai/claude-code

# 進入專案目錄 cd /path/to/your/project

# 啟動 Claude Code claude

# 第一次使用會要求登入 Anthropic 帳號 # 登入後就可以開始對話了

CLAUDE.md — 專案記憶

這是 Claude Code 最實用的功能之一。你可以在專案根目錄放一個 CLAUDE.md 檔案,記錄專案的重要資訊:

# CLAUDE.md 範例

Project Overview

A WordPress blog with custom theme, styled after iquilezles.org.

Stack

  • Docker (WordPress + MySQL)
  • Custom theme: techblog
  • PHP 8.2, MySQL 8.0

Key Conventions

  • Dark theme: bg #1e1e1e, card #383838
  • Accent color: #ff4040
  • Use Prism.js for code highlighting
  • Use MathJax for math rendering

How to Start

docker compose up -d

Claude Code 每次啟動都會讀這個檔案,所以它永遠知道你的專案是什麼、用什麼技術、有什麼慣例。

本站的開發過程

Phase 1:基礎架構

一開始我只跟 Claude Code 說了一句:

「我想建一個 WordPress 部落格,用 Docker 部署,風格參考 iquilezles.org — 深色、極簡、技術風格。」

它幫我生成了:

# docker-compose.yml
services:
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    volumes:
      - db_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

wordpress: image: wordpress:php8.2-apache depends_on: db: condition: service_healthy ports: - "8080:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: - ./wp-content:/var/www/html/wp-content restart: always

volumes: db_data:

然後是自動化安裝腳本:

#!/bin/bash
# setup.sh — 一鍵安裝腳本

set -e

echo "=== 啟動 Docker 容器 ===" docker compose up -d

echo "=== 等待 WordPress 就緒 ===" until docker compose exec wordpress wp core is-installed 2>/dev/null; do sleep 3 done

echo "=== 安裝 WordPress ===" docker compose exec wordpress wp core install \ --url="https://shnovaj.com" \ --title="Tech Blog" \ --admin_user=admin \ --admin_password=admin123 \ --admin_email=admin@example.com \ --skip-email

echo "=== 啟用自訂主題 ===" docker compose exec wordpress wp theme activate techblog

echo "=== 設定永久連結 ===" docker compose exec wordpress wp rewrite structure '/%postname%/'

echo "=== 完成! ===" echo "前台: https://shnovaj.com" echo "後台: https://shnovaj.com/wp-admin (admin / admin123)"

Phase 2:自訂主題

這是最花時間的部分。我把設計需求講清楚,Claude Code 幫我生成了整個 theme 的檔案結構:

wp-content/themes/techblog/
├── style.css           # 主題樣式 + 暗色主題
├── functions.php       # 主題功能、enqueue scripts
├── header.php          # 共用頭部
├── footer.php          # 共用底部
├── front-page.php      # 首頁(文章卡片網格)
├── single.php          # 單篇文章頁面
├── archive.php         # 分類/標籤 archive
├── search.php          # 搜尋結果頁
├── 404.php             # 404 頁面
├── page.php            # 一般頁面
└── index.php           # 預設模板

其中最複雜的是首頁的卡片網格。我跟 Claude Code 來回調整了好幾次:

<!-- front-page.php 的核心迴圈 -->
<div class="articles-grid">
    <?php
    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    $args = array(
        'post_type'      => 'post',
        'posts_per_page' => 12,
        'paged'          => $paged,
        'orderby'        => 'date',
        'order'          => 'DESC',
    );
    $query = new WP_Query($args);

if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); ?> <article class="article-card"> <a href="<?php the_permalink(); ?>"> <div class="card-content"> <h2 class="card-title"><?php the_title(); ?></h2> <div class="card-meta"> <span class="card-date"><?php echo get_the_date('Y/m/d'); ?></span> <span class="card-category"> <?php echo get_the_category_list(', '); ?> </span> </div> <p class="card-excerpt"> <?php echo wp_trim_words(get_the_excerpt(), 30); ?> </p> </div> </a> </article> <?php endwhile; wp_reset_postdata(); endif; ?> </div>

Phase 3:Prism.js 和 MathJax

文章中需要程式碼高亮和數學公式渲染,Claude Code 幫我在 functions.php 中加入:

function techblog_enqueue_scripts() {
    // Prism.js — 程式碼語法高亮
    wp_enqueue_style(
        'prism-css',
        'https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css'
    );
    wp_enqueue_script(
        'prism-js',
        'https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js',
        array(),
        null,
        true
    );

// 常用語言支援 $languages = ['python', 'javascript', 'bash', 'php', 'glsl', 'yaml', 'json']; foreach ($languages as $lang) { wp_enqueue_script( "prism-{$lang}", "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-{$lang}.min.js", array('prism-js'), null, true ); }

// MathJax 3 — 數學公式渲染 wp_enqueue_script( 'mathjax', 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js', array(), null, true ); } add_action('wp_enqueue_scripts', 'techblog_enqueue_scripts');

AI Pair Programming 心得

什麼情況下 Claude Code 特別好用?

  1. Boilerplate 生成:Docker 設定、WordPress theme 骨架、API endpoint 這些重複性高的東西,AI 快很多。
  1. 跨檔案重構:「把所有 CSS 中的 #333 換成 CSS variable」這種跨檔案的修改,Claude Code 可以一次處理。
  1. 除錯:把錯誤訊息貼給它,它通常能直接定位問題。特別是 WordPress 這種有大量 hook 和 filter 的系統,它的知識庫很有幫助。
  1. 探索不熟的技術:我對 WordPress theme 開發不太熟,Claude Code 幫我省了大量查文件的時間。

什麼情況下還是得自己來?

  1. 設計決策:AI 可以生成各種方案,但「哪個好看」、「哪個符合我的品味」這種判斷還是得自己做。
  1. 效能優化的最後一哩路:AI 能做 80% 的優化,但剩下 20% 需要對系統有深入理解。
  1. 複雜的業務邏輯:當邏輯涉及多個系統的交互,AI 容易漏掉 edge case。

效率提升的量化感受

以這個部落格專案為例:

  • Docker 環境設定:以前可能花 2-3 小時,現在 20 分鐘搞定
  • 主題開發:以前可能需要一週,現在 2 天(包括反覆調整)
  • 文章內容管理腳本:以前半天,現在 30 分鐘

整體來說,我覺得開發效率提升了大約 3-5 倍,但前提是你要會下好的指令。

小結

Claude Code 改變了我的開發方式。它不是取代工程師,而是讓工程師可以把更多時間花在「想」而不是「打字」上。對於像我這樣的後端工程師,偶爾需要寫前端、搞 DevOps、處理不熟悉的框架,有一個什麼都略懂的 AI 助手真的太方便了。

如果你想開始使用 Claude Code,建議:

  1. 從小專案開始:不要一上來就在生產環境用
  2. 寫好 CLAUDE.md:這是投資報酬率最高的事
  3. 學會 review AI 的輸出:不要盲目接受,理解每一行程式碼
  4. 善用多輪對話:AI 的第一次輸出通常不完美,但透過對話可以快速迭代

延伸閱讀:

  • Claude Code 官方文件:https://docs.anthropic.com/en/docs/claude-code
  • Anthropic API 文件
  • WordPress Theme 開發官方文件