feat: брендовые цвета имён моделей, персистентность model между сессиями
- _brand_color: цвет имени модели по AI_LAUNCHER deepseek=синий(69), claude=оранжевый(173), kimi=голубой(81), openrouter=фиолетовый(135), остальные=кремовый(223) - _restore_model / _restore_model_str: сохранение и восстановление model_id в кэше лаунчера (~/.cache/ai-setup/model_<launcher>) - effort-save-hook также сохраняет model_id при завершении сессии - ai-claude/ai-openrouter используют восстановленную модель при старте Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1106,6 +1106,44 @@ with open(settings_path, 'w') as f:
|
||||
PYEOF
|
||||
}
|
||||
|
||||
_restore_model() {
|
||||
local default_model="${1:-}"
|
||||
local launcher="${AI_LAUNCHER:-}"
|
||||
[ -z "$launcher" ] && return
|
||||
local model_file="$HOME/.cache/ai-setup/model_${launcher}"
|
||||
local model
|
||||
model=$(cat "$model_file" 2>/dev/null)
|
||||
[ -z "$model" ] && model="$default_model"
|
||||
[ -z "$model" ] && return
|
||||
python3 - "$HOME/.claude/settings.json" "$model" <<'PYEOF'
|
||||
import sys, json, os
|
||||
settings_path, model = sys.argv[1], sys.argv[2]
|
||||
data = {}
|
||||
if os.path.exists(settings_path):
|
||||
try:
|
||||
with open(settings_path) as f:
|
||||
data = json.load(f)
|
||||
except Exception:
|
||||
pass
|
||||
data['model'] = model
|
||||
with open(settings_path, 'w') as f:
|
||||
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||
f.write('\n')
|
||||
PYEOF
|
||||
}
|
||||
|
||||
# _restore_model_str: возвращает сохранённую модель строкой (для ANTHROPIC_MODEL env var)
|
||||
_restore_model_str() {
|
||||
local default_model="${1:-}"
|
||||
local launcher="${AI_LAUNCHER:-}"
|
||||
[ -z "$launcher" ] && echo "$default_model" && return
|
||||
local model_file="$HOME/.cache/ai-setup/model_${launcher}"
|
||||
local model
|
||||
model=$(cat "$model_file" 2>/dev/null)
|
||||
[ -z "$model" ] && model="$default_model"
|
||||
echo "$model"
|
||||
}
|
||||
|
||||
_build_ai_sys_prompt() {
|
||||
local global_rules="$HOME/.config/ai-setup/global_rules.md"
|
||||
local global_rendered=""
|
||||
@@ -1377,9 +1415,10 @@ trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM
|
||||
_build_ai_sys_prompt > "$_PROMPT_FILE"
|
||||
export AI_LAUNCHER=openrouter
|
||||
_restore_effort high
|
||||
_MODEL=$(_restore_model_str "openai/gpt-5.5")
|
||||
ANTHROPIC_BASE_URL=https://openrouter.ai/api \
|
||||
ANTHROPIC_AUTH_TOKEN="$api_key" \
|
||||
ANTHROPIC_MODEL=openai/gpt-5.5 \
|
||||
ANTHROPIC_MODEL=$_MODEL \
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL=anthropic/claude-4.8-opus \
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL=anthropic/claude-4.6-sonnet \
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL=openai/gpt-5.5 \
|
||||
@@ -1431,7 +1470,8 @@ trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM
|
||||
_build_ai_sys_prompt > "$_PROMPT_FILE"
|
||||
export AI_LAUNCHER=claude
|
||||
_restore_effort xhigh
|
||||
claude --dangerously-skip-permissions --model sonnet --system-prompt-file "$_PROMPT_FILE" "$@"
|
||||
_restore_model "sonnet"
|
||||
claude --dangerously-skip-permissions --system-prompt-file "$_PROMPT_FILE" "$@"
|
||||
CLAUDEEOF
|
||||
chmod +x "$BIN_DIR/ai-claude"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user