DSH Hub
dsh-plugin-execution-graph cover

liqiGeGe/dsh-plugin-execution-graph

dsh-plugin-execution-graph

UIWeb UI21 GitHub stars· updated 2026-09-06

A DeepSeek Harness (DSH) client plugin that adds an "Execution graph" tab to the conversation view. It reconstructs one session turn's activity as a vertical timeline on a React Flow canvas

Install

npx @deepseek-ai/dsh plugin --profile <name> add dsh-plugin-execution-graph

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-plugin-execution-graph DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-plugin-execution-graph.svg)](https://dshhub.dev/plugins/dsh-plugin-execution-graph)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from liqiGeGe/dsh-plugin-execution-graph, cleaned of badges and images.

dsh-plugin-execution-graph

English | 中文

A DeepSeek Harness (DSH) client plugin that adds an "Execution graph" tab to the conversation view. It reconstructs one session turn's activity as a vertical timeline on a React Flow canvas: the turn's request-header, assistant-message, tool-call, and tool-result nodes are ranked into timeline steps stacked top-to-bottom and connected by arrowed edges from each step to the next. turn-group container nodes are not drawn — one turn is shown at a time (defaulting to the session's last), so a container box would be redundant. Tool calls are never merged by name — each call and its result are independent nodes tied by a resolves edge, an assistant message's tool-call blocks connect to their tool-call nodes by a triggers edge, and same-group nodes chain by a sequence edge in event order. Parallel tool calls triggered by one assistant message share a timeline step and spread horizontally; a column is capped at ten steps and then wraps into the next column block to the right, and when a column's last row holds several parallel nodes feeding the next column, their connectors converge through a merge junction before bending into the next column. A running tool call (present in the shared Session window's running-call-id set, with no settled result yet) renders with a distinct dashed, pulsing border instead of a fabricated result. A tool-call card puts its Tool kind label and tool name on one row and a truncated argument preview on the next. Selecting a node fills a persistent detail sidebar to the right — resizable (320–600px, collapsible) — that shows a Payload JSON tree for tool calls and a line-broken command block for shell commands. A turn selector above the canvas lists every turn and defaults to the last; switching turns re-centers the canvas at scale 1. A download button in the canvas's lower-left corner exports the whole graph as a PNG. Each assistant-message card carries a fold toggle on its right edge: collapsing hides the tool calls/results that follow it up to the next assistant message (an in-place view transform — columns and coordinates stay fixed), leaving a fold capsule that bridges the collapsed reply to the next one and can be clicked to expand. The package provides no service and declares no Context merge; it registers target-specific Conversation Event Definitions, a Graph view snapshot builder, and one tab in the conversation's 'conversation.view' slot ring.

Plugin results

Plugin declaration and lifecycle

This is a pure-consumer Cordis plugin with two entry faces:

  • Node half (src/index.ts) — a no-op apply(); the plugin has no host-side behavior.
  • Client half (src/client/index.ts) — the real plugin. It exports inject and apply(ctx), following the DSH function-plugin contract (no default export).

apply(ctx) performs exactly these side effects, each registered reversibly through the Cordis effect system so that unloading the plugin reverts them in full:

…

Related plugins