Files
server-deploy/claude/setup-claude-deepseek.ps1

90 lines
4.5 KiB
PowerShell
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#Requires -Version 7
# =============================================================
# Claude Code + DeepSeek 一键配置脚本
# 用法:在 pwsh (PowerShell 7) 中执行此脚本
# =============================================================
$DEEPSEEK_API_KEY = "sk-a7e8782b1d5547a692ef2efec55b44f2"
$DEEPSEEK_BASE_URL = "https://api.deepseek.com/anthropic"
$DEEPSEEK_MODEL = "deepseek-v3-0324"
Write-Host "=== Claude Code + DeepSeek 配置开始 ===" -ForegroundColor Cyan
# ── 1. 检查 Node.js ──────────────────────────────────────────
Write-Host "`n[1/4] 检查 Node.js..." -ForegroundColor Yellow
if (-not (Get-Command node -ErrorAction SilentlyContinue)) {
Write-Host "未找到 Node.js请先安装https://nodejs.org/" -ForegroundColor Red
exit 1
}
Write-Host "Node.js $(node --version) 已安装" -ForegroundColor Green
# ── 2. 安装 Claude Code ───────────────────────────────────────
Write-Host "`n[2/4] 安装 Claude Code..." -ForegroundColor Yellow
if (Get-Command claude -ErrorAction SilentlyContinue) {
Write-Host "Claude Code 已安装:$(claude --version 2>&1)" -ForegroundColor Green
} else {
npm install -g @anthropic-ai/claude-code
if ($LASTEXITCODE -ne 0) { Write-Host "安装失败,请检查 npm 网络" -ForegroundColor Red; exit 1 }
Write-Host "Claude Code 安装成功" -ForegroundColor Green
}
# ── 3. 写入 ~/.claude/settings.json仅保留 model ──────────
Write-Host "`n[3/4] 配置 ~/.claude/settings.json..." -ForegroundColor Yellow
$claudeDir = "$env:USERPROFILE\.claude"
if (-not (Test-Path $claudeDir)) { New-Item -ItemType Directory -Path $claudeDir | Out-Null }
@{ model = $DEEPSEEK_MODEL } | ConvertTo-Json | Set-Content -Path "$claudeDir\settings.json" -Encoding UTF8
Write-Host "已写入 $claudeDir\settings.json" -ForegroundColor Green
# ── 4. 设置用户级环境变量 + pwsh profile ──────────────────────
Write-Host "`n[4/4] 设置环境变量与 PowerShell profile..." -ForegroundColor Yellow
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", $DEEPSEEK_BASE_URL, "User")
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", $DEEPSEEK_API_KEY, "User")
[System.Environment]::SetEnvironmentVariable("CLAUDE_MODEL", $DEEPSEEK_MODEL, "User")
Write-Host "用户级环境变量已设置" -ForegroundColor Green
# 仅写入 pwsh (PowerShell 7) profile
$pwshProfile = "$env:USERPROFILE\Documents\PowerShell\Microsoft.PowerShell_profile.ps1"
$profileDir = Split-Path $pwshProfile
if (-not (Test-Path $profileDir)) { New-Item -ItemType Directory -Path $profileDir | Out-Null }
$profileContent = @"
`$env:ANTHROPIC_BASE_URL = "$DEEPSEEK_BASE_URL"
`$env:ANTHROPIC_API_KEY = "$DEEPSEEK_API_KEY"
`$env:CLAUDE_MODEL = "$DEEPSEEK_MODEL"
"@
if (Test-Path $pwshProfile) {
$existing = Get-Content $pwshProfile -Raw
if ($existing -match "deepseek\.com") {
Set-Content -Path $pwshProfile -Value $profileContent -Encoding UTF8
Write-Host "已更新:$pwshProfile" -ForegroundColor Green
} else {
Add-Content -Path $pwshProfile -Value "`n$profileContent"
Write-Host "已追加到:$pwshProfile" -ForegroundColor Green
}
} else {
Set-Content -Path $pwshProfile -Value $profileContent -Encoding UTF8
Write-Host "已创建:$pwshProfile" -ForegroundColor Green
}
# ── 确保执行策略允许 profile 运行 ─────────────────────────────
$policy = Get-ExecutionPolicy -Scope CurrentUser
if ($policy -eq "Restricted" -or $policy -eq "Undefined") {
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force
Write-Host "已设置执行策略RemoteSigned" -ForegroundColor Green
}
# ── 验证连接 ──────────────────────────────────────────────────
Write-Host "`n=== 验证连接 ===" -ForegroundColor Cyan
$env:ANTHROPIC_BASE_URL = $DEEPSEEK_BASE_URL
$env:ANTHROPIC_API_KEY = $DEEPSEEK_API_KEY
$result = claude -p "say hi" 2>&1
if ($LASTEXITCODE -eq 0) {
Write-Host "连接成功:$result" -ForegroundColor Green
} else {
Write-Host "连接失败:$result" -ForegroundColor Red
}
Write-Host "`n=== 配置完成!新开终端直接运行 claude 即可 ===" -ForegroundColor Cyan