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

This commit is contained in:
2026-04-29 13:03:16 +08:00
parent c46e63b10a
commit 7eb22db481
3 changed files with 141 additions and 10 deletions

View File

@@ -1,12 +1,8 @@
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "{{your_api_key}}",
"ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/anthropic",
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "200000",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75",
"CLAUDE_CODE_NO_FLICKER": "1"
},
"enabledPlugins": {

View File

@@ -1,2 +1,118 @@
# vscode 的对话记录
## 2026-04-29 13:03:12
/glm-plan-usage:usage-query
## 2026-04-29 13:05:47
升级当前 vscode 的 claude code 插件到 2.1.123 版本.
## 2026-04-30 14:40:01
分析 /workspace/.devcontainer/.volumes/bin/runcc.sh 脚本。进行优化:
1. 在 runcc.sh 同目录下创建一个 .env 文件,存储环境变量。这样可以更方便地管理和修改环境变量,而不需要直接编辑 runcc.sh 脚本。在启动的时候检查是否有这个文件,如果有就加载其中的环境变量。
2. 分析 runcc.sh 看看哪些需要从 .env 文件读取
3. 支持 ANTHROPIC_BASE_URL , ANTHROPIC_AUTH_TOKEN 从 .env 读取,需要让 runcc.sh 检查并将这2个变量从 ~/.claude/settings.json 中去掉,并且在 runcc.sh 中添加代码来加载 .env 文件中的环境变量。
4. 可以支持从 `https://open.bigmodel.cn/api/anthropic` 使用 GLM Coding Plan 和 从 `https://api.deepseek.com/anthropic` 使用 DeepSeek。
5. 预留支持其他厂家模型的使用方式。
## 2026-04-30 14:55:10
调整 @.devcontainer/.volumes/bin/runcc.sh , 直接通过 CC_PROVIDER 来判断使用哪个变量作为模型的 base_url, auth_token . 例如, 如果 CC_PROVIDER=glm, 则使用 GLM_BASE_URL, GLM_AUTH_TOKEN, 如果 CC_PROVIDER=deepseek , 则使用 DEEPSEEK_BASE_URL, DEEPSEEK_AUTH_TOKEN 依次类推. 这样就不需要一个独立的 CUSTOM_BASE_URL 和 CUSTOM_AUTH_TOKEN
## 2026-04-30 15:05:22
由于 glm 的上下文是 200k, deepseek 的上下文是 1m , 需要调整 .env, runcc.sh 和 @scripts/status-line.sh
## 2026-04-30 15:12:24
分别执行 runcc.sh 和 runcc.sh -p deepseek 后, 通过 /content 检查,发现 设置的上下文窗口都是 200k
## 2026-04-30 15:13:41
你是谁?
## 2026-04-30 15:14:08
检查当前上下文窗口设置
## 2026-04-30 15:21:21
去掉 setting.json 中的 CLAUDE_CODE_AUTO_COMPACT_WINDOW , 这不通用,不能实现通过 runcc.sh 分别启动 glm 和 deepseek . 需要想办法 通过 runcc.sh 和 .env 来处理.
## 2026-04-30 15:27:54
在 运行 runcc.sh 的时候,也可能没有 tmux 环境, 请检查在无 tmux 下是否生效.
## 2026-04-30 15:29:29
执行后还是存在问题:
▐▛███▜▌ Claude Code v2.1.123
▝▜█████▛▘ deepseek-v4-pro with max effort · API Usage Billing
▘▘ ▝▝ /workspace
/context
⎿ Context Usage
⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ deepseek-v4-pro
⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛀ ⛀ 43.8k/200k tokens (22%)
⛁ ⛁ ⛀ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ Estimated usage by category
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ System prompt: 6.8k tokens (3.4%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ System tools: 19k tokens (9.5%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ MCP tools: 13.2k tokens (6.6%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Custom agents: 674 tokens (0.3%)
⛶ ⛶ ⛶ ⛝ ⛝ ⛝ ⛝ ⛝ ⛝ ⛝ ⛁ Memory files: 2.4k tokens (1.2%)
⛝ ⛝ ⛝ ⛝ ⛝ ⛝ ⛝ ⛝ ⛝ ⛝ ⛁ Skills: 1.7k tokens (0.8%)
⛁ Messages: 84 tokens (0.0%)
⛶ Free space: 123.2k (61.6%)
⛝ Autocompact buffer: 33k tokens (16.5%)
## 2026-04-30 15:36:37
我执行 runcc.sh -p deepseek 后, 发现 setting.json 中 CLAUDE_CODE_AUTO_COMPACT_WINDOW 还是 200000
## 2026-04-30 15:40:37
runcc.sh 中 SETTINGS_FILE 变量是否会造成影响?
## 2026-04-30 15:42:41
在 status-line.sh 显示的状态栏中,不管是启动 glm 还是 deepseek , 都没有在模型名字后正确的显示当前上下文大小. "版本v2.1.123 | 模型glm-5.1 | 上下文61%"
## 2026-04-30 15:46:38
使用 tmux 通过 runcc.sh -p deepseek 启动一个实例, 检查 上下文窗口是否的确是 1M , 注意使用 `/content` 命令验证.
## 2026-04-30 15:52:23
使用 tmux 运行 runcc.sh 和 runcc.sh -p deepseek 分别测试,验证上下文窗口
## 2026-04-30 16:08:02
在 status-line.sh 中对做了 DISABLE_COMPACT 的供应商模型,进行特别的标记,以提醒使用者这个情况,以便于使用者手动执行压缩.
## 2026-04-30 16:10:58
使用 tmux 分别对 runcc.sh , runcc.sh -p deepseek 进行测试, 看是否符合修改要求.

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}"