init: init proj

This commit is contained in:
2025-11-03 23:32:29 +08:00
commit 2d68446059
3 changed files with 480 additions and 0 deletions

139
cc-env-from-profiles.sh Executable file
View File

@@ -0,0 +1,139 @@
#!/bin/bash
# 轻量版 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
set -e
BLUE='\033[0;34m'
GREEN='\033[0;32m'
RED='\033[1;31m'
NC='\033[0m'
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROFILES_JSON="$SCRIPT_DIR/profiles.json"
ANTHROPIC_BASE_URL="https://api.aicodemirror.com/api/claudecode"
echo -e "\n${BLUE}========================================${NC}"
echo -e "${BLUE}Claude Code Profile 部署${NC}"
echo -e "${BLUE}========================================${NC}\n"
# 读取 profiles.json 并展示列表
if [ ! -f "$PROFILES_JSON" ]; then
echo -e "${RED}[ERROR]${NC} 未找到 profiles.json$PROFILES_JSON"
exit 1
fi
COUNT=$(jq '.profiles | length' "$PROFILES_JSON")
if [ "$COUNT" -eq 0 ]; then
echo -e "${RED}[ERROR]${NC} profiles.json 中未找到任何 profiles"
exit 1
fi
echo -e "可用的 Profiles"
for ((i=0; i<COUNT; i++)); do
NAME=$(jq -r ".profiles[$i].name" "$PROFILES_JSON")
echo "[$((i+1))] $NAME"
done
echo
read -r -p "请输入要使用的编号: " CHOICE
if ! [[ "$CHOICE" =~ ^[0-9]+$ ]]; then
echo -e "${RED}[ERROR]${NC} 请输入有效的数字编号"
exit 1
fi
INDEX=$((CHOICE-1))
if [ "$INDEX" -lt 0 ] || [ "$INDEX" -ge "$COUNT" ]; then
echo -e "${RED}[ERROR]${NC} 编号超出范围"
exit 1
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")
echo -e "\n选择的 Profile${GREEN}$SELECTED_NAME${NC}"
# 简化版 shell 与配置文件定位(假定环境完备)
CURRENT_SHELL=$(basename "$SHELL")
case "$CURRENT_SHELL" in
bash)
if [[ "$OSTYPE" == darwin* ]]; then CONFIG_FILE="$HOME/.bash_profile"; else CONFIG_FILE="$HOME/.bashrc"; fi
;;
zsh)
CONFIG_FILE="$HOME/.zshrc"
;;
fish)
CONFIG_FILE="$HOME/.config/fish/config.fish"
;;
*)
# 默认写入 zshrc避免中断
CONFIG_FILE="$HOME/.zshrc"
;;
esac
# 清理旧的环境变量配置(最小化处理)
if [ -f "$CONFIG_FILE" ]; then
if [[ "$CURRENT_SHELL" == "fish" ]]; then
sed -i.tmp -E '/^[[:space:]]*set[[:space:]]+-x[[:space:]]+ANTHROPIC_BASE_URL/d' "$CONFIG_FILE" 2>/dev/null || true
sed -i.tmp -E '/^[[:space:]]*set[[:space:]]+-x[[:space:]]+ANTHROPIC_API_KEY/d' "$CONFIG_FILE" 2>/dev/null || true
sed -i.tmp -E '/^[[:space:]]*set[[:space:]]+-x[[:space:]]+ANTHROPIC_AUTH_TOKEN/d' "$CONFIG_FILE" 2>/dev/null || true
else
sed -i.tmp -E '/^[[:space:]]*export[[:space:]]+ANTHROPIC_BASE_URL=/d' "$CONFIG_FILE" 2>/dev/null || true
sed -i.tmp -E '/^[[:space:]]*export[[:space:]]+ANTHROPIC_API_KEY=/d' "$CONFIG_FILE" 2>/dev/null || true
sed -i.tmp -E '/^[[:space:]]*export[[:space:]]+ANTHROPIC_AUTH_TOKEN=/d' "$CONFIG_FILE" 2>/dev/null || true
fi
rm -f "$CONFIG_FILE.tmp" 2>/dev/null || true
fi
# 追加新配置
if [[ "$CURRENT_SHELL" == "fish" ]]; then
cat >> "$CONFIG_FILE" << EOF
# 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 ""
# End Claude Code Environment Variables
EOF
else
cat >> "$CONFIG_FILE" << EOF
# Claude Code Environment Variables (auto from profiles)
export ANTHROPIC_BASE_URL="$ANTHROPIC_BASE_URL"
export ANTHROPIC_API_KEY="$API_KEY"
export ANTHROPIC_AUTH_TOKEN=""
# End Claude Code Environment Variables
EOF
fi
# 立刻在当前会话导出
export ANTHROPIC_BASE_URL="$ANTHROPIC_BASE_URL"
export ANTHROPIC_API_KEY="$API_KEY"
export ANTHROPIC_AUTH_TOKEN=""
echo -e "${GREEN}[OK]${NC} 已写入并激活环境变量:"
echo "ANTHROPIC_BASE_URL=$ANTHROPIC_BASE_URL"
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"
fi
echo -e "\n${GREEN}完成!${NC} 新开终端会话即生效或运行source \"$CONFIG_FILE\""
exit 0