claude 避免超长上线文使用,从而产生大量成本

以Qwen3.6-Plus为例

上下文大小 输入价格 (元/百万Token) 输出价格 (元/百万Token)
0 < Token ≤ 256K 2 12
256K < Token ≤ 1M 8 48

一、设置环境变量

在启动 Claude Code 前,设置以下环境变量。你可以将它们写入 ~/.bashrc 或 ~/.zshrc 以永久生效。

# 1. 禁用 1M 上下文,让模型回落到 200K 的默认上下文窗口
#    这是最直接的一步,从源头避免进入高价区间[reference:8][reference:9]
export CLAUDE_CODE_DISABLE_1M_CONTEXT=1

# 2. 设置自动压缩阈值,提前触发对话压缩
#    建议设置为 150000 (150K),为输出 token 预留空间,确保总输入 < 256K[reference:10]
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=150000

# 3. (可选) 使用精简版系统提示,减少每轮请求的基础 token 消耗[reference:11]
#    注意:可能会影响一些默认行为,适合简单任务[reference:12]
# export CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=1

二、状态栏脚本

cat > ~/.claude/statusline.sh << 'EOF'
#!/bin/bash
input=$(cat)

total_input=$(echo "$input" | grep -o '"total_input_tokens":[0-9]*' | head -1 | sed 's/.*://')
total_output=$(echo "$input" | grep -o '"total_output_tokens":[0-9]*' | head -1 | sed 's/.*://')
context=$(echo "$input" | grep -o '"context_window_size":[0-9]*' | head -1 | sed 's/.*://')

if [ -z "$context" ] || [ "$context" -eq 0 ]; then
  echo "⚙️ Tokens: 加载中..."
  exit 0
fi

sum=$((total_input + total_output))
pct=$(awk "BEGIN {printf \"%.1f\", ($sum/$context)*100}")

# 千分位函数(纯 awk,兼容所有平台)
format_number() {
    echo "$1" | awk '{
        num = $0
        len = length(num)
        if (len <= 3) { print num; exit }
        result = ""
        for (i = len; i > 0; i -= 3) {
            start = i - 2
            if (start < 1) start = 1
            part = substr(num, start, i - start + 1)
            if (result != "") result = part "," result
            else result = part
        }
        print result
    }'
}

used_fmt=$(format_number "$sum")
total_fmt=$(format_number "$context")

echo " $used_fmt / $total_fmt ($pct%)"
EOF

chmod +x ~/.claude/statusline.sh

三、启用

手动用编辑器打开 ~/.claude/settings.json,将 statusLine 设置为:

"statusLine": {
  "type": "command",
  "command": "bash ~/.claude/statusline.sh"
}
此条目发表在ai, claude分类目录,贴了标签。将固定链接加入收藏夹。