Introduction

DeepSeek Harness (DSH) Web emphasizes a plugin-based architecture, and developers often need to track file changes and context state across multi-turn conversations. Traditional session management lacks an intuitive aggregated view, making it hard to quickly locate recently modified files. The dsh-summary-panel plugin provides a Codex-style fixed summary panel to address this issue.

Core Features

The plugin reads successful file mutations in ui-deliverables, aggregates all loaded Turns, and preserves the final effective state of each file path. Its core features include:

  • Aggregated file display: Displays recently modified files in descending order by modification time, showing 5 by default, with expand and collapse support.
  • Interaction and layout: Provides a compact pop-up window 320px wide, with scrolling when content exceeds the viewport height. On mobile, the panel becomes a dismissible right-side drawer.
  • State persistence: The open state of a session is preserved during the session.
  • Extensibility: Supports registering custom summary sections through the Client plugin API.

Installation and Enablement

Install the plugin via the CLI, supporting either a remote commit or a local tarball. After installation, reload the configuration and start the web service.

dsh plugin --profile <profile> add github:hzthzt/dsh-summary-panel#<commit-sha>
dsh plugin --profile <profile> add ./dsh-summary-panel-0.1.0.tgz

After installation is complete, run the following commands to apply the configuration and start the service:

dsh --profile <profile> --dump-config
dsh --profile <profile> web

Extension and Customization

The plugin provides an extension API that allows developers to register custom session-level summary sections through the conversation.summary.section list slot. Developers can build custom content using components such as SummarySection, SummaryItem, and SummaryEmpty.

The following is a TypeScript-based example of custom section registration:

import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'
import {
  SummaryEmpty,
  SummarySection,
  type SummarySectionComponentProps,
} from 'dsh-summary-panel/client'

function ReviewSection({ presentation, closePanel }: SummarySectionComponentProps) {
  return (
    <SummarySection title="Review" actionLabel="Add review" onAction={() => {}}>
      <SummaryEmpty>Nothing to review</SummaryEmpty>
      <small>{presentation}</small>
      <button type="button" onClick={closePanel}>Close</button>
    </SummarySection>
  )
}

export function apply(ctx: ClientContext): void {
  ctx.slots.inject('conversation.summary.section', () => ctx.slots.register({
    name: 'conversation.summary.section',
    id: 'review',
    order: 30,
  }, ReviewSection))
}

In addition, the plugin provides enhanced methods for ctx.summaryPanel, supporting manual control of the panel’s opening, closing, and toggling:

ctx.summaryPanel.open(sessionId)
ctx.summaryPanel.close(sessionId)
ctx.summaryPanel.toggle(sessionId)

Environment and Dependencies

Using this plugin requires specific runtime and dependency versions:

  • Node.js version: Node.js ^24.0.0 is required.
  • DSH version: Plugin version 0.1.0 targets the environment dsh-v0.1.1-rc.2 (commit b150a551b8d465e31e418e1b2eaf5e79bbb7d28e).
  • Peer Dependencies: A specific version of @deepseek-ai/cordis (^4.0.1) and multiple dsh-client-runtime and UI-related components are required (such as dsh-client-runtime 0.1.1-rc.2).
  • License: MIT.

Summary

dsh-summary-panel provides DeepSeek Harness Web with a structured session file summary view. It does not directly manage file creation; instead, it focuses on reading and displaying delivered file changes, making it suitable for developers who need to clearly track context changes. For more details and source code, refer to the plugin directory page or GitHub repository.