fix: system-prompt через файл, кеш rate_limits при старте, SessionStart хук
- Все лаунчеры (ai-claude, ai-deepseek, ai-kimi, ai-openrouter): промпт пишется во временный файл через --system-prompt-file вместо аргумента командной строки. Решает E2BIG при промптах > 128KB (MAX_ARG_STRLEN) из проектов с большими .md файлами. - statusline: кешируем rate_limits по model_id (раздельные файлы для claude/kimi/openrouter). При старте сессии показываем данные из кеша + ctx:0%. Убирает пустую статусную строку до первого запроса. - settings.json: добавляем SessionStart хук при setup, триггерит вызов statusLine при открытии сессии. - ai-claude: --model sonnet зафиксирован, убрали exec для корректной работы trap (cleanup временного файла). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -658,6 +658,11 @@ if os.path.exists(settings_path):
|
||||
except json.JSONDecodeError:
|
||||
pass
|
||||
data["statusLine"] = {"type": "command", "command": f"bash {script_path}"}
|
||||
# SessionStart хук - триггерит вызов statusLine при старте сессии
|
||||
if "hooks" not in data:
|
||||
data["hooks"] = {}
|
||||
if "SessionStart" not in data["hooks"]:
|
||||
data["hooks"]["SessionStart"] = [{"hooks": [{"type": "command", "command": "true"}]}]
|
||||
with open(settings_path, "w") as f:
|
||||
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||
f.write("\n")
|
||||
@@ -1107,7 +1112,9 @@ if [ -z "$api_key" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
SYS_PROMPT=$(_build_ai_sys_prompt)
|
||||
_PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX)
|
||||
trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM
|
||||
_build_ai_sys_prompt > "$_PROMPT_FILE"
|
||||
ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic \
|
||||
ANTHROPIC_AUTH_TOKEN="$api_key" \
|
||||
ANTHROPIC_MODEL=deepseek-v4-pro \
|
||||
@@ -1116,7 +1123,7 @@ ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-v4-pro \
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-v4-flash \
|
||||
CLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flash \
|
||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
|
||||
claude --dangerously-skip-permissions --system-prompt "$SYS_PROMPT" "$@"
|
||||
claude --dangerously-skip-permissions --system-prompt-file "$_PROMPT_FILE" "$@"
|
||||
DEEPSEEKEOF
|
||||
chmod +x "$BIN_DIR/ai-deepseek"
|
||||
|
||||
@@ -1177,7 +1184,9 @@ if ! command -v claude &>/dev/null; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SYS_PROMPT=$(_build_ai_sys_prompt)
|
||||
_PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX)
|
||||
trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM
|
||||
_build_ai_sys_prompt > "$_PROMPT_FILE"
|
||||
ANTHROPIC_BASE_URL=https://api.kimi.com/coding \
|
||||
ANTHROPIC_AUTH_TOKEN="$api_key" \
|
||||
ANTHROPIC_MODEL=kimi-k2.6 \
|
||||
@@ -1186,7 +1195,7 @@ 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 --dangerously-skip-permissions --system-prompt "$SYS_PROMPT" "$@"
|
||||
claude --dangerously-skip-permissions --system-prompt-file "$_PROMPT_FILE" "$@"
|
||||
KIMIEOF
|
||||
chmod +x "$BIN_DIR/ai-kimi"
|
||||
|
||||
@@ -1247,7 +1256,9 @@ if ! command -v claude &>/dev/null; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SYS_PROMPT=$(_build_ai_sys_prompt)
|
||||
_PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX)
|
||||
trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM
|
||||
_build_ai_sys_prompt > "$_PROMPT_FILE"
|
||||
ANTHROPIC_BASE_URL=https://openrouter.ai/api \
|
||||
ANTHROPIC_AUTH_TOKEN="$api_key" \
|
||||
ANTHROPIC_MODEL=openai/gpt-5.5 \
|
||||
@@ -1256,7 +1267,7 @@ ANTHROPIC_DEFAULT_SONNET_MODEL=anthropic/claude-4.6-sonnet \
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL=openai/gpt-5.5 \
|
||||
CLAUDE_CODE_SUBAGENT_MODEL=openai/gpt-5.5 \
|
||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
|
||||
claude --dangerously-skip-permissions --system-prompt "$SYS_PROMPT" "$@"
|
||||
claude --dangerously-skip-permissions --system-prompt-file "$_PROMPT_FILE" "$@"
|
||||
OPENROUTEREOF
|
||||
chmod +x "$BIN_DIR/ai-openrouter"
|
||||
|
||||
@@ -1295,8 +1306,10 @@ cat > "$BIN_DIR/ai-claude" << 'CLAUDEEOF'
|
||||
#!/usr/bin/env bash
|
||||
# ai-claude - запуск оригинального Claude Code (Anthropic)
|
||||
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
|
||||
SYS_PROMPT=$(_build_ai_sys_prompt)
|
||||
exec claude --dangerously-skip-permissions --system-prompt "$SYS_PROMPT" "$@"
|
||||
_PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX)
|
||||
trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM
|
||||
_build_ai_sys_prompt > "$_PROMPT_FILE"
|
||||
claude --dangerously-skip-permissions --model sonnet --system-prompt-file "$_PROMPT_FILE" "$@"
|
||||
CLAUDEEOF
|
||||
chmod +x "$BIN_DIR/ai-claude"
|
||||
|
||||
@@ -1308,7 +1321,7 @@ if [ "$USE_VLESS" -eq 1 ]; then
|
||||
sed -i 's/^claude --dangerously-skip-permissions/proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" claude --dangerously-skip-permissions/' "$BIN_DIR/ai-kimi"
|
||||
sed -i 's/^claude --dangerously-skip-permissions/proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" claude --dangerously-skip-permissions/' "$BIN_DIR/ai-openrouter"
|
||||
sed -i 's/^\([[:space:]]*\)exec "\$agy_bin"/\1exec proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" "\$agy_bin"/' "$BIN_DIR/ai-gemini"
|
||||
sed -i 's/^exec claude/exec proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" claude/' "$BIN_DIR/ai-claude"
|
||||
sed -i 's/^claude --dangerously-skip-permissions/proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" claude --dangerously-skip-permissions/' "$BIN_DIR/ai-claude"
|
||||
success "proxychains4 интегрирован"
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user