Sessions & Messages
dsh-quorfloat
Azetus/dsh-quorfloat · ★ 3
System-level floating conversation window for DeepSeek Harness (host plugin half)
Manifest details
安装
dsh plugin --profile web add 'dsh-quorfloat@0.1.9'从 npm 安装预构建包
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
A floating desktop chat plugin for DeepSeek Harness. Bring up the panel with a global keyboard shortcut to ask Harness questions, continue existing sessions, read responses, and handle approvals while using other applications.
The panel uses Harness's workspaces, sessions, models, and permission settings. Harness manages conversation execution and history. Offline releases include both the host plugin and the panel application; when installing via npm, the package manager automatically downloads the panel application for your platform. Neither installation method requires compiling anything yourself.
Interface Preview
Features
- Open anytime: Show or hide the floating window with a global shortcut. Drag it to reposition it, have its position remembered, and optionally keep it open when it loses focus.
- Switch workspaces and sessions: Browse existing sessions in the current workspace, choose another workspace to start a new conversation, or browse ungrouped sessions.
- Pin frequent destinations: Pin a session to resume it the next time you open the panel. While in the new-session state, pin a workspace as the default location for new sessions.
- Read full conversations: Supports Markdown, code blocks, and tables. Expand or collapse the work process and copy responses. Load earlier content in long sessions while keeping your current reading position.
- Control sessions: Send messages, stop generation, select models, reasoning levels, and permission presets provided by Harness, and view available session statistics.
- Approvals and follow-up questions: Handle tool approvals and questions for the current session directly in the panel, without switching back to the main Harness window.
- Appearance and language: Light, dark, and system themes; Chinese and English interfaces; customizable global shortcut. Settings are saved automatically.
- Diagnostics log: From the settings page, write the current state, recent host events, and sidecar stderr to
~/.dsh-quorfloat/logs/and show the file path.
Installation
Prerequisites
Install DeepSeek Harness. If you use the browser WebUI, also make sure the dsh command is available in your terminal.
The main npm package is dsh-quorfloat. Install only this package; platform dependencies are installed automatically.
For offline installation, download the self-contained tgz for your operating system and the current release, for example:
- macOS:
dsh-quorfloat-<version>-darwin.tgz, supporting both Apple Silicon and Intel. - Windows:
dsh-quorfloat-<version>-win32.tgz. Choose the release package that matches your machine's architecture.
In the examples below, <version> is a placeholder. Replace it with the actual version of the downloaded file or the version you want to install.
Browser WebUI
First, stop the running dsh web service. The commands below install into the web profile. If you use a custom profile, replace web with your profile name and start Harness with the same profile.
When accessed remotely, the WebUI can install the plugin and show its status, but the floating window runs on the DSH host and does not appear on the browser's machine.
npm installation
Install the latest version with an internet connection:
dsh plugin --profile web add dsh-quorfloat
dsh web
To install a specific version, replace the package name with dsh-quorfloat@<version>.
Offline installation (tgz)
Install using the absolute path to the local tgz. No extraction is needed. On macOS:
dsh plugin --profile web add "/absolute/path/dsh-quorfloat-<version>-darwin.tgz"
dsh web
On Windows:
dsh plugin --profile web add "C:/Downloads/dsh-quorfloat-<version>-win32.tgz"
dsh web
Keep the surrounding quotation marks if the path contains spaces.
Official Harness Desktop App
Launch the desktop app, open “Plugins” in the left sidebar, and click “Add Plugin”.
npm installation
- Click “Plugins” → “Add Plugin” in the left sidebar. Enter
dsh-quorfloatin the Add Plugin dialog, ordsh-quorfloat@<version>for a specific version. - Click Install. If prompted to enable the plugin, follow the prompt. The package manager automatically installs the panel application for your platform.
- Fully quit and restart the Harness desktop app.
Offline installation (tgz)
- Download the self-contained tgz for your operating system. No extraction is needed.
- Enter the tgz's absolute path in the Add Plugin dialog, such as
/absolute/path/dsh-quorfloat-<version>-darwin.tgzon macOS orC:/Downloads/dsh-quorfloat-<version>-win32.tgzon Windows. - Click Install. If prompted to enable the plugin, follow the prompt.
- Fully quit and restart the Harness desktop app.
Restart Harness itself after installing or updating the plugin. Closing only the floating panel, closing the desktop window, or refreshing the WebUI page is insufficient to reload the host plugin.
Getting Started
The default shortcut is Alt + Space, or Option + Space on macOS. Press it to open the panel, and press it again to hide it. You can also use the menu bar or system tray entry to show, hide, or reset the panel position.
Type a message in the input box and press Enter to send it, or Shift + Enter to insert a line break. You can stop generation while it is in progress. Esc first closes an open menu or returns to the conversation page. If you are already on the conversation page with no menu open, it hides the panel. Hiding the panel does not stop a running session.
Click the workspace or session name at the top to open its selector:
- Start a new conversation: Select an actual workspace, then choose “New session” from the session menu. The session is created when you send the first message.
- Continue an existing session: Select the conversation you want to resume from the session list.
- Resume the same session next time: Click the pin button beside the session. Without a pinned session, the panel defaults to the new-session state the next time it opens.
- Set a default workspace: While in the new-session state, click the pin button beside a workspace.
- Browse ungrouped sessions: Select “Ungrouped” to view existing sessions that do not belong to a workspace. This entry cannot be pinned and does not offer a “New session” option.
Click the gear icon to adjust the theme, interface language, shortcut, and “Keep open when unfocused” setting. If the default shortcut conflicts with another application, open the panel from the menu bar or system tray and change it in Settings.
In Harness, open “Settings → Built-in plugins → dsh-quorfloat” and click “Export diagnostics log”. The current state, recent host events, and sidecar stderr are written to ~/.dsh-quorfloat/logs/ on the DSH host, and the page shows the file path.
Building from Source
Build Environment
- Node.js and npm: Node.js 22 or newer is recommended. Make sure
nodeandnpmare on PATH. - Rust: Install Rust 1.88 or newer with rustup. Make sure
cargoandrustcare on PATH. - macOS: Install Xcode Command Line Tools for the SDK, linker, and
lipo. Release builds include both Apple Silicon and Intel architectures by default. - Windows: Install Visual Studio Build Tools with the “Desktop development with C++” workload, including MSVC and the Windows SDK. Use the MSVC Rust toolchain and install the WebView2 Runtime. The current npm platform package targets Windows x64.
See the Tauri prerequisites guide for platform dependency setup. The release scripts currently support macOS and Windows. Build each platform's artifacts on that operating system.
Prepare the Source and Dependencies
Download and extract the project source, then open a terminal in the project root. Before your first build, install the frontend dependencies:
npm run frontend:install
The build automatically installs the host plugin's TypeScript toolchain into .tooling/, and Cargo downloads Rust dependencies. Your first build therefore requires an internet connection.
The default macOS build produces a universal binary. Install both Rust targets beforehand:
rustup target add aarch64-apple-darwin x86_64-apple-darwin
Build an Offline Installation Package
Run from the project root:
npm run build
This command compiles the host plugin, panel frontend, and release sidecar in order, then assembles the bundle and automatically packs it with npm. There is no need to run npm pack manually.
Outputs are placed in bundles/. In these paths, <version> is the version declared by the source:
| Platform | Bundle directory | Offline installation package |
|---|---|---|
| macOS | bundles/dsh-quorfloat-<version>-darwin/ |
bundles/dsh-quorfloat-<version>-darwin.tgz |
| Windows | bundles/dsh-quorfloat-<version>-win32/ |
bundles/dsh-quorfloat-<version>-win32.tgz |
The macOS binary combines both architectures using lipo. The Windows offline package defaults to the host architecture of the current Rust toolchain. Install the newly generated tgz using the instructions above, then restart Harness.
Build Packages for npm Publishing
npm run build:npm
Outputs are placed in bundles/npm/<version>/, containing the main package directory dsh-quorfloat/, the current platform dependency directory, and their respective tgz files. The dependency directory is azetus-dsh-quorfloat-darwin/ on macOS or azetus-dsh-quorfloat-win32-x64/ on Windows. This command only builds and packs; it does not publish. Build the two platform dependencies separately on their corresponding operating systems.
Local Development Build
npm run build:local
This command builds the host plugin, panel frontend, and debug sidecar for the current machine without producing a release tgz. Host artifacts are placed in lib/, frontend assets in quorfloat/frontend/dist/, and the sidecar at quorfloat/target/debug/dsh-quorfloat (dsh-quorfloat.exe on Windows). You can also use build:plugin, build:frontend, and build:sidecar separately. build:sidecar builds the frontend before compiling the sidecar.
The release version comes from the root package.json and quorfloat/Cargo.toml. Their version numbers must match; otherwise, the release build stops before compilation.