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

结构式绘图 Hilyce/dsh-plugin-chemdraw

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

把 SMILES 渲染成键线式结构图,直接粘进 Word 文档

36.1/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · other
装得上吗
静态安装检查通过
未做真实安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

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

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

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 19:26:54

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 17 处,展示前 17 条)
  • 读取本地文件
    index.js:44
    return candidates.filter((p) => existsSync(p)).join(process.platform === 'win32' ? ';' : ':')
  • 读取本地文件
    index.js:62
    if (existsSync(bundled)) return bundled
  • 执行外部命令来自配置/变量
    index.js:71
    const child = spawn(this.python(), ['-B', join(HERE, 'worker.py')], {
  • 发起网络请求
    index.js:169
    const res = await worker.request(req)
  • 写入本地文件
    index.js:367
    await mkdir(dirname(target), { recursive: true })
  • 写入本地文件
    index.js:368
    await writeFile(target, result.format === 'png'
  • 写入本地文件
    index.js:411
    await mkdir(dirname(target), { recursive: true })
  • 写入本地文件
    index.js:412
    await writeFile(target, result.format === 'png'
  • 写入本地文件
    index.js:457
    await mkdir(result.dir, { recursive: true })
  • 发起网络请求
    client.js:950
    const res = await fetch('/chemdraw/identify', {
  • 写入剪贴板
    client.js:997
    try { await navigator.clipboard.writeText(text); return true } catch { }
  • 发起网络请求
    client.js:1027
    const res = await fetch(`/chemdraw/render?${qs.toString()}`, { credentials: 'same-origin' })
  • 写入剪贴板
    client.js:1044
    await navigator.clipboard.write([new window.ClipboardItem({ 'image/png': blob })])
  • 写入剪贴板
    client.js:1296
    await navigator.clipboard.write([new window.ClipboardItem({ 'image/png': blob })])
  • 发起网络请求
    client.js:1400
    const res = await fetch(`${url}?${qs.toString()}`, { credentials: 'same-origin' })
  • 发起网络请求
    client.js:1463
    const res = await fetch(ROUTE_BATCH, {
  • 写入剪贴板
    client.js:1497
    await navigator.clipboard.write([new window.ClipboardItem({ 'image/png': blob })])
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

把 SMILES 转成骨架结构,供 DeepSeek Harness 使用

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-chemdraw 把 SMILES 渲染成键线式结构图,专为放进 Word 文档、画反应式和批量出图设计。 - 透明底:没有白块、没有边框,压在 Word 白页上自然融合 - 紧裁边:按墨迹范围裁切,四周只有几个像素 - 键长统一:bond 相同的结构在任何尺寸下键长都精确一致,一张图里多个分子自动对齐 - 矢量输出:SVG 任意缩放不糊(Word 2016+ 直接插入),需要位图时给 PNG - 立体化学画对:手性 H 的位置经过几何重算,稠环/桥环上不再压住相邻键线 适用 DSH 桌面版;自带 RDKit 运行时,本机不需要装 Python 或化学库。 在线演示:<https://Hilyce.github.io/dsh-plugin-chemdraw/demo/> —— 结构式描边动画、面板打字机、手绘 + 命名、反应式排版都能直接看。demo/index.html 是单文件(约 235 KB,图片全部内联),可以直接发给别人;改完跑 node demo/build.mjs 重新生成。 演示页 安装 方式一(界面,推荐):侧栏「插件」→ 添加插件 → 输入包名 dsh-plugin-chemdraw → 安装 → 立即启用。
展开完整文档(README 剩余 1 节)
dsh-plugin-chemdraw

把 SMILES 渲染成键线式结构图,专为放进 Word 文档、画反应式和批量出图设计。

- 透明底:没有白块、没有边框,压在 Word 白页上自然融合
- 紧裁边:按墨迹范围裁切,四周只有几个像素
- 键长统一:bond 相同的结构在任何尺寸下键长都精确一致,一张图里多个分子自动对齐
- 矢量输出:SVG 任意缩放不糊(Word 2016+ 直接插入),需要位图时给 PNG
- 立体化学画对:手性 H 的位置经过几何重算,稠环/桥环上不再压住相邻键线

适用 DSH 桌面版;自带 RDKit 运行时,本机不需要装 Python 或化学库。

在线演示:<https://Hilyce.github.io/dsh-plugin-chemdraw/demo/> —— 结构式描边动画、面板打字机、手绘 + 命名、反应式排版都能直接看。demo/index.html 是单文件(约 235 KB,图片全部内联),可以直接发给别人;改完跑 node demo/build.mjs 重新生成。

演示页

安装

方式一(界面,推荐):侧栏「插件」→ 添加插件 → 输入包名 dsh-plugin-chemdraw → 安装 → 立即启用。

方式二(命令行):

dsh plugin --profile desktop add dsh-plugin-chemdraw

方式三(本地目录,开发时用):

dsh plugin --profile desktop add "D:\path\to\dsh-plugin-chemdraw"

装完重启 DeepSeek Harness(完全退出再打开),Host 才会加载新的插件代码。
面板只需刷新页面(F5)。

在 Discover 里搜到

DSH 的 Discover 标签读的不是 npm 搜索,而是插件市场索引(一份 format 1 的 JSON)。
本仓库自带一份索引:market/index.json。把它发布到 GitHub Pages 后,在「插件 → Discover → 添加索引源」里填:

https://Hilyce.github.io/dsh-plugin-chemdraw/market/index.json

之后就能在 Discover 里搜 chemdraw / smiles / 结构式 并直接安装。
索引随 npm run market:index 重新生成,详见 PUBLISH.md。

三个入口

1. 右侧栏面板

侧栏「+」→ 结构式,四种模式:

| 模式 | 输入 | 用途 |
| 单分子 | 每行一个 SMILES | 逐张预览;复制 PNG 后直接在 Word 里 Ctrl+V,或下载 PNG/SVG |
| 反应式 | 底物.底物>>产物.产物,可填箭头条件 | 自动排版箭头与「+」,各组分同尺度 |
| 批量 | 每行一个 SMILES + 输出目录 | 导出成文件夹,附带 index.html 预览页 |
| 手绘 | 鼠标/触屏直接画 | 没有 SMILES 也能画:点碳、拖碳链、拖苯环和 N/O 上去 |

PNG 是 4 倍超采样后从矢量重绘的,粘进 Word 或放大看都不糊。

手绘模式怎么用

- 放一个碳:点工具条「碳」→ 点画板空白处(孤立碳显示 CH₄);
- 画碳链:按住已有原子往空白处拖,一次拖动就会沿 30° 网格长出一串锯齿碳链;拖回已有原子则闭环;
- 换元素:左边模板点 N / O / S / P / F / Cl / Br / I / OH / NH₂ / CH₃,再点已有原子;
- 苯环:模板里的「苯环」拖到画板(或点一下再点画板),自动补交替双键;
- 键级:单 / 双 / 三键作用于新画的键;环里的双键自动画在内侧;
- 擦除 / 撤销 / 重做 / 清空:底部有按钮,画板右上角还有一个悬浮「清空」,一键清空并收起识别卡(可撤销);
- 导出:复制 PNG / 下载 PNG / 下载 SVG,透明底、按内容紧裁,和 SMILES 渲染出来的图同样能直接进 Word。

手绘的结果保存在面板里,切到别的模式再切回来不会丢。

画完自动命名(IUPAC + 常用名)

画板下方会自动出现一张识别卡,改一笔就更新一次:

| 字段 | 来源 |
| IUPAC 系统名 | openclatura,离线、按 IUPAC 蓝皮书规则确定性生成,不联网、不是模型猜的 |
| 常用名 | 内置 93 个常见化合物(中英对照,如「甲烷 · methane」「对甲酚 · p-cresol」),按 InChIKey 精确匹配,退化时按骨架匹配并标注 |
| 分子式 / 分子量 | RDKit 计算 |
| 规范 SMILES | 一键复制,可接着回「单分子」模式继续用 |

点了「重新渲染」会用 Host 的 RDKit 把结构重画一遍(和「单分子」模式完全同款:键长统一、透明底、紧裁边),再复制 PNG / 下载 PNG / SVG。手绘时的坐标只决定连接关系,最终出图由 RDKit 重新排版。

结构画错了(比如碳连了 5 根键)不会静默出图,识别卡会直接给出「结构不合法」的原因。

2. Agent 工具

smiles_to_structure(smiles="CC(=O)Oc1ccccc1C(=O)O", out="D:\\x\\aspirin.svg", bond=42)
smiles_reaction(scheme="CC(=O)O.OCC>>CC(=O)OCC.O", out="D:\\x\\rxn.svg", reagents="H2SO4, cat.")
smiles_batch(smiles="CCO\nc1ccccc1O", outDir="D:\\x\\batch", format="png")

out / outDir 必须是绝对路径(Host 的工作目录是 profile 目录,不适合当默认输出位置)。

3. HTTP 路由

GET /chemdraw/render?smiles=CCO&format=svg&bond=42&color=0&annotate=0&white=0
GET /chemdraw/reaction?scheme=A.B>>C&reagents=H2SO4&format=svg
POST /chemdraw/batch {items:[{smiles}], outDir:"D:\\x", format:"svg"}

color=1 彩色杂原子,annotate=1 标 R/S,white=1 白底不透明(默认透明)。

依赖

插件自带 RDKit 运行时(runtime/,cp312 wheel,约 57 MB),使用 DSH 桌面版内置的 Python 3.12,不需要你本机装任何东西。

要换解释器或加搜索路径,在 profile 的 cordis.patch.yml 里覆盖:

- id: chemdraw
name: dsh-plugin-chemdraw
config:
pythonPath: 'C:\Python312\python.exe' # 默认用内置 runtime pyPath: 'D:\somewhere\site-packages' # 额外 PYTHONPATH(rdkit 所在目录) timeoutMs: 25000

实现

index.js Host 半侧:4 个 HTTP 路由 + 3 个 agent 工具 + Python worker 管理 client.js 浏览器半侧:右侧栏 tab(四种模式,含手绘画板),只用 --dsw-alias-* 主题变量 worker.py 常驻渲染进程,一行请求一行响应,避免每条请求重新 import RDKit render.py 单分子渲染:布局、手性 H 修正、透明底、紧裁、固定键长 scheme.py 反应式拼装(SVG 用 <g transform> 拼、PNG 用 PIL 拼)与批量导出 identify.py 结构识别:molblock/SMILES → 规范 SMILES、分子式、分子量、InChI、IUPAC 名、常用名 data/ 常用名表(86 个化合物,InChIKey 索引)与生成脚本 runtime/ RDKit(cp312)+ openclatura(离线 IUPAC 命名) scripts/ 发布辅助:生成市场索引、替换仓库占位符 market/ 插件市场索引(Discover 用)

两个值得记下的坑

1. RDKit 的 fixedBondLength 会静默回缩。 当「画布 /(键长 × 字号)」过小时,RDKit 为了塞下原子标签会把整张画缩放,键长就不准了(实测键长 120 px 的画在 2000 px 画布上只剩 14 px)。
现在画布按 2.8 × 键长 × 字号 兜底,绘制后用 GetDrawCoords 实测键长校验,不一致就放大画布重画。这是「多分子同尺度」能成立的前提。

2. 手性 H 默认会压键线。 PrepareMolForDrawing 补出来的手性 H 只按「背离邻居质心」定位,在稠环/桥环的环并处那个方向正好插进环内。现在对每个手性 H 采样 72 个方向,按「到其它原子、到其它键段」的最小距离打分取最空旷处;楔形属性不动,立体化学读法不变。

发布

推 GitHub、发 npm、更新市场索引的完整步骤见 PUBLISH.md。

许可

MIT。runtime/ 内是未修改的 RDKit wheel(BSD 3-Clause,见 runtime/rdkit/license.txt)。
预览分享卡片长什么样 ↓Hilyce/dsh-plugin-chemdraw
分享 · DeepSeek Harness Hub
Hilyce/dsh-plugin-chemdraw

把 SMILES 渲染成键线式结构图,直接粘进 Word 文档

这是你的仓库?认领条目

回到顶部