feat: 灵眸 AI 一键部署支持

- .env.example: 新增 ANTHROPIC_AUTH_TOKEN / ANTHROPIC_BASE_URL 灵眸配置
  默认 provider 改为灵眸 AI(国内直连,无需代理)
  保留 Anthropic 官方 / DeepSeek 注释备选配置

- deploy.ps1:
  · 加载 ANTHROPIC_AUTH_TOKEN,自动判断灵眸/官方模式(UseLmuAuth)
  · 灵眸模式:settings.json 写入 env.ANTHROPIC_AUTH_TOKEN + env.ANTHROPIC_BASE_URL
    含 API_TIMEOUT_MS=3000000 + CLAUDE_CODE_ATTRIBUTION_HEADER=0
  · 旧 ANTHROPIC_API_KEY/ANTHROPIC_BASE_URL/CLAUDE_MODEL 从 ~/.bashrc 自动清除(避免冲突)
  · 官方模式:回退为原 ANTHROPIC_API_KEY env var 注入
  · 灵眸模式自动跳过代理检测(国内直连)
  · 默认模型改为 claude-opus-4-7

- README.md: 完整更新配置说明,灵眸 / 官方双配置路径文档

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-05-28 11:48:03 +08:00
parent d97329e504
commit 877965f913
3 changed files with 92 additions and 29 deletions

View File

@@ -3,19 +3,23 @@
# 复制为 .env 并按需填写
# =============================================================
# ── Claude / Anthropic API ──────────────────────────────────
# Anthropic 官方 API Key从 https://console.anthropic.com 获取)
ANTHROPIC_API_KEY=
# ── Claude / API 配置 ────────────────────────────────────────
# 推荐:灵眸 AI国内直连无需代理https://docs.lmuai.com/docs/tools/claude-code
ANTHROPIC_AUTH_TOKEN=sk-你的灵眸API密钥
ANTHROPIC_BASE_URL=https://api.lmuai.com
# API Base URL默认使用 Anthropic 官方;若使用中转代理请修改
# 示例DeepSeek 兼容接口):
# 备选Anthropic 官方 API Key海外直连
# ANTHROPIC_API_KEY=
# ANTHROPIC_BASE_URL=https://api.anthropic.com
# 备选DeepSeek 兼容接口
# ANTHROPIC_API_KEY=
# ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
ANTHROPIC_BASE_URL=https://api.anthropic.com
# 默认使用的模型
# 可选claude-opus-4-5 | claude-sonnet-4-5 | claude-haiku-4-5
# deepseek-v3-0324配合 DeepSeek 接口使用)
CLAUDE_MODEL=claude-opus-4-5
# 灵眸可选claude-opus-4-7 | claude-sonnet-4-5 | claude-haiku-4-5
# DeepSeek可选deepseek-v4-pro
CLAUDE_MODEL=claude-opus-4-7
# ── WSL2 ────────────────────────────────────────────────────
# WSL2 发行版名称wsl --list 查看已安装发行版)

View File

