Replies: 3 comments
|
先说结论:你的两个判断都基本成立——内置 模型列表为什么"陈旧":dsh 并没有自己维护这份目录。 import { builtinProviders, getBuiltinModels, getBuiltinProviders } from '@earendil-works/pi-ai/providers/all'而依赖版本在 "获取可用模型"的行为:对目录里已有的 provider,它不做任何网络请求,直接返回安装目录( // A catalog route already has its answer, and a better one: the installed
// entries carry context windows and output caps no listing endpoint reports.只有目录不认识的 provider(网关、自建服务)才会走 MissingSessionID 是怎么回事:我在 可行的绕法:别另建自定义提供商,继续用内置 如果方便,贴一下你的 settings.yaml 里该路由片段和一次完整报错,我可以帮你核对路由解析细节。 |
|
感谢定位,你列的几条我都验证过了。 一、为什么 chat/completions 这条路必然 400三条,都在代码里能指到位置:
存在"部分模型路径有会话信息、另一些没有"问题,具体差异在与: 二、真机复现
同一个固定串就能从 400 变 200,说明网关只校验这个头在不在,不校验内容。同批测试里 三、现在的临时做法
llm-pi-ai:
providers:
<route>:
apiKeyEnv: <credential>
api: openai-completions
baseURL: https://opencode.ai/zen/go/v1
headers: { x-opencode-session: <固定串> }局限:固定串只补上"头存在",所有会话挤在同一个亲和桶里,OpenCode 要的按会话路由和 prompt cache 亲和拿不到。真正要解决还得靠在代码里补。 四、建议的修法最小改动是在发请求那一步,把已经拿到的 // packages/llm/llm-pi-ai/src/adapter.ts(示意)
function requestHeaders(headers, sessionId) {
const attribution = attributionHeaders()
const reserved = new Set(Object.keys(attribution).map(n => n.toLowerCase()))
return {
...Object.fromEntries(Object.entries(headers ?? {}).filter(([n]) => !reserved.has(n.toLowerCase()))),
...(sessionId === undefined ? {} : { 'x-opencode-session': sessionId }),
...attribution,
}
}
// 调用处:headers: requestHeaders(profile.headers, options.sessionId)
// 判据可以用 profile.baseURL 是否指向 opencode.ai,免得给所有路由都挂上另一个方向是改 pi-ai:给 五、400完整的报错sessiondsh-session-session-5fdb1590-4dbc-45b3-a8a8-7eefd2e0190c.zip |
|
同样出现这个问题+1 |
Uh oh!
There was an error while loading. Please reload this page.
问题描述
DeepSeek Harness 内置的
opencode-go提供商返回的模型列表不包含最新的deepseek-flash(DeepSeek V4.1 Flash)。手动在设置中添加自定义提供商后,所有请求均返回400: MissingSessionID错误,导致 OpenCode Go 路由完全不可用。复现步骤
opencode-go。deepseek-flash。opencode-go,API 地址填写https://opencode.ai/zen/go/v1,协议选择openai-completions。deepseek-flash后尝试对话,收到报错:预期行为
opencode-go的模型列表应包含deepseek-flash(即 DeepSeek V4.1 Flash)。MissingSessionID错误。环境信息
0.1.5-rc.2https://opencode.ai/zen/go/v1,协议openai-completionswindows 25H2已尝试的排查
GET https://opencode.ai/zen/go/v1/models返回的列表中包含deepseek-flash。deepseek-flash后仍无法正常调用,报错始终为MissingSessionID。dsh-opencode-models可以拉取完整模型列表,但该插件只解决模型发现问题,不解决自定义提供商的x-opencode-session请求头缺失问题。请求
opencode-go路由实现实时模型发现,或在“获取可用模型”时调用真实端点GET {baseURL}/models。opencode-go路由自动附加x-opencode-session请求头(可参考社区插件的实现)。deepseek-flash(DeepSeek V4.1 Flash)等新模型。All reactions