Introduction

The core of DeepSeek Harness (DSH) is plugin extensibility, but the native interface is relatively minimal in terms of cost control and status feedback. dsh-sym (Symbiote) is a readout-layer plugin designed to overlay directly onto the DSH native interface. It adds no panels and does not interrupt the workflow, primarily addressing immediate visibility of real-time session cost, account balance, peak/off-peak billing, and context quoting.

Feature Overview

The following are the main UI manifestations of dsh-sym:

Icon Feature Location
💵 Session cost End of the input box status bar
👛 Account balance Tool row below the input box, left of the model name
🕐 Peak/off-peak period After the brand row deepseek HARNESS
@ Quote reply Action row for each completed reply
▮ Quick button bar Vertical strip between the sidebar and the chat area
⚙ Symbiote Settings Settings → Plugins → Symbiote Settings
⑂ Git status Beginning of the session header title row

These components do not interfere with each other: if data cannot be read in one place, that element automatically hides without affecting other features.

Core Feature Details

1. Real-Time Session Cost

At the end of the status bar below the input box, two CNY amounts are displayed.

  • 💵 Total session cost: The cumulative cost of all turns from the first message to the current point.
  • 💬 Current task cost: On the turn navigation scale on the right, selecting one slot shows the cost for that specific turn.
  • View details: Hovering over an amount expands the full bill, including vendor, model, peak/off-peak unit price, and token counts for cache hit/miss/output.
  • Context compression: Shows how many times compression has occurred in the current session; hovering displays the number of lost tokens.

Pricing covers 1,046 models and 42 providers.

2. Account Balance

Located in the tool row below the input box, to the left of the model selector.

  • Data source: Uses the official ctx.remote.account interface and shares the same credentials as “Settings → Account”.
  • Refresh mechanism: Reads once on mount, then refreshes every 60 seconds; if unavailable, it retries every 5 minutes.
  • Display: Prefers the CNY wallet; if only a USD wallet exists, it displays $. Hover over it to view the bonus balance and update time.

3. Peak/Off-Peak Period

A status marker follows the brand row, intuitively displaying the current billing period.

  • Peak: Amber outline, billed at the standard price.
  • Off-peak: Gray, billed at half price.
  • Refresh: Triggers five times daily at fixed times (Beijing time 09:00, 12:00, 14:00, 18:00, and 00:00), flipping about half a second after the boundary. When the window regains focus, it immediately resynchronizes.

4. Quote Reply

Each completed reply action row includes an additional @ button. After clicking it, a short marker appears in the input box (for example, @引用#9806056fac67).

  • Model reading: The model reads the full original text of that reply, not the marker.
  • Implementation: The host side listens to session/event and maintains an index of the most recent 400 messages. Before sending, the host’s agent/pre-step hook scans for and expands the marker into a Markdown blockquote.
  • Limitations: It only affects subsequent sends and does not change the session structure. The index is stored in memory and must be repopulated after an app restart.

5. Quick Button Bar

Located in the vertical strip between the sidebar and the chat area. Clicking a button fills its content directly into the input box, with the cursor remaining inside the box.

  • Grouping: Divided into three groups: “Official commands → skills → preset prompts”.
  • Implementation: Calls the official commandUi.dispatch to delegate decisions back to the official implementation, so its appearance and interaction are identical to official menus.
  • Customization: Button content and icons can be modified in “Symbiote Settings” (105 built-in icons available).

6. Symbiote Settings

Managed under “Settings → Plugins → Symbiote Settings”.

  • Display toggles: Control the visibility of balance, billing, memory usage, and compression information.
  • Quick button management: Supports adding/removing, renaming, changing icons, changing types, and reordering (within groups).
  • Import/export: Configuration is stored in browser local storage and supports importing/exporting JSON files.

7. Git Status Capsule

Displayed at the beginning of the session header title row.

  • Content: Branch name, working tree changes (+N −M), and untracked file count (?N).
  • Interaction: Clicking the branch name can switch branches (available only when the branch count is greater than 1). Switching uses git switch and refuses operations that force-discard changes.
  • Data source: Polls the host’s authenticated route every 2 seconds.

8. Session Menu Enhancement

A new group is added below the four official items in the hover menu of session rows in the sidebar.

  • Copy session ID: Copies the UUID; if it fails, the menu remains open.
  • Export session log: Reuses the official dsh-session-log-export feature and is consistent with the header action “Download Session Log”.

Installation

This package is a DSH bundle. After installation, it automatically merges cordis.patch.yml, with no manual configuration changes required.

# 推荐方式:通过 GitHub 安装
dsh plugin --profile desktop add github:seeseeczl/dsh-sym

Note: This plugin is not published on npm. There is a project on npm with the same or a similar name, dsh-hud, which is unrelated to this plugin.

Typical Usage

  1. View cost: Scroll or select the turn scale on the right side of the chat and observe changes in the “Current Task” amount at the end of the input box.
  2. Refresh balance: Click the wallet icon in the tool row below the input box.
  3. Quote reply: In the chat history, click the @ button on the right side of a reply to quote that message directly in the current input box.
  4. Use quick commands: Click a quick button on the right edge of the sidebar; its content is automatically filled into the input box and prepared for sending.

Notes

  • Zero dependencies: This is a pure JavaScript project with no build step.
  • Local storage: Configuration files are stored in browser local storage and are not written to DSH configuration files.
  • Permissions: The plugin runs with the permissions of the current DSH process. It is recommended to review the source code and license (MIT) before installation.

Summary

Through “symbiosis,” dsh-sym overlays key information such as cost, balance, and billing period directly onto the DSH native interface without requiring panel switching. It provides practical features ranging from fine-grained control of session cost to Git status synchronization and context quoting, making it suitable for developers who need refined management of DeepSeek invocation costs and workflows.

Plugin Directory | GitHub Repository