Repository navigation
Replies: 1 comment
|
补充具体改动。基于 diff --git a/packages/llm/llm-pi-ai/package.json b/packages/llm/llm-pi-ai/package.json
index e186f0c..129d3e7 100644
--- a/packages/llm/llm-pi-ai/package.json
+++ b/packages/llm/llm-pi-ai/package.json
@@ -41,7 +41,7 @@
"@deepseek-ai/dsh-brand": "workspace:*",
"@deepseek-ai/dsh-util-values": "workspace:*",
"@deepseek-ai/schemastery": "workspace:~",
- "@earendil-works/pi-ai": "^0.85.1"
+ "@earendil-works/pi-ai": "^0.87.1"
},
"devDependencies": {
"@deepseek-ai/cordis": "workspace:~",
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index f3c6b2b..57b19e0 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -64,8 +64,8 @@ minimumReleaseAgeExclude:
- '@deepseek-ai/libreoffice-kit-wasm@0.1.1'
# Fresh pi-ai releases carry the model catalog updates that are the whole
# point of bumping it; waiting out the release age would defeat that.
- - '@earendil-works/pi-ai@0.85.1'
- - '@earendil-works/pi-telemetry@0.85.1'
+ - '@earendil-works/pi-ai@0.87.1'
+ - '@earendil-works/pi-telemetry@0.87.1'
- node-addon-native-custom-loader@0.1.6
- node-addon-require-builtin-darwin-arm64@0.1.6
- node-addon-require-builtin-darwin-x64@0.1.6
升级时需要一并决定的一件事
'@earendil-works/pi-ai@0.85.1': patches/@earendil-works__pi-ai@0.85.1.patch这个 patch 删掉的是 其余工作: catalog 变化(同机对比两个归档,用 Electron 自身 asar reader 读取)
可选的报错改进
|
Uh oh!
There was an error while loading. Please reload this page.
Summary
内置的
@earendil-works/pi-ai@0.85.1既没有 OpenCode Go 的新模型目录,也没有x-opencode-session这个按会话路由所必需的请求头,导致opencode-go路由完全不可用:模型加不进去,加进去了请求也会被网关拒绝。Environment
0.2.0-rc.1(Windows x64,打包app.asar)。packages/llm/llm-pi-ai/package.json依赖"@earendil-works/pi-ai": "^0.85.1";pnpm-workspace.yaml里minimumReleaseAgeExclude固定@earendil-works/pi-ai@0.85.1/@earendil-works/pi-telemetry@0.85.1,并带一个 0.85.1 专属 patchpatches/@earendil-works__pi-ai@0.85.1.patch(该 patch 只改dist/api/*的 streaming 参数解析,与本文无关)。llm-pi-ai.providers):Current behavior
现象 1:加不上模型。 上面这份配置保存时报
原因不是配置写法错,而是 0.85.1 的 catalog 里没有这个模型:
opencode-go这一路由的模型跨多种 wire protocol(anthropic-messages / openai-completions / openai-responses 混用),DSH 对 catalog 未描述的模型要求显式声明api:;而 0.85.1 的opencode-go目录里根本没有deepseek-v4.1-flash,于是这条配置必然失败。现象 2:即使补上
api: openai-completions,请求仍被网关拒绝。OpenCode Go 要求每个会话在
x-opencode-session里带一个稳定的会话 ID。pi-ai 从 0.86.1 起才有dist/providers/opencode-headers.js的withOpenCodeSessionHeader(),由它把options.sessionId变成该请求头;0.85.1 里opencode-go.js没有这层包装。DSH 侧PiAiAdapter一直在把GenerateOptions.sessionId传给 pi-ai,所以只差 pi-ai 这一层。Measured difference(同一个打包归档,只替换 pi-ai)
用 Electron 自身的 asar reader 读取两个归档里的
opencode-go目录:opencode-go模型数deepseek-v4.1-flashapi=openai-completions)dist/providers/opencode-headers.jsopencode-go.js是否包withOpenCodeSessionHeader()换成 0.87.1 后的实测:
POST https://opencode.ai/zen/go/v1/chat/completions:不带x-opencode-session→ 400 MissingSessionID;带上 → 200。opencode-go/deepseek-v4.1-flash可正常保存并跑通主循环的工具调用。Expected behavior
内置 pi-ai 版本应足以驱动
opencode-go(含新模型与按会话路由的必需请求头);若确实不支持,错误信息应直接指出需要声明api:或升级 pi-ai,而不是留一句自相矛盾的报错。Suggested fix
@earendil-works/pi-ai(以及@earendil-works/pi-telemetry)升到 ≥0.87.1,并同步pnpm-workspace.yaml的minimumReleaseAgeExclude;同时确认 0.85.1 专属的 pnpm patch 是否还需要(它只影响dist/api/*的 streaming 参数解析)。api:取值(例如api: openai-completions)。All reactions