@@ -43,14 +43,14 @@ WSL2 Ubuntu 首次启动若弹出用户创建提示,可直接跳过或按提
# 1. 以管理员身份运行 PowerShell
cd path\to\claude-dev-stack
# 2. 复制配置文件,填写 ANTHROPIC_API_KEY
# 2. 复制配置文件,填写灵眸 API Key推荐或 Anthropic API Key
cp .env.example .env
notepad .env
# 3. 运行部署脚本(自动检测 v2rayN 代理
# 3. 运行部署脚本(灵眸模式自动跳过代理检测
pwsh .\deploy.ps1
# 手动指定代理端口
# 手动指定代理端口(使用官方 Anthropic API 时需要)
pwsh .\deploy.ps1 -ProxyPort 10809
# 不使用代理(直连)
@@ -115,11 +115,29 @@ WSL2 Ubuntu
## 配置说明(`.env`
### 推荐:灵眸 AI国内直连无需代理
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `ANTHROPIC_AUTH_TOKEN` | _(必填)_ | 灵眸 API Key从 [lmuai.com](https://lmuai.com) 获取 |
| `ANTHROPIC_BASE_URL` | `https://api.lmuai.com` | 灵眸 API 基础 URL |
| `CLAUDE_MODEL` | `claude-opus-4-7` | 可选:`claude-opus-4-7` / `claude-sonnet-4-5` / `claude-haiku-4-5` |
> **灵眸模式行为**
> - API Token 自动写入 `~/.claude/settings.json` 的 `env` 块(不写入 `~/.bashrc`,避免冲突)
> - 部署脚本自动跳过代理检测(国内直连无需代理)
> - 旧 `ANTHROPIC_API_KEY` / `ANTHROPIC_BASE_URL` 变量从 `~/.bashrc` 清除
### 备选Anthropic 官方 API
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `ANTHROPIC_API_KEY` | _(空)_ | Anthropic API Key从 [console.anthropic.com](https://console.anthropic.com) 获取 |
| `ANTHROPIC_BASE_URL` | `https://api.anthropic.com` | API 基础 URL中转代理可改为 DeepSeek 等兼容接口 |
| `CLAUDE_MODEL` | `claude-opus-4-5` | 默认使用的模型 |
| `ANTHROPIC_BASE_URL` | `https://api.anthropic.com` | API 基础 URLDeepSeek 等中转可改为对应 URL |
| `CLAUDE_MODEL` | `claude-opus-4-7` | 默认使用的模型 |
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `WSL_DISTRO` | `Ubuntu` | WSL2 发行版名称 |
| `SKIP_WSL_INSTALL` | `false` | `true` 跳过 WSL2 安装步骤 |

View File

@@ -78,11 +78,15 @@ if (Test-Path $EnvFile) {
}
$ANTHROPIC_API_KEY = if ($Config["ANTHROPIC_API_KEY"]) { $Config["ANTHROPIC_API_KEY"] } else { "" }
$ANTHROPIC_BASE_URL = if ($Config["ANTHROPIC_BASE_URL"]) { $Config["ANTHROPIC_BASE_URL"] } else { "https://api.anthropic.com" }
$CLAUDE_MODEL = if ($Config["CLAUDE_MODEL"]) { $Config["CLAUDE_MODEL"] } else { "claude-opus-4-5" }
$ANTHROPIC_AUTH_TOKEN = if ($Config["ANTHROPIC_AUTH_TOKEN"]) { $Config["ANTHROPIC_AUTH_TOKEN"] } else { "" }
$ANTHROPIC_BASE_URL = if ($Config["ANTHROPIC_BASE_URL"]) { $Config["ANTHROPIC_BASE_URL"] } else { "https://api.lmuai.com" }
$CLAUDE_MODEL = if ($Config["CLAUDE_MODEL"]) { $Config["CLAUDE_MODEL"] } else { "claude-opus-4-7" }
$WSL_DISTRO = if ($Config["WSL_DISTRO"]) { $Config["WSL_DISTRO"] } else { "Ubuntu" }
$SKIP_WSL_INSTALL = if ($Config["SKIP_WSL_INSTALL"]) { $Config["SKIP_WSL_INSTALL"] } else { "false" }
# 判断认证方式:灵眸/中转用 AUTH_TOKEN官方用 API_KEY
$UseLmuAuth = ($ANTHROPIC_AUTH_TOKEN -ne "" -and $ANTHROPIC_BASE_URL -ne "https://api.anthropic.com")
# ──────────────────────────────────────────────────────────────
# Banner
# ──────────────────────────────────────────────────────────────
@@ -162,6 +166,13 @@ function Clear-WindowsProxy {
$resolvedProxyPort = 0
# 灵眸 AI 国内直连无需代理,主动跳过
if ($UseLmuAuth -and $ProxyPort -ne -1) {
Write-Info "灵眸 AI 模式:国内直连,自动跳过代理配置"
Write-Info "如需为其他服务git/npm使用代理请手动指定 -ProxyPort"
$ProxyPort = -1
}
if ($ProxyPort -eq -1) {
Write-Warn "已跳过代理配置(-ProxyPort -1"
} elseif ($ProxyPort -gt 0) {
@@ -510,8 +521,22 @@ $mcpAllowedTools = @(
"mcp__unity-mcp__unity_list_instances","mcp__unity-mcp__unity_select_instance",
"mcp__unity-mcp__unity_get_project_context"
)
$claudeSettingsJson = [ordered]@{ model = $CLAUDE_MODEL; allowedTools = $mcpAllowedTools } |
ConvertTo-Json -Depth 3
$claudeSettingsJson = if ($UseLmuAuth) {
# 灵眸 / 中转 API使用 env.ANTHROPIC_AUTH_TOKEN避免与 ANTHROPIC_API_KEY 冲突)
[ordered]@{
env = [ordered]@{
ANTHROPIC_BASE_URL = $ANTHROPIC_BASE_URL
ANTHROPIC_AUTH_TOKEN = $ANTHROPIC_AUTH_TOKEN
API_TIMEOUT_MS = "3000000"
CLAUDE_CODE_ATTRIBUTION_HEADER = "0"
}
model = $CLAUDE_MODEL
allowedTools = $mcpAllowedTools
} | ConvertTo-Json -Depth 4
} else {
# Anthropic 官方:使用 model + allowedToolsAPI Key 由环境变量注入
[ordered]@{ model = $CLAUDE_MODEL; allowedTools = $mcpAllowedTools } | ConvertTo-Json -Depth 3
}
$writeClaudeSettingsCmd = @"
mkdir -p ~/.claude
cat > ~/.claude/settings.json << 'SETTINGS'
@@ -522,22 +547,38 @@ true
Invoke-WSL $writeClaudeSettingsCmd -IgnoreError | Out-Null
# 写入 bash 环境变量WSL2 侧)
$profBlock = ""
if ($ANTHROPIC_API_KEY) { $profBlock += "export ANTHROPIC_API_KEY='$ANTHROPIC_API_KEY'\n" }
if ($ANTHROPIC_BASE_URL) { $profBlock += "export ANTHROPIC_BASE_URL='$ANTHROPIC_BASE_URL'\n" }
# 灵眸模式auth token 已在 settings.json env 块中,清理旧 bashrc 变量避免冲突
# 官方模式:写入 ANTHROPIC_API_KEY 到 bashrc
$cleanOldVarsCmd = @'
sed -i '/ANTHROPIC_API_KEY/d' ~/.bashrc ~/.profile 2>/dev/null || true
sed -i '/ANTHROPIC_BASE_URL/d' ~/.bashrc ~/.profile 2>/dev/null || true
sed -i '/CLAUDE_MODEL/d' ~/.bashrc ~/.profile 2>/dev/null || true
sed -i '/# Claude Code CLI/d' ~/.bashrc ~/.profile 2>/dev/null || true
true
'@
Invoke-WSL $cleanOldVarsCmd -IgnoreError | Out-Null
if (-not $UseLmuAuth -and $ANTHROPIC_API_KEY) {
$profBlock = "export ANTHROPIC_API_KEY='$ANTHROPIC_API_KEY'\n"
$profBlock += "export ANTHROPIC_BASE_URL='$ANTHROPIC_BASE_URL'\n"
$profBlock += "export CLAUDE_MODEL='$CLAUDE_MODEL'\n"
$addEnvCmd = @"
if ! grep -q 'ANTHROPIC_API_KEY' ~/.bashrc 2>/dev/null; then
printf '\n# Claude Code CLI\n$profBlock' >> ~/.bashrc
fi
true
"@
Invoke-WSL $addEnvCmd -IgnoreError | Out-Null
}
# Windows 侧 Claude 配置
$claudeDir = "$env:USERPROFILE\.claude"
if (-not (Test-Path $claudeDir)) { New-Item -ItemType Directory -Path $claudeDir | Out-Null }
$claudeSettingsJson | Set-Content "$claudeDir\settings.json" -Encoding UTF8
if ($ANTHROPIC_API_KEY) {
if ($UseLmuAuth) {
# 灵眸token 已在 settings.json 中,清除可能冲突的 Windows 用户级变量
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", $null, "User")
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", $null, "User")
[System.Environment]::SetEnvironmentVariable("CLAUDE_MODEL", $null, "User")
} elseif ($ANTHROPIC_API_KEY) {
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", $ANTHROPIC_API_KEY, "User")
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", $ANTHROPIC_BASE_URL, "User")
[System.Environment]::SetEnvironmentVariable("CLAUDE_MODEL", $CLAUDE_MODEL, "User")