DSH升级后的一次bug处理:
现象
用户反馈 DeepSeek Harness 中自定义模型(集团内网 AI 大模型网关)突然每次都报 502。错误信息很明确——本地代理转发到集团内网 AI 网关时 SSLEOFError: EOF occurred in violation of protocol。
更诡异的是:我用 Python 直接测代理,所有请求都正常返回 200。但用户通过 DSH GUI 发消息,永远 502。
排查
我做了两轮测试:单请求、并发、压力测试、带 41 个工具的完整请求、流式/非流式、大 body 到 820KB……全部通过。数据链路本身没问题,那问题一定出在 DSH 到底发了什么请求。
在代理脚本里临时加了诊断日志,捕获到了 DSH 的真实请求头:
Authorization: Bearer sk-placeholder
User-Agent: deepseek-harness/0.1.1-rc.2
两个关键发现:
DSH 已静默升级到 0.1.1-rc.2——用户没注意到,版本号变了
新版 DSH 发送了 Bearer sk-placeholder——而不是配置里填的占位 key
本地代理维护了一个占位符列表(dummy、sk-test、your-api-key……),但 sk-placeholder 不在里面。代理把它当作真实 API key 转发给集团内网网关,网关收到无效 key,直接拒绝连接(TLS 断开)。
这就是诡异 502 的根因:DSH 升级 → 发送新占位符 → 代理不识别 → 无效 key 转发 → 网关拒绝。
修复
两行改动:在代理脚本的占位符集合里加上 sk-placeholder。代理识别到这是无效 key 后,自动回退内置的正确网关密钥,请求正常通过。同时把 credentials 里的占位符也替换为真实密钥,双重保险。
启示
升级依赖时,哪怕是小版本号变更,运行时行为也可能静默变化。这次是 key 占位符的发送策略变了——如果不是抓到真实请求头,这个 502 会一直是个谜。#how i ai#
发布于 山东
