feat: добавить поддержку Kimi K2.7 Code в ai-kimi

- Opus/Sonnet: kimi-k2.7 (флагманский программист)
- Haiku/Subagent: kimi-k2.6 (быстрый универсал)
- Проверка ключа тестирует kimi-k2.7
- Обновлён EFFORT_MAPPING.md и тесты

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-12 21:42:28 +03:00
parent dfa706e7a0
commit 6c2844ce92
3 changed files with 21 additions and 20 deletions

View File

@@ -9,9 +9,9 @@
## Таблица маппинга ## Таблица маппинга
> Актуально на 30 мая 2026 г. > Актуально на 12 июня 2026 г.
| Claude Code<br>`/effort` | Anthropic<br>(Claude) | GPT-5.5<br>(ChatGPT) | DeepSeek V4 | Kimi K2.6<br>(Moonshot) | Gemini 3.x | | Claude Code<br>`/effort` | Anthropic<br>(Claude) | GPT-5.5<br>(ChatGPT) | DeepSeek V4 | Kimi K2.7<br>(Moonshot) | Gemini 3.x |
|:---:|:---:|:---:|:---:|:---:|:---:| |:---:|:---:|:---:|:---:|:---:|:---:|
| `low` | ✅ `low` | ✅ `low` | ⬆ `high` | 🔛 thinking on | ✅ `LOW` | | `low` | ✅ `low` | ✅ `low` | ⬆ `high` | 🔛 thinking on | ✅ `LOW` |
| `medium` | ✅ `medium` | ✅ `medium` | ⬆ `high` | 🔛 thinking on | ✅ `MEDIUM` | | `medium` | ✅ `medium` | ✅ `medium` | ⬆ `high` | 🔛 thinking on | ✅ `MEDIUM` |
@@ -54,7 +54,7 @@ high → max
- `xhigh` → автоматически поднимается до `max` - `xhigh` → автоматически поднимается до `max`
- Маппинг выполняется на стороне DeepSeek API - Маппинг выполняется на стороне DeepSeek API
### Kimi K2.6 (Moonshot AI) ### Kimi K2.7 (Moonshot AI)
``` ```
on / off on / off
``` ```
@@ -80,7 +80,7 @@ MINIMAL → LOW → MEDIUM → HIGH
| Anthropic | Не нужен | — | | Anthropic | Не нужен | — |
| GPT-5.5 | effort-proxy (наш) | `~/.local/bin/claude-gpt-effort-proxy.py` | | GPT-5.5 | effort-proxy (наш) | `~/.local/bin/claude-gpt-effort-proxy.py` |
| DeepSeek V4 | DeepSeek API | На стороне сервера | | DeepSeek V4 | DeepSeek API | На стороне сервера |
| Kimi K2.6 | Moonshot API | На стороне сервера | | Kimi K2.7 | Moonshot API | На стороне сервера |
| Gemini 3.x | antigravity-claude-proxy | npm пакет | | Gemini 3.x | antigravity-claude-proxy | npm пакет |
## Persistence effort между сессиями ## Persistence effort между сессиями

View File

