DeepSeek Harness 报「获取可用模型」401:API Key 或 Base URL 不匹配的修复
DeepSeek Harness 报「获取可用模型」返回 401,是认证失败:模型发现会调用 OpenAI 兼容的 GET /models 端点,API Key 无效/过期或 Base URL 指向非官方端点都会被服务端以 401 拒绝。 根因是 base URL、key、模型名三者必须匹配同一提供方。按「换 key → 校准 base URL → 排查代理 → 验证」四步修。
DeepSeek Harness 报「获取可用模型」401:报错原文与触发时机
报错原文为「获取可用模型」返回 401——打开模型设置、切换模型或发对话时,模型发现调用 GET /models 端点被服务端拒绝。 触发时机与判断(来源):
- 打开「设置 → 模型」,界面拉取可用模型列表,返回 401;
- 或切换模型、发起对话时,模型发现流程先失败,带出 401;
- 判断关键:401 是认证层错误,不是模型不存在——服务端根本没认可你的身份,
UNKNOWN_MODEL是另一层的问题; - 排查顺序固定:先怀疑 key,再怀疑 base URL,最后怀疑代理环境。
DeepSeek Harness 401 根因:key 过期或填错 + base URL 指向非官方端点
401 的根因两类:key 无效(过期、填错、复制多了空格)和 base URL 指向错误(不是 DeepSeek 官方端点)——两者叠加在「base URL、key、模型名三者必须匹配」的规则上。 展开说:
- key 无效:模型发现会调用 OpenAI 兼容的
GET /models端点,key 不对时服务端返回 401(来源);DeepSeek 官方文档确认其认证方式为 Bearer Token(来源)。 - base URL 错误:把 base URL 填成了自定义网关、旧域名或带多余路径的地址,请求发到错误端点,自然 401;
- 三者匹配:key 是 DeepSeek 签发的、base URL 是 DeepSeek 官方端点、模型名在 DeepSeek 模型列表里——官方文档 providers.md 明确这三者必须匹配(来源);
- 代理干扰:系统代理或
HTTPS_PROXY环境变量拦截请求时,服务端可能收到异常请求头,表现为 401。
解决 DeepSeek Harness 401:换 key → 校准 base URL → 排查代理 → 验证
按「先凭证、再端点、后环境」的顺序修:换新 key、校准 base URL、排查代理,最后重新触发「获取可用模型」验证。 逐步执行:
- 换 key——到 DeepSeek 开放平台重新生成一个 key(确认账号有余额、key 未过期),在「设置 → 模型」替换旧 key;注意粘贴时别带前后空格,逐字符核对;
- 校准 base URL——确认提供方的 base URL 填的是 DeepSeek 官方端点:
地址末尾不加多余路径;填的是自定义网关就换成官方端点,或确保网关地址与 key 属于同一提供方;text
https://api.deepseek.com - 排查代理环境——执行:
看到bash
env | grep -i proxyHTTPS_PROXY/HTTP_PROXY就检查代理规则:把api.deepseek.com加进直连/白名单,或临时关闭全局代理再试; - 验证——回到「设置 → 模型」重新触发「获取可用模型」,预期返回模型列表(如 deepseek-chat、deepseek-reasoner);随后发一条测试对话,收到正常回复即修复完成;
- 仍 401 就重启 dsh 再试一次——配置与凭证在启动时加载,改了配置不重启可能还在用旧值。
DeepSeek Harness 401 修复后怎么验证?curl 直测官方端点与界面复测
修复后验证分两层:先用 curl 绕开 dsh 直测 key 与端点,再回到界面重新触发「获取可用模型」,两层都过才算修好。 按顺序执行:
-
curl 直测不带 key——预期返回 401,用来确认端点可达、认证确实在拦:
bashcurl -i https://api.deepseek.com/v1/models返回
HTTP/1.1 401说明官方端点能通、认证生效;连 401 都没有(超时/连不上)就先查网络与代理。 -
curl 直测带 key——key 有效时应返回 200 与模型列表:
bashcurl https://api.deepseek.com/v1/models -H "Authorization: Bearer <你的key>"返回 200 → key 与端点都对;返回 401 → key 还是无效,回上节第 1 步重新生成。
-
界面复测——回到「设置 → 模型」重新触发「获取可用模型」,预期下拉列表出现 deepseek-chat、deepseek-reasoner 等模型。
-
一次对话收尾——在会话里发一条测试消息,收到正常回复即修复完成。
注意事项:DeepSeek Harness 401 先换 key 再对 base URL
- 401 是认证问题,先换 key 再对 base URL,别去动模型名。
- base URL 与 key 必须同源:官方 key 配官方端点,自定义网关配它自己的 key。
- 代理环境先排除:
env | grep -i proxy十秒确认,别在错误方向上耗时间。 - 改完配置重启 dsh 再验证,避免旧配置缓存干扰判断。
- 其他安装报错可参考安装报错排查。
来源:dshbase 常见问题排错、DeepSeek API 官方文档、DeepSeek Harness providers.md
常见问题
DeepSeek Harness 报 401 是认证失败:模型发现会调用 OpenAI 兼容的 GET /models 端点,key 无效、过期,或 base URL 指向了非 DeepSeek 官方端点,服务端就返回 401。基础 URL、key、模型名三者必须匹配,先换 key 再对 base URL(来源)。
判断 DeepSeek Harness 401 问题分两步:先用新生成的 key 替换旧 key 重试,若仍 401 则排查 base URL——确认它指向 DeepSeek 官方端点(https://api.deepseek.com),而不是自定义网关或写错的地址;官方 API 文档列出的认证方式是 Bearer Token(来源)。
校准 DeepSeek Harness 的 base URL:在「设置 → 模型」找到提供方的 base URL 输入框,填 DeepSeek 官方端点 https://api.deepseek.com,保存后重新触发「获取可用模型」;地址末尾不要加多余路径,key 与 base URL 必须属于同一提供方。
会。DeepSeek Harness 的「获取可用模型」401 可能是系统代理或环境变量代理拦截了 /models 请求,服务端可能收到异常头或返回 401。执行 env | grep -i proxy 检查 HTTPS_PROXY/HTTP_PROXY,把 api.deepseek.com 加入代理白名单或临时关代理重试;排除代理后再回到 key 与 base URL 的核对。
相关术语
- 401 Unauthorized
- 401 Unauthorized 是 HTTP 状态码,表示请求未通过身份认证——API Key 缺失、无效或过期时,服务端以 401 拒绝访问受保护端点(如 /models)。— DeepSeek API 官方文档
- GET /models 端点
- GET /models 是 OpenAI 兼容 API 中列出可用模型的端点,DeepSeek Harness 的模型发现功能调用它拉取模型列表,认证失败即返回 401。— dshbase 常见问题排错
- Base URL
- Base URL 是模型服务提供方的 API 端点地址;DeepSeek 官方端点为 https://api.deepseek.com,base URL、key、模型名三者必须匹配同一提供方。— DeepSeek API 官方文档
- Bearer Token 认证
- Bearer Token 认证是在 HTTP 请求头 Authorization: Bearer <key> 中携带访问凭证的方式,DeepSeek API 以此校验调用者身份。— DeepSeek API 官方文档
来源
- dshbase 常见问题排错(凭证与模型类报错)· dshbase
- DeepSeek API 官方文档(认证方式与 API 端点)· DeepSeek
- DeepSeek Harness 官方文档 providers.md(base URL / key / 模型名三者匹配)· deepseek-ai