🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

实时画布工作室 GooDAnDReaDY/dsh-live-canvas

DeepSeek Harnessv0.2.35
GooDAnDReaDY6 天前有提交已提供中文文档扫描:含敏感能力

交互式可视化前端工作台、Retool 风格 CRUD 引擎、时间旅行调试器,31 个面向 DeepSeek Harness 的智能体工具

36.2/100
综合分
3
GitHub 星标
1,393
npm 周下载
—/5
用户评分

数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @goodandready/dsh-live-canvas
npm 源 · @goodandready/dsh-live-canvas 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@goodandready/dsh-live-canvas @ 0.2.35
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 04:16:48

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 44 处,展示前 14 条)
  • 发起网络请求
    lib/client.js:675
    const res = await fetch('/api/dsh-live-canvas/update?action=check').then(r => r.json());
  • 发起网络请求
    lib/client.js:695
    const res = await fetch('/api/dsh-live-canvas/update', {
  • 发起网络请求
    lib/client.js:1539
    const res = await fetch('/dsh-live-canvas/api/deploy?canvasId=' + canvasId + '&target=' + deployTarget);
  • 发起网络请求
    lib/client.js:1621
    const res = await fetch('/dsh-live-canvas/api/templates');
  • 发起网络请求
    lib/client.js:1629
    const res = await fetch('/dsh-live-canvas/api/themes');
  • 发起网络请求
    lib/client.js:1639
    await fetch('/dsh-live-canvas/api/save-content', {
  • 读取密钥环境变量
    lib/security.js:95
    const expectedToken = process.env.DSH_AUTH_TOKEN || process.env.DSH_TOKEN;
  • 读取密钥环境变量
    lib/security.js:208
    const expectedToken = process.env.DSH_AUTH_TOKEN || process.env.DSH_TOKEN;
  • 读取本地文件
    lib/updater.js:111
    if (!existsSync(entry)) return undefined;
  • 读取本地文件
    lib/updater.js:114
    if (existsSync(manifestPath)) {
  • 读取本地文件
    lib/updater.js:116
    const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
  • 发起网络请求
    lib/updater.js:204
    const response = await fetch(`${registry.replace(/ $/, '')}/${encodeURIComponent(packageName)}/latest`, {
  • 读取本地文件
    lib/updater.js:218
    const value = JSON.parse(await readFile(manifestUrl, 'utf8'));
  • 执行外部命令来自配置/变量
    lib/updater.js:242
    const child = spawn(
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-settings@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 交互式可视化工作台
  • CRUD引擎
  • 时间旅行调试器
v0.2.352026-10-28
· 消除原生标签页重复注册冲突:存在原生 sidebarRightTabs 服务(DSH 0.2.x)时,抑制降级标签页注册 betterSidebar.registerTab,杜绝 Better Sidebar 原生桥接触发的运行时报错 sidebarRight: tab kind "live-canvas" is already registered (extension)。 · 保留资源管理器文件预览器:所有环境无条件保留 betterSidebar.registerFileViewer,文件树中 HTML、React JSX/TSX、SVG 和 Mermaid 的上下文预览照常可用。 · 安全解析 Cordis 根服务:增强 getService(c, name) 助手,子上下文代理在未注入属性上抛错时安全读取 c.root[name],无论纤程注入状态如何都能可靠识别宿主服务。 · 动态协调启动顺序:任意插件加载次序都能正常工作。Better Sidebar 先启动时,registerNativeSidebar 挂载后自动撤销其降级标签页;原生侧边栏卸载后,降级标签页平滑恢复。
v0.2.342026-10-26
· 英文 · Markdown 路由到宿主编辑器(#6):普通 Markdown 文件(.md)交给宿主文件编辑器打开,不再进入 Live Canvas,修复在聊天里点击画布链接时的 ENOENT 错误。显式 Canvas URL 仍然完全支持,包括以 .md 结尾的 ID。 · 视口生命周期与隐藏面板清理(#6):只挂载激活的视口(标准模式 1 个 iframe,Matrix 模式 3 个,通过 tabInfo.tab.visible 隐藏时为 0 个)。隐藏的侧边栏面板释放预览文档和 SSE 更新连接,同时保留选中的 Canvas 和面板控件。 · 共享 SSE 更新流(#6):嵌入式预览(Projects Hub 和带 ?parentManaged=1 的沙箱框架)在每个可见工作区共享一条更新流,消除多余的 EventSource 连接。独立标签页和聊天内联预览保留独立热重载。 · 竞态条件与连接清理(#6):中止后台发现并防范延迟响应,避免清理之后残留孤立的 EventSource。刷新每个激活的 Matrix 框架,不切换到无关的 Canvas。 · 严格地址与演示模板校验(#6):未知 Canvas ID 返回 HTTP 404,URI 编码格式错误返回 HTTP 400,并校验服务端自有的演示模板(calc、dash)。 · 无头与测试环境安全:对 window.location.origin 的查找加了安全兜底,确保在 Node.js、测试运行器和没有 DOM location 的环境中稳定运行。 · 中文 · Markdown 路由到宿主编辑器(#6):普通 Markdown 文件(.md)不再被 Live Canvas 拦截,改由 DSH 宿主文件编辑器直接打开,修复聊天中点击画布链接导致的 ENOENT 错误。显式 Canvas URL 及以 .md 结尾的画布 ID 保持完全支持。 · 视口生命周期与隐藏面板清理(#6):只挂载当前激活的视口(标准模式 1 个 iframe,Matrix 模式 3 个 iframe,面板隐藏时 0 个,依据 tabInfo.tab.visible)。侧边栏隐藏时自动卸载预览文档与更新连接,同时保留所选画布与控制状态。 · 共享 SSE 更新流(#6):嵌入式预览(Projects Hub 与带有 ?parentManaged=1 的沙箱 iframe)在每个可见工作区中共享单一更新流,避免建立多重 EventSource 连接。独立标签页与聊天内联预览保留独立热重载。 · 竞态条件与连接清理(#6):中止后台发现并防范延迟响应,避免在卸载清理后残留孤立的 EventSource。刷新 Matrix 视图中所有激活框架,防止切换至无关画布。 · 严格地址与演示模板校验(#6):未知 Canvas ID 返回 HTTP 404,非法 URI 编码返回 HTTP 400,并对服务端演示模板(calc、dash)进行合法性校验。 · 无头与测试环境安全防护:对 window.location.origin 访问增加防御性降级判断,确保在 Node.js、自动化测试及缺失 DOM location 的环境中稳定运行。 · 俄语 · Markdown 路由到宿主编辑器(#6):普通 Markdown 文件(.md)现在在 DSH 自带编辑器中打开,不再进入 Live Canvas,防止从聊天里点击链接时出现 ENOENT 错误。显式 Canvas 链接和以 .md 结尾的 ID 仍然支持。 · 视口生命周期与隐藏面板清理(#6):只挂载激活的 iframe(标准模式 1 个,Matrix 模式 3 个,面板隐藏时依据 tabInfo.tab.visible 为 0 个)。隐藏面板卸载预览文档和更新连接,保留选中的画布和面板状态。 · 单一共享 SSE 更新流(#6):嵌入式预览文档(Projects Hub 和通过 ?parentManaged=1 的沙箱)每个工作区使用一条更新流,消除重复的 EventSource 连接。 · 竞态条件消除与连接清理(#6):中断后台发现并防范延迟响应,保证卸载后不残留丢失的 EventSource 连接。 · 严格校验地址与演示模板(#6):未知 Canvas ID 返回 HTTP 404,非法 URI 返回 HTTP 400,严格校验服务端演示模板(calc、dash)。 · 无头与测试环境安全运行:保护对 window.location.origin 的访问,避免在 Node.js、测试运行器和没有 DOM location 的环境中崩溃。 特别感谢 Dmitry Vasiliev(@swimmwatch)贡献生命周期优化和 Mark
v0.2.332026-10-22
· Cordis 代理安全解析(#5、#218):引入安全服务查找,避开 Cordis 上下文代理的严格异常(cannot get property ... without inject),未注入的属性(sidebarRight、betterSidebar、slots、locale)不再报错。 · DSH 0.2.x 侧边栏标签页钩子(#5、#218):NativeLiveCanvasTab 支持 DSH 0.2.x 标准钩子属性 props.useTabInfo,并向后兼容回退到 props.hooks.tabInfo,恢复资源地址绑定与实时工作区渲染。 · 引导项模式合规(#5、#218):侧边栏引导声明中显式加上 id: 'live-canvas',避免 dsh-client-ui-sidebar-right 里 id 重复冲突和模式校验拒绝。 · Toast 通知引擎(#5、#218):LiveCanvasWorkspace 实现 showToast(msg) 并带自动关闭定时器,消除 28 处以上 ReferenceError: showToast is not defined 崩溃。 · 文件打开错误处理(#5、#218):收窄 openFile 的错误处理,普通运行时或网络异常不再弹出假的「文件访问受限」对话框。 · Storybook 会话刷新(#5、#218):Storybook 处理函数改为调用 loadSessionsAndFiles(),不再调用未定义的 fetchSessions()。 · 可视批注沙箱作用域(#5、#218):沙箱注入运行时中声明 let annotationCanvas = null;,画框批注不再因 ReferenceError 中断。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
📦 @goodandready/dsh-live-canvas 交互式前端开发工作室、Retool 风格 CRUD 数据看板引擎、Time-Travel 时间旅行调试器、多平台一键部署 (Vercel, Cloudflare, Netlify, Gist)、Figma 矢量桥接、UI 音效及 31 个智能体工具 (适用于 DeepSeek Harness) 🇬🇧 English • 🇷🇺 Русский • 🇨🇳 中文说明 ⭐ 如果您喜欢这个插件,请在 GitHub 上为它点亮 Star — 这能让我知道插件对您有用,并鼓励我继续开发和维护它。 🐛 如果您发现 Bug 或希望增加功能,请使用任意语言在 GitHub 上提交 Issue — 我会评估您的建议,并在后续版本中实现有价值的改进。 ⚡ 概述与核心解决痛点 🚀 v0.2.14 新增核心体验 - 🏠 项目仪表盘与最近会话 (Projects Hub): 聚合所有历史预览会话与工作区前端组件 (React, HTML, Vue, SVG, Markdown),按最近活动排序,内置即时过滤搜索,一键加载至画布。
展开完整文档(README 剩余 1 节)
📦 @goodandready/dsh-live-canvas

交互式前端开发工作室、Retool 风格 CRUD 数据看板引擎、Time-Travel 时间旅行调试器、多平台一键部署 (Vercel, Cloudflare, Netlify, Gist)、Figma 矢量桥接、UI 音效及 31 个智能体工具 (适用于 DeepSeek Harness)

🇬🇧 English •
🇷🇺 Русский •
🇨🇳 中文说明

⭐ 如果您喜欢这个插件,请在 GitHub 上为它点亮 Star — 这能让我知道插件对您有用,并鼓励我继续开发和维护它。

🐛 如果您发现 Bug 或希望增加功能,请使用任意语言在 GitHub 上提交 Issue — 我会评估您的建议,并在后续版本中实现有价值的改进。

⚡ 概述与核心解决痛点

🚀 v0.2.14 新增核心体验

- 🏠 项目仪表盘与最近会话 (Projects Hub): 聚合所有历史预览会话与工作区前端组件 (React, HTML, Vue, SVG, Markdown),按最近活动排序,内置即时过滤搜索,一键加载至画布。
- ↕️ 对话预览卡片高度自由调节: 底部拖拽把手平滑调整高度 (160px - 800px),提供 S (200px) / M (320px) / L (480px) 快速预设与宽屏模式 (⤢ Wide View)。
- 🔄 画布独立即时刷新: 工具栏新增刷新按钮,支持框架内快捷键 F5 / Ctrl+R,无需刷新整个 DSH 页面即可重载预览。
- 🛡️ 智能体工具防御性输出契约: 当路径访问越界时返回结构化拒绝字段 (code, allowedRoots, reason, valid: false),使智能体能够自主纠正路径。

在传统的终端与对话框环境中,代码智能体通常仅输出静态的代码片段或 Markdown 文本。这会导致:
1. 缺乏即时交互反馈:开发者无法直接测试按钮点击、表单校验、动画转场或响应式屏幕断点,必须手动复制代码到本地工程。
2. 上下文严重割裂:进行 UI 评审时需要在 IDE、终端、浏览器和设计工具间反复横跳。
3. 文本信息过载:用长篇纯文本描述系统架构与项目路线图难以直观审阅。

解决方案:dsh-live-canvas

受 The Unreasonable Effectiveness of HTML、Plannotator 与现代可视化设计平台启发,@goodandready/dsh-live-canvas 将 DeepSeek Harness 升级为完整的独立前端开发与构件运行环境。提供内存级 ESM 模块打包、SSE 热重载、对话框内实时预览卡片、分屏代码编辑器、版本时间旅行、多平台一键部署及 30 个专用智能体工具。

🧭 侧边栏布局与兼容性 (Sidebar Compatibility)

@goodandready/dsh-live-canvas 无缝支持所有 DSH 导航布局,且无需任何外部插件依赖:

| DSH 环境 | 支持的界面组件 | 功能特性 |
| DSH 0.1.5-alpha.1+ (原生) | 原生右侧边栏 (sidebarRightTabs, sidebar.right.pane.tab) | 完整的 Live Canvas 工作区标签页 + dsh-resource://file 原生文件查看器。 |
| 传统配置文件 | dsh-better-sidebar 适配 | 独立标签页 (live-canvas) 与文件查看器 (live-canvas-viewer)。 |
| 双边栏同时启用 | 完美共存 | 确定性独立 ID,杜绝重复挂载,具备幂等清理功能。 |
| 无边栏环境 | 独立抽屉与模态窗口 | 纯自包含 slide-over 抽屉及快捷键 (Alt+C)。 |

🏛️ 系统架构关系图

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 个工具]:::agent
Store[💾 PreviewStore LRU 缓存与历史快照]:::core
Watcher[📁 WorkspaceWatcher 文件监控与同步]:::core
Bundler[⚡ Smart 递归 ESM 打包器与编译器]:::core
Deployer[🌍 多平台一键部署引擎]:::core
FigmaBridge[🎨 Figma 矢量桥接与转换]:::core
SoundEngine[🔊 Web Audio 交互音效引擎]:::core
Themes[🎨 AI 设计系统令牌引擎]:::core

WebUI[💻 DSH WebUI BetterSidebar 工作区]:::ui
ChatCards[💬 对话流内嵌交互式预览卡片]:::ui
EditorDrawer[📝 Split-View 分屏代码编辑器]:::ui
TimeTravelUI[⏳ Time-Travel 历史时间轴]:::ui
DeployModal[🌍 一键部署配置弹窗]:::ui

SandboxFrame[🛡️ 沙箱 Iframe 独立预览环境]:::sandbox
WYSIWYG[✏️ 双击行内 WYSIWYG 文本编辑]:::sandbox
DnD[↕️ 拖拽重排页面区块]:::sandbox
Blueprint[📐 蓝图黑白草图模式]:::sandbox

Agent --> Store
Watcher --> Store
Store --> Bundler
Deployer --> Store
FigmaBridge --> Store
Themes --> SandboxFrame
Bundler --> SandboxFrame
SoundEngine --> SandboxFrame

WebUI --> EditorDrawer
WebUI --> TimeTravelUI
WebUI --> DeployModal
WebUI --> SandboxFrame
ChatCards -->|一键唤起工作区| WebUI

SandboxFrame --> WYSIWYG
SandboxFrame --> DnD
SandboxFrame --> Blueprint

🛠️ 30 个智能体工具完整速查表

| # | 工具名称 | 功能描述 | 核心参数 | 返回输出 / 触发动作 |
| 1 | live_canvas_preview | 渲染或更新 HTML/React/SVG/Mermaid 预览会话 | content, componentType, title, theme | previewUrl, canvasId, success |
| 2 | live_canvas_inspect | 获取用户点击的 DOM 元素、CSS 选择器与属性 | canvasId, limit | inspections: [...], count |
| 3 | live_canvas_reload | 强制向当前打开的预览画布广播 SSE 热重载事件 | canvasId | reloaded, timestamp |
| 4 | live_canvas_diagnose | 查询沙箱控制台错误与异常,实现智能体自主修复 | canvasId, level | logs: [...], hasErrors |
| 5 | live_canvas_export | 导出包含预渲染标记及渐进式运行时的独立 HTML 演示包 | canvasId, saveToDisk | downloadUrl, savedPath |
| 6 | live_canvas_annotations | 检索或清除画布上的矩形批注与用户反馈 | canvasId, action | annotations: [...], count |
| 7 | live_canvas_gallery | 渲染多组件状态 Storybook 并排对比矩阵 | variants, title | variantsCount, previewUrl |
| 8 | live_canvas_watch | 扫描工作区文件并绑定实时文件监控器 | subDir, exts | files: [...], watchedFiles |
| 9 | live_canvas_controls | 调整 Storybook 风格的交互式 Props 滑块与开关 | canvasId, values, schema | values: {...}, schema: {...} |
| 10 | live_canvas_diff | 分屏滑块对比两个版本快照的视觉差异 | canvasId, fromId, toId | diffUrl, snapshotCount |
| 11 | live_canvas_matrix | 渲染多设备响应式屏幕矩阵 (手机、平板、桌面) | canvasId | matrixUrl |
| 12 | live_canvas_mock | 配置沙箱内部拦截的 Mock REST API 接口及数据集 | canvasId, endpoints | endpointsCount, mockData |
| 13 | live_canvas_pack | 一键生成包含完整依赖的 Vite+React / Vite+Vue ZIP 包 | canvasId, framework | downloadUrl, writtenDir |
| 14 | live_canvas_refine_element | 针对特定 DOM 元素执行精准的 AI 样式与结构优化 | canvasId, selector, prompt | success, message |
| 15 | live_canvas_storybook | 自动扫描组件并构建 Storybook UI Kit 对比画廊 | subDir, framework | galleryUrl, componentsCount |
| 16 | live_canvas_insert_block | 在项目中插入预置高端设计模块 (Hero, Bento, Pricing 等) | blockId, canvasId | blockId, title |
| 17 | live_canvas_vision_import | 将参考 UI 设计稿/截图导入为 Live Canvas 预览脚手架 | imagePath, framework | previewUrl, framework |
| 18 | live_canvas_visual_audit | 自动化视觉审计:检查溢出、色彩对比度与响应式断点 | canvasId | score, issuesCount, issues |
| 19 | live_canvas_generate_mock | 生成逼真的 JSON Mock 数据集并挂载至沙箱拦截器 | type, count, canvasId | datasetType, mockData |
| 20 | live_canvas_share | 生成手机端实时预览二维码及局域网共享链接 | canvasId | shareUrl, qrSvg |
| 21 | live_canvas_create_wireframe | 生成低保真结构蓝图线框图 HTML 构件 | title, layout, canvasId | previewUrl, layout |
| 22 | live_canvas_create_plan | 生成包含持久化状态的交互式发布计划与路线图 | title, version, canvasId | previewUrl, version |
| 23 | live_canvas_create_diagram | 生成动态交互式架构系统关系与数据流向图 | title, diagramType, canvasId | previewUrl, diagramType |
| 24 | live_canvas_create_prototype | 生成包含平滑转场的多步骤交互向导原型 | title, flowType, canvasId | previewUrl, flowType |
| 25 | live_canvas_resolve_annotation | 将画布上的用户批注标记为已解决并记录说明 | canvasId, annotationId, note | status: 'resolved' |
| 26 | live_canvas_create_crud | 生成包含搜索、筛选与弹窗的 Retool 风格 CRUD 数据看板 | title, entityName, canvasId | previewUrl, entityName |
| 27 | live_canvas_timetravel | 历史版本时间旅行滑动对比与一键回滚 | canvasId, action, snapshotIndex| timetravelUrl, snapshotsCount |
| 28 | live_canvas_instant_deploy | 生成适用于 Vercel、Cloudflare、Netlify 与 Gist 的部署包 | canvasId, target | downloadUrl, instructions |
| 29 | live_canvas_figma_bridge | Figma SVG 矢量代码转换为 Tailwind 组件或导出 SVG | svg, action, canvasId | action, componentName |
| 30 | live_canvas_sound_fx | Web Audio 交互音效合成与预览 (点击、弹窗、成功音) | action, soundType | presetsCount, soundType |
| 31 | live_canvas_capture_snapshot | 捕获当前画布元数据、DOM 树或完整 HTML 快照,实现视觉反馈闭环 | canvasId, format | snapshot, format |

🛠️ 画布内置开发者工具与智能体闭环反馈

- 迷你控制台抽屉 (Mini-Console Drawer):沙箱内拦截 console.log/warn/error 与 window.onerror,底部可折叠诊断抽屉与工具栏错误计数。
- 组件状态预设切换器 (State Presets):工具栏一键切换 Default、Loading、Empty、Error 与 Overflow 状态。
- 视觉反馈闭环 (Vision Snapshot Loop):live_canvas_capture_snapshot 工具让智能体可直接读取渲染后 DOM 结构与快照。
- 单文件独立 HTML 导出:一键导出包含预渲染离线标记的独立 HTML 包 (/dsh-live-canvas/api/standalone)。
- W3C 设计令牌解析器 (Design Tokens Bridge):一键解析 W3C / Figma Design Tokens JSON 并注入 CSS 变量。

📦 安装说明

在 DeepSeek Harness 环境中一键安装:

dsh plugin --profile web add @goodandready/dsh-live-canvas

这些值在插件页的 Live Canvas Preview 中编辑。标题下方是一行说明,下面是设置表单。保存时,每个字段都通过插件的设置服务写入。服务仍在加载时,表单显示加载状态;服务不可用时,表单显示不可用状态,而不是错误页。设置命名空间是 dsh-live-canvas;包名不是合法的设置标识符。

⚙️ 完整配置说明 (settings.yaml)

plugins:
"@goodandready/dsh-live-canvas":
defaultViewport: "responsive" # 可选项: responsive, mobile, tablet, desktop, matrix autoOpenOnHtmlGen: true # 当智能体生成界面时自动打开 Live Canvas 侧边栏 enableHotReload: true # 启用 SSE 实时热重载数据流 maxSessionCache: 50 # 内存 LRU 缓存中保留的最大活跃会话数 enableFileWatcher: true # 启用工作区文件变动实时监控 workspaceDir: "" # 自定义工程根路径 (默认当前工作目录)
workspaceRoots: [] # 安全沙箱明确允许的工作区根目录列表

🔒 安全机制与路径沙箱

Live Canvas 具备企业级防御与沙箱隔离机制:
- 严格路径沙箱 (resolveSafePath):所有通过 API 和智能体工具 (live_canvas_preview、/dsh-live-canvas/api/open-file、/dsh-live-canvas/api/workspace/files) 访问文件的请求必须严格位于授权工作区根目录 (workspaceRoots 或当前工作目录) 内部。企图跨越至父级敏感目录(如 /etc 或同级未授权目录)的操作均会被拦截,返回 ERR_PATH_OUTSIDE_ROOTS 及 HTTP 403 Forbidden。
- CSRF 与源验证 (isTrustedRequest):所有写操作端点均校验同源请求头 (Sec-Fetch-Site: same-origin、Origin 或 Referer) 或本地回环网络调用。
- 内容安全策略 (CSP):画布预览于沙箱 iframe 中呈现,具备严格安全策略 (X-Frame-Options: SAMEORIGIN、X-Content-Type-Options: nosniff 等)。
- DOM 属性转义与同源消息投递:项目中心 (Projects Hub) 对所有 data-file-path、data-title 和 data-path 属性执行严格 escapeHtml 转义(支持含引号与特殊字符的文件名),并将跨帧 postMessage 严格限制在明确的 targetOrigin (window.location.origin)。
- 全路由族访问防护与动态易失配置响应:所有已注册的路由族(/events、/sandbox、/diff、/matrix、/timetravel、/assets、/api 及更新器状态)均通过 isTrustedRequest / isTrustedStatusRequest 进行严格源验证,阻断非受信外网及跨站请求(返回 403 Forbidden)。运行时配置变更通过 Cordis loader/volatile-update 与 config 事件即时响应并应用于会话存储、文件监视器和工具,无需重启 Cordis 服务。

🔄 宿主一键更新器

Live Canvas 集成了符合 DSH 插件规范的宿主一键更新器:
- 自动检查版本:定时查询 registry.npmjs.org,完整支持 semver 预发布版本比较。
- 设置卡片 UI 集成:清晰展示当前版本、最新版本状态及一键更新按钮。
- 宿主安全安装:通过本地包管理器 (pnpm / dsh plugin add) 升级,并受本地回环与 X-DSH-Update-Key 鉴权保护。

📄 开源许可证

MIT © GooDAnDReaDY
预览分享卡片长什么样 ↓GooDAnDReaDY/dsh-live-canvas
分享 · DeepSeek Harness Hub
GooDAnDReaDY/dsh-live-canvas

交互式可视化前端工作台、Retool 风格 CRUD 引擎、时间旅行调试器,31 个面向 DeepSeek Harness 的智能体工具

回到顶部