功能: 优化多模型上下文窗口配置与状态栏显示
CI / lint (push) Successful in 6s

This commit is contained in:
2026-04-30 16:16:07 +08:00
parent c46e63b10a
commit 7eb22db481
3 changed files with 141 additions and 10 deletions
+25 -6
View File
@@ -3,15 +3,28 @@
input=$(cat)
# Extract fields using jq
MODEL=$(echo "$input" | jq -r '.model.display_name' | sed 's/\[1m\]/[200k]/')
MODEL=$(echo "$input" | jq -r '.model.display_name')
DIR=$(echo "$input" | jq -r '.workspace.current_dir')
V=$(echo "$input" | jq -r '.version')
# 上下文窗口大小(由 runcc.sh 根据 Provider 设置并写入 settings.json
# 默认 200000。GLM=200k, DeepSeek=1M
CC_CONTEXT_WINDOW="${CC_CONTEXT_WINDOW:-200000}"
# 格式化上下文窗口: 200000→200k, 1000000→1M
if [ "$CC_CONTEXT_WINDOW" -ge 1000000 ]; then
CW_DISPLAY="$((CC_CONTEXT_WINDOW / 1000000))M"
else
CW_DISPLAY="$((CC_CONTEXT_WINDOW / 1000))k"
fi
# 模型名后追加上下文窗口大小(避免重复追加)
if [[ "$MODEL" != *"$CW_DISPLAY"* ]]; then
MODEL="${MODEL} [${CW_DISPLAY}]"
fi
# 计算上下文使用占比
# JSON 中 used_percentage 是相对模型实际窗口(如 GLM 的 1M)计算的,
# 但 /context 命令显示的是相对 auto-compact 窗口(200k)的占比。
# 因此需要用实际 token 数 / 200000 来获得正确的百分比。
AUTO_COMPACT_WINDOW=200000
AUTO_COMPACT_WINDOW="$CC_CONTEXT_WINDOW"
PCT=$(echo "$input" | jq -r --argjson w "$AUTO_COMPACT_WINDOW" '
((
(.context_window.current_usage.input_tokens // 0) +
@@ -34,4 +47,10 @@ elif git rev-parse --git-dir >/dev/null 2>&1; then
REMOTE="🌐 $(git remote get-url origin 2>/dev/null)"
fi
echo "版本:v$V | 模型:$MODEL | 上下文:${PCT}%"
# DISABLE_COMPACT 提醒:无自动压缩,需手动 /compact 或 /clear
COMPACT_HINT=""
if [ "${DISABLE_COMPACT:-0}" = "1" ]; then
COMPACT_HINT=" | ⚠无自动压缩"
fi
echo "版本:v$V | 模型:$MODEL | 上下文:${PCT}%${COMPACT_HINT}"