Compare commits

..

3 Commits

Author SHA1 Message Date
6d39f98d80 feat: clean profile 2026-01-23 16:00:31 +08:00
6d9185ce2a Merge branch 'main' of ssh://git.njcqit.com:2222/eric/aicodemirror-switcher
# Conflicts:
#	profiles.json
2026-01-23 15:57:45 +08:00
510386dc54 feat: auth_token support 2026-01-23 15:55:51 +08:00
2 changed files with 38 additions and 21 deletions

View File

@@ -3,9 +3,9 @@
# 轻量版 Claude Code 环境变量部署脚本(基于 profiles.json
# 要求:
# 1) 读取 profiles.json 展示可选列表
# 2) 选择后按照 env-deploy.sh 的参数写入ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN(空)
# 3) 略去不必要的环境检查,假定环境完备(含 jq、node 可用)
# 4) 使Node 调用 /Users/kid/.claude/cc-aicodemirror-statusline-plus/save-cookie.js 传入所选 profile 的 cookie
# 2) 选择后按照 env-deploy.sh 的参数写入ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN
# 3) 略去不必要的环境检查,假定环境完备(含 jq 可用)
# 4) save-cookie 的使用
set -e
@@ -55,8 +55,20 @@ if [ "$INDEX" -lt 0 ] || [ "$INDEX" -ge "$COUNT" ]; then
fi
SELECTED_NAME=$(jq -r ".profiles[$INDEX].name" "$PROFILES_JSON")
API_KEY=$(jq -r ".profiles[$INDEX].api_key" "$PROFILES_JSON")
COOKIE=$(jq -r ".profiles[$INDEX].cookie" "$PROFILES_JSON")
API_KEY=$(jq -r ".profiles[$INDEX].api_key // empty" "$PROFILES_JSON")
AUTH_TOKEN=$(jq -r ".profiles[$INDEX].AuthToken // .profiles[$INDEX].auth_token // empty" "$PROFILES_JSON")
PROFILE_BASE_URL=$(jq -r ".profiles[$INDEX].baseUrl // .profiles[$INDEX].base_url // empty" "$PROFILES_JSON")
# AuthToken 与 API Key 互斥AuthToken 优先
if [ -n "$AUTH_TOKEN" ]; then
API_KEY=""
elif [ -n "$API_KEY" ]; then
AUTH_TOKEN=""
fi
if [ -n "$PROFILE_BASE_URL" ]; then
ANTHROPIC_BASE_URL="$PROFILE_BASE_URL"
fi
echo -e "\n选择的 Profile${GREEN}$SELECTED_NAME${NC}"
@@ -99,7 +111,7 @@ if [[ "$CURRENT_SHELL" == "fish" ]]; then
# Claude Code Environment Variables (auto from profiles)
set -x ANTHROPIC_BASE_URL "$ANTHROPIC_BASE_URL"
set -x ANTHROPIC_API_KEY "$API_KEY"
set -x ANTHROPIC_AUTH_TOKEN ""
set -x ANTHROPIC_AUTH_TOKEN "$AUTH_TOKEN"
# End Claude Code Environment Variables
EOF
else
@@ -108,7 +120,7 @@ else
# Claude Code Environment Variables (auto from profiles)
export ANTHROPIC_BASE_URL="$ANTHROPIC_BASE_URL"
export ANTHROPIC_API_KEY="$API_KEY"
export ANTHROPIC_AUTH_TOKEN=""
export ANTHROPIC_AUTH_TOKEN="$AUTH_TOKEN"
# End Claude Code Environment Variables
EOF
fi
@@ -116,20 +128,20 @@ fi
# 立刻在当前会话导出
export ANTHROPIC_BASE_URL="$ANTHROPIC_BASE_URL"
export ANTHROPIC_API_KEY="$API_KEY"
export ANTHROPIC_AUTH_TOKEN=""
export ANTHROPIC_AUTH_TOKEN="$AUTH_TOKEN"
echo -e "${GREEN}[OK]${NC} 已写入并激活环境变量:"
echo "ANTHROPIC_BASE_URL=$ANTHROPIC_BASE_URL"
if [ -n "$API_KEY" ]; then
echo "ANTHROPIC_API_KEY=****${API_KEY: -4}"
echo "ANTHROPIC_AUTH_TOKEN=\"\""
# 调用 Node 脚本保存 cookie
NODE_SCRIPT="/Users/kid/.claude/cc-aicodemirror-statusline-plus/save-cookie.js"
if [ -f "$NODE_SCRIPT" ]; then
node "$NODE_SCRIPT" "$COOKIE"
echo -e "${GREEN}[OK]${NC} 已调用 Node 保存 cookie"
else
echo -e "${RED}[WARN]${NC} 未找到 Node 脚本:$NODE_SCRIPT,跳过保存 cookie"
echo "ANTHROPIC_API_KEY="
fi
if [ -n "$AUTH_TOKEN" ]; then
echo "ANTHROPIC_AUTH_TOKEN=****${AUTH_TOKEN: -4}"
else
echo "ANTHROPIC_AUTH_TOKEN="
fi
echo -e "\n${GREEN}完成!${NC} 新开终端会话即生效或运行source \"$CONFIG_FILE\""

