dsh-html-artifact
by lehhair
HTML 实时渲染插件:模型通过专门的 artifact 工具创建/修补 HTML 文档,GUI 在沙箱 iframe 里 实时渲染 。核心区别:模型 打 patch ( old string / new string ,和文件 edit 工具同一套语义),而不是每次重发整个 HTML —— 只传增量,预览原地更新。
Live HTML rendering plugin: the model creates/patches HTML documents via a dedicated artifact tool and the GUI renders them live in a sandboxed iframe. Key difference: the model patches (old string / new string, same semantics as the file-edit tool) instead of resending the whole HTML each time — only the delta travels and the preview updates in place.
安装
dsh plugin --profile web add github:lehhair/dsh-html-artifactGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
dsh-html-artifact
HTML 实时渲染插件:模型通过专门的 artifact 工具创建/修补 HTML 文档,GUI 在沙箱 iframe 里实时渲染。核心区别:模型打 patch(old_string/new_string,和文件 edit 工具同一套语义),而不是每次重发整个 HTML —— 只传增量,预览原地更新。
纯扩展实现,不改 harness core:
- 服务端:
artifact工具(create / patch / read / destroy / list),per-session 注册表;card: 'artifact'渲染意图通过presentResult走线(core 的 union 不认识这个 card,返回值做了边界强转,客户端未知 card 自动降级 generic)。 - 客户端:
tool.call.toolviewkeyed slot 注册artifact行的原子视图,沙箱 iframe(CSPdefault-src 'none'+sandbox="allow-scripts"不透明源 + 主题变量 + 尺寸桥 + 存储 shim),同一 artifact id 的后续 patch 调用原地更新预览。
安装
发布版走 GitHub Releases 的 tarball(dsh plugin 安装后自动加入 profile 层栈),releases/latest 永远指向最新版本,链接不用随版本改动:
dsh plugin --profile web add "https://github.com/lehhair/dsh-html-artifact/releases/latest/download/dsh-external-dsh-html-artifact.tgz"
然后重启 dsh web 服务,刷新页面。不要用 dsh plugin add github:lehhair/dsh-html-artifact 安装源码(仓库的 lib/ 被 gitignore,源码安装没有构建产物)。
⚠️ 升级注意:pnpm 会按 URL 缓存 tarball——同一
latest链接在新版本发布后可能命中旧缓存。装到旧版时先dsh plugin --profile web remove @dsh-external/dsh-html-artifact再重新安装(必要时pnpm store prune)。
用法
模型侧(工具描述已内置):
artifact create { title?, html? }—— 创建,GUI 立即渲染沙箱预览。artifact patch { id, old_string, new_string, replace_all? }—— 对已有 artifact 打补丁,只发变更;每个 patch 调用结算后预览原地更新,会话里显示一行旧/新对比。artifact read { id }/artifact destroy { id }/artifact list—— 读取源码 / 关闭 / 枚举。
安全边界:预览在 srcdoc iframe 中,CSP default-src 'none'(脚本/样式允许内联,外部 https/http 资源允许),iframe 无 allow-same-origin(不透明源),artifact 脚本无法触达宿主文档;localStorage/sessionStorage 被内存 shim 替代。
交互数据提交
预览底部 Submit interaction 按钮会把用户在 artifact 内的交互数据注入当前会话(Agent.followup,agent 立即读取分析)。收集三层:
- 显式协议(推荐,游戏/计数器等内部状态):artifact 脚本把值得提交的状态写成 JSON 值并随状态变化更新:
工具描述里已内置该指令,模型生成带内部状态的 artifact 时会自动写。window.__dshArtifactData = { score: currentScore, moves: moves } - 表单控件(自动):
input/textarea/select/checkbox/radio的当前值按 name/id 收集。 - 按钮点击(自动):点击过的按钮(
data-artifact-action优先,否则按钮文本)与次数自动记录。
开发
pnpm install # devDeps 是 link: 到 ../dsh2026/deepseek-harness 的本地 checkout
pnpm run check # typecheck + test + build
测试:tests/registry.spec.ts(服务端纯逻辑:替换语义、字节上限、截断、错误分类)+ tests/artifact-row.spec.tsx(客户端渲染:沙箱 iframe、patch 对比、跨调用实时更新、destroy/list/read 分支)。
CI(.github/workflows/build-release.yml):发布时 checkout 固定 ref 的 harness 构建后打包 tarball 上传到 Release。注意:同 URL 重建 release 会命中 pnpm 的 URL 缓存,出新版本务必 bump version。
原始 README: https://github.com/lehhair/dsh-html-artifact/blob/master/README.md ↗
同类插件
查看全部 →
dsh-web-ui-all
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-web-ui
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-TUI
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

DSH-better-sidebar
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。

working-activity
让 agent 的"工作状态行"活过来——实时工具动态与进度、俏皮文案、模型自述、上下文预警。同一套想法,适配两个平台: pi CLI 与 DeepSeek Harness(DSH) 。

deepseek-idesign
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。