DeepSeek Harness plugin

dsh-logger-panel

Runtime log panel for DeepSeek Harness: live SSE log view in Settings plus bounded date/size rotating JSONL files.

Jump to install

Source facts

Repository
LingLambda/dsh-logger-panel
Latest update
Aug 14, 2026
Category
Development & Runtime
GitHub stars
2
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/LingLambda/dsh-logger-panel
Plugin: dsh-logger-panel
Author: LingLambda

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-logger-panel

English | 中文

Runtime log panel for DeepSeek Harness (dsh). It captures the Host's Cordis logger output, streams it live into a Settings > Logs page over SSE, and persists the same records to bounded, date-and-size rotating JSONL files under the private $DSH_HOME/logs/dsh-logger-panel directory.

The page renders records as plain text. Raw logger arguments, Fiber references, ANSI escapes, and executable markup never cross the browser wire.

Preview

<img width="2540" height="1360" alt="图片" src="https://github.com/user-attachments/assets/9a450daa-d75e-4c27-b4ff-d80dbee3dad4" />

Features

  • Live view with snapshot + 100 ms batched SSE appends.
  • History paging: a Load older button reads records back from the rotated JSONL files across rotations and dates, so the browser can go beyond the in-memory window.
  • Bottom auto-follow that pauses when you scroll up, with a Latest button to resume.
  • Bounded memory: the Host retains the latest 2,000 records for a connecting browser.
  • JSONL persistence: a new YYYY-MM-DD-N.jsonl file opens on Host activation, date change, or the 5 MiB size limit; matching files older than 30 days are removed. The directory is created with mode 0700 and files with 0600.
  • Bounded disk queue (1,000 records). If persistence fails, the panel reports the failure and the live stream keeps working; omitted records are counted.

Requirements

  • DeepSeek Harness with the Web profile (Settings shell from dsh-client-ui-settings, the client module system, and dsh-host-webserver), release 0.1.0-rc.6 or newer.
  • Node ^22.19 || >=24.

Install

The package is a dsh bundle. package.json points dsh.bundle to cordis.patch.yml, which activates the Host plugin, and declares dsh.client so the Web profile auto-discovers the browser bundle.

From npm:

dsh plugin --profile demo add dsh-logger-panel
dsh --profile demo

From git (the prepare script builds lib/ during installation; authorize the build in the profile's pnpm-workspace.yaml first):

dsh plugin --profile demo add github:LingLambda/dsh-logger-panel#<sha>

For local development against a Harness checkout, load the Host source with an overlay:

pnpm dsh web --patch ./cordis.patch.yml --patch /absolute/path/to/dsh-logger-panel/overlay.yml
- insert:
    - id: logger-panel
      name: /absolute/path/to/dsh-logger-panel/src/index.ts

Configuration

The plugin row is inserted as logger-panel. Override its config in your profile patch:

- id: logger-panel
  name: dsh-logger-panel
  config:
    root: /var/log/dsh         # default: $DSH_HOME/logs/dsh-logger-panel
    maxRecords: 2000           # records retained for a connecting browser
    maxRecordChars: 20000      # max chars kept from one formatted message
    batchMs: 100               # SSE batch interval
    maxFileBytes: 5242880      # bytes per JSONL file before rotation
    maxAgeDays: 30             # retention; 0 disables deletion
    maxPendingRecords: 1000    # records accepted ahead of disk writes
    historyPageSize: 500       # records returned by one history page

How It Works

The Host registers a Cordis logger exporter. Every message is formatted to bounded plain text and appended to the in-memory history; the same record is queued to the JSONL writer, so all captured levels are persisted with no content filtering. Each browser connection receives a snapshot followed by batched appends, and a close drains accepted file writes. Initial directory or file-open failure rejects plugin activation; a later write failure stops persistence, reports it in the panel, and leaves the in-memory/SSE path active.

A /dsh-logger-panel/logs/history endpoint pages older records back from the JSONL files in reverse-chronological order. The first request anchors on the browser's earliest live record so the page never re-delivers the current window; later requests continue with an opaque cursor. The browser keeps loaded history separate from the live window: live trimming never removes history, and reconnected snapshots are folded in without duplicates.

Develop

corepack yarn install
corepack yarn typecheck
corepack yarn test
corepack yarn build

License

MIT