refactor(claude_kimi): restore key prompt + proxy launch for Artemox API
claude_kimi now behaves like claude_deepseek: - Prompts for Artemox API key if missing - Validates key via _claude_test_openai_api - Saves key to ~/.config/claude-launcher/kimi_key - Starts claude-openai-anthropic-proxy.py locally - Launches claude through the proxy with Anthropic env vars
This commit is contained in:
@@ -1041,19 +1041,92 @@ chmod +x "$BIN_DIR/claude_deepseek"
|
|||||||
# === claude_kimi ===
|
# === claude_kimi ===
|
||||||
cat > "$BIN_DIR/claude_kimi" << 'KIMIEOF'
|
cat > "$BIN_DIR/claude_kimi" << 'KIMIEOF'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ============================================================
|
source ~/.local/bin/claude_api_helpers.sh
|
||||||
# claude_kimi — запуск нативного Kimi Code через Artemox API
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
kimi_bin="$HOME/.kimi-code/bin/kimi"
|
key_file="$HOME/.config/claude-launcher/kimi_key"
|
||||||
|
api_key=""
|
||||||
|
reauth=0
|
||||||
|
|
||||||
if [ ! -f "$kimi_bin" ]; then
|
[ -f "$key_file" ] && api_key=$(cat "$key_file")
|
||||||
echo "Ошибка: Kimi Code не найден ($kimi_bin)."
|
|
||||||
echo "Установите: npm install -g @moonshot-ai/kimi-code"
|
if [ -n "$api_key" ]; then
|
||||||
exit 1
|
echo -n "Проверка сохранённого Kimi ключа... "
|
||||||
|
_claude_test_openai_api "https://api.artemox.com/v1/chat/completions" "$api_key" "kimi-k2.6"
|
||||||
|
_handle_openai_api_response "Kimi" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Пополните баланс: https://artemox.com/dashboard"
|
||||||
|
ret=$?
|
||||||
|
if [ $ret -eq 401 ]; then
|
||||||
|
rm -f "$key_file"
|
||||||
|
api_key=""
|
||||||
|
reauth=1
|
||||||
|
elif [ $ret -eq 429 ]; then
|
||||||
|
echo -n "Продолжить всё равно? (запросы могут не проходить) [y/N] "
|
||||||
|
read -r _ans; case "${_ans:-N}" in [Yy]*) ;; *) exit 1 ;; esac
|
||||||
|
elif [ $ret -ne 0 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$kimi_bin" "$@"
|
if [ -z "$api_key" ] && [ "$reauth" -eq 1 ]; then
|
||||||
|
echo -n "Хотите ввести новый Kimi ключ? [Y/n] "
|
||||||
|
read -r _ans; case "${_ans:-Y}" in [Yy]*) ;; *) exit 1 ;; esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$api_key" ]; then
|
||||||
|
echo "Получить ключ: https://artemox.com/dashboard"
|
||||||
|
read -r -p "Введите ваш Artemox API ключ: " api_key
|
||||||
|
[ -z "$api_key" ] && { echo "Выход."; exit 1; }
|
||||||
|
|
||||||
|
echo -n "Проверяю ключ и баланс... "
|
||||||
|
_claude_test_openai_api "https://api.artemox.com/v1/chat/completions" "$api_key" "kimi-k2.6"
|
||||||
|
_handle_openai_api_response "Kimi" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Пополните баланс: https://artemox.com/dashboard"
|
||||||
|
ret=$?
|
||||||
|
if [ $ret -eq 0 ] || [ $ret -eq 429 ]; then
|
||||||
|
mkdir -p "$(dirname "$key_file")"
|
||||||
|
echo "$api_key" > "$key_file"
|
||||||
|
chmod 600 "$key_file"
|
||||||
|
echo "Ключ сохранён."
|
||||||
|
if [ $ret -eq 429 ]; then
|
||||||
|
echo -n "Продолжить всё равно? (запросы могут не проходить) [y/N] "
|
||||||
|
read -r _ans; case "${_ans:-N}" in [Yy]*) ;; *) exit 1 ;; esac
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Ключ НЕ сохранён."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Запускаем прокси
|
||||||
|
proxy_bin="$HOME/.local/bin/claude-openai-anthropic-proxy.py"
|
||||||
|
proxy_port=18767
|
||||||
|
|
||||||
|
proxy_pid=""
|
||||||
|
cleanup() { [ -n "$proxy_pid" ] && kill "$proxy_pid" 2>/dev/null; }
|
||||||
|
trap cleanup EXIT INT TERM
|
||||||
|
|
||||||
|
OPENAI_API_KEY="$api_key" \
|
||||||
|
OPENAI_MODEL=kimi-k2.6 \
|
||||||
|
python3 "$proxy_bin" --port "$proxy_port" &>/tmp/claude-openai-anthropic-proxy.log &
|
||||||
|
proxy_pid=$!
|
||||||
|
|
||||||
|
echo -n "Запуск Kimi прокси... "
|
||||||
|
_i=0; while [ $_i -lt 10 ]; do sleep 1; curl -s --max-time 1 "http://localhost:$proxy_port/" &>/dev/null; [ "$?" -ne 7 ] && break; _i=$((_i + 1)); done
|
||||||
|
if [ $_i -ge 10 ]; then
|
||||||
|
echo -e "\033[0;31m[ОШИБКА]\033[0m Kimi прокси не запустился за 10 сек."
|
||||||
|
echo "Лог прокси:"
|
||||||
|
cat /tmp/claude-openai-anthropic-proxy.log 2>/dev/null
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo -e "\033[0;32mOK\033[0m"
|
||||||
|
|
||||||
|
ANTHROPIC_BASE_URL="http://localhost:$proxy_port" \
|
||||||
|
ANTHROPIC_AUTH_TOKEN=dummy \
|
||||||
|
ANTHROPIC_MODEL=kimi-k2.6 \
|
||||||
|
ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k2.6 \
|
||||||
|
ANTHROPIC_DEFAULT_SONNET_MODEL=kimi-k2.6 \
|
||||||
|
ANTHROPIC_DEFAULT_HAIKU_MODEL=kimi-k2.6 \
|
||||||
|
CLAUDE_CODE_SUBAGENT_MODEL=kimi-k2.6 \
|
||||||
|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
|
||||||
|
claude "$@"
|
||||||
KIMIEOF
|
KIMIEOF
|
||||||
chmod +x "$BIN_DIR/claude_kimi"
|
chmod +x "$BIN_DIR/claude_kimi"
|
||||||
|
|
||||||
@@ -1144,7 +1217,7 @@ echo ""
|
|||||||
echo "Доступные команды (теперь это независимые скрипты в ~/.local/bin):"
|
echo "Доступные команды (теперь это независимые скрипты в ~/.local/bin):"
|
||||||
echo -e " ${CYAN}claude_gpt${NC} — GPT-5.5 (ChatGPT Plus/Pro, браузерная авторизация)"
|
echo -e " ${CYAN}claude_gpt${NC} — GPT-5.5 (ChatGPT Plus/Pro, браузерная авторизация)"
|
||||||
echo -e " ${CYAN}claude_deepseek${NC} — DeepSeek (API ключ сохраняется)"
|
echo -e " ${CYAN}claude_deepseek${NC} — DeepSeek (API ключ сохраняется)"
|
||||||
echo -e " ${CYAN}claude_kimi${NC} — Kimi K2.6 (нативный Kimi Code + Artemox API)"
|
echo -e " ${CYAN}claude_kimi${NC} — Kimi K2.6 (Artemox API, ключ сохраняется)"
|
||||||
echo -e " ${CYAN}claude_gemini${NC} — Gemini (Google OAuth через браузер)"
|
echo -e " ${CYAN}claude_gemini${NC} — Gemini (Google OAuth через браузер)"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${YELLOW}⚠️ Для Gemini используйте отдельный Google-аккаунт!${NC}"
|
echo -e "${YELLOW}⚠️ Для Gemini используйте отдельный Google-аккаунт!${NC}"
|
||||||
|
|||||||
Reference in New Issue
Block a user