#!/usr/bin/env bash # OpenCode 一键接入配置脚本(Liangfeng Relay / ai.liangfeng.net.cn) # 用法: ./configure-opencode.sh [BASE_URL] [MODEL] # 示例: ./configure-opencode.sh sk-xxxx set -euo pipefail API_KEY="${1:-}" BASE_URL="${2:-https://ai.liangfeng.net.cn/v1}" MODEL="${3:-deepseek-v4.1-flash}" PROVIDER_ID="liangfeng" if [ -z "$API_KEY" ]; then echo "用法: $0 [BASE_URL] [MODEL]" >&2 exit 1 fi CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/opencode" CONFIG_PATH="$CONFIG_DIR/opencode.json" mkdir -p "$CONFIG_DIR" if ! command -v python3 >/dev/null 2>&1; then echo "[!] 未找到 python3,无法自动合并配置。" >&2 echo " 请参考教程手动编辑: $CONFIG_PATH" >&2 exit 1 fi python3 - "$CONFIG_PATH" "$API_KEY" "$BASE_URL" "$MODEL" "$PROVIDER_ID" <<'PY' import json, os, sys path, api_key, base_url, model, provider_id = sys.argv[1:6] cfg = {} if os.path.exists(path): with open(path, "r", encoding="utf-8") as f: cfg = json.load(f) os.replace(path, path + ".bak") print(f"[i] 已备份原配置到 {path}.bak") cfg.setdefault("$schema", "https://opencode.ai/config.json") cfg.setdefault("provider", {}) cfg["provider"][provider_id] = { "npm": "@ai-sdk/openai-compatible", "name": "Liangfeng Relay", "options": {"baseURL": base_url, "apiKey": api_key}, "models": { "deepseek-v4.1-flash": {"name": "DeepSeek V4.1 Flash"}, "deepseek-v4-pro": {"name": "DeepSeek V4 Pro"}, "glm-5.3-flash": {"name": "GLM-5.3 Flash"}, "qwen3.8-flash": {"name": "Qwen 3.8 Flash"}, "gpt-5.6-terra": {"name": "GPT-5.6 Terra"}, }, } cfg["model"] = f"{provider_id}/{model}" with open(path, "w", encoding="utf-8") as f: json.dump(cfg, f, ensure_ascii=False, indent=2) f.write("\n") print(f"[OK] 配置已写入: {path}") print(f" 供应商: {provider_id} ({base_url})") print(f" 默认模型: {provider_id}/{model}") print() print(f"下一步:启动 OpenCode,执行 /models 选择 '{provider_id}/{model}' 验证。") PY