feat: аккаунт между веткой и моделью, exit 0 в switch-account хуке
- statusline: [account] выводится между [branch] и model, тот же оранжевый цвет - switch-account-hook: exit 0 вместо exit 2, чтобы Claude ответил и перерисовал статусбар - switch-account skill: инструкция отвечать одним символом ✓ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# UserPromptSubmit hook: перехватывает /switch-account без участия LLM
|
# UserPromptSubmit hook: перехватывает /switch-account и обновляет аккаунт.
|
||||||
|
# Используем exit 0 (не exit 2) чтобы Claude ответил - это единственный способ
|
||||||
|
# обновить статусную строку, т.к. Claude Code перерисовывает её только после ответа LLM.
|
||||||
|
|
||||||
input=$(cat)
|
input=$(cat)
|
||||||
prompt=$(echo "$input" | jq -r '.user_prompt // .prompt // empty' 2>/dev/null)
|
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"
|
chmod 600 "$CREDS"
|
||||||
echo "$next" > "$CURRENT_FILE"
|
echo "$next" > "$CURRENT_FILE"
|
||||||
|
|
||||||
echo "Аккаунт: ${current:-?} -> ${next} (всего: ${#accounts[@]})" >&2
|
# exit 0 (не exit 2): оригинальный /switch-account доходит до Claude,
|
||||||
|
# Claude загружает скилл switch-account, скилл велит ответить только "✓" (1 токен).
|
||||||
|
# Это единственный способ обновить статусную строку без лишних токенов.
|
||||||
exit 2
|
exit 0
|
||||||
|
|||||||
@@ -2,3 +2,7 @@
|
|||||||
name: switch-account
|
name: switch-account
|
||||||
description: Switch to next Claude.ai account (handled by UserPromptSubmit hook, no LLM needed)
|
description: Switch to next Claude.ai account (handled by UserPromptSubmit hook, no LLM needed)
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Переключение аккаунта уже выполнено хуком до того, как ты это читаешь.
|
||||||
|
Ответь ровно одним символом: `✓`
|
||||||
|
Никаких инструментов. Никаких объяснений. Только `✓`.
|
||||||
|
|||||||
@@ -18,12 +18,9 @@ printf "\033[00;37m%s\033[00m" "$short_cwd"
|
|||||||
if [ -n "$model" ]; then
|
if [ -n "$model" ]; then
|
||||||
effort=$(jq -r '.effortLevel // empty' ~/.claude/settings.json 2>/dev/null)
|
effort=$(jq -r '.effortLevel // empty' ~/.claude/settings.json 2>/dev/null)
|
||||||
account=$(cat ~/.claude/accounts/current 2>/dev/null)
|
account=$(cat ~/.claude/accounts/current 2>/dev/null)
|
||||||
if [ -n "$effort" ] && [ -n "$account" ]; then
|
[ -n "$account" ] && printf " \033[38;5;173m[%s]\033[00m" "$account"
|
||||||
printf " \033[38;5;173m%s [%s·%s]\033[00m" "$model" "$effort" "$account"
|
if [ -n "$effort" ]; then
|
||||||
elif [ -n "$effort" ]; then
|
|
||||||
printf " \033[38;5;173m%s [%s]\033[00m" "$model" "$effort"
|
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
|
else
|
||||||
printf " \033[38;5;173m%s\033[00m" "$model"
|
printf " \033[38;5;173m%s\033[00m" "$model"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user