dsh-infer-kit:DSH 上的语义缓存、草稿级联与 JSON 校验

前言

在 DeepSeek Harness(DSH)里跑智能体或对话时,重复问题仍会反复调用模型,结构化输出也可能在 schema 不合规时才暴露问题。社区插件 dsh-infer-kit(维护者 trid11111-arch,分类:模型推理)面向同一套 DSH 路由下的任意模型提供商,提供三件与具体厂商无关的工具:语义缓存、廉价草稿再 expensive 验证的级联,以及按 JSON Schema 校验后再展示结果。思路部分借鉴 DeepSeek 开源推理引擎 DeepInfer(Apache 2.0)。DSH 生态强调「一切皆插件」;目录站点 skillhub.cn 上的条目与 DeepSeek / 幻方无官方从属关系,安装前仍建议自行查看源码与 MIT 许可证。

这是什么

dsh-infer-kit 是 DeepSeek Harness 的推理工具包,简介为:Inference toolkit for DeepSeek Harness — semantic cache, draft cascade, and JSON validation。安装并重启后,任意模型均可调用下列三个工具:

工具 作用
infer_cache_lookup 对答案与工具结果做语义缓存;Jaccard 相似度 ≥ 0.62 视为命中。保留期:agent 3 天,chatbot 7 天。
infer_draft_cascade 廉价草稿 → 高成本验证的级联(客户端侧类似 speculative decoding);任意 OpenAI 兼容端点均可。
infer_json_validate 在展示结构化输出前,按 JSON Schema 校验;支持 type、properties、required、additionalProperties、items、enum、min/max、minLength/maxLength 等。

宿主侧 index.js 仅使用 Node 内置模块,无 @deepseek-ai/* 导入;客户端 client.js 为 React 状态按钮,侧边栏底部注册 InferKit,无需单独构建步骤。

安装与启用

官方安装命令如下。完成后需重启 dsh web(或桌面应用),插件在下次启动时生效。

dsh plugin --profile web add dsh-infer-kit

若从源码手动安装,README 给出的形式为(需替换为你的 GitHub 用户名):

dsh plugin --profile web add github:YOUR_USERNAME/dsh-infer-kit

环境要求:DSH >= 0.2.0-rc.2(package.json 中 peer 为 @deepseek-ai/dsh ^0.2.1-rc.2);运行环境需具备 Node 内置 fetch;无额外运行时依赖。插件以当前 dsh 进程权限运行:会读写可配置的 JSON 缓存文件,并在配置草稿端点时对该 URL 发起 HTTP 请求;自述无遥测、除可选草稿端点外不依赖其他外部服务。

核心配置

配置写在 profile 的 cordis.patch.yml 的 config: 下:

键 默认 说明
storePath 插件 index.js 旁的 store.json 持久化缓存路径
maxEntries 512 最大条目数,超出淘汰最旧
similarityThreshold 0.62 缓存命中 Jaccard 阈值(0–1)
ttlAgentDays 3 kind=agent 的 TTL(天)
ttlChatDays 7 kind=chatbot 的 TTL(天)
draftEndpoint null OpenAI 兼容草稿端点 URL
draftModel null 草稿请求使用的模型名
draftMaxTokens 600 草稿调用 max_tokens
draftTimeoutMs 25000 单次草稿超时(毫秒)

草稿级联示例配置:

config:
  draftEndpoint: 'https://inference.dahl.global/v1/chat/completions'
  draftModel: 'deepseek-ai/DeepSeek-V4-Flash-0731'
  draftTimeoutMs: 90000

API Key 从凭证 DAHO_API_KEY 读取(在 Settings → Models 中与其它提供商密钥同样设置);每次草稿调用会重新解析,轮换密钥可自动生效。web 与 desktop profile 共用同一 storePath 时,缓存存储共享。

典型用法

语义缓存

查询:

{
  "mode": "lookup",
  "key_text": "What is the capital of France?",
  "kind": "chatbot"
}

写入:

{
  "mode": "store",
  "key_text": "What is the capital of France?",
  "value": "Paris is the capital of France.",
  "kind": "chatbot",
  "tags": ["geography", "quick-facts"]
}

草稿级联

{
  "task": "List all files in the project root",
  "context": "TypeScript monorepo with packages/api, packages/web, packages/shared",
  "accept": true
}

返回通常为 100–600 token 的草稿,由你验证后再定稿。若草稿端点不可用,会回退到完整质量的自完成,不抛错。

JSON 校验

{
  "json": "{\"id\": 42, \"name\": \"Alice\"}",
  "schema": {
    "type": "object",
    "required": ["id", "name"],
    "properties": {
      "id": { "type": "integer" },
      "name": { "type": "string", "minLength": 1 }
    }
  }
}

返回 ok: true,或可供修正的具体错误列表。

宿主还提供 GET /infer-kit/status 供 Web GUI 查询状态。

适用场景与注意

适合希望在 DSH 内减少重复推理、用廉价模型先出草稿再人工或主模型确认、以及强制结构化输出合规的团队或个人。README 记录了针对 inference.dahl.global 与 deepseek-ai/DeepSeek-V4-Flash-0731 的草稿级联实测(三次运行的 token 数与延迟见仓库 Live test results),仅为维护者自测数据,不构成 SLA。

安装插件等同于授予其读写本地缓存与访问所配置草稿端点的能力;使用前请阅读 GitHub 仓库 源码与 MIT 许可证。当前 package 版本为 0.1.1。

链接

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