DSH HUB
首页插件商店插件包社区排行榜资源发布指南
插件源码
返回插件目录

BoltBlue121 /

BoltBlue121/kimi-for-dsh

仅 Topic 仓库

Fix third-party model (Kimi) routing in DeepSeek Harness: reclassify context-overflow/quota errors so compaction recovery actually triggers; inject Kimi's context-management beta for preserved thinking.

★ 0 Stars0 Forks0 IssuesN/A 社区评分0 已确认安装
查看 GitHub
README来源: main@7f3ef679
kimi-for-dsh

kimi-for-dsh

第三方模型(Kimi 系为主)在 DeepSeek Harness 里的路由修复插件


解决什么问题

DSH 通过内置的 @deepseek-ai/dsh-llm-pi-ai 适配器(上游库 @earendil-works/pi-ai)接入 Kimi 等第三方模型。这条链路的核心能力(流式、工具调用、带签名的思考块回传、prompt 缓存)都能工作,但错误语义和思考保留契约上存在实测缺口:

① 上下文溢出不被识别 → 不触发自动压缩

Kimi 的两个硬限制报错:

total message size 5943865 exceeds limit 2097152        # 2MB 请求字节墙 → HTTP 400
Your request exceeded model token limit: 262144          # token 上限 → HTTP 400

这两段文本都不含 DSH 内置 isContextWindowExceededError 词表要求的关键词("context length/window"、"too long for this model" 等),于是被归类为 INVALID_REQUEST —— agent-loop 不知道这是"上下文爆了",不会触发压缩自愈,轮次直接失败。

本插件把这些报错改写为 CONTEXT_WINDOW_EXCEEDED,让 DSH 的压缩恢复链路正常接管。

② 配额型 429 被当成普通限流白重试

Kimi 的 429 有两种语义(官方错误文档):

报错 语义 正确处置
The engine is currently overloaded 引擎过载 退避重试 ✓
You've reached your usage limit for this period 5 小时滚动窗口耗尽 重试无意义,应终止
You've reached kimi monthly usage limit... 月度配额耗尽 重试无意义,应终止

DSH 一律按 RATE_LIMIT 退避重试,且 isQuotaExceededError 的正则匹配不上 "reached your usage limit" 这种语序。本插件把配额型改写为 QUOTA_EXCEEDED(干净终止、不再浪费配额重试),过载型保持 RATE_LIMIT 不变。

③ Preserved Thinking 契约缺失

Kimi 官方客户端(Kimi Code CLI 0.31+)在 Anthropic 兼容模式下的思考保留契约是:

anthropic-beta: context-management-2025-06-27
context_management: { edits: [{ type: "clear_thinking_20251015", keep: "all" }] }

pi-ai 只回传带签名的 thinking block,不声明保留策略。本插件为 kimi 系路由的请求补上 context-management-2025-06-27 beta 头(edit 体的请求体注入受 waterfall 能力限制,见已知限制)。

安装

dsh plugin --profile web add github:<owner>/kimi-for-dsh

或在 DSH 设置 → 插件里添加。

配置

全部可选项(默认值即推荐值):

# ~/.dsh/settings.yaml
kimi-for-dsh:
  reclassifyErrors: true    # 错误重分类(①②)
  thinkingKeep: true        # context-management beta 头注入(③)
  extraProviders: []        # 除自动识别的 kimi/moonshot 系外,额外纳入修复的 provider id

工作原理

挂在 DSH 的 llm/stream waterfall(cordis 的标准拦截点)上:

  1. 重分类器:包装流式返回,遇到 finish.reason.kind === "error" 的 chunk 时按报错文本改写 failure.code,后续的重试(llm-retry)、压缩(compaction)、终止逻辑自动按正确语义执行。命中时输出日志: [kimi-for-dsh] reclassify kimi-coding: INVALID_REQUEST → CONTEXT_WINDOW_EXCEEDED :: total message size ...
  2. beta 头注入:kimi 系路由(provider id 含 kimi/moonshot,或 extraProviders 指定)的请求头自动补 anthropic-beta: context-management-2025-06-27,与已有 beta 合并、不重复。

所有资源挂在 ctx.effect 上,热重载/卸载即净。

已知限制

  • context_management edit 体需要修改请求 body,而 llm/stream waterfall 只共享 options 头——beta 头先到位(服务端见到即知道客户端支持该契约),edit 体注入待 DSH 提供请求体级挂点或 pi-ai 上游支持。当前 DSH 的 thinking 块签名回传本身可用,此项为加固。
  • 重分类基于报错文本匹配(Kimi 未提供结构化错误码),Kimi 若改措辞需更新正则——欢迎提 issue。
  • 会员权益类报错("Your current plan supports only ... 256K context")故意不改写:它是 401 语义,正确动作是升级套餐或调低 contextWindow,不是压缩。

背景调研

本插件源于一次完整调研。核心结论:DSH↔Kimi 的核心链路可用、缓存命中正常、思考签名回传正常;缺口集中在错误语义映射。同类契约缺失亦见 MoonshotAI/Kimi-K2#129。

License

BSD-3-Clause

—/ 5

暂无评分

需要先验证清单

Commit 7f3ef67942df

社区评论

还没有评论,来写第一条。

DSH HUB

社区维护的 DSH 插件索引。不是 GitHub 或 DeepSeek AI 的官方产品。

社区资源API关于