在 iframe 中嵌入开发服务器并实时预览页面
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/RaulLazaro/dsh-preview-plugin.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 47 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-preview-plugin(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 08:16:19
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 4 处,展示前 4 条)
- 发起网络请求lib/index.js:692
return fetch(targetUrl, { - 发起网络请求lib/index.js:1039
const upstreamReq = http.request(targetUrl, { - 发起网络请求lib/client.js:167
fetch(base + "/api/preview-port", { - 发起网络请求lib/client.js:210
fetch(base + "/api/preview-port?sessionId=" + encodeURIComponent(sessionId))
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 实时预览页面
- SPA代理转发
DeepSeek Harness 实时预览标签页——用 iframe 嵌入任意开发服务器,SPA 代理透明转发
README
由 DeepSeek 最新模型翻译生成DSH 预览插件
DeepSeek Harness 的实时预览标签页——通过透明 SPA 代理将任意开发服务器嵌入 iframe。
功能特性
- 基于路径的 SPA 代理:/preview/:port/ 重写所有路由,使嵌入的应用如同从 DSH 主机提供服务一样正常工作
- 可编辑的 URL 栏:输入端口、路径、代理路径或开发服务器 URL,即可将预览移动到任意位置;该栏会跟随页面内点击的链接
- 多应用 monorepo 支持:配置后端端口,通过同一 iframe 代理 API 调用(例如 Astro 前端 + Payload CMS 后端)
- 智能路由:静态资源(JS、CSS、图片)直接代理;SPA 导航提供根 HTML,由客户端路由器处理路由
- 片段链接安全:#section 链接在页面内跳转,而不是重新加载站点根路径,且加载后渲染的锚点仍可到达
- 根相对资源可用:/assets/photo.png、srcset 和 poster 也会被重写,因此图片和懒加载样式表能够加载,而不会针对 DSH 主机返回 404
- 绝对 URL 重写:拦截 fetch() 和 XMLHttpRequest.open(),重写相对和绝对 URL(例如 http://localhost:3001/api/... → /preview/3001/api/...)
展开完整文档(README 剩余 1 节)
DSH 预览插件
DeepSeek Harness 的实时预览标签页——通过透明 SPA 代理将任意开发服务器嵌入 iframe。
功能特性
- 基于路径的 SPA 代理:/preview/:port/ 重写所有路由,使嵌入的应用如同从 DSH 主机提供服务一样正常工作
- 可编辑的 URL 栏:输入端口、路径、代理路径或开发服务器 URL,即可将预览移动到任意位置;该栏会跟随页面内点击的链接
- 多应用 monorepo 支持:配置后端端口,通过同一 iframe 代理 API 调用(例如 Astro 前端 + Payload CMS 后端)
- 智能路由:静态资源(JS、CSS、图片)直接代理;SPA 导航提供根 HTML,由客户端路由器处理路由
- 片段链接安全:#section 链接在页面内跳转,而不是重新加载站点根路径,且加载后渲染的锚点仍可到达
- 根相对资源可用:/assets/photo.png、srcset 和 poster 也会被重写,因此图片和懒加载样式表能够加载,而不会针对 DSH 主机返回 404
- 绝对 URL 重写:拦截 fetch() 和 XMLHttpRequest.open(),重写相对和绝对 URL(例如 http://localhost:3001/api/... → /preview/3001/api/...)
- 真实 API 流量:方法、请求体、cookie 和 Set-Cookie 均被转发,因此嵌入的应用可以登录、提交表单并使用 PUT/PATCH/DELETE——而不仅仅是提供页面
- Agent 工具:set_preview_port 工具让 agent 在启动开发服务器时以编程方式配置端口
- 全局或按会话端口:通过 API 全局设置端口,或按对话会话设置端口
- 自动同步:预览标签页轮询主机以获取 agent 设置的端口变更
- 沙箱化 iframe:allow-scripts allow-same-origin allow-forms allow-popups,实现安全嵌入
安装
1. 添加为依赖项
在 DSH Web 配置文件的 package.json 中:
{
"dependencies": {
"dsh-preview-plugin": "file:~/workspace/dsh-preview-plugin"
}
}
2. 添加到 bundles
在配置文件的 package.json 中,将 dsh-preview-plugin 添加到 dsh.profile.bundles 数组:
{
"dsh": {
"profile": {
"bundles": [
"...",
"dsh-preview-plugin"
]
}
}
}
3. 重启 DSH
systemctl restart dsh
使用方法
基本用法(单服务器)
1. 在 VPS 上启动开发服务器(例如 npm run dev -- --host 0.0.0.0 --port 3000)
2. 在 DSH Web GUI 中打开 Preview 标签页
3. 在 URL 字段中输入端口(例如 3000),然后点击 Go
该字段随后会切换为正在显示的页面(例如 /preview/3000/laptops?page=2#specs),因此你可以随时编辑它并按 Enter 加载其他内容。
导航
URL 字段接受以下所有形式:
| 你输入的内容 | 加载的内容 |
| 4321 | 端口 4321,根页面 |
| 4321/laptops | 端口 4321,/laptops |
| /laptops?page=2 | 当前所用端口上的该路径 |
| laptops | 与 /laptops 相同 |
| ?page=2 / #specs | 带该查询/片段的当前页面 |
| /preview/4321/laptops | 一个代理路径,原样使用 |
| http://localhost:4321/laptops | 开发服务器 URL |
非本地 URL 会被拒绝(代理只能访问 127.0.0.1)。↻ 重新加载当前显示的页面,↗ 在独立的浏览器标签页中打开它。
多应用 monorepo
1. 启动两个服务器:后端(例如 Payload CMS)
cd apps/backend && pnpm dev # 端口 3001
前端(例如 Astro)
cd apps/web && pnpm dev # 端口 4321
2. 打开 Preview 标签页
3. 在 URL 中输入 4321,在 Backend 中输入 3001(多个用逗号分隔)
4. 点击 Go —— 对 http://localhost:3001/api/... 的 API 调用会自动通过 /preview/3001/api/... 代理
Agent 工具
Agent 可以使用 set_preview_port 工具以编程方式配置端口:
set_preview_port(port: 4321, backendPorts: [3001])
这会自动更新拦截器脚本和客户端 UI。
API
| 方法 | 端点 | 描述 |
| GET | /api/preview-port | 获取当前的全局端口和后端端口 |
| GET | /api/preview-port?sessionId= | 获取某个会话的端口(回退到全局) |
| POST | /api/preview-port | 设置全局端口({ "port": 4321, "backendPorts": [3001] }) |
| POST | /api/preview-port?sessionId= | 为某个会话设置端口 |
工作原理
1. 宿主在 DSH Web 服务器上注册三个路由:
- /api/preview-port —— 端口管理
- /preview/:port/ —— 透明代理
2. 静态资源(带 .js、.css、.png 等扩展名的文件)直接从请求的路径代理
3. SPA 导航(所有其他路径)从开发服务器提供根 HTML,因此由客户端路由器处理路由
4. 对于 HTML 响应,它会注入:
- 用于相对 URL 解析
- 一个拦截器脚本,它会:
- 自行处理片段链接(#section):有了 标签,它们否则会解析为 /preview/:port/#section,这是一个不同的路径,会重新加载站点根而不是在页面内跳转。稍后出现的锚点目标(SPA 区块)会重试几秒钟。
- 重写 fetch() 和 XMLHttpRequest.open() URL(相对、绝对前端和绝对后端)
- 重写由 JS 添加的节点上的根相对资源 URL(src、srcset、poster、data-src 以及资源 )—— 标签只影响真正相对的 URL,因此 "/assets/x.png" 否则会从 DSH 宿主获取
5. 初始 HTML 中的资源 URL 在页面发送前会在服务器端重写
6. 请求保留其方法、标头和正文,并且 Set-Cookie 会返回,因此会话和写入在预览内可以正常工作
7. 对于非 HTML 响应,它会直接流式传输响应
测试
pnpm install
pnpm test
node --test 运行三个测试套件:
| 套件 | 覆盖内容 |
| test/client-helpers.test.mjs | URL/端口解析(resolveTarget)和代理路径辅助函数 |
| test/preview-view.test.mjs | 使用真实 React 和 happy-dom 的预览标签页组件 |
| test/preview-proxy.test.mjs | 使用 Playwright 针对固定站点进行的端到端代理测试(当 Chromium 不可用时跳过) |
安全说明
- 代理仅针对 127.0.0.1 —— 不可能发生外部 SSRF
- iframe 使用 allow-scripts allow-same-origin allow-forms allow-popups 进行沙箱隔离
- 端口验证仅允许 1–5 位数字
- 后端端口经过验证并按前端端口存储
- 为方便本地开发设置了 CORS 头
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
RaulLazaro/dsh-preview-plugin
在 iframe 中嵌入开发服务器并实时预览页面
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,288已汉化MCP
71.7
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9
原生编程智能体paean-ai/deeptide
由 DeepSeek 打造,为 DeepSeek 而生。
★ 1,107已汉化DSH
67.7
多引擎接力台emo-xiaoyu/harness-mix
macOS/Linux 已加入源码构建与启动适配;目标系统的完整桌面验收仍需在对应机器执行。安装方式、Linux…
★ 419已汉化DSH
66.8
这是你的仓库?认领条目