DSH Plugin dsh-deeplink: Open a Specific Session or Project Directly from a URL

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 session and workspace are provided, session takes priority.
  • If the target session/project does not exist, or is in archived / hidden status, 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> via history.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 in localStorage.
  • 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

  1. Install using the official profile:
dsh plugin --profile web add github:qyw233/dsh-deeplink
  1. After installation, restart the Web UI and refresh the browser page.

  2. The plugin will appear in the __DSH_BOOT__ boot graph.

  3. Navigate to the plugin configuration in settings to toggle the two switches as needed:

  • Jump to specified conversation: corresponds to dsh-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 to dsh-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 the tables.workspaces[].sessionIds in ~/.dsh/storages/workspace.json.
  • Project id: the key in tables.workspaces in ~/.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 / workspaces services and their list snapshots; the node half relies on systemPrompt / webServer services, which are documented as provided by dsh-base and 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.
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye