本项目记录并固化 DSH 主机上「自动沉淀异常:AUTH ... key ****1805 is invalid」的根除过程。问题表现为每轮对话结束触发自动沉淀时,memory-eternal 先按注册顺序调用 deepseek-official/deepseek-flash,而该通道使用的 DEEPSEEK_API_KEY 已失效并返回 401,导致插件健康状态翻红、面板持续告警,随后才回退到其他 provider。根因是失效凭证仍留在 /root/.dsh/.credentials.yaml,且 official provider 未被禁用。处理方式包括:从凭证库删除失效 key;在 web profile 补丁中新增 llm-deepseek 并设置 disabled: true;将记忆蒸馏路由锁定为 deepseek-account/deepseek-flash。改动经 DSH HMR 约 2 秒热重载生效,无需重启 dsh-web。验证显示 llm-routes 仅保留账号 OAuth 通道,llm-test 返回 ok,capture-log 健康恢复正常,真实自动沉淀成功进入审核中心。当前告警已消除,但蒸馏仅剩一个候选,账号通道异常时会真实失败并告警。
功能
- 从凭证库移除已 401 的 DEEPSEEK_API_KEY,保留网关 key、微信 token 与账号 grant。
- 通过 profile 补丁禁用 deepseek-official,仅保留 deepseek-account 账号 OAuth 通道。
- 将 captureProvider/captureModel 锁定为 deepseek-account/deepseek-flash,避免按注册顺序误选失效通道。
- HMR 热重载配置,无需重启 dsh-web。
- 提供 llm-routes、llm-test、capture-log、dump-config 验证路径及回滚命令。
技术栈
使用 / 部署教程
1. 备份配置
在 .223 主机上备份三个文件:
/root/.dsh/.credentials.yaml→.bak-20261030-stale-key/root/.dsh/profiles/web/cordis.patch.yml→.bak-20261030-disable-official/root/.dsh/memory-eternal-config.json→.bak-20261030-distill-provider
可使用 cp -a 源文件 备份文件。
2. 删除失效凭证
编辑 /root/.dsh/.credentials.yaml,移除 refs.DEEPSEEK_API_KEY,保留 DSH_GATEWAY_KEY、微信 token 和账号 grant。
3. 禁用 official provider
在 /root/.dsh/profiles/web/cordis.patch.yml 新增条目:- id: llm-deepseek,并设置 disabled: true。保存后 HMR 约 2 秒热重载,无需重启 dsh-web。
4. 锁定蒸馏路由
将 memory-eternal 配置写入 captureProvider=deepseek-account、captureModel=deepseek-flash。若独立页保存被 HMR 守卫拒绝(HMR transactions cannot be nested),改用宿主 POST /memory-eternal/api/config 写入,或直接改 profile 补丁层。
5. 验证
GET http://127.0.0.1:19387/memory-eternal/api/llm-routes,确认 providers 仅 deepseek-account,current 为 deepseek-account/deepseek-flash。POST .../llm-test {},确认 ok=true、candidates=1。GET .../capture-log,确认 health.ok=true,lastOkAt 晚于修复时间。- 执行
/opt/dsh/node_modules/.bin/dsh --profile web --dump-config,确认 llm-deepseek 含 disabled: true 且全文无 deepseek-official 引用。
6. 回滚
恢复备份文件后等待 HMR 约 2 秒;若不生效再执行 systemctl restart dsh-web。
常见问题
为什么会出现 AUTH key ****1805 is invalid 告警?
失效 DEEPSEEK_API_KEY 仍在凭证库,且 deepseek-official 按注册顺序排第一,自动沉淀先调用它返回 401。
修改后需要重启 dsh-web 吗?
不需要。DSH HMR 监听 profile 补丁,约 2 秒热重载;仅回滚后不生效时再执行 systemctl restart dsh-web。
如何确认修复生效?
检查 llm-routes 仅 deepseek-account,llm-test 返回 ok=true,capture-log 的 health.ok=true 且 lastOkAt 晚于修复时间。
以后要用 DeepSeek 官方 API 怎么办?
先写入有效 key,再删除 cordis.patch.yml 中 llm-deepseek 的 disabled;或改走本机网关。
注意
- 若需恢复 DeepSeek 官方 API 通道,先生成有效 key 写入凭证,再删除 cordis.patch.yml 中 llm-deepseek 的 disabled;也可改走本机网关 baseURL http://127.0.0.1:8100/v1、apiKeyEnv DSH_GATEWAY_KEY。
- 记忆蒸馏目前只有 deepseek-account 一个候选,无兜底;账号通道异常时自动沉淀会真实失败并告警。
- memory-eternal 独立页保存会被宿主以 HMR transactions cannot be nested 拒绝,应走宿主 API/config 或直接改 profile 补丁层。

评论
加载中…