背景
headroom 能极大程度的压缩上下文,节省token的消耗。
本文在已有claude code + cc switch + ds 的情况下使用headroom进行中转。
前提
根据网上教程下载并安装好 ccswitch 和 headroom
过程
1. 确认是否正确安装headroom
shell
headroom --version
2. cc switch 开启本地路由
服务地址默认:http://127.0.0.1:15721
3. 编写headroom 启动脚本
新建headroom-start.ps1,写入如下内容:
shell
$env:ANTHROPIC_TARGET_API_URL="http://127.0.0.1:15721"
$env:HEADROOM_HOST="127.0.0.1"
if(-not $env:HEADROOM_OUTPUT_SHAPER){
$env:HEADROOM_OUTPUT_SHAPER="0"
}
$env:HEADROOM_SKIP_UPSTREAM_CHECK="1"
# 启动headroom
headroom proxy --port 8787 --host 127.0.0.1
4. 将headroom启动脚本设置为开机自启动【图形化配置方法】
- 按下 Win + S 搜索「任务计划程序」并打开,点击右侧 创建任务(不要选「创建基本任务」,功能不全)。
- 常规 选项卡
名称:HeadroomProxy 开机自启(自定义可识别名称)
勾选 只在用户登录时运行(本地日常使用选这个最稳妥)
勾选 使用最高权限运行(避免端口绑定权限不足)
配置为:Windows 10 / Windows 11 - 触发器 选项卡 → 点击「新建」
开始任务:登录时
默认选中「特定用户」(即当前登录用户,无需修改)
高级设置建议勾选 延迟任务时间:30 秒(给系统网络、上游代理服务留启动时间,避免 headroom 因上游未就绪而启动失败)
点击确定。 - 操作 选项卡 → 点击「新建」
操作:启动程序
程序或脚本:powershell.exe
添加参数(必填,把路径替换为你脚本的真实绝对路径):
shell
-WindowStyle Hidden -ExecutionPolicy Bypass -NoProfile -File "C:\Users\你的用户名\headroom-start.ps1"
参数说明:
-WindowStyle Hidden:隐藏命令行窗口,后台静默运行
-ExecutionPolicy Bypass:临时绕过系统执行策略限制,避免脚本被默认安全规则禁止运行
-NoProfile:不加载用户配置文件,启动更快且避免环境干扰
-File 后必须跟绝对路径,不能用 ~ 或相对路径
起始于(可选但建议填):脚本所在文件夹路径,例如 C:\Users\你的用户名\,避免脚本内相对路径执行异常。
- 条件 选项卡
取消勾选「只有计算机使用交流电源时才启动此任务」(笔记本用户必改,否则断电状态不启动)
取消勾选「唤醒计算机运行此任务」
- 设置 选项卡
勾选「允许按需运行任务」
勾选「如果任务失败,按以下频率重新启动」:间隔 1 分钟,尝试 3 次
取消勾选「如果任务运行时间超过以下时间,停止任务」(headroom 是常驻后台服务,不能被系统自动终止)
点击确定保存。
配置完成后,右键任务 → 「运行」,先手动测试一次,再用 curl.exe --noproxy "*" http://127.0.0.1:8787/livez 验证服务是否正常启动。
5. 修改cc的base url
找到.claude\setttings.json
将ANTHROPIC_BASE_URL的值修改为 http://127.0.0.1:8787(这个是headroom的监听接口,我们希望的链路是 cc -> headroom (完成compression) -> cc switch -> ds)
6. 验证headroom是否正常工作
新建request.json ,写入以下内容:
shell
{
"model": "deepseek-v4-pro[1m]",
"max_tokens": 16,
"messages": [
{"role": "user", "content": "say ok"}
]
}
在powershell中输入:
shell
curl.exe --noproxy "*" -s -X POST http://127.0.0.1:8787/v1/messages `
-H "x-api-key: PROXY_MANAGED" `
-H "anthropic-version: 2023-06-01" `
-H "content-type: application/json" `
-d "@request.json"
若有返回,则正常工作,可以自行观察缓存命中率,token消耗,debug等,对比使用前后效果