From 23256d9579414b6a74c5df54dbcd27451fc987b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D1=82=D0=B0=D0=BB=D0=B8=D0=B9=20=D0=9D=D0=B8?= =?UTF-8?q?=D0=BA=D0=B8=D1=82=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Wed, 10 Jun 2026 08:55:05 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B0=D0=BA=D0=BA=D0=B0=D1=83=D0=BD?= =?UTF-8?q?=D1=82=20=D0=BC=D0=B5=D0=B6=D0=B4=D1=83=20=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D0=BE=D0=B9=20=D0=B8=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D1=8E,=20exit=200=20=D0=B2=20switch-account=20=D1=85?= =?UTF-8?q?=D1=83=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - statusline: [account] выводится между [branch] и model, тот же оранжевый цвет - switch-account-hook: exit 0 вместо exit 2, чтобы Claude ответил и перерисовал статусбар - switch-account skill: инструкция отвечать одним символом ✓ Co-Authored-By: Claude Sonnet 4.6 --- home-configs/claude/hooks/switch-account-hook.sh | 12 +++++++----- home-configs/claude/skills/switch-account/SKILL.md | 4 ++++ home-configs/claude/statusline-command.sh | 7 ++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/home-configs/claude/hooks/switch-account-hook.sh b/home-configs/claude/hooks/switch-account-hook.sh index a90d0de..488326f 100755 --- a/home-configs/claude/hooks/switch-account-hook.sh +++ b/home-configs/claude/hooks/switch-account-hook.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash -# UserPromptSubmit hook: перехватывает /switch-account без участия LLM +# UserPromptSubmit hook: перехватывает /switch-account и обновляет аккаунт. +# Используем exit 0 (не exit 2) чтобы Claude ответил - это единственный способ +# обновить статусную строку, т.к. Claude Code перерисовывает её только после ответа LLM. input=$(cat) prompt=$(echo "$input" | jq -r '.user_prompt // .prompt // empty' 2>/dev/null) @@ -38,7 +40,7 @@ cp "$ACCOUNTS_DIR/${next}.credentials.json" "$CREDS" chmod 600 "$CREDS" echo "$next" > "$CURRENT_FILE" -echo "Аккаунт: ${current:-?} -> ${next} (всего: ${#accounts[@]})" >&2 - - -exit 2 +# exit 0 (не exit 2): оригинальный /switch-account доходит до Claude, +# Claude загружает скилл switch-account, скилл велит ответить только "✓" (1 токен). +# Это единственный способ обновить статусную строку без лишних токенов. +exit 0 diff --git a/home-configs/claude/skills/switch-account/SKILL.md b/home-configs/claude/skills/switch-account/SKILL.md index 6092930..6a26350 100644 --- a/home-configs/claude/skills/switch-account/SKILL.md +++ b/home-configs/claude/skills/switch-account/SKILL.md @@ -2,3 +2,7 @@ name: switch-account description: Switch to next Claude.ai account (handled by UserPromptSubmit hook, no LLM needed) --- + +Переключение аккаунта уже выполнено хуком до того, как ты это читаешь. +Ответь ровно одним символом: `✓` +Никаких инструментов. Никаких объяснений. Только `✓`. diff --git a/home-configs/claude/statusline-command.sh b/home-configs/claude/statusline-command.sh index a4e8e91..674ac63 100644 --- a/home-configs/claude/statusline-command.sh +++ b/home-configs/claude/statusline-command.sh @@ -18,12 +18,9 @@ printf "\033[00;37m%s\033[00m" "$short_cwd" if [ -n "$model" ]; then effort=$(jq -r '.effortLevel // empty' ~/.claude/settings.json 2>/dev/null) account=$(cat ~/.claude/accounts/current 2>/dev/null) - if [ -n "$effort" ] && [ -n "$account" ]; then - printf " \033[38;5;173m%s [%s·%s]\033[00m" "$model" "$effort" "$account" - elif [ -n "$effort" ]; then + [ -n "$account" ] && printf " \033[38;5;173m[%s]\033[00m" "$account" + if [ -n "$effort" ]; then printf " \033[38;5;173m%s [%s]\033[00m" "$model" "$effort" - elif [ -n "$account" ]; then - printf " \033[38;5;173m%s [%s]\033[00m" "$model" "$account" else printf " \033[38;5;173m%s\033[00m" "$model" fi