deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
A DeepSeek Harness Web UI plugin that opens a specific project conversation directly from a URL query parameter, instead of always returning to the last session.
?session=<session-id> → open that conversation?workspace=<workspace-id> → open that project's latest/blank conversationLicense: MIT
?session= / ?workspace= from the page URL and switches once the session/workspace list baseline is readysession wins when both parameters are present?session=<current-session-id> via history.replaceState; when no session is current, the parameters are cleared. No history pollution, no reloadjump (process ?session=/?workspace= on load, default on) and follow (address-bar following, default on), both persisted in localStorageThe plugin is installed into a profile via the standard dsh plugin mechanism — no DSH source changes required.
# Official profile (ships dsh-base + dsh-web-app, which provide the systemPrompt/webServer services):
dsh plugin --profile web add github:qyw233/dsh-deeplink
# Or a local checkout:
dsh plugin --profile web add /path/to/dsh-deeplink
The repository ships its build output (lib/ is committed), so no additional build step is required after install.
After installing, restart the Web UI and refresh the browser page. The plugin appears in the browser boot graph (__DSH_BOOT__).
Append query parameters to the WebUI URL:
| Parameter | Meaning | Example |
|---|---|---|
?session=<session-id> |
Open that conversation | http://127.0.0.1:3080/?session=session-304ae36e-1e66-453a-a946-2b0a9a2b173d |
?workspace=<workspace-id> |
Open that project's latest/blank conversation | http://127.0.0.1:3080/?workspace=fc8b75ae-107c-4b6c-978c-276270b03b8b |
New window/tab behavior:
target="_blank" to all http(s) links, so a new tab opens and the plugin switches THAT tab to the target conversation.?session=... into the current tab's address bar and pressing Enter: the current page switches.Persistent links:
?session=<actual-session-id> (the workspace parameter is consumed and removed)./.history.replaceState, so each conversation is not left in the browser back/forward history.The plugin registers a 深链 section in the Settings panel with two independent toggles (both default on, persisted in localStorage):
| Toggle | Key | Effect |
|---|---|---|
| 跳转到指定对话 | dsh-deeplink.jump |
Process ?session= / ?workspace= deep links on page load. Read once per load — toggle it before opening a deep link. |
| 地址栏跟随 | dsh-deeplink.follow |
Keep the address bar following the current session. Read on every sync, so toggling takes effect immediately. |
The node half registers a global prompt section (plugin:dsh-deeplink, order −97, after web-surface and before persona) that tells the model:
?session= / ?workspace= deep links (a click opens them in a new tab);$DSH_HOME/storages/workspace.json (the keys of tables.workspaces are workspace ids; each record's sessionIds lists its session ids), or list $DSH_HOME/sessions/<project>/ directories (each directory name is a session id);~/.dsh/sessions/--<project>--/<session-id>/; or tables.workspaces[].sessionIds in ~/.dsh/storages/workspace.json.tables.workspaces in ~/.dsh/storages/workspace.json.lib/client.js: changes are picked up by the running server's HMR (stat-poll, ~0.5s); refresh the page to see them.lib/index.js: changes require restarting dsh web.lib/ is authored directly.The browser half is pure client: no cordis import, no peerDependencies, and depends only on the runtime-provided sessions / workspaces services and their list snapshots. The node half depends on the systemPrompt / webServer services (both provided by the dsh-base and web compositions). It has been adapted to the httpServer → webServer service rename and ships a dsh.bundle declaration (cordis.patch.yml) for the newer dsh plugin bundle mechanism.
MIT · Copyright (c) 2026 DSH Community Contributors
jump (deep-link jump, default on) and follow (address-bar following, default on), both persisted in localStorage.?session=<current-session-id> via history.replaceState; cleared when no session is current. No history pollution, no reload.httpServer → webServer service rename.dsh.bundle declaration and cordis.patch.yml for the newer dsh plugin bundle mechanism.&new=1 window.open logic (the renderer already forces _blank on http links, so new would open two windows).&new=1 new-window mode.plugin:dsh-deeplink prompt section so the model knows deep links exist and can attach links when referring to other conversations/projects.?session= / ?workspace= deep-link support; unknown targets fall back silently; read-only, never rewrites the URL.CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。