Repository navigation
Releases: llersakuya/dsh-connect-qpcm-gateway
Release list
v0.5.0 — 推理档位全开、默认 256k 与收图、改名为模型网关接入工具
v0.5.0
三处改动,都可用面板验证。
1. 推理档位全开:Off → Xhigh → Max,外加自动档
之前只声明 off / medium / high。现在整条阶梯都可选:
| 菜单项 | 发出的 reasoning.effort |
|---|---|
| Off | none |
| Minimal | minimal |
| Low | low |
| Medium | medium |
| High | high |
| Xhigh | xhigh |
| Max | max |
| (provider default) | 不发 reasoning,由网关决定 |
不声明 defaultEffort,所以模型选择器里自动多出 provider default 那一项——就是自动档。
七个发送值都在两条路由(deepseek-v4-pro、gpt-6.1-sol)上逐个实测,全部 HTTP 200。
也就是说选了不会报错;具体某个后端换档后会不会真的多思考,取决于后端自己。
关于「Ultra」:DSH 的 pi-ai 适配器用档位 id 自动生成菜单文案
(Off/Minimal/ … /Max),插件无法插入自定义名字。最高档是max,
菜单里显示为 Max。
2. 默认上下文 256000,默认开启收图
未单独设置的模型从此默认 contextWindow = 256000、input = ["text","image"]。
面板里已经手工设过的模型保持原样(比如某个只收文本的,不会被改回去)。
3. 插件改名
显示名改为 模型网关接入工具(英文界面 Model Gateway Connector)。
包名、路由 id、状态文件路径、凭据引用名都没动,已有配置和 Key 不受影响。
升级
dsh plugin --profile desktop add https://github.com/llersakuya/dsh-connect-qpcm-gateway/releases/download/v0.5.0/dsh-connect-qpcm-gateway-0.5.0.tgz桌面版也可以在 设置 → 插件 里粘贴同一个地址。不用重输 Key。
验证
新增 tests/reasoning-and-defaults.mjs:挂载插件后直接问适配器
resolveModel().reasoning.efforts=off/minimal/low/medium/high/xhigh/max,且defaultEffort为undefined(自动档存在)- 未覆盖的模型:
contextWindow = 256000、inputModalities = ["text","image"]、overridden = [] - 显式覆盖的模型仍以自己的值为准
本机装上后实时快照确认两条路由都返回七档,未覆盖模型 256k + 收图。
v0.4.3 — 修复重启后提示未配置 API Key
重启后提示还没有配置 API Key
症状:每次重启软件,插件面板提示还没有配置 API Key,要重新保存一次才恢复。
原因:冷启动时序问题——插件在凭据服务完成初始化之前就挂载了,提前读了一次
Key 库,把当时还没载入的 Key 当成"未配置",并且把这个 MISSING_CREDENTIAL 状态
保留了一整个会话。Key 本身一直都在 ~/.dsh/.credentials.yaml 里,没有丢。
修复:插件把 credentials 列为启动硬依赖,等凭据服务初始化完成后再挂载。
顺带修了一个相关的小问题:上一次目录拉取失败的结果会被目录缓存当成"新鲜"而不再
重试,导致重启后看到的还是上次的失败状态。现在失败的目录在重启后会重新拉取,成功
的缓存不受影响。
升级
dsh plugin --profile desktop add https://github.com/llersakuya/dsh-connect-qpcm-gateway/releases/download/v0.4.3/dsh-connect-qpcm-gateway-0.4.3.tgz桌面版也可以在 设置 → 插件 里粘贴同一个地址。配置不用动,Key 不用重输。
验证
新增冷启动回归测试(tests/startup-credentials.mjs):凭据服务延迟初始化,连续跑两次完整启动。旧逻辑复现"Key 已配置但仍报缺失";修复后两次启动均无提前读取、错误自动清除、模型勾选与上下文覆盖完整保留。真实的 .credentials.yaml 未被触碰。
v0.4.2 — 修复点收图后数值消失
点「收图」后上下文窗口和最大输出会消失
症状:模型目录里点一下「收图」,旁边的上下文窗口、最大输出两个输入框就空了。
原因:草稿只记了被改的那一个字段,而显示时把草稿当成整份记录:
// 点收图 → 草稿 = { image: true }
// 显示时直接 return 草稿 → contextWindow / maxTokens 都没了两个数字框于是拿到 undefined 和空串,看起来就是"数值消失"。
更糟的是它连保存也一起弄坏了:Number(undefined) 是 NaN,保存前的校验判定"上下文窗口非法"直接返回——所以手点收图这件事本身也存不进去。
现在改成草稿覆盖在生效值之上,并且新建草稿时先把当前值铺满。保存前也不会再拿空值去算。
升级
dsh plugin --profile desktop add https://github.com/llersakuya/dsh-connect-qpcm-gateway/releases/download/v0.4.2/dsh-connect-qpcm-gateway-0.4.2.tgz桌面版也可以在 设置 → 插件 里粘贴同一个地址。配置不用动。
验证
先让旧逻辑复现,再确认新逻辑修好——两边都跑过:
| 操作 | 旧逻辑 | 修复后 |
|---|---|---|
| 只点收图 | context="undefined" max="" |
context="200000" max="8192" |
| 改上下文为 300000 再点收图 | 数字丢失 | 300000 / 8192 |
| 点收图再改最大输出为 4096 | 数字丢失 | 200000 / 4096 |
| 点收图后保存 | 发不出 payload | {contextWindow:200000, maxTokens:8192, input:["text","image"]} |
未设置最大输出时(maxTokens 为空)也验过:点收图后仍是空,上下文窗口不受影响。
v0.4.1 — 修复模型加载失败
修了一个会让模型全部加载失败的 bug
症状:面板看着正常,但模型拉不出来、对话框报加载失败、每一次对话都不成。
原因:适配器装配时,从 options 里取 key 解析函数的那行漏了一个字段:
-const { readConnections, readModelsFor, get } = options
+const { readConnections, readModelsFor, resolveApiKey, get } = options少这一项,resolveApiKey 就是未定义。而它不是在装配时求值,是在拉清单和发请求时才被调用——所以适配器照样注册成功、面板照样显示「已接入」,直到真正要 key 的那一刻才抛 ReferenceError。这也是为什么它在面板上看不出问题。
v0.4.0 引入的,v0.4.1 修好。升级即可,不用改任何配置:你的连接、Key、模型勾选、逐模型设置都在 state.json 里,没受影响。
升级
dsh plugin --profile desktop add https://github.com/llersakuya/dsh-connect-qpcm-gateway/releases/download/v0.4.1/dsh-connect-qpcm-gateway-0.4.1.tgz桌面版也可以在 设置 → 插件 里粘贴同一个地址。
验证方式
这次是对着真实的 PiAiAdapter 跑的,不是 mock:
注册的路由: ["qpcm-gateway","connection-2"]
qpcm-gateway : 2 个模型 → deepseek-v4-pro, deepseek-v4.1-flash
connection-2 : 2 个模型 → gpt-6-astra, gpt-6.1-sol
两条路由各自拿到自己的模型,密钥也没串。
顺带确认的
- 两组对网关各发一次真实补全,四条模型全部
HTTP 200 - 保存 → 回读 → 落盘 三个环节的值一致
- 中文/英文 84 个文案键仍然完全对齐
v0.4.0 — 多组 API 同时接入
一键安装
dsh plugin --profile desktop add https://github.com/llersakuya/dsh-connect-qpcm-gateway/releases/download/v0.4.0/dsh-connect-qpcm-gateway-0.4.0.tgz不需要 git,不需要放行 pnpm 构建脚本。
这一版:可以接多组 API
面板最上面是分组列表,点「添加一组」就多一组。每组有自己的:
- Base URL — 端点互相独立
- API Key — 各自的凭据引用,互不串用
- 模型清单 — 各自的
/models与勾选 - 接入开关 — 可以只开其中一组
各组的模型同时出现在模型选择器里,以路由 id 区分。最多 8 组——每一组都会
往选择器里塞条目,没有上限会把那里淹掉。
升级不会丢东西
老用户的状态文件是扁平的(v0.3.x 只有一组)。这一版读到时自动迁成第一组:
- 第一组的 id 仍然是
qpcm-gateway,所以老会话里的模型引用继续有效 - 已存的端点、勾选、逐模型覆盖、凭据引用全部保留
一直有的
- 走 OpenAI Responses 协议(
POST {baseURL}/responses) - 推理档位
off/medium/high(按实测reasoning_tokens定的) - 每个模型可单独调上下文窗口 / 最大输出 / 是否收图
- 存 Key 后自动接入(只做一次)
- 工具调用、流式、多轮对话、系统提示实测通过
v0.3.0 — 按模型自定义上下文/输出/模态
一键安装
dsh plugin --profile desktop add https://github.com/llersakuya/dsh-connect-qpcm-gateway/releases/download/v0.3.0/dsh-connect-qpcm-gateway-0.3.0.tgz不需要 git,不需要放行 pnpm 构建脚本。
装完打开 插件 → QPCM 网关接入,粘一次 API Key,点「保存并验证」——
目录拉通后插件会自动接入。
这一版的新东西:按模型自定义
网关的 /models 只给 id 和名字,不给窗口和上限,所以这些数字原本是写死的兜底值。
现在每个模型后面多了一行设置:
| 项 | 含义 | 默认 |
|---|---|---|
| 上下文 | contextWindow |
128000 |
| 最大输出 | maxTokens → max_output_tokens |
留空 = 不声明 |
| 收图 | 是否声明 image 模态 |
只收文本 |
改完点那一行的保存才生效;有覆盖的模型带「已自定义」标记,可以恢复默认。
两个实测过的细节:
maxTokens会被上下文窗口反向截断(pi-ai 的
clampMaxTokensToContext)。窗口比输出上限还小时,发出去的数字会比填的小。- 「最大输出」默认留空:网关没声明上限,填一个数字等于把「平台没说」写成「平台说了」。
设置存在插件自己的状态文件里,不写进你的 llm-pi-ai 配置。
一直有的
- 走 OpenAI Responses 协议(
POST {baseURL}/responses) - 推理档位
off/medium/high(按实测reasoning_tokens定的) - 工具调用、工具结果回轮、流式、多轮对话、系统提示全部实测通过
- 不提供图像模型
v0.2.0 — 一键安装,存 Key 即接入
一键安装
dsh plugin --profile desktop add https://github.com/llersakuya/dsh-connect-qpcm-gateway/releases/download/v0.2.0/dsh-connect-qpcm-gateway-0.2.0.tgz不需要 git,不需要放行 pnpm 构建脚本,不需要任何预先配置。
装完打开 插件 → QPCM 网关接入,粘一次 API Key,点「保存并验证」——
目录拉通后插件会自动接入,模型立刻出现在模型选择器里。
这一版的新东西
- 保存 Key 后自动接入:少一次「还要再点一下开关」
- 自动接入只做一次:你自己关掉之后,不会被后面的保存动作重新打开
协议与能力(v0.1.0 起)
- 走 OpenAI Responses 协议(
POST {baseURL}/responses) - 推理档位
off/medium/high - 工具调用、工具结果回轮、流式、多轮对话、系统提示全部实测通过
- 不提供图像模型:
gpt-image-2.5-*在/responses上 502,且 DSH 的 LLM 接缝没有图像生成能力
v0.1.0 — 首个公开版本
一键安装
dsh plugin --profile desktop add https://github.com/llersakuya/dsh-connect-qpcm-gateway/releases/download/v0.1.0/dsh-connect-qpcm-gateway-0.1.0.tgz装完打开 插件 → QPCM 网关接入,填 API Key、拉取模型、打开接入开关即可。
这个版本包含
- 走 OpenAI Responses 协议(
POST {baseURL}/responses),不是/chat/completions - 推理档位
off/medium/high(minimal、low实测多数模型为 0 token,未提供) - 工具调用、工具结果回轮、流式、多轮对话、系统提示全部实测通过
- 面板:Base URL、API Key、模型目录三态勾选、接入开关
- 图像模型不提供:
gpt-image-2.5-*在/responses上 502,且 DSH 的 LLM 接缝没有图像生成能力
安装方式对比
.tgz 不依赖 git、不触发 pnpm 构建拦截、版本锁死。github: 地址也能装,但需要本机有 git。