Skip to content

Releases

v0.1.1

Choose a tag to compare

@SnowNight777 SnowNight777 released this 04 Oct 14:19

修了什么

  • 配置区现在真的会出现:Config 的每个字段补上 schemastery 的 .volatile() 标记。
    dsh-settings 的 volatileForm() 会整条丢弃「一个 volatile 字段都没有」的条目 —— 条目不进
    namespaces,浏览器半侧的 whileServed 永远等不到,插件页的「配置」块也就永远不会出现。
  • 修掉 .volatile() 引入的加载失败:volatile 字段在 cordis 传入的 config 上不是值,而是一个
    accessor({ get() })。直接展开会让 server.listen(对象) 抛 TypeError、插件 fiber 落进
    failed(插件页显示「异常」)。新增 readConfig() 逐字段读取并对 accessor 取值。
  • 安装自检:只登记 dsh.profile.bundles、不在 dependencies 里的「游离安装」会在宿主日志告警,
    /healthz 暴露 installation 字段。
  • README 安装节重写;package.json 加 files 白名单;新增 build-and-pack.ps1。

安装

按 README「安装」一节:作为 profile 依赖安装(建议打包安装)。

v0.1.0

Choose a tag to compare

@SnowNight777 SnowNight777 released this 30 Sep 09:49

首个发行版。把 DSH 已配置的 provider / model 以 OpenAI 兼容接口暴露到本机回环,供任意本地程序调用。

安装

在 profile 的 package.json 里加一行依赖,跑一次 pnpm install:

{
  "dependencies": {
    "dsh-llm-gateway": "file:/abs/path/to/dsh-llm-gateway"
  }
}

然后重启 DSH(bundle 清单变更必须重启)。日志出现
[llm-gateway] gateway listening on http://127.0.0.1:8790/v1 即为就绪。

接口

方法 路径 说明
GET /v1/models 全部 provider/model;裸 id 唯一时同时以裸 id 列出,并带 input_modalities、alias 等元数据
POST /v1/chat/completions OpenAI 兼容,流式与非流式
GET /healthz 网关状态与目录统计

能力

  • 工具调用:tools 完整转发,tool_calls 按 OpenAI 约定分片返回;role:'tool' 回执与
    assistant.tool_calls 历史都能正确落回 DSH 的消息形状。
  • 图片输入:image_url 支持 data URL 与 http(s) 链接,图片经 DSH 的 attachments 服务落盘后交给模型;
    /v1/models 里 input_modalities 含 image 的模型可直接用。
  • thinking 双向:非流式响应带 reasoning_content,请求也可回传;reasoning_effort 原样透传。
  • usage 带明细:除三个基本数字外,还给出 prompt_tokens_details.cached_tokens 与
    completion_tokens_details.reasoning_tokens。
  • 错误码有据可依:按 DSH 的稳定 code 映射状态(401 / 429 / 400 / 404),Retry-After 一并透传。

几条刻意的设计

  • 没有去路的参数一律 400,不静默忽略——top_p、seed、response_format 这些在 DSH 的调用配置里
    没有去处,与其让客户端以为生效了,不如直接说清。
  • 未知模型 404、歧义裸 id 400,不会静默换一个模型给你答案。
  • 上游或附件服务拒绝时透传原话(如 INVALID_IMAGE),不替它改口。

已知边界

  • 默认只绑回环且不鉴权;要把 host 改到局域网或公网,必须同时配 apiKeys。
  • 音频、视频 part 不支持,返回 400 unsupported_content。
  • 图片依赖 DSH 挂载的 attachment provider,没挂载时返回 501。
  • thinking 模型的多轮请求必须回传 reasoning_content,否则上游会以 400 拒绝(这是模型的要求)。
  • reasoning_tokens 字段已实现,但取不取得到取决于上游是否上报。
  • 不维护服务端会话,多轮靠客户端把历史塞回 messages。

完整说明见 README。