View File

@@ -2,13 +2,18 @@
"profiles": [
{
"name": "13814521983",
"api_key": "sk-ant-api03-YoEoLVS4EJH9uOBQJgzeMYFZfaJodI4dvx4BNpYA2-bHBZFWLxx8mo0PiKQY0x_AmUAwMIac1vkg9a0ZaSVmyQ",
"cookie": "__Host-authjs.csrf-token=03f119d89d975253dd566e250570c9ba4034da29d888c46b6e238ef9852daa6f%7Cc83009619b16022269baf73f584bc16a2501aaadc62850bfb6acec5ac2b53ca4; __Secure-authjs.callback-url=https%3A%2F%2Fwww.aicodemirror.com; acw_tc=3ccdc15217642097618241160e596c432675c7a3127259c29ecc856cd626b3; cf_clearance=EPW5mX47LTKGtw7k1uJ8niHj2hlUiYY_d0AF_BAm6Hg-1764209763-1.2.1.1-X.SyNDeDH2t5CCCs7JGEp3NGYhwpHRlfxNapgw6hQUk5W.RN6t5F.D7ZSko7rK7J6Wn4bdgNubb.Xm3XRexyBj_phKrjulkzAbaFbt1q1NH0x8vx4un09evjhhx7kRGwWkaNmoZyhue4CpJsRZVBolp9h4rnjeJdkoNwi3dgzYrbSJLILCFvTJPVWgp9T3zs1opUksuGgs1HVvQYWhf.3bkI0ly4xjTBcvulHyGYZDQ; __Secure-authjs.session-token=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwia2lkIjoidHJpaENuTkRQc3JoMDh6ZURKQ1FjVzRRTFFtanhuaGhyZGFMRGIyT05EbDR6enlGTERJcGgyZVE3dGRvc295dzRIYzA2emI2QWVxVmVTYUpxX0ZmaFEifQ..4kM13gE3KLOi6_Yp8wTMRw.2hk2ecoAGTc7buw305Vj0ilk5PNjSgwUteo4AL1nptoyKJiSYdxcoK1DPmk297dGqwkDy6b7JTZ6kmjLHnp0-VvjjNcsGIokl0Y-wNF8ALqO6jPjQGwaSAXjOxNt3ksQX3ndwuUojSKioaMHuIbJf6mOahmpiu8uxDns-NQaNSsQYXGGhFO0duQpdZ98o2GIYpbeOmnxo5_KFCl2O4HUxLU5MaWVnNGNBvAgVtE1OhQJQ7d7g3ceLy5ChTld8du9ECDq4nG-apgJJR-TXvDjAOzBgTP46n6ESs1wVhmlhYmRY5QPo9qheKlbfZTOMMQ3NHz6U38UMmNKMjt7BuyOXYJIGDs_p8RjUvMiR3e2oYWturSwxE7o0QheNWxYM3rUgz__G0YTGIdl-ayd-iAonwQP2a2nP2rwjBfZiafnBS3IFziMv54AOi58zIQxeuq_JyhKfPp5ooZvc0benVbsDNxQYhmAwAhU0PWiXfs62FgAgs03YRQSQSeinVnOI9F8whJUyUj_Nsprut_2-Xf5PQ.ujdYw7Oy9Qya4-UWMnq9p-IEubQ_VPhYlI8-TWO2RiU"
"baseUrl": "https://api.aicodemirror.com/api/claudecode",
"api_key": "sk-ant-api03-YoEoLVS4EJH9uOBQJgzeMYFZfaJodI4dvx4BNpYA2-bHBZFWLxx8mo0PiKQY0x_AmUAwMIac1vkg9a0ZaSVmyQ"
},
{
"name": "17798517295",
"api_key": "sk-ant-api03-6ITk9R4kvZZtnYB_Dt584N5HGFd8wtg5DKjn099ycTyF6RQXajAXjICLptgykGVT0XpIFeJjwg9PZq4JolVs4A",
"cookie":"__Host-authjs.csrf-token=58cc0e779c796a81d052105b3a599ee6987854b50b5a67c84086a06aac831888%7C7ca0f83b4ace555547af5988f8296722e3c9ff8b611c5257536530c648c84788; __Secure-authjs.callback-url=https%3A%2F%2Fwww.aicodemirror.com; acw_tc=1a0c651b17678813668583076e2d1ef8e95cdc98d13248a61178eba71033c6; __Secure-authjs.session-token=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwia2lkIjoidHJpaENuTkRQc3JoMDh6ZURKQ1FjVzRRTFFtanhuaGhyZGFMRGIyT05EbDR6enlGTERJcGgyZVE3dGRvc295dzRIYzA2emI2QWVxVmVTYUpxX0ZmaFEifQ..o37W_R6Jc3JZ6-OS3PxtZw.TS_evezGEK1OJaBrbuxyRFcqlk8_rOBfS4e_KQlhLUDkLDzioUbHjJTPe4L3iVCSHxspGSlpIISjXcekaihTUQbd38AgL9x_64RMd0wyCZz7RFwjtf2riBzagLBMQWkKcGw7Adh_oJcRf01ci4oLoVNe4cOCNTDFVPWfKLm8noMnIPMmf9O9M3pIut-FN7q0bOR1NVJ5GufCL-7TU9DAxtwWhyPdfbzFvecKTtB3gtRZq3R8I7WqFU3uxY1DHKK4xFhL2pLcH_PGJ6zO2pyD-VYd-vzgH6RPSRSuBdSWjpd8p4m12DCQFOWqOQ2iUbC1LgcelKt1HQrE07zYVZ69S9Xjqg_MDLn-_G1DHDaN-hudCa4V_RvOfsW0Xadm3hTaTQ70R13_7wCF3AxlHgWFpTffv2jkjC8ECzdcOkjDZvQwDSxMvI21BdWUSjs8gTEBr5CASkC1OrShbPMr6OPu4oF4v8rTd2UlPKrP1mGmU6zFh-tBoWdbPi7hEZ_g4jD3Im3IqgTb6WSoqaZnVBetOw.rFVhnBcZO79qyEuZf62FrfBeW65unqcRH-q1eAxxhMo"
"baseUrl": "https://api.aicodemirror.com/api/claudecode",
"api_key": "sk-ant-api03-6ITk9R4kvZZtnYB_Dt584N5HGFd8wtg5DKjn099ycTyF6RQXajAXjICLptgykGVT0XpIFeJjwg9PZq4JolVs4A"
},
{
"name": "🚗",
"baseUrl": "https://claude-code.tsukasa.dpdns.org:8443/api",
"auth_token": "cr_b47b812b12f29e5b5ae2ab428c624dfbc0d5086eeedc0f3ad54e1045a9e862e8"
}
]
}