在侧栏本地预览调试原生小程序并映射源码
29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zhxnix/dsh-wx-preview该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · browser
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 42 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/9/27) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 19 处,展示前 19 条)
- 发起网络请求lib/client.js:68
const response = await fetch(configUrl(sessionId), { cache: 'no-store' }); - 发起网络请求lib/client.js:148
const response = await fetch(configUrl(sessionId), { cache: 'no-store' }); - 发起网络请求lib/client.js:173
void fetch('/dsh-wx-preview/health', { - 执行外部命令来自配置/变量scripts/check.mjs:29
const result = spawnSync(process.execPath, ['--check', file], { encoding: 'utf8' }); - 读取本地文件scripts/install.mjs:49
try { await lstat(file); return true; } catch (error) { if (error.code === 'ENOENT') return false; throw error; } - 读取本地文件scripts/install.mjs:53
try { return await readFile(file, 'utf8'); } catch (error) { if (error.code === 'ENOENT') return ''; throw error; } - 写入本地文件scripts/install.mjs:69
await mkdir(join(profile, 'plugins'), { recursive: true }); - 读取本地文件scripts/install.mjs:71
const current = await realpath(pluginLink).catch(() => ''); - 写入本地文件scripts/install.mjs:81
await writeFile(patchPath, addBlock(patch), 'utf8'); - 读取本地文件scripts/install.mjs:89
const current = await realpath(pluginLink).catch(() => ''); - 删除本地文件scripts/install.mjs:91
await unlink(pluginLink); - 写入本地文件scripts/install.mjs:96
if (next !== patch) await writeFile(patchPath, next, 'utf8'); - 执行外部命令来自配置/变量scripts/install.mjs:106
execFileSync(process.execPath, [join(root, 'scripts', 'check.mjs')], { stdio: 'inherit' }); - 发起网络请求scripts/self-test.mjs:42
const response = await fetch(endpoint); - 发起网络请求src/client.js:68
const response = await fetch(configUrl(sessionId), { cache: 'no-store' }); - 发起网络请求src/client.js:148
const response = await fetch(configUrl(sessionId), { cache: 'no-store' }); - 发起网络请求src/client.js:173
void fetch('/dsh-wx-preview/health', { - 发起网络请求web/main.js:26
fetch('/__wxpreview/log', { - 发起网络请求web/runtime.js:1697
mocked = typeof runtime.backend?.request === 'function' ? runtime.backend.request(options) : null;
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 本地预览原生小程序
- 调试与源码映射
- 侧边栏检查
便携 DSH 插件,原生支持微信小程序发现、本地预览、调试、源码映射和侧边栏检查。
README
由 DeepSeek 最新模型翻译生成DSH WX Preview
dsh-wx-preview 是一个可移植的 DSH 插件,用于发现、预编译、打开和调试原生微信小程序项目。它读取用户指定目录中的 project.config.json 与 app.json,在本机启动浏览器兼容预览运行时,并把预览页放进 DSH 右侧栏。
它不依赖特定业务项目、固定端口、固定项目目录或用户目录;每次打开都使用工具参数传入的项目路径。目标项目源码只读,预览缓存写入独立的 DSH_WX_PREVIEW_HOME 目录(默认 ~/.dsh-wx-preview)。
能做什么
- 识别任意原生小程序项目,以及 miniprogramRoot 指向的源码目录。
- 预编译页面、分包、组件、WXML/WXSS/JS/JSON 和常用 wx.* API。
- 在 DSH 右栏启动可交互的本地预览,支持页面切换、返回、刷新和热更新。
- 提供 DSH 工具 wxpreview_discover、wxpreview_precompile、wxpreview_open、wxpreview_status、wxpreview_logs、wxpreview_update_identity 和 wxpreview_stop。
展开完整文档(README 剩余 1 节)
DSH WX Preview
dsh-wx-preview 是一个可移植的 DSH 插件,用于发现、预编译、打开和调试原生微信小程序项目。它读取用户指定目录中的 project.config.json 与 app.json,在本机启动浏览器兼容预览运行时,并把预览页放进 DSH 右侧栏。
它不依赖特定业务项目、固定端口、固定项目目录或用户目录;每次打开都使用工具参数传入的项目路径。目标项目源码只读,预览缓存写入独立的 DSH_WX_PREVIEW_HOME 目录(默认 ~/.dsh-wx-preview)。
能做什么
- 识别任意原生小程序项目,以及 miniprogramRoot 指向的源码目录。
- 预编译页面、分包、组件、WXML/WXSS/JS/JSON 和常用 wx.* API。
- 在 DSH 右栏启动可交互的本地预览,支持页面切换、返回、刷新和热更新。
- 提供 DSH 工具 wxpreview_discover、wxpreview_precompile、wxpreview_open、wxpreview_status、wxpreview_logs、wxpreview_update_identity 和 wxpreview_stop。
- DSH 右栏注释插件存在时,使用共享 BrowserPanel,面板类型为 dsh-wx-preview,因此网页点选注释、连续多条注释、上下文批注、控制台和 DevTools 能复用同一套体验。
- 预览 DOM 会标注 data-dsh-source-file、data-dsh-source-line 和 data-dsh-source-kind="wxml",注释插件可以直接把被点元素映射回 WXML 源码。
- 没有注释插件时仍可使用独立 iframe 基础预览,并可手工输入一个 HTTP(S) 预览地址。
预览身份、storage、登录状态和 wx.getSetting/wx.authorize 结果只是本地 Fixture;插件不会调用真实微信登录、读取微信账号、写入 CloudBase 或修改项目源码。
安装和加载
市场收录申请中,当前可以从 GitHub Release 安装预构建包。条目计划提交到 awesome-dsh-plugin。非 managed profile 可使用 DSH CLI:
dsh plugin --profile web add \
https://github.com/zhxnix/dsh-wx-preview/releases/latest/download/dsh-wx-preview.tgz
将 web 换成你实际使用的非 managed profile。DSH Desktop 的 managed desktop profile 请使用本仓库提供的 checkout 安装器;安装后重启 DSH,并新建一个 session。
若同时安装 dsh-sidebar-annotations,建议先加载注释插件,再加载本插件;本插件会监听共享面板的热更新事件,二者可以独立升级。
DSH Desktop 请从 checkout 安装:
git clone https://github.com/zhxnix/dsh-wx-preview.git
cd dsh-wx-preview
npm install
node scripts/install.mjs --profile desktop
卸载时运行 node scripts/install.mjs --uninstall --profile desktop;安装器只处理本插件的链接和带标记的 loader 条目。
如果不使用上面的安装器,才手动在 DSH profile 的 cordis.patch.yml 中加入下面的条目(二选一,路径按实际 checkout 位置调整):
- insert:
- id: dsh-wx-preview
name: './plugins/dsh-wx-preview/lib/index.js'
其中 package.json 的 dsh.bundle.patch 和仓库根目录的 dsh.bundle.patch 是市场安装使用的标准 bundle 入口;手工 checkout 时使用上面的 profile 条目即可。
DSH 中使用
在会话中直接告诉 DSH:
发现 /Users/me/projects/example-mini 打开 /Users/me/projects/example-mini
模型会调用工具:
wxpreview_discover({ projectPath })
wxpreview_precompile({ projectPath, force? })
wxpreview_open({ projectPath, route?, port?, force? })
wxpreview_status({ projectPath?, sessionId? })
wxpreview_logs({ projectPath?, sessionId?, limit? })
wxpreview_update_identity({ projectPath, ...fixturePatch })
wxpreview_stop({ projectPath?, sessionId?, all? })
wxpreview_open 返回的 url/openInDshSidebar 是本机回环地址。它会按调用该工具的 DSH 会话保存面板映射;右栏请求 /dsh-wx-preview/config?sessionId=... 时只返回当前会话的预览,避免多个会话串项目。
命令行
插件也可以脱离 DSH 使用:
npm install
npx dsh-wx-preview discover ./my-mini-program
npx dsh-wx-preview precompile ./my-mini-program --force
npx dsh-wx-preview serve ./my-mini-program --route pages/index/index
serve 会启动一个本机服务并持续运行,按 Ctrl-C 停止。CLI 和 DSH 使用同一个预览引擎,但 CLI 不会加载 DSH 工具或右栏 UI。
项目要求项目根目录需要包含 project.config.json 或 app.json。如果存在 project.config.json,插件按其中的 miniprogramRoot 找到源码目录;源码根目录必须有 app.json。app.json 至少声明一个 pages 页面。原生页面、组件和分包可以使用 .js、.ts、.json、.wxml、.wxss 和 .wxs 文件。
插件会明确拒绝 UniApp、Taro 等非原生项目。WXS、微信插件、Worker、地图、蓝牙、支付、Canvas、真实授权、CloudBase 和完整设备能力会在兼容性报告或运行时日志中提示;它们仍需要微信开发者工具或真机终验。
源码位置协议
编译器给每个由 WXML 元素产生的 DOM 元素写入:
data-dsh-source-file="/absolute/path/to/pages/index/index.wxml"
data-dsh-source-line="12"
data-dsh-source-kind="wxml"
这是模板元素的实际起始行,不是对 JS 业务逻辑的推断。自定义组件内部元素使用组件自己的 WXML 文件;组件宿主元素使用引用它的页面或组件 WXML 文件。第三方注释/调试插件可以只依赖这三个属性,不需要知道本插件的内部编译结构。
最小例子
仓库中的 examples/native-mini-miniprogram 是一个不依赖业务项目的原生小程序夹具:
npx dsh-wx-preview discover examples/native-mini-miniprogram
npx dsh-wx-preview precompile examples/native-mini-miniprogram
npx dsh-wx-preview serve examples/native-mini-miniprogram
开发和验证
npm install
npm run check
npm run self-test
npm test
验证只使用仓库内的最小夹具和临时缓存,不会启动或修改用户项目。
许可证和来源
本仓库新增的 DSH 宿主插件、右栏适配、通用会话管理、示例和文档采用 MIT,见 LICENSE。
最初的通用预览引擎改编自本地 DSH 开发环境中的 wxpreview 包,原作者为 zhao,并已授权本仓库以 MIT 许可证发布改编后的版本。来源说明见 NOTICE。npm 依赖保留各自许可证,不会被本插件重新授权。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
zhxnix/dsh-wx-preview
在侧栏本地预览调试原生小程序并映射源码
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目