Introduction

DeepSeek Harness (DSH) adopts the “everything is a plugin” philosophy. When developing or using DSH on the Web, chat content layout is often constrained by hard-coded Shell styles (such as font tokens for Markdown and fixed font sizes for user bubbles), with no intuitive way to adjust them. This article introduces dsh-compact-chat-ui, a plugin maintained by secyborg, designed to address the difficulty of customizing chat area styles.

Plugin Positioning

This is a DSH Web plugin in the “fun theming” category. It does not modify native elements such as the input box. Instead, it focuses on the layout of the chat content area and uses browser-side style overrides to bypass hard-coded constraints introduced at build time.

Core Features

  • Settings card: Provides a “Chat Area Layout” card in plugin settings.
  • Real-time adjustment: Supports adjusting font size, line height, and block spacing.
  • Style override: Overrides hard-coded styles for assistant Markdown and user bubbles.
  • Auto-save: Settings are automatically saved to localStorage.

Installation and Enablement

The installation command is as follows:

dsh plugin --profile web add ./dsh-compact-chat-ui-0.5.0.tgz

After installation, restart the application and refresh the page for the changes to take effect.

Typical Usage

In the application UI, go to Settings → Plugins → Configurable tab and find the “Chat Area Layout” card.

The supported adjustment parameter ranges are as follows:

Slider Range Default Original
Font size 11–18px 15px 16px
Line height 1.20–2.00 1.50 ~1.75
Block spacing 25%–150% 50% 100%

Changes are applied immediately and saved automatically. They can also be set directly from the browser console:

localStorage.setItem("dsh-compact-chat-ui:px", "14");  // 字号
localStorage.setItem("dsh-compact-chat-ui:lh", "1.4"); // 行高
localStorage.setItem("dsh-compact-chat-ui:mg", "0.5"); // 块间距
location.reload();

Use Cases and Notes

  • Module limitation: The plugin only overrides whitelisted modules (MessageItem / AssistantMarkdown) and does not affect input box sizing; the input box size remains native.
  • Dependency: The plugin relies on the host registering the settings namespace. Before installation, check the source code and license.