Replies: 1 comment
|
Thanks for the reconnaissance — this is exactly the kind of structured ecosystem feedback that helps the harness mature. Three asks, and each lands on a different layer, so here's my read with the seams I've verified: Ask 1 — official second-screen conversation render face (core gap, plugin-blocked today)Your source facts check out: Ask 2 — snapshot stability commitment (this one has a documented failure history behind it)The honest contract picture: public APIs here are documented pre-stable ( So your ask for a commitment is well-founded, and I'd split it:
This is a docs/policy-level ask — core-side, and the reply from maintainers ("pre-stable, no guarantees") vs a concrete deprecation window is worth getting on the record. Ask 3 — read-only preset (plugin-shaped interim exists today; the registry gap is core)Two axes are getting conflated here, and they matter for the fix:
If you want to move on ask 3's plugin half today, I'm happy to help shape the tool-allowlist profile (and the read-only preset question is a good candidate to feed back as an upstream request with the preset-tool-filter pattern as the interim reference). For asks 1–2, the productive next step is a consolidated upstream-fix note with your evidence chains — plugin authors converging on one documented render face and one stability policy is worth more than three more parallel implementations. |
Uh oh!
There was an error while loading. Please reload this page.
背景:生态里至少三套插件在自绘会话呈现层
我们是 dsh-sidenote 的作者(开源 MIT:侧边聊天 + 划选注释插件,g-yixuan/dsh-sidenote)。在开发「侧边面板与原生主对话对齐」的过程中做了一遍宿主侦察,发现插件生态有一个共同的结构性缺口:
dsh-client-ui-conversation的节点渲染器(工具卡 / 思考折叠 / 用户气泡等)只导出类型、不导出组件(包入口 value 导出仅apply/inject/ConversationController);renderSlotface——没有任何官方面能把原生会话视图渲染到任意 sessionId 的第二块屏幕上;sessions.open切主视图渲染 + composer 链拦只读,而不是并行渲染。于是 better-sidebar 内置侧边对话、dsh-sidenote、dsh-sidebar-qa 等至少三套实现都在各自自绘消息呈现层——重复造轮子,且每家都会随宿主改版各自坏一遍。
三个诉求(按价值排序)
1. 官方「第二屏会话渲染面」
任选其一都能解锁整个生态:
dsh-client-ui-conversation导出 ChatView 系的节点渲染组件(或一个<ConversationView sessionId>级组件);ctx.sessions.binding(id)已公开,缺的只是呈现层)。插件侧都在用宿主下发的
callView/resultViewcard union + ui-primitives 叶子块自绘——如果官方觉得「插件自绘呈现层」就是既定路线,也请明示,我们至少可以把稳定性寄托在 wire 契约上(见诉求 2)。2. 快照数据面的稳定性承诺
插件的消息流渲染全押在这两组字段上:
ConversationSnapshot.nodes / partial / runningCalls——类型里已标注 "Legacy top-level compatibility field",看到新面ChatSnapshot(locations/order)在建。求一个迁移节奏说明:legacy 字段计划保留到哪个版本?会不会静默移除?ToolResultNode.callView/resultView的 card tagged union(generic/terminal/diff/search/read/web)——官方注释说 "a capable UI switches on card",我们把这当公开契约在用;card 集合可扩展("a new arm is a union edit"),插件会做好 default 降级,但求确认这条 wire 契约本身是稳定承诺。3. 只读权限 preset(或旋钮级写面)
权限 preset 默认表只有
workspace-write/danger-full-access;read-only是 sandbox 旋钮的合法值但没有默认 preset 包装,插件运行时也无法注册新 preset。侧边对话的典型产品语义是「问一下,不动手」(参考 Cursor side chats 默认只读、Claude Code /btw 禁工具)——插件想给 fork 出的侧边会话默认降权只读 + 用户一键放权,目前卡在无 preset 可切。求:默认表加只读 preset,或开放旋钮级(sandbox/mode)写面。我们愿意贡献
如果方向得到认可,我们愿意按官方指的路形态贡献 PR(至少从诉求 3 这种小面开始)。三个诉求的证据链(包版本、文件行号、bundle 实证)都可以补齐。
Thanks for the great plugin architecture — the slot/service discipline makes third-party work genuinely doable. 以上只是想让它更进一步的生态反馈 🙏
All reactions