Replies: 2 comments 1 reply
|
+1 我想用订阅的DSV4f-vision都用不了 |
1 reply
|
+1,RC.2还没修这个问题, GLM5.3也用不了 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
背景 / 痛点
Web 设置 → 模型页的「拉取可用模型(Fetch available models)」本意是自动获取某提供商在线在售的模型清单。但实测发现:
对 pi-ai catalog 路由(如 opencode-go),它不会发任何网络请求,直接返回已安装 @earendil-works/pi-ai 包内写死的 catalog 快照;
结果就是 opencode-go 网关新上线的模型永远不显示,只能手动逐条填写;
想绕开 catalog 走实时拉取,必须手动声明一个 openai-completions 协议的路由(如 opencode-go-live)。但 opencode-go 这个 gateway 在 catalog 里默认用的是非 openai 协议,于是同一个提供商的一批模型被迫拆到两个 provider 下配置,无法合并成一个提供商,管理和切换都很别扭。
复现
dsh 0.1.0-rc.8,安装 pi-ai 适配器;在 $DSH_HOME/settings.yaml 加目录路由 opencode-go(仅 apiKeyEnv);
Web → 设置 → 模型 → opencode-go → 「拉取可用模型」;
结果:只返回已安装 pi-ai@0.82.1 快照里的 16 个模型,零网络请求;
而 opencode-go 线上端点(
https://opencode.ai/zen/go/v1/models
)实际在售 28 个模型。
根因
@deepseek-ai/dsh-llm-pi-ai/lib/index.js 的 discoverModels() 对 catalog 内已存在的提供商直接短路:
js
复制
if (request.provider !== void 0) {
const installed = catalogModels(request.provider);
if (installed.size > 0) return [...installed.values()].map(...) // 直接返回快照,不 fetch
}
只有 pi-ai 不认识(未内置)的提供商才会走到 GET {baseURL}/models 实时探测,且此时协议必须是 LISTABLE_PROTOCOLS(如 openai-completions)里可读取列表的那几类。
证据
pi-ai 0.82.1(已安装):opencode-go catalog = 16 个模型;
线上端点:28 个,其中 12 个不在快照里(如 glm-5.3、qwen3.8-max、gpt-5.6-luna、qwen3.5-plus、mimo-v2-omni、kimi-k2.5、hy3-preview、ox-alpha-free、muse-spark-1.2-contributor 等);
下载 0.84.2 tarball 核对:opencode-go 仍只有 19 个——只新增 glm-5.3、qwen3.8-max、gpt-5.6-luna,12 个里仍有 9 个缺失(快照永远追不上线上);
dsh-llm-pi-ai 最新版(0.1.1-rc.1)仍钉死 @earendil-works/pi-ai: ^0.82.1(0.x 的 caret 语义 = <0.83.0),所以官方 npm i -g @deepseek-ai/dsh@latest 也升不到 0.83/0.84。
为什么「手动配置」也救不了这个使用体验
为了拿全量,我用手声明路由 opencode-go-live(api: openai-completions + baseURL: https://opencode.ai/zen/go/v1)实时拉到了 28 个模型。但问题在于:
协议被迫分家:同一个网关,catalog 里的 opencode-go 用其原生协议;手动声明又只能用 openai-completions。于是同一个提供商的 28 个模型分裂在两处,用户得在 UI/配置里维护两份 provider,无法用一个 opencode-go 统一包含 catalog 全部 + 新模型;
丢失元数据:实时拉取拿不到 catalog 提供的 contextWindow、maxTokens、reasoningEfforts、compat、input 多模态等字段,多模态识图能力(input: [text, image])还得靠用户逐个去查证后手填(我为此查了 pi-ai catalog 与多篇厂商资料才补全 13 个可识图模型);
每新增一个模型都要手动处理。
建议(满足任意一条即可明显改善)
catalog 路由也支持实时探测:点「拉取可用模型」时,对已内置 catalog 的 provider 同时请求其端点 GET /models,把线上结果放进选择器供用户勾选采纳,而不是只回快照;
同一 provider 可多协议并存 / 能合并实时结果进 catalog 路由的 models:让用户能把「opencode-go 原生协议 catalog」和「openai-completions 实时拉取」合并在一个 provider 里,避免同一提供商模型被拆成两个 provider;
显示快照版本:标出每条路由当前用的是哪个 pi-ai catalog 快照,让滞后可见、也知道该等哪次升级;
放宽依赖范围(^0.82.1 → 可更新),让 catalog 更新能随正常的全局升级落地;
(可选) 提供「把 catalog / 实时拉取结果同步写进路由 models」的动作,自动带上 contextWindow/maxTokens/input 等元数据,控制权仍归用户。
连带发现
内置 DeepSeek 官方适配器(@deepseek-ai/dsh-llm-deepseek)根本没有注册模型发现能力(没有 registerModelDiscovery),即使 DeepSeek 官方有 OpenAI 兼容的 GET /models,内置的 deepseek-official 提供商也同样无法自动获取模型——同类问题。
环境
dsh 0.1.0-rc.8(全局 npm),macOS
@earendil-works/pi-ai 0.82.1
Web 模型设置页(dsh-client-ui-settings-models)
All reactions