dsh-web
zhu1090093659
DeepSeek Harness (DSH) Web 插件聚合生态 · 万物皆插件,通过创意工坊分发||DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:GooDAnDReaDY/dsh-live-canvas
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
🇬🇧 English • 🇷🇺 Русский • 🇨🇳 中文说明
|
⭐ If you like this plugin, please star it on GitHub — it shows me that the plugin is useful to you and motivates me to keep developing it.
🐛 If you find a bug or would like to request a feature, open a GitHub issue in any language — I will review your proposal and implement useful suggestions in a future plugin version. |
When coding assistants work in standard terminal or chat windows, they typically produce static code snippets or markdown blocks. This creates critical friction:
dsh-live-canvasInspired by Thariq Shihipar's The Unreasonable Effectiveness of HTML, Plannotator, and modern visual studios (Figma, Retool, V0), @goodandready/dsh-live-canvas transforms DeepSeek Harness into a complete, standalone frontend development suite. It provides in-memory ESM bundling, real-time SSE hot-reloading, in-chat interactive preview cards, a split-view code editor, time-travel history debugging, 1-click cloud deployment, and 30 dedicated Agent Tools.
@goodandready/dsh-live-canvas supports all DSH navigation layouts with zero external dependencies:
| Environment | Supported Surface | Capabilities |
|---|---|---|
| DSH 0.1.5-alpha.1+ (Native) | Native Right Sidebar (sidebarRightTabs, sidebar.right.pane.tab) |
Full Live Canvas workspace tab + native file viewer for dsh-resource://file (.html, .jsx, .tsx, .svg, .mermaid, .md). |
| Legacy DSH Profiles | dsh-better-sidebar integration |
Dedicated tab (live-canvas) and registered file viewer (live-canvas-viewer). |
| Dual Profiles (Both enabled) | Coexists seamlessly | Distinct, deterministic IDs (@goodandready/dsh-live-canvas vs live-canvas), no duplicate mounting, independent cleanup disposers. |
| Minimal / Standalone Profiles | Standalone Drawer & Modals | Self-contained slide-over drawer with hotkeys (Alt+C), zero reliance on external sidebar plugins. |
graph TD
classDef agent fill:#1e1b4b,stroke:#6366f1,stroke-width:2px,color:#fff;
classDef core fill:#064e3b,stroke:#10b981,stroke-width:2px,color:#fff;
classDef ui fill:#451a03,stroke:#f59e0b,stroke-width:2px,color:#fff;
classDef sandbox fill:#18181b,stroke:#71717a,stroke-width:2px,color:#fff;
Agent[🤖 DeepSeek Harness Agent / 30 Tools]:::agent
Store[💾 PreviewStore LRU Cache & History Snapshots]:::core
Watcher[📁 WorkspaceWatcher File Change Detection]:::core
Bundler[⚡ Smart Recursive ESM Bundler & Transpiler]:::core
Deployer[🌍 Multi-Platform Deploy Engine]:::core
FigmaBridge[🎨 Figma Vector Bridge]:::core
SoundEngine[🔊 Web Audio FX Synthesis]:::core
Themes[🎨 AI Theme Tokens Engine]:::core
WebUI[💻 DSH WebUI BetterSidebar Tab]:::ui
ChatCards[💬 In-Chat Live Preview Tool Cards]:::ui
EditorDrawer[📝 Split-View Code Editor Drawer]:::ui
TimeTravelUI[⏳ Time-Travel History Scrubber]:::ui
DeployModal[🌍 Instant Deploy Dialog]:::ui
SandboxFrame[🛡️ Sandboxed Iframe Preview Runtime]:::sandbox
WYSIWYG[✏️ Double-Click Inline WYSIWYG Editor]:::sandbox
DnD[↕️ Drag & Drop Section Reordering]:::sandbox
Blueprint[📐 Blueprint Grayscale Filter Mode]:::sandbox
Agent -->|live_canvas_* tools| Store
Watcher -->|Auto file sync| Store
Store --> Bundler
Deployer --> Store
FigmaBridge --> Store
Themes --> SandboxFrame
Bundler --> SandboxFrame
SoundEngine --> SandboxFrame
WebUI --> EditorDrawer
WebUI --> TimeTravelUI
WebUI --> DeployModal
WebUI --> SandboxFrame
ChatCards -->|1-Click Activate Tab| WebUI
SandboxFrame --> WYSIWYG
SandboxFrame --> DnD
SandboxFrame --> Blueprint
WYSIWYG -->|POST /api/save-content| Watcher
DnD -->|POST /api/save-reorder| Watcher
S 200px, M 320px, L 480px), and Wide View mode (⤢).code, allowedRoots, reason) on path policy violations, enabling autonomous model error recovery.lib/crud.js / Tool 26)Active, Pending, Suspended).localStorage so data survives page reloads..csv files.lib/timetravel.js / Tool 27)lib/deploy.js / Tool 28)vercel.json routing rules._routes.json and security headers (_headers)._redirects).lib/figma.js / Tool 29)foreignObject for direct pasting (Ctrl+V) into Figma design files.lib/sound.js / Tool 30)click, switch tap, 2-tone success chime, warning error buzz, modal pop, and 3-tone levelup arpeggio.lib/wireframe.js, lib/plan.js, lib/diagram.js, lib/prototype.js)P0, P1, P2), dynamic progress bars, milestone checkboxes, and persistent state.open / resolved) and response threads.LiveCanvasChatCard)🚀 Open in Live Canvas automatically opens the BetterSidebar Live Canvas tab and loads the session.lib/transpiler.js)./Header.jsx, ./Card.tsx, ./data.js, and ./styles.css imports in-memory.GET /dsh-live-canvas/assets/*.lib/themes.js)alt attributes, low contrast, and viewport responsiveness issues.lib/packager.js / Tool 13)Vite + React or Vite + Vue project with package.json, vite.config.js, and tailwind.config.js.| # | Tool Name | Description | Key Parameters | Return Values |
|---|---|---|---|---|
| 1 | live_canvas_preview |
Renders or updates preview session for HTML/React/SVG/Mermaid | content, componentType, title, theme |
previewUrl, canvasId, success |
| 2 | live_canvas_inspect |
Retrieves user DOM clicks, CSS selectors, and element attributes | canvasId, limit |
inspections: [...], count |
| 3 | live_canvas_reload |
Forces instant SSE reload on open preview frames | canvasId |
reloaded, timestamp |
| 4 | live_canvas_diagnose |
Queries sandbox console errors and exceptions for self-healing | canvasId, level |
logs: [...], hasErrors |
| 5 | live_canvas_export |
Exports standalone zero-dependency HTML bundle | canvasId, saveToDisk |
downloadUrl, savedPath |
| 6 | live_canvas_annotations |
Queries or clears boxed visual annotations and user markup | canvasId, action |
annotations: [...], count |
| 7 | live_canvas_gallery |
Creates multi-variant Storybook comparison matrix | variants, title |
variantsCount, previewUrl |
| 8 | live_canvas_watch |
Scans and binds workspace files to live file watcher | subDir, exts |
files: [...], watchedFiles |
| 9 | live_canvas_controls |
Updates Storybook-style interactive props sliders | canvasId, values, schema |
values: {...}, schema: {...} |
| 10 | live_canvas_diff |
Visual split slider comparing two session snapshots | canvasId, fromId, toId |
diffUrl, snapshotCount |
| 11 | live_canvas_matrix |
Multi-device viewport matrix (Mobile, Tablet, Desktop) | canvasId |
matrixUrl |
| 12 | live_canvas_mock |
Configures intercepted REST API mock routes in preview frame | canvasId, endpoints |
endpointsCount, mockData |
| 13 | live_canvas_pack |
1-Click Vite+React or Vite+Vue project ZIP bundle packager | canvasId, framework |
downloadUrl, writtenDir |
| 14 | live_canvas_refine_element |
Targets AI visual/structural refinement to a DOM element | canvasId, selector, prompt |
success, message |
| 15 | live_canvas_storybook |
Auto-scans workspace components and creates UI Kit gallery | subDir, framework |
galleryUrl, componentsCount |
| 16 | live_canvas_insert_block |
Inserts curated design block (Hero, Bento, Pricing, FAQ, Footer) | blockId, canvasId |
blockId, title |
| 17 | live_canvas_vision_import |
Converts image mockup/screenshot into interactive canvas | imagePath, framework |
previewUrl, framework |
| 18 | live_canvas_visual_audit |
Inspects canvas DOM for overflow, contrast, and layout issues | canvasId |
score, issuesCount, issues |
| 19 | live_canvas_generate_mock |
Generates realistic mock JSON datasets and injects into sandbox | type, count, canvasId |
datasetType, mockData |
| 20 | live_canvas_share |
Generates mobile QR code and local network preview URL | canvasId |
shareUrl, qrSvg |
| 21 | live_canvas_create_wireframe |
Generates low-fidelity structural HTML wireframe artifact | title, layout, canvasId |
previewUrl, layout |
| 22 | live_canvas_create_plan |
Generates interactive HTML project plan & release roadmap | title, version, canvasId |
previewUrl, version |
| 23 | live_canvas_create_diagram |
Generates living interactive architecture diagram artifact | title, diagramType, canvasId |
previewUrl, diagramType |
| 24 | live_canvas_create_prototype |
Generates multi-step interactive prototype wizard flow | title, flowType, canvasId |
previewUrl, flowType |
| 25 | live_canvas_resolve_annotation |
Marks visual user annotation as resolved with notes | canvasId, annotationId, note |
status: 'resolved' |
| 26 | live_canvas_create_crud |
Generates Retool-style admin CRUD dashboard with table and modals | title, entityName, canvasId |
previewUrl, entityName |
| 27 | live_canvas_timetravel |
Steps through snapshot history timeline or restores revisions | canvasId, action, snapshotIndex |
timetravelUrl, snapshotsCount |
| 28 | live_canvas_instant_deploy |
Generates ready-to-ship bundle for Vercel, Cloudflare, Netlify, Gist | canvasId, target |
downloadUrl, instructions |
| 29 | live_canvas_figma_bridge |
Converts Figma SVG vector code to Tailwind or exports component SVG | svg, action, canvasId |
action, componentName |
| 30 | live_canvas_sound_fx |
Synthesizes and previews Web Audio UI feedback sounds | action, soundType |
presetsCount, soundType |
| 31 | live_canvas_capture_snapshot |
Captures visual canvas metadata, DOM tree, or HTML for agent visual feedback | canvasId, format |
snapshot, format |
Default, Loading, Empty, Error, and Overflow states via toolbar selector and DOM event triggers.live_canvas_capture_snapshot lets coding agents query DOM structure or extract complete rendered HTML snapshots./dsh-live-canvas/api/standalone embedding all fonts, Tailwind, and scripts.Install into your DeepSeek Harness profile with one command:
dsh plugin --profile web add @goodandready/dsh-live-canvas
The same values are edited on the Live Canvas Preview page under Plugins. The page shows one description line under the title and the settings form below it. Save writes each field through the plugin settings service. While that service is loading, the form shows a loading state. When the service is not available, the form shows an unavailable state instead of an error page. The settings namespace is dsh-live-canvas; the package name is not a valid settings identifier.
settings.yaml)plugins:
"@goodandready/dsh-live-canvas":
defaultViewport: "responsive" # Options: responsive, mobile, tablet, desktop, matrix
autoOpenOnHtmlGen: true # Automatically focus Live Canvas tab upon UI generation
enableHotReload: true # Enable SSE real-time hot-reloading on code updates
maxSessionCache: 50 # Maximum active preview sessions in LRU memory cache
enableFileWatcher: true # Enable filesystem watcher for live project sync
workspaceDir: "" # Custom project root path (defaults to working directory)
workspaceRoots: [] # Explicit allowed workspace root directories for path sandboxing
| Parameter | Type | Default | Description |
|---|---|---|---|
defaultViewport |
string |
"responsive" |
Initial viewport dimension (responsive, mobile, tablet, desktop, matrix) |
autoOpenOnHtmlGen |
boolean |
true |
Automatically opens BetterSidebar Live Canvas tab when agent generates UI |
enableHotReload |
boolean |
true |
Real-time SSE hot-reload stream for sandbox frames |
maxSessionCache |
number |
50 |
Maximum number of active preview sessions kept in memory |
enableFileWatcher |
boolean |
true |
Monitors workspace directory for file changes |
workspaceDir |
string |
"" |
Base directory for scanning workspace components |
workspaceRoots |
string[] |
[] |
Explicit allowed root paths for file viewing and workspace scanning. Blocks path traversal outside allowed folders. |
| Action | Shortcut / Trigger | Result |
|---|---|---|
| Instant Canvas Refresh | Click 🔄 Refresh or press F5 / Ctrl+R |
Reloads active preview frame without reloading DSH host |
| Chat Card Drag Resize | Drag bottom border handle on chat preview | Smoothly resize chat preview height from 160px to 800px |
| Chat Card Wide Mode | Click ⤢ in chat card header |
Expands chat preview card to full message width |
| Projects Hub | Select 🏠 Projects Hub in toolbar dropdown |
Open interactive project dashboard with recent sessions and file search |
| Inline WYSIWYG Text Edit | Double-click text element on canvas | Edit heading/paragraph inline and save with Enter |
| Split-View Code Editor | Click 💻 Code in toolbar |
Collapsible side-by-side code editor with live debounce sync |
| Blueprint Mode | Click 📐 Wireframe in toolbar |
Toggles high-contrast monochromatic structural view |
| Drag & Drop Reordering | Click ↕️ D&D in toolbar |
Drag section and card blocks to reorder layout visually |
| Time-Travel Scrubber | Click ⏳ Timeline in toolbar |
Slide through revision history and restore previous snapshots |
| 1-Click Web Deploy | Click 🌍 Deploy in toolbar |
Prepares Vercel, Cloudflare, Netlify, or Gist deployment package |
| Sound FX Toggle | Click 🔊 Sound in toolbar |
Enables/disables synthesized Web Audio feedback |
| Inspect Element | Click 🔍 Inspect in toolbar |
Click any DOM element to capture CSS selector and computed styles |
| Visual Annotations | Click 🖍 Annotate in toolbar |
Draw bounding boxes and leave review comments for the agent |
Live Canvas operates with enterprise-grade defensive sandboxing:
resolveSafePath): All file access requests via API and agent tools (live_canvas_preview, /dsh-live-canvas/api/open-file, /dsh-live-canvas/api/workspace/files) must resolve within authorized workspace roots (workspaceRoots or the current process working directory). Attempts to traverse into sensitive parent directories (such as /etc, system binaries, or sibling folders) are rejected with ERR_PATH_OUTSIDE_ROOTS and HTTP 403 Forbidden.isTrustedRequest): Mutating endpoints require verified same-origin requests matching standard browser headers (Sec-Fetch-Site: same-origin, Origin, or Referer) or loopback authorization.default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob: https: http:; X-Frame-Options: SAMEORIGIN; X-Content-Type-Options: nosniff).Live Canvas includes an integrated host-side updater conforming to the DSH plugin standard:
registry.npmjs.org for new releases, taking into account semver prereleases.pnpm / dsh plugin add), verifying host loopback and authorization headers (X-DSH-Update-Key).MIT © GooDAnDReaDY
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: frontend-studio。