Replies: 4 comments
|
先不要删除 这次升级有一个值得先排除的边界:Models 页的 Client/Host Remote 调用从 rc.2 的单个 建议按以下顺序做一次无损排查: dsh --version
dsh --profile web --dump-config > web-effective-config.txt
dsh plugin --profile web list --depth 0然后:
可以用第一个失败点快速定位:
如果方便补充 我把 alpha.1 源码差异、无损恢复步骤和完整验收条件整理在这里: 补充:最近的源码生成物、第三方 Bundle、provider Settings、Session event 与 route/history 问题已经整理成 rc.2→alpha.1 五层 preflight,可在升级生产 profile 前逐项验证: |
|
Independent source verification of the provider-registry split (alpha.1, HEAD cd5ef81) — it supports the direction in the reply above and adds two concrete pointers:
|
|
用dsh分析了一下,使用flash模型、耗时15分钟、花费6元人民币。按dsh建议修改settings.yaml配置、这个问题解决了。 下面是DSH分析的原因和修改过建议:
llm-pi-ai: provider "opencode" model "ling-3.0-flash-free" needs an api; the installed catalog does not describe it… 传播链(为什么一条坏配置能拖垮整个页面): llm-pi-ai 挂载时通过 installSettingsSection 注册 llm-pi-ai 设置命名空间,注册时会对已存分节执行 owner 校验 assertServiceable。 修复前:llm-pi-ai 命名空间 MISSING、目录只剩 39 条休眠 catalog 条目、你的 4 个提供方全不在列;浏览器 e2e 中页面不显示任何已配置行、添加按钮点击无反应。
新增私有方法 resolveStored():把 schema 解析与 owner 校验分开。schema 拒绝的存量分节仍照旧失败注册(文档损坏要响亮失败);owner 校验拒绝的(schema 合法但无法服务)分节,改为以组合值注册命名空间并记 warn 告警——与重载路径"保留最后好值"的行为一致。 |
|
Thanks for the root cause — I verified it against the alpha.1 tree and it corrects my earlier hypothesis: this is a server-side route-validation failure, not a stale client bundle. And the "no response" symptom is not a contradiction of my "if the page renders, the registry RPCs succeeded" note — the failure happens one layer earlier and is silently contained. The exact mechanism (confirmed at source, HEAD cd5ef81).
So the failure surface is not the wire split at all — it is that a route-validation error during config resolution is contained but invisible: the user had to run a full dsh analysis to learn that one settings.yaml route was the problem. The recovery (edit settings.yaml per the analysis) matches the source: the invalid route must either name its Improvement direction (worth its own discussion if maintainers agree): surface the swallowed validation error instead of a silent empty page. Two options from the current structure:
Either keeps the fail-loud posture the code already has for credentials (MISSING_CREDENTIAL at index.ts:180-192) while making config-time failures visible at the surface that caused them. |
用dsh分析了一下,使用flash模型、耗时15分钟、花费6元人民币。按dsh建议修改settings.yaml配置、这个问题解决了。
下面是DSH分析的原因和修改过建议:
触发点:settings.yaml 里 llm-pi-ai 分节中有一条 opencode 提供方配置,它列出的模型(如 ling-3.0-flash-free、gemini-3.5-flash-lite 等 6 个)都不在已安装的 pi-ai 0.84.2 内置目录中,而且该路由既没声明 api 协议、也没声明 baseURL。llm-pi-ai 的 resolveProfiles 对这种路由会直接抛错:
llm-pi-ai: provider "opencode" model "ling-3.0-flash-free" needs an api; the installed catalog does not describe it…
传播链(为什么一条坏配置能拖垮整个页面):
llm-pi-ai 挂载时通过 installSettingsSection 注册 llm-pi-ai 设置命名空间,注册时会对已存分节执行 owner 校验 assertServiceable。
SettingsProvider.register() 解析存量分节并跑校验时不捕获异常——校验一抛,整个命名空间的注册就失败(这是该版本沿用的既有设计,有专门测试锁定)。
注册失败连锁导致:
llm-pi-ai 命名空间从 settings.describe 里整个…