Introduction

The default tool-call card display in DeepSeek Harness (DSH) is relatively generic. When handling complex tool chains (such as MCP calls, sub-agent execution, and streaming parameter generation), the information density is low and the presentation can feel visually fragmented. This plugin aims to render these outputs uniformly as a compact timeline: a continuous color rail on the left and a GitHub PR-like code-change view on the right, improving the debugging and interaction experience.

Plugin Introduction

dsh-better-tool-ui is a client-side plugin maintained by GeekRicardo. It takes over the rendering logic for DSH built-in tools, MCP tools, and sub-calls, aggregating originally scattered cards into a compact timeline view. The plugin supports 28 built-in tools, is compatible with the MCP protocol, and optimizes streaming output and the experience on older DSH versions.

Core Features

  1. Built-in Tool Rendering
    Takes over the tool.call.toolview slot, covering 28 keys (including bash/pwsh, read, write/edit, grep/glob, web_search/web_fetch, todo_write, job_output, subagent/send_message, skill, workflow, ask_user_question, etc.).
    The rendering style adopts a GitHub PR-style code-change view and a compact timeline:
    - bash/pwsh: dark terminal block, displaying the full command and exit code.
    - read: code block with line numbers.
    - write/edit: file name header + badge + diff view (red/green background).
    - job_output: terminal block + colored status bar.
    - ask_user_question: paginated question panel, with options annotated in the same style as DSH composer.

  2. MCP Tool Support
    Supports rendering MCP tool rows, including automatic registration, segmented display of arguments/results, and error handling.
    - Arguments are displayed as a key/value grid; results are routed by content (JSON lightly highlighted, images/audio/resource placeholders rendered as chips).
    - When a call fails, a unified red error block is displayed.

  3. Sub-Call Handling
    For tools inside subagents/workflows, supports name normalization (such as Task -> subagent) and fallback adoption.
    - Does not repeatedly render tree structure; uses style indentation for alignment only.
    - Adapts to driver-side names (such as Bash / Read when using the claude-in-dsh driver), ensuring rendering consistency.

  4. Special Tools and Styling
    - Goal family: create_goal, get_goal, and update_goal are rendered as colored callout blocks.
    - Thinking behavior: rendered with a purple rail (#8c93f8).
    - Spacing and interaction: consecutive tool rows/steps are placed 2px apart with tight spacing; Bash expansion automatically lingers for at least 2 seconds to avoid flickering from sub-second commands.

  5. Streaming Preview
    Supports streaming tool row previews and is compatible with older DSH conversation.input.dock. During parameter streaming, a “Generating…” row is displayed in the message stream and automatically yields once the formal card is rendered.

Installation and Enabling

Use the official installation script:

curl -fsSL https://raw.githubusercontent.com/GeekRicardo/dsh-better-tool-ui/main/install.sh | bash

After installation, restart DSH Web and hard refresh (Cmd/Ctrl+Shift+R) for the changes to take effect.

Development and Maintenance

After modifying code, run the following command in the plugin directory to update:

cd ~/.dsh/profiles/web && pnpm up dsh-better-tool-ui

Notes

  • Version changes: The early version name was dsh-hebbian-rows; it has been renamed to dsh-better-tool-ui starting from v2.
  • Compatibility: Compatible with older DSH (0.1.0-rc.5 and earlier), where streaming rows appear from conversation.input.dock; newer DSH uses conversation.chat.streamingCall.
  • Environment requirements: Node >= 20 is required.
  • Capability scope: Web client only; no host capabilities.
  • Theme adaptation: Colors use DSH theme tokens (--dsw-alias-*) and support automatic light/dark theme following.