Private
Public Access
1
0

feat: 重构 setup.ps1 为一站式安装配置脚本

- 新增包管理器检测(Node.js/npm 和 Bun)
- 新增 Bun 安装引导功能
- 新增工具安装功能(通过 npm/bun 安装 CLI 工具)
- 支持从远程下载并执行配置脚本
- 移除 Claude Code 配置中的默认 model 设置
This commit is contained in:
2025-12-05 18:38:34 +08:00
parent 13c6e92df6
commit badf8e6bb6
7 changed files with 294 additions and 85 deletions

View File

@@ -163,15 +163,15 @@ function New-Settings {
)
$config = @"
model_provider = "apirouter"
model = "gpt-5-codex"
model_provider = "xcodecli"
model = "gpt-5.1-codex"
model_reasoning_effort = "high"
[model_providers.apirouter]
name = "apirouter"
[model_providers.xcodecli]
name = "xcodecli"
base_url = "$BaseUrl/v1"
wire_api = "responses"
env_key = "APIROUTER_API_KEY"
env_key = "XCODECLI_API_KEY"
"@
try {
@@ -199,7 +199,7 @@ function Show-Settings {
Write-Host ""
Write-Info "Current environment variables:"
Write-Host "----------------------------------------"
$apirouterKey = [Environment]::GetEnvironmentVariable("APIROUTER_API_KEY", [EnvironmentVariableTarget]::User)
$apirouterKey = [Environment]::GetEnvironmentVariable("XCODECLI_API_KEY", [EnvironmentVariableTarget]::User)
if ($apirouterKey) {
$maskedKey = if ($apirouterKey.Length -gt 12) {
@@ -207,9 +207,9 @@ function Show-Settings {
} else {
"$($apirouterKey.Substring(0, [Math]::Min(4, $apirouterKey.Length)))..."
}
Write-Info "APIROUTER_API_KEY: $maskedKey"
Write-Info "XCODECLI_API_KEY: $maskedKey"
} else {
Write-Info "APIROUTER_API_KEY: (not set)"
Write-Info "XCODECLI_API_KEY: (not set)"
}
Write-Host "----------------------------------------"
}
@@ -307,17 +307,17 @@ function Main {
Write-Info "Setting environment variables..."
try {
# Set user environment variables (persistent across sessions)
[Environment]::SetEnvironmentVariable("APIROUTER_API_KEY", $ApiKey, [EnvironmentVariableTarget]::User)
[Environment]::SetEnvironmentVariable("XCODECLI_API_KEY", $ApiKey, [EnvironmentVariableTarget]::User)
# Also set for current session
$env:APIROUTER_API_KEY = $ApiKey
$env:XCODECLI_API_KEY = $ApiKey
Write-Success "Environment variables set successfully"
}
catch {
Write-Warning "Failed to set environment variables: $($_.Exception.Message)"
Write-Info "You may need to set them manually:"
Write-Info " APIROUTER_API_KEY=$ApiKey"
Write-Info " XCODECLI_API_KEY=$ApiKey"
}
Write-Host ""
@@ -325,7 +325,7 @@ function Main {
Write-Info "You can now use Codex with your XCodeCLI API router."
Write-Info ""
Write-Info "Configuration file location: $CodexConfigFile"
Write-Info "Environment variable APIROUTER_API_KEY has been set"
Write-Info "Environment variable XCODECLI_API_KEY has been set"
if (Test-Path $CodexConfigFile) {
Write-Host ""

View File

@@ -174,21 +174,21 @@ create_codex_config() {
# Create config.toml
cat > "$HOME/.codex/config.toml" << EOF
model_provider = "apirouter"
model_provider = "xcodecli"
model = "gpt-5-codex"
model_reasoning_effort = "high"
[model_providers.apirouter]
name = "apirouter"
[model_providers.xcodecli]
name = "xcodecli"
base_url = "${base_url}/v1"
wire_api = "responses"
env_key = "APIROUTER_API_KEY"
env_key = "XCODECLI_API_KEY"
EOF
cat > "$HOME/.codex/auth.json" << EOF
{
"OPENAI_API_KEY": "$api_key",
"APIROUTER_API_KEY": "$api_key"
"XCODECLI_API_KEY": "$api_key"
}
EOF
@@ -202,7 +202,7 @@ set_environment_variable() {
local api_key="$1"
# Export for current session
export APIROUTER_API_KEY="$api_key"
export XCODECLI_API_KEY="$api_key"
# Detect shell and add to appropriate config file
local shell_config=""
@@ -244,40 +244,40 @@ set_environment_variable() {
# Handle Fish shell differently (uses 'set -x' instead of 'export')
if [ "$shell_name" = "fish" ] || [[ "$shell_config" == *"fish"* ]]; then
# Fish shell syntax
if [ -f "$shell_config" ] && grep -q "set -x APIROUTER_API_KEY" "$shell_config"; then
if [ -f "$shell_config" ] && grep -q "set -x XCODECLI_API_KEY" "$shell_config"; then
# Update existing
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s/set -x APIROUTER_API_KEY.*/set -x APIROUTER_API_KEY \"$api_key\"/" "$shell_config"
sed -i '' "s/set -x XCODECLI_API_KEY.*/set -x XCODECLI_API_KEY \"$api_key\"/" "$shell_config"
else
sed -i "s/set -x APIROUTER_API_KEY.*/set -x APIROUTER_API_KEY \"$api_key\"/" "$shell_config"
sed -i "s/set -x XCODECLI_API_KEY.*/set -x XCODECLI_API_KEY \"$api_key\"/" "$shell_config"
fi
print_info "Updated APIROUTER_API_KEY in $shell_config"
print_info "Updated XCODECLI_API_KEY in $shell_config"
else
# Add new
mkdir -p "$(dirname "$shell_config")"
echo "" >> "$shell_config"
echo "# API Router API key for Codex" >> "$shell_config"
echo "set -x APIROUTER_API_KEY \"$api_key\"" >> "$shell_config"
print_info "Added APIROUTER_API_KEY to $shell_config"
echo "set -x XCODECLI_API_KEY \"$api_key\"" >> "$shell_config"
print_info "Added XCODECLI_API_KEY to $shell_config"
fi
else
# Bash/Zsh/sh syntax
if [ -f "$shell_config" ] && grep -q "export APIROUTER_API_KEY=" "$shell_config"; then
if [ -f "$shell_config" ] && grep -q "export XCODECLI_API_KEY=" "$shell_config"; then
# Update existing
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS
sed -i '' "s/export APIROUTER_API_KEY=.*/export APIROUTER_API_KEY=\"$api_key\"/" "$shell_config"
sed -i '' "s/export XCODECLI_API_KEY=.*/export XCODECLI_API_KEY=\"$api_key\"/" "$shell_config"
else
# Linux
sed -i "s/export APIROUTER_API_KEY=.*/export APIROUTER_API_KEY=\"$api_key\"/" "$shell_config"
sed -i "s/export XCODECLI_API_KEY=.*/export XCODECLI_API_KEY=\"$api_key\"/" "$shell_config"
fi
print_info "Updated APIROUTER_API_KEY in $shell_config"
print_info "Updated XCODECLI_API_KEY in $shell_config"
else
# Add new
echo "" >> "$shell_config"
echo "# API Router API key for Codex" >> "$shell_config"
echo "export APIROUTER_API_KEY=\"$api_key\"" >> "$shell_config"
print_info "Added APIROUTER_API_KEY to $shell_config"
echo "export XCODECLI_API_KEY=\"$api_key\"" >> "$shell_config"
print_info "Added XCODECLI_API_KEY to $shell_config"
fi
fi
@@ -301,11 +301,11 @@ show_current_settings() {
echo "----------------------------------------"
print_info "Environment variable:"
if [ ! -z "$APIROUTER_API_KEY" ]; then
local masked_key="${APIROUTER_API_KEY:0:8}...${APIROUTER_API_KEY: -4}"
print_info "APIROUTER_API_KEY: $masked_key"
if [ ! -z "$XCODECLI_API_KEY" ]; then
local masked_key="${XCODECLI_API_KEY:0:8}...${XCODECLI_API_KEY: -4}"
print_info "XCODECLI_API_KEY: $masked_key"
else
print_info "APIROUTER_API_KEY: (not set)"
print_info "XCODECLI_API_KEY: (not set)"
fi
echo "----------------------------------------"
@@ -393,7 +393,7 @@ main() {
# Set environment variable
if ! set_environment_variable "$API_KEY"; then
print_warning "Failed to set environment variable automatically"
print_info "Please set manually: export APIROUTER_API_KEY=\"$API_KEY\""
print_info "Please set manually: export XCODECLI_API_KEY=\"$API_KEY\""
fi
echo ""
@@ -405,9 +405,9 @@ main() {
# Provide correct command based on detected shell
local current_shell=$(basename "$SHELL" 2>/dev/null || echo "bash")
if [ "$current_shell" = "fish" ]; then
print_info " set -x APIROUTER_API_KEY \"$API_KEY\""
print_info " set -x XCODECLI_API_KEY \"$API_KEY\""
else
print_info " export APIROUTER_API_KEY=\"$API_KEY\""
print_info " export XCODECLI_API_KEY=\"$API_KEY\""
fi
print_info "Or restart your terminal."
print_info ""