返回目录
其他 插件

dsh-artifact

sumarilkkxx/dsh-artifact

Inline ECharts rendering plugin for DeepSeek Harness

Stars
20
Forks
1
Issues
0
更新
28 天前

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:sumarilkkxx/dsh-artifact

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

dsh-artifact logo

Turn natural-language requests into native, interactive ECharts and Mermaid visualizations inside DeepSeek Harness.

MIT license DeepSeek Harness ECharts and Mermaid Pure JSON payloads

简体中文

dsh-artifact turns natural-language requests into native ECharts and Mermaid visualizations inside DeepSeek Harness

What it is

dsh-artifact is a visualization renderer for DeepSeek Harness. Ask for a chart or diagram in ordinary language; the model understands the intent, chooses the appropriate native engine, emits a declarative payload, and the result appears directly in the conversation as an interactive canvas.

It is built for a near-native ECharts and Mermaid authoring experience—not a small set of hand-drawn chart templates. The browser receives a real ECharts option or Mermaid source and renders it with the real engine.

Your request  →  model understands the intent  →  ECharts option / Mermaid code  →  interactive canvas

Highlights

From a request to a native canvas

Describe the visualization you need in ordinary language. dsh-artifact keeps the complete workflow inside the conversation: the model reasons about the request, prepares a native engine payload, and renders the result as an interactive canvas with appearance controls and PNG export.

A natural-language request becoming a native GitHub-style calendar heatmap inside DeepSeek Harness

One request, from streamed reasoning and tool execution to a native ECharts calendar heatmap. The demonstration preserves the actual DeepSeek Harness interface.

Built around real rendering engines

Capability
Native engines ECharts 6, the official ECharts-GL extension when an option needs it, and Mermaid 11
Broad ECharts coverage Native JSON-expressible series and components: cartesian, pie, radar, calendar heatmap, graph, sankey, tree, map, parallel, timeline, dataset, visualMap, dataZoom, and more
Diagram-first Mermaid Flowcharts, sequence, class, state, ER, gantt, journey, pie, and other Mermaid-supported diagrams
Interactive canvas Tooltips, legends, zoom, pan, 3D controls, and responsive resizing come from the actual renderer
Appearance controls In-canvas ECharts-inspired palettes and light/dark backgrounds; photographic globes retain their real-world surface and expose background mode only
Image download Download ECharts, ECharts-GL, and Mermaid canvases as 2× PNG images using the active background; standard ECharts and Mermaid diagrams also support SVG download
Safe by design Pure JSON across the declarative boundary; isolated custom HTML runs in a CSP-restricted sandbox iframe

Install

Install the DeepSeek Harness CLI first (one time):

npm install -g @deepseek-ai/dsh

If this is your first time using DSH, run dsh web once to initialize the web profile, then stop it before adding the plugin.

# GitHub install (recommended; prebuilt engine assets are included)
dsh plugin --profile web add github:sumarilkkxx/dsh-artifact

# Local development
dsh plugin --profile web add link:/path/to/dsh-artifact

Start or restart dsh web, then hard-refresh the browser (Cmd/Ctrl+Shift+R). pnpm must be available on PATH because the DSH plugin command uses it internally.

Use it naturally

Ask for the result you need. For example:

Compare quarterly revenue and margin for 2024 in a dual-axis chart, highlight the best quarter, and use a dark canvas.

Create a GitHub-style calendar heatmap for this year's daily commits.

Draw a sequence diagram for OAuth login with success and failure paths.

The model calls render_artifact and returns a live canvas in the conversation. Use the Appearance control to switch palette/background where appropriate, and the adjacent Download action to save a PNG.

Engine contract

render_artifact

Parameter Type Purpose
engine string echarts (default) or mermaid
option object / string A native ECharts option for echarts; pure JSON only, no JavaScript functions
maps object / string Optional legal GeoJSON/SVG registry for ECharts geo and map visualizations
code string Mermaid source for mermaid
theme string auto, tech-blue, minimal, night-purple, forest, or amber
mode string auto, light, or dark
title string Conversation card title
height number Canvas height in px (default 360, minimum 120)

The plugin passes ECharts options to setOption without translating them into a preset catalogue. Explicit values in an option take precedence over the in-canvas theme, exactly as they do in ECharts. ECharts-GL is loaded only when a supported 3D option requires it; it remains an ECharts compatibility layer, not a separate 3D scene editor.

JavaScript callbacks cannot cross the JSON security boundary. Prefer ECharts string templates such as {c}% for formatters. For genuinely callback-driven custom experiences, use render_html.

render_html

Parameter Type Purpose
html string Self-contained HTML fragment or document; inline CSS/JS is allowed
title string Conversation card title
height number Canvas height in px (default 400, minimum 120)

render_html is the deliberately separate escape hatch for custom widgets. It runs in an opaque-origin iframe with a CSP that blocks network access, top-level navigation, and form submission. Its contents cannot be exported by the host, so it intentionally has no PNG download control.

Native ECharts example

{
  "engine": "echarts",
  "title": "2024 quarterly revenue",
  "mode": "dark",
  "option": {
    "tooltip": { "trigger": "axis" },
    "legend": { "top": 28 },
    "xAxis": { "type": "category", "data": ["Q1", "Q2", "Q3", "Q4"] },
    "yAxis": { "type": "value", "name": "Revenue (10k CNY)" },
    "series": [{ "type": "bar", "name": "Revenue", "data": [120, 180, 150, 210] }]
  }
}

Security and compatibility

  • The declarative payload is validated as lossless JSON. Functions, undefined, and symbols are rejected.
  • Engine assets are served only from the plugin route; traversal attempts are blocked.
  • Map visualizations must include legal GeoJSON/SVG through maps; the plugin never fetches map data from the network.
  • The plugin ships its renderer assets locally, so ECharts and Mermaid render without a CDN dependency.

Development

npm install
npm run build

# Add the local plugin, then restart dsh web and hard-refresh.
dsh plugin --profile web add .
Path Description
index.js Host tool definitions, validation, prompt guidance, and local asset route
client.js DeepSeek Harness toolviews, renderer dispatch, appearance controls, and PNG export
assets/ Committed ECharts, ECharts-GL, Mermaid, and project media assets
docs/showcase/ Source and pixel assets for the README motion study
scripts/build.mjs Copies renderer distributions into assets/

The plugin has no @deepseek-ai/* runtime imports. ECharts, ECharts-GL, and Mermaid are build-time dependencies used to create the committed local assets.

Roadmap

  • [x] Native ECharts and Mermaid canvases
  • [x] ECharts-GL compatibility for JSON-expressible ECharts 3D options
  • [x] Light/dark appearance controls and PNG export
  • [x] Sandboxed HTML escape hatch
  • [ ] Optional action round-trip from a canvas back to the model
  • [ ] More declarative rendering engines

Contributing

Contributions are welcome. Keep the declarative channel function-free, preserve the sandbox boundary, and commit rebuilt assets whenever an engine version changes.

License

MIT

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类其他
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。