@@ -1408,7 +1408,7 @@ api_key=""
if [ -n "$api_key" ]; then if [ -n "$api_key" ]; then
echo -n "Проверка сохранённого Kimi ключа... " echo -n "Проверка сохранённого Kimi ключа... "
_claude_test_api "https://api.kimi.com/coding/v1/messages" "x-api-key: $api_key" "kimi-k2.6" _claude_test_api "https://api.kimi.com/coding/v1/messages" "x-api-key: $api_key" "kimi-k2.7"
_handle_api_response "Kimi" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Пополните баланс: https://www.kimi.com/code" _handle_api_response "Kimi" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Пополните баланс: https://www.kimi.com/code"
ret=$_API_RET ret=$_API_RET
if [ $ret -eq 401 ]; then if [ $ret -eq 401 ]; then
@@ -1428,7 +1428,7 @@ if [ -z "$api_key" ]; then
[ -z "$api_key" ] && { echo "Выход."; exit 1; } [ -z "$api_key" ] && { echo "Выход."; exit 1; }
echo -n "Проверяю ключ и баланс... " echo -n "Проверяю ключ и баланс... "
_claude_test_api "https://api.kimi.com/coding/v1/messages" "x-api-key: $api_key" "kimi-k2.6" _claude_test_api "https://api.kimi.com/coding/v1/messages" "x-api-key: $api_key" "kimi-k2.7"
_handle_api_response "Kimi" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Пополните баланс: https://www.kimi.com/code" _handle_api_response "Kimi" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" "Пополните баланс: https://www.kimi.com/code"
ret=$_API_RET ret=$_API_RET
if [ $ret -eq 0 ] || [ $ret -eq 429 ]; then if [ $ret -eq 0 ] || [ $ret -eq 429 ]; then
@@ -1457,23 +1457,23 @@ trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM
_build_ai_sys_prompt > "$_PROMPT_FILE" _build_ai_sys_prompt > "$_PROMPT_FILE"
export AI_LAUNCHER=kimi export AI_LAUNCHER=kimi
export CLAUDE_CONFIG_DIR="$HOME/.config/ai-setup/cfg/kimi" export CLAUDE_CONFIG_DIR="$HOME/.config/ai-setup/cfg/kimi"
# Пикер: Kimi K2.6 - единственная модель провайдера. availableModels НЕ задаём # Пикер: Opus/Sonnet = Kimi K2.7 Code, Haiku = Kimi K2.6. availableModels НЕ задаём
# (он схлопывает пикер в Default). Claude Code навязывает 3 слота opus/sonnet/haiku; # (он схлопывает пикер в Default). Claude Code навязывает 3 слота opus/sonnet/haiku;
# незаданный показал бы чужой Claude, поэтому все три мапим на Kimi K2.6 # незаданный показал бы чужой Claude, поэтому opus+sonnet = K2.7, haiku = K2.6
# (в пикере 3 одинаковых пункта, но все - Kimi). DISABLE_1M убирает [1M] дубли. # DISABLE_1M убирает [1M] дубли из пикера.
_setup_isolated_config kimi opus high '' _setup_isolated_config kimi opus high ''
_apply_effort kimi high _apply_effort kimi high
ANTHROPIC_BASE_URL=https://api.kimi.com/coding \ ANTHROPIC_BASE_URL=https://api.kimi.com/coding \
ANTHROPIC_AUTH_TOKEN="$api_key" \ ANTHROPIC_AUTH_TOKEN="$api_key" \
ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k2.6 \ ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k2.7 \
ANTHROPIC_DEFAULT_OPUS_MODEL_NAME="Kimi K2.6" \ ANTHROPIC_DEFAULT_OPUS_MODEL_NAME="Kimi K2.7 Code" \
ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION="Kimi K2.6 (Moonshot AI)" \ ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION="Kimi K2.7 Code — флагманский программист (Moonshot AI)" \
ANTHROPIC_DEFAULT_SONNET_MODEL=kimi-k2.6 \ ANTHROPIC_DEFAULT_SONNET_MODEL=kimi-k2.7 \
ANTHROPIC_DEFAULT_SONNET_MODEL_NAME="Kimi K2.6" \ ANTHROPIC_DEFAULT_SONNET_MODEL_NAME="Kimi K2.7 Code" \
ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION="Kimi K2.6 (Moonshot AI)" \ ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION="Kimi K2.7 Code — флагманский программист (Moonshot AI)" \
ANTHROPIC_DEFAULT_HAIKU_MODEL=kimi-k2.6 \ ANTHROPIC_DEFAULT_HAIKU_MODEL=kimi-k2.6 \
ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME="Kimi K2.6" \ ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME="Kimi K2.6" \
ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION="Kimi K2.6 (Moonshot AI)" \ ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION="Kimi K2.6 — быстрый универсал (Moonshot AI)" \
CLAUDE_CODE_SUBAGENT_MODEL=kimi-k2.6 \ CLAUDE_CODE_SUBAGENT_MODEL=kimi-k2.6 \
CLAUDE_CODE_DISABLE_1M_CONTEXT=1 \ CLAUDE_CODE_DISABLE_1M_CONTEXT=1 \
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
@@ -1662,7 +1662,7 @@ echo ""
echo " На базе Claude Code:" echo " На базе Claude Code:"
echo -e " ${CYAN}ai-claude${NC} - Оригинальный Claude Code (Anthropic)" echo -e " ${CYAN}ai-claude${NC} - Оригинальный Claude Code (Anthropic)"
echo -e " ${CYAN}ai-deepseek${NC} - DeepSeek (через Claude Code, API ключ сохраняется)" echo -e " ${CYAN}ai-deepseek${NC} - DeepSeek (через Claude Code, API ключ сохраняется)"
echo -e " ${CYAN}ai-kimi${NC} - Kimi K2.6 (через Claude Code, API ключ сохраняется)" echo -e " ${CYAN}ai-kimi${NC} - Kimi K2.7 Code (через Claude Code, API ключ сохраняется)"
echo -e " ${CYAN}ai-openrouter${NC} - OpenRouter (через Claude Code: GPT-5.5, Opus 4.8, Sonnet 4.6)" echo -e " ${CYAN}ai-openrouter${NC} - OpenRouter (через Claude Code: GPT-5.5, Opus 4.8, Sonnet 4.6)"
echo "" echo ""
echo " Нативные CLI:" echo " Нативные CLI:"

View File

@@ -48,11 +48,12 @@ test_kimi_claude_launcher() {
# ── ai-kimi: uses official Kimi API ────────────────────────────────────── # ── ai-kimi: uses official Kimi API ──────────────────────────────────────
test_kimi_official_api() { test_kimi_official_api() {
if echo "$KIMI_SECTION" | grep -q 'api.kimi.com/coding' \ if echo "$KIMI_SECTION" | grep -q 'api.kimi.com/coding' \
&& echo "$KIMI_SECTION" | grep -q 'ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k2.6' \ && echo "$KIMI_SECTION" | grep -q 'ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k2.7' \
&& echo "$KIMI_SECTION" | grep -q 'ANTHROPIC_DEFAULT_HAIKU_MODEL=kimi-k2.6' \
&& ! echo "$KIMI_SECTION" | grep -q 'artemox'; then && ! echo "$KIMI_SECTION" | grep -q 'artemox'; then
ok "ai-kimi: uses official Kimi API and model" ok "ai-kimi: uses official Kimi API (K2.7 opus/sonnet, K2.6 haiku)"
else else
fail "ai-kimi: must use official Kimi API (api.kimi.com/coding) and model kimi-k2.6" fail "ai-kimi: must use official Kimi API (api.kimi.com/coding) with K2.7 opus/sonnet, K2.6 haiku"
fi fi
} }