Preface¶
By default, DSH WebUI restores the last session. When you need to open a specific conversation or the latest conversation of a project via a link, manually searching for the session can be cumbersome. dsh-deeplink is a DSH WebUI plugin that directly opens a specified project conversation via URL query parameters, and allows the current session address to follow along as the conversation changes.
What Is This¶
dsh-deeplink’s one-liner positioning is: use ?session=<session-id> or ?workspace=<workspace-id> to directly open a specified project conversation.
The repository is located at https://github.com/qyw233/dsh-deeplink, licensed under MIT, Copyright (c) 2026 DSH Community Contributors. It is installed into the DSH profile via dsh plugin, with the browser side handling URL parameters and session switching, and the node side registering model prompts. The README states that this plugin has no cordis import and no peerDependencies.
Core Features¶
- Read
?session=<session-id>from the URL to directly open the corresponding session. - Read
?workspace=<workspace-id>from the URL to open the latest/blank session of that project. - When both
sessionandworkspaceare provided,sessiontakes priority. - If the target session/project does not exist, or is in
archived/hiddenstatus, it silently falls back to the default behavior of restoring the last session. - After the current session changes, the address bar is rewritten to
?session=<current-session-id>viahistory.replaceState, without polluting browser history or triggering a page reload. - Provides two independent toggle switches:
dsh-deeplink.jump: deep link jump, enabled by default.dsh-deeplink.follow: address bar follow, enabled by default.
Both switches are persisted inlocalStorage.- The node half registers a global model prompt section, allowing the model to include deep links when referencing other sessions or projects in responses; the prompt requires the model to only output real session/project ids and not fabricate any.
Installation and Enablement¶
- Install using the official profile:
dsh plugin --profile web add github:qyw233/dsh-deeplink
-
After installation, restart the Web UI and refresh the browser page.
-
The plugin will appear in the
__DSH_BOOT__boot graph. -
Navigate to the plugin configuration in settings to toggle the two switches as needed:
Jump to specified conversation: corresponds todsh-deeplink.jump. This switch is read once when the page loads, so it is recommended to enable it before opening deep links.Address bar follow: corresponds todsh-deeplink.follow. This switch is read on each sync and can be toggled instantly.
Typical Usage¶
To open a specific session, append ?session=<session-id> to the WebUI URL:
http://127.0.0.1:3080/?session=session-304ae36e-1e66-453a-a946-2b0a9a2b173d
To open the latest/blank session of a specific project, append ?workspace=<workspace-id>:
http://127.0.0.1:3080/?workspace=fc8b75ae-107c-4b6c-978c-276270b03b8b
Session ids and project ids can be found as follows:
- Session id: the directory name under
~/.dsh/sessions/--<project>--/<session-id>/, or thetables.workspaces[].sessionIdsin~/.dsh/storages/workspace.json. - Project id: the key in
tables.workspacesin~/.dsh/storages/workspace.json, which is a UUID.
Applicable Scenarios and Notes¶
Suitable for DSH users who need to linkify, bookmark, or share DSH WebUI sessions, or who want the model to provide deep links directly when referencing other sessions/projects in responses.
Notes before usage:
- The plugin includes a lightweight node half that runs with the current dsh process permissions. It is recommended to review the source code, license (MIT), and repository contents before installation.
- The browser half relies on the runtime-provided
sessions/workspacesservices and theirlist snapshots; the node half relies onsystemPrompt/webServerservices, which are documented as provided bydsh-baseand web compositions. - The plugin prompt requires the model to only output real session/project ids and not fabricate any.
- Changes to the browser half are picked up by HMR (stat-poll, approximately 0.5s) and are visible after refreshing the page; changes to the node half require restarting
dsh web. - The plugin has no build step;
lib/is either committed or can be written directly.
Links¶
- GitHub:
https://github.com/qyw233/dsh-deeplink - The community directory page URL did not appear in the verified materials, so no link is included here.