Replies: 1 comment
|
验证了你贴出的关键事实,两点都对得上: packages/client/ui-model-selection/src/client/index.ts:104 的 export const inject 确实是 ['commandUi', 'locale', 'sessions', 'slots', 'remote', 'remote.session'],跟你说的一字不差。 remote.session 也确实不是静态 provide,mountContribution 这条异步装配路径在 packages/api/gateway/src/client/index.ts 里是真实存在的(enqueue 一个异步任务去装配 contribution),跟你的分析吻合。boot manifest 那套(window.DSH_BOOT,每个 entry 自己的 inject 元数据)在 packages/client/modules/src/client/manifest.ts 里也是真的,不是你猜的。 没能追到底的部分:boot manifest 里每个 entry 的 inject 列表具体是在哪一步、从哪个来源生成出来的,我目前只找到消费端(manifest.ts 解析 window.DSH_BOOT),生成端我看了 packages/client/web/src/boot.ts 和 packages/bundle/web-app/src/index.ts 都没能直接定位到那段从插件的 exports.inject 生成 boot manifest 条目的代码,所以你说的 boot manifest 只声明 4 个依赖、和插件实际声明的 6 个不一致,这一步我验证不了是不是真的,只能确认前面两个事实都站得住。 如果你想继续往下挖,我会先去查 boot manifest 的生成端,而不是消费端,看看它是不是从某个缓存或生成时机更早的快照读出来的 inject 列表,跟插件源码实际声明的 exports.inject 不同步。 |
Uh oh!
There was an error while loading. Please reload this page.
环境 Environment
复现步骤 Repro
无头浏览器直接打开即可复现,无需任何交互(web-all 0.3.12 的「官方 new-session 行为」会自动建会话并触发):
报错出现在 stderr 控制台日志中。每次加载必现(实测 3/3),抛出时机在 mcp-connector
client apply() completed后约 554ms。现象 Observed
控制台输出顺序:
影响:主界面正常渲染,但
conversation.input.model座(输入框旁的模型选择器)不可用。两条 web-all 日志为优雅降级(服务形状探测),与本次崩溃无关。初步定位 Analysis
崩溃点在
@deepseek-ai/dsh-client-ui-model-selection(web-app 自带)ModelDirectoryResolver.directoryFor(),bundle 第 304 行:关键事实:
remote.session没有任何静态 provide。整个 application 批次检索不到它的 provide 注册。@deepseek-ai/dsh-api-session-controller贡献 30+ 个namespace: "session"的 Typert 描述符,经 api-gateway 的mountContribution(异步enqueue→createNamespace+installMethods)安装。this.ctx.sessions.scope/binding解析成功,唯独第 304 行this.ctx.remote.session失败 → 访问时 namespace 尚未安装。inject只有 4 个插件级依赖(dsh-api-session-controller、dsh-client-locale、dsh-client-ui-commands、dsh-api-remotes),不含remote.session;而 bundle 的exports.inject声明了["commandUi","locale","sessions","slots","remote","remote.session"]—— 依赖链存在但运行时装配断裂。疑似根因:boot 期插件 apply 同步访问
remote.session,与 api-gateway 异步mountContribution存在时序/装配竞态;也可能与 alpha.4 的服务形状变化有关(web-all 0.3.12 已检测到 workspaces 形状变化并降级)。期望 Expected
directoryFor在 boot apply 期访问remote.session不应抛错;remote.sessionnamespace 应在插件 apply 前安装完成。附注:此前该报错曾被归因于第三方插件 agent-teams 调用
directoryFor;卸载后 model-selection 自身在 boot 期同样触发,确认与第三方插件无关。All reactions