dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness plugin: view FASTA, CLUSTAL, PHYLIP and Stockholm alignments in the right sidebar with ReSeqt.
版本 0.1.0
DeepSeek Harness(DSH)Web / 桌面端插件:在右侧边栏中直接查看序列比对。打开 DSH 自带的 工作区文件,点击 FASTA、CLUSTAL、PHYLIP、Stockholm 等比对文件,就会在右侧栏打开一个 序列比对 标签页。文件只在本地读取,不会上传。
查看器来自 ReSeqt 1.0.1(作者 vaaloo / Valentin Gorgodian,MIT)的源码改造:保留它的 Canvas 渲染、残基 / 保守性 / 一致性 / 单色配色、保守性直方图、一致性行、序列 Logo、搜索、排序、参考序列、跳转、缩放、选区复制、概览图与 PNG 导出。
extension 优先级注册 sequence-alignment 标签类型,优先于内置的文本预览。keepMounted 保证切走再切回时比对和视图状态都还在。.gz 压缩文件。.faa、.aa、.prot、.pep 后缀直接按蛋白显示。也可以随时在查看器里切换配色方案。remote.workspaceFiles.readBytes(sessionId, path, {}, signal) 读取文件(默认上限 32 MB),不经过本插件的任何服务端路由,也不需要把文件路径交给第三方。resources 观察文件 version;磁盘上的比对变化后标签栏出现「文件已变化,重新加载」,不会自动重解析。color-scheme 或页面背景),在文件加载时和主题切换时通过 postMessage 通知查看器。remote.session.workspacePathApplications/openWorkspacePath 打开,失败时仍可「显示文件位置」。| 格式 | 默认 glob |
|---|---|
| FASTA(含 A2M/A3M) | *.fasta *.fa *.fna *.faa *.fas *.fsa *.mfa *.afa |
| 通用比对 | *.aln *.msa *.a2m *.a3m |
| PHYLIP | *.phy *.phylip *.ph |
| CLUSTAL | *.clustal *.clw |
| Stockholm | *.sto *.stockholm *.st |
| gzip 压缩 | 以上每个 glob 的 *.gz 形式(如 *.fasta.gz、*.phy.gz) |
格式按内容识别,扩展名只用于判断是否由本插件认领文件;.txt 有意不认领,继续交给 DSH 内置的文本预览。
在右侧栏「工作区文件」标题栏里有一个绿色的 序列 按钮(DNA 双螺旋图标),点开即可配置本插件认领哪些文件。
* 通配(如 *.seq、*.alignment.txt);# 开头为注释;不能包含 / 或 \。localStorage 的 dsh-seq-viewer:formats:v1,按浏览器 / DSH profile 独立保存。examples/ 下有六份可直接打开的样例:
| 文件 | 说明 |
|---|---|
examples/demo_alignment.fasta | 8 条核酸序列 × 60 列,含变异位点与缺口 |
examples/demo_alignment_aa.fasta | 6 条蛋白序列 × 60 列,验证蛋白配色 |
examples/demo_alignment.aln | CLUSTAL W 块格式 |
examples/demo_alignment.phy | 交错 PHYLIP |
examples/demo_alignment.sto | Stockholm 1.0 |
examples/demo_alignment.fasta.gz | gzip 压缩的 FASTA |
可以把这些文件复制到任意 DSH 工作区,或直接打开自己的比对文件。
/absolute/path/to/dsh-seq-viewer;或resources/app.asar/lib/plugin-cli.js)操作 desktop profile。安装后重启 DSH NEXT。公共 dsh CLI 不允许直接操作保留的 desktop profile。
dsh web)dsh plugin --profile <profile> add file:/absolute/path/to/dsh-seq-viewer
重启对应 profile,刷新页面。
卸载:
dsh plugin --profile <profile> remove dsh-seq-viewer
demo_alignment.fasta / demo_alignment.aln 等文件。↻ 重新读取文件;文件在磁盘上变化后会出现「文件已变化,重新加载」提示。工作区文件行
└─ tab.actions.openResource('dsh-resource://file/session/<id>/<path>')
└─ ctx.sidebarRightTabs 路由:按插件配置的 glob 以 extension 优先级命中
└─ sidebar.right.pane.tab 标签体(lib/client.js)
├─ 解析地址 → sessionId + path
├─ remote.workspaceFiles.readBytes(...)(RemoteResult 解包)
├─ gzip 解压 + UTF-8 解码、格式识别、转 FASTA、核酸/蛋白判定
├─ useResource(address) 观察 version → 文件变化提示
└─ Blob iframe(viewer-app 单文件构建)
└─ ready → postMessage({ type: 'dsh-seq-viewer:load', payload: { fasta, isAminoAcid, theme } })
格式设置(sidebar.right.tab.files.actions)
└─ 勾选 / 自定义 glob → localStorage → 重新注册 sidebarRightTabs 标签类型
比对标签右键菜单(sidebar.right.tab.menu.item)
├─ sidebarRightTabs.candidates(address) → 其他内部标签类型
└─ remote.session.workspacePathApplications/openWorkspacePath → 本机关联应用 / 默认程序 / 显示位置
两个插件都通过扩展名认领「工作区文件」,设置入口都在文件面板标题栏:
| 插件 | 按钮 | 配置键 |
|---|---|---|
dsh-seq-viewer | 绿色 序列 + DNA 图标 | dsh-seq-viewer:formats:v1 |
dsh-phylo-viewer | 中性的树 / 格式图标(仅图标) | dsh-phylo-viewer:formats:v2 |
两个按钮使用不同的 DOM id、CSS 前缀、图标、标题和存储键,可以同时显示并分别打开。不要把同一个扩展名同时勾选到两个插件:扩展名无法区分「比对的 .phy」和「树的 .phy」,先匹配到的插件会抢走文件。
localStorage;清除站点数据即可恢复默认全选。需要 Node.js 20 或更高版本。
cd viewer-app && npm install
cd .. && npm run build:viewer # 构建 viewer-app 并嵌入 lib/client.js
npm test # 27 项单测:地址解析、格式转换、gzip、格式设置、标签注册、右键菜单
lib/client.js 是生成物,不要手改;修改 scripts/client.template.js 或 viewer-app/ 后重新构建。