Replies: 2 comments
|
Verified the seam gap against the alpha.1 tree (HEAD cd5ef81) — the proposal is accurate at source, and the two-seam design fits the host's existing slot conventions. First-hand plugin-ecosystem experience also supports it. The gap is real (confirmed at source). The sidebar slot family declared in The proposal maps cleanly onto existing conventions. The host's slot shape is From a plugin-author's perspective, this is the right adoption shape. I published One suggestion for the seam spec: the host convention takes the component as the second |
|
I incorporated the sidebar seam analysis into an independent multi-Session presentation guide: https://github.com/sandbaseai/deepseek-harness-handbook/blob/main/docs/en/architecture/multi-session-presentation-contract.md It keeps the claim boundary explicit: current |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
背景
Web GUI 左侧栏的浏览区(
WorkspaceBrowser)目前只有一个内容视图。第三方插件若想提供平行视图(例如按 IM 渠道分组的会话视图,见 discussions/3897 与 RFC-0001),没有任何官方注册面可用——sidebar.footer.action等 slot 只能追加控件,不能与既有视图并列切换。我们以纯插件形态做了完整实证(RGarvel/dsh-channel-view,README 有演示截图),不改宿主确实能拼出来,但代价全部落在对宿主实现细节的逆向锚定上。
实证做了什么
sidebar.footer.action拿wide状态,用react-domportal 在WorkspaceBrowser的 sectionHeader(官方「工作区」标题处)注入[工作区 | Channels(n)]tab 对;--dsw-alias-interactive-bg-hover+ 指示点)靠补挂 class 与宿主原生图标对齐。过程中暴露的具体缺口(每条都是真实踩过的坑)
[class*="sectionHeader"]、[class*="newSession"]…)与标题文案(「工作区」/Workspaces)。宿主任何 UI 重构(文案换词、组件拆分、rail 改版)都会静默打断注入,插件只能靠 2s 看门狗轮询自救;wide &&条件渲染,折叠↔展开切换中标题元素整体重挂载,注入节点会以孤儿子树残活在 sectionHeader 里,产生双标题/双 tab——需要自行实现isConnected判活重装(宿主内部无此压力,外部必踩);wide,不给上抛「请展开侧边栏」的回调(WorkspaceBrowser 内部的expandSidebar未对外暴露),插件只能querySelector伪造点击宿主 toggle 按钮;提案:两个最小 seam
A. 侧边栏视图注册(核心诉求):
宿主负责:展开态 tab 条、折叠态图标列、hover/选中语言(本次对齐的
--dsw-alias-interactive-bg-hover等 token 直接复用)、互斥剪枝(插件只提供自己的内容,不再碰别人 DOM)。B.
requestExpand上抛(A 的子集,若先做 A 可并入):即便暂不开放视图注册,仅把sidebar.footer.action等既有槽位的 props 补一个requestExpand(),插件就能告别 toggle 伪点击。为什么值得宿主收编
以上 5 个坑全部源于「视图并列」这一宿主没有表达过的意图被外部实现。官方 seam 落地后,这些脆弱锚定可整体删除,第三方渠道视图(QQ/Slack/邮件……)才有稳定演进空间——这正是 discussions/3897(RFC-0001,
session.header.channel数据面)的 GUI 半边:数据面已有投影单元机制可复用,缺的就是这个展示位。实证代码可指读:
dsh-channel-view/lib/client.js(约 470 行,含全部规避手法与注释),欢迎以任何形式吸收进宿主。All reactions