macOS 完整开发环境配置
从一台全新 Mac 到可以运行 Claude Code + Gemini CLI + n8n 的完整 AI 开发环境,一套配置脚本搞定。
macOS AI 开发环境架构
graph TD
MAC[macOS] --> CORE[核心工具层]
MAC --> AI[AI 工具层]
MAC --> DEV[开发环境层]
MAC --> PRODUCTIVITY[效率层]
CORE --> C1[Homebrew 包管理]
CORE --> C2[iTerm2 + Oh My Zsh]
CORE --> C3[Git + SSH 配置]
AI --> A1[Claude Code CLI]
AI --> A2[Gemini CLI]
AI --> A3[OpenCode CLI]
AI --> A4[Ollama 本地模型]
DEV --> D1[Node.js + Python]
DEV --> D2[Docker Desktop]
DEV --> D3[VS Code + 插件]
PRODUCTIVITY --> P1[Raycast AI 快捷启动]
PRODUCTIVITY --> P2[快捷键配置]
PRODUCTIVITY --> P3[Shell Alias 优化]
style AI fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
style CORE fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
完整安装脚本
#!/usr/bin/env bash
# mac-ai-setup.sh — macOS AI 开发环境一键配置
# 运行: bash mac-ai-setup.sh
set -euo pipefail
echo "🍎 macOS AI 开发环境配置开始..."
# ============================================================
# 1. Homebrew(macOS 包管理器)
# ============================================================
if ! command -v brew &>/dev/null; then
echo "📦 安装 Homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
fi
brew update
# ============================================================
# 2. 基础开发工具
# ============================================================
echo "🔧 安装基础工具..."
brew install git wget curl jq yq
# Terminal 增强
brew install --cask iterm2
brew install zsh-autosuggestions zsh-syntax-highlighting
# Oh My Zsh(如果未安装)
if [ ! -d "$HOME/.oh-my-zsh" ]; then
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
fi
# ============================================================
# 3. 开发语言环境
# ============================================================
echo "🐍 安装 Python 环境..."
brew install pyenv
pyenv install 3.12.0 --skip-existing
pyenv global 3.12.0
echo "📦 安装 Node.js..."
brew install nvm
export NVM_DIR="$HOME/.nvm"
source "$(brew --prefix nvm)/nvm.sh"
nvm install --lts
nvm use --lts
echo "🐹 安装其他语言..."
brew install go rust # 可选,按需注释
# ============================================================
# 4. AI 工具链
# ============================================================
echo "🤖 安装 AI 工具..."
# Claude Code
npm install -g @anthropic-ai/claude-code
# Gemini CLI
npm install -g @google/gemini-cli
# OpenCode CLI
npm install -g opencode-ai
# Ollama(本地模型,可选)
brew install --cask ollama
# ollama pull llama3.2 # 按需拉取本地模型
# ============================================================
# 5. 容器与数据库
# ============================================================
echo "🐳 安装 Docker..."
brew install --cask docker
brew install postgresql@16 redis
# ============================================================
# 6. 编辑器与 IDE
# ============================================================
echo "📝 安装编辑器..."
brew install --cask visual-studio-code
# VS Code AI 插件(命令行安装)
code --install-extension anthropics.claude-code
code --install-extension GoogleCloudTools.cloudcode
code --install-extension ms-python.python
code --install-extension bradlc.vscode-tailwindcss
# ============================================================
# 7. 效率工具
# ============================================================
echo "⚡ 安装效率工具..."
brew install --cask raycast # 替代 Spotlight,支持 AI
brew install --cask rectangle # 窗口管理
brew install --cask alt-tab # 窗口切换增强
# ============================================================
# 8. Shell 配置与 Alias
# ============================================================
echo "⚙️ 配置 Shell..."
cat >> ~/.zshrc << 'ZSHCONFIG'
# ── AI 工具 Alias ──────────────────────────────────────────
alias cc='claude' # Claude Code 快捷
alias gc='gemini' # Gemini CLI 快捷
alias oc='opencode' # OpenCode 快捷
alias ailog='cat ~/.claude/logs/*.log | tail -50' # 查看 Claude 日志
# ── AI 快速函数 ───────────────────────────────────────────
ai-explain() { claude -p "解释这段代码:" < "$1"; }
ai-fix() { claude -p "修复这段代码中的 bug:" < "$1"; }
ai-doc() { claude -p "为这段代码生成文档注释:" < "$1"; }
ai-review() { git diff HEAD | claude -p "审查这次代码变更,指出潜在问题:"; }
# ── 环境变量 ──────────────────────────────────────────────
export ANTHROPIC_API_KEY="$(cat ~/.config/claude/api_key 2>/dev/null || echo '')"
export GEMINI_API_KEY="$(cat ~/.config/gemini/api_key 2>/dev/null || echo '')"
# ── pyenv & nvm ───────────────────────────────────────────
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
export NVM_DIR="$HOME/.nvm"
[ -s "$(brew --prefix nvm)/nvm.sh" ] && source "$(brew --prefix nvm)/nvm.sh"
ZSHCONFIG
echo "✅ 配置完成!执行 'source ~/.zshrc' 生效"
"""
macOS 环境验证脚本
运行后检查所有 AI 工具是否正确安装
"""
import subprocess
import os
from dataclasses import dataclass
@dataclass
class ToolCheck:
name: str
check_cmd: str
required: bool = True
expected_output: str = ""
class MacOSEnvironmentVerifier:
"""macOS AI 开发环境验证器"""
TOOLS = [
ToolCheck("Homebrew", "brew --version", True),
ToolCheck("Git", "git --version", True),
ToolCheck("Node.js", "node --version", True),
ToolCheck("Python 3.12+", "python3 --version", True),
ToolCheck("Claude Code", "claude --version", True),
ToolCheck("Gemini CLI", "gemini --version", True),
ToolCheck("OpenCode", "opencode --version", False),
ToolCheck("Docker", "docker --version", False),
ToolCheck("Ollama", "ollama --version", False),
ToolCheck("VS Code", "code --version", False),
]
ENV_VARS = [
("ANTHROPIC_API_KEY", True),
("GEMINI_API_KEY", False),
("OPENAI_API_KEY", False),
]
@classmethod
def verify(cls) -> dict:
results = {"tools": [], "env_vars": [], "score": 0, "total": 0}
print("=== macOS AI 环境验证 ===\n")
for tool in cls.TOOLS:
try:
output = subprocess.run(
tool.check_cmd.split(),
capture_output=True, text=True, timeout=5
)
installed = output.returncode == 0
except (FileNotFoundError, subprocess.TimeoutExpired):
installed = False
status = "✅" if installed else ("❌" if tool.required else "⚠️ ")
print(f" {status} {tool.name}: {'已安装' if installed else '未安装'}")
if installed:
results["score"] += 1
results["total"] += 1
results["tools"].append({"name": tool.name, "installed": installed})
print("\n=== 环境变量检查 ===\n")
for var_name, required in cls.ENV_VARS:
value = os.environ.get(var_name, "")
has_value = bool(value) and value != "demo"
status = "✅" if has_value else ("❌" if required else "⚠️ ")
masked = f"{value[:8]}..." if has_value else "未设置"
print(f" {status} {var_name}: {masked}")
results["env_vars"].append({"name": var_name, "set": has_value})
score_pct = results["score"] / max(results["total"], 1) * 100
print(f"\n安装完整度: {results['score']}/{results['total']} ({score_pct:.0f}%)")
return results
MacOSEnvironmentVerifier.verify()
macOS 效率快捷键配置
| 场景 | 快捷键 | 工具 |
|---|---|---|
| 全局唤起 Claude | ⌥ Space | Raycast |
| 快速截图发 Claude | ⌘ Shift 4 → 拖拽 | 截图 + Claude Chat |
| 打开 AI 终端 | ⌘ T (iTerm) | iTerm2 |
| 代码审查 | git diff → 粘贴 | Claude Code |
| 文件分析 | 拖拽到终端 | Claude Code |
行动清单
- [ ] 复制上方安装脚本保存为
mac-ai-setup.sh,执行bash mac-ai-setup.sh(约 15–30 分钟) - [ ] 运行验证脚本,确认所有必选工具 ✅ 通过
- [ ] 设置 API Key:
mkdir -p ~/.config/claude && echo "YOUR_KEY" > ~/.config/claude/api_key - [ ] 配置 Raycast:设置
⌥ Space为全局呼出,安装 Claude AI 扩展 - [ ] 测试 Shell Alias:
ai-review命令对当前 Git 仓库进行代码审查 - [ ] 安装 Ollama 本地模型(隐私敏感代码用):
ollama pull llama3.2
下一节:02-Windows-WSL2配置指南 — Windows 用户通过 WSL2 获得同等 Linux 开发体验。