Repository navigation
Desktop (0.1.7-rc.2): dsh://open ignores query parameters — please pass session=<id> through to the web app so notifications can deep-link to a conversation #7849
Replies: 2 comments 1 reply
|
补充两项复核结果(主帖发布后的再次人工核验,脚本可复算),并顺带提一个建议。 ① 激活参数完全未被消费
② 网页侧桥 key 全集(决定性层)
——没有任何 session/open 通道; ③ 顺带建议:官方原生的"回合完成 / 需要审批"系统提醒 复核时再次确认:0.1.7-rc.2 的系统级通知只有强更提醒(:8347),回合完成 / 审批请求都不会产生任何 OS 通知——agent 阻塞等待批准时,用户不在窗口前就只能干等。而事件面其实已经齐了( 我们用插件方式验证了整条链路可行(Windows Toast + 语音 + 审批旁路透传),也踩平了几个细节:Toast 主体点击需要显式 ④ 我们可以立即实测 我们挂着现成的 client 端消费设计(主帖④段:等会话列表就绪 → 环境:Windows 11 (build 10.0.26200);DeepSeek Harness Desktop 0.1.7-rc.2(官方安装版)。 |
请先确认你点的是哪个 scheme——内部转发那条路径是保留查询串的1. 我核到的那段(内部
|
Uh oh!
There was an error while loading. Please reload this page.
TL;DR (EN)
The Windows shell registers a
dsh://protocol but treats every activation as a plain window focus (dsh://open). We ship a community notification plugin that pops native Windows toasts on turn completion and approval requests; clicking a toast can only bring the window up, not open the originating conversation. The web side already has everything needed to switch conversations (uiWorkspace.openSession), so the only missing piece is shell→web delivery of a session id. A reference Electron implementation (from a self-built shell we ran before migrating to the official desktop) shows a small, robust pattern: parse deep-link params, stash them in a pending slot with TTL, push-or-consume via the preload bridge, and let a plugin client callopenSession. Feature request: either parsedsh://open?session=<id>and forward it, or expose an official notification/session-jump extension point for host plugins.使用场景
dsh://open),用户需要自己在侧边栏翻会话。现状证据(0.1.7-rc.2 官方安装版,Windows;抽取自安装产物,未做任何修改)
resources/app.asar内lib/main.js:app.setAsDefaultProtocolClient("dsh")(打包态注册)。open-url仅匹配dsh://open/dsh://open/→focusPrimaryWindow(),不解析任何参数。second-instance→ focusOwner;激活 argv 未被消费(全文件仅 :10627 附近处理--updated)。lib/preload-app.cjs:789-821:暴露给网页的桥仅dshOnboarding/__DSH_DIRECTORY_PICKER__/__DSH_HOST_PATHS__/dshDesktopBoot/dshPlatform/dshDesktop/__DSH_LOCALE__——没有通知或会话跳转通道;ipcMain.handle/on通道全集(约 :6241-11369)中亦无 open-session 类通道。@deepseek-ai/dsh-client-ui-workspace暴露uiWorkspace.openSession(target)(lib/client.js:819-821),官方侧栏即在调用(:4158-4160)。→ 唯一缺的一环:把一个 session id 从壳送到网页。
请求(两选一或都做)
dsh://深链解析查询参数(如dsh://open?session=<id>),聚焦窗口后把参数转发给网页——例如在现有桥上增加onOpenSession(cb)/consumePendingOpenSession()(或挂进现有dshDesktop桥)。参考实现(自建壳已验证可行;Electron 同架构,迁移官方壳前我们即按此运行)
四段链路(真实实现节选,路径泛化):
① 激活入口统一解析(second-instance / 冷启动 argv)
② 槽 + push 双通道(防"冷启动点击、窗口/页面未就绪"竞态与重放)
③ preload 桥(sandbox:true + contextIsolation:true 下可用)
④ 网页端消费(插件 client:等会话列表就绪后跳转)
自建壳运行期实测要点:
openSession同 id 幂等 → 双通道重复送达无害。我们插件侧已备好的消费设计
社区通知插件(dsh-notify-desktop,经官方"插件"页以 bundle 安装)已实现:回合完成/审批请求的 Windows Toast(
<toast activationType="protocol" launch="dsh://open">,经官方壳 AUMID 显示为 DeepSeek Harness 身份)+ 语音提醒 + 审批旁路监听(waterfall 永远透传)。一旦上游提供 session 透传,client 半侧将按④的模式实现"启动对账补弹 + push 订阅",即插即用。环境
中文 / English 回复都可以,谢谢!
All reactions