lovy2004/dsh-molbio-tools ↗★ 1
dsh-molbio-tools
零依赖分子生物学研究工具包
AI 分析
提供序列分析、引物设计等46个确定性计算工具,适合生物医学研究人员使用。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:lovy2004/dsh-molbio-tools说明文档
阅读完整 README ↗dsh-molbio-tools
面向 DeepSeek Harness 的零依赖分子生物学研究插件:序列分析、引物自动设计与检查、限制性酶切模拟、GenBank 解析与质粒图谱、qPCR 分析、文献助手与实验台计算。除文献检索与存储外全部为确定性纯计算;插件由纯 .mjs 文件构成,可随 agent preset 目录整体复制分发。
提供的工具(46 个,模型可调用)
序列分析
| 工具 | 功能 |
|---|---|
molbio_reverse_complement | 反向互补 / 互补链(IUPAC 简并码,自动忽略空白与数字) |
molbio_gc_content | 整体 GC 含量 + 可选分窗口 GC 百分比 |
molbio_translate | 1/2/3/-1/-2/-3 或六框翻译(3 套密码子表),ORF 查找 |
molbio_restriction_sites | 内置 90+ 限制酶(v10 起含 IIS 型:BsaI/BsmBI/BbsI/BspQI/SapI/PaqCI/AarI/BtgZI/BsmFI/FokI 等,切点在识别位点外,显示标准 (N₁/N₂) 记法)位点搜索与酶切片段计算(线性/环状) |
molbio_enzyme_lookup | v13 酶目录查询:按名称/识别位点/切点几何/突出端长度查 90+ 酶表;给定序列时报告双链向全部切点(IIS 酶的反向识别位点如 GAGACC 也会被切,这是 molbio_restriction_sites 不报告的)与片段大小 |
引物
| 工具 | 功能 |
|---|---|
molbio_design_primers | 自动设计 PCR 引物对:Tm(SantaLucia 1998 NN,默认 50 mM Na⁺/1.5 mM Mg²⁺/200 nM,v13 起可用 na_mm/mg_mm/dntp_mm/primer_nm 调节)、GC、GC clamp(0-3 分级)、run/发夹/自互补/二聚体约束,按 amplicon 窗口配对并排序。v12 起结构筛查对齐 Primer3 模型:自互补为比对分(match +1/mismatch −1/gap −0.25,阈值 8.0/3.0),发夹与引物二聚体用同一套 NN 参数折成 Tm(默认 47 °C 阈值),3' 端稳定性(末 5 碱基 ΔG(37°C) ≤ 9 kcal/mol)与末 5 碱基 GC 数。v12 起支持错配容差:max_mismatches > 0 时允许引物与模板有少量错配(3' 末端碱基绝不错配、默认避开 3' 端关键区),每处错配在 mismatches 中报告并计入排序罚分,精确引物总是优先。check_mispriming: true 检查 3' 尾在模板上的非特异结合位点并拒绝/罚分。v13 起支持 3' 目标位置偏好:target_position + target_penalty 按"较近引物 3' 端到目标位点的距离"罚分排序(SNP/定点设计用),每对报告 target_distance |
molbio_design_intron_primers | 跨内含子 qPCR 引物(v10):给定基因组序列 + 外显子坐标,正向引物跨外显子-外显子连接点(两侧各 ≥ min_junction_bases),反向引物位于另一外显子,基因组 DNA 无法扩增;min_genomic_span 强制最小基因组间距;输出剪接坐标 + 基因组坐标双套位置。v12 起支持错配容差(参数同 molbio_design_primers,错配在 spliced/genomic 双坐标下报告)。v13 起同样支持盐/浓度旋钮与 target_position(剪接坐标) |
molbio_primer_tm | 单条引物 Tm 估算(Na⁺/Mg²⁺/dNTP 盐校正,von Ahsen 2001) |
molbio_primer_check | 引物结构筛查:重复序列、自互补(3' 端加权)、发夹、引物对二聚体;v12 起增加 Primer3 同款热力学指标(self-any/self-end 比对分、发夹 Tm、二聚体 Tm、3' 端稳定性/GC) |
质粒
| 工具 | 功能 |
|---|---|
molbio_parse_snapgene | SnapGene .dna 文件解析(研究者最常用的格式):图谱名称、拓扑(环状/线形)、注释特征(类型/区段/链向/标签,支持多段 join 与 HTML 文本清洗)、序列、描述、accession、已保存引物 |
molbio_plasmid_map_file | 一步成图:直接读 .dna(SnapGene)或 .gb/.gbk(GenBank)文件,把 SVG 图谱写入工作区文件并返回 svg_path(默认 .svg,可用 output_path 指定);写入后自动用系统默认应用打开(auto_view,默认开启) |
molbio_parse_genbank | GenBank flatfile 文本解析(complement/join 定位、/gene、/product 等) |
molbio_plasmid_map | 从序列 + 特征数组渲染并直接写入 SVG 文件(环形默认/线形可选):特征分道、链向箭头、酶切标记、bp 刻度;同样返回 svg_path 并自动打开 |
克隆构建
| 工具 | 功能 |
|---|---|
molbio_unique_cutters | 克隆选酶:载体单切 + 插入零切的"理想酶"列表(可限定 MCS 区间)、区间双切酶(片段切出)、排除切插入的酶 |
molbio_clone_simulate | 酶切-连接(1-2 酶,orientation=auto 默认自动反向互补方向写反的插入片段)与 Gibson 组装(自动生成同源臂和 insert-to-order)模拟:输出最终质粒序列、特征坐标平移、连接点序列、验证酶切预测(对比空载体,单酶时含反向连接预测);save_path 存 FASTA、map_path 一步写出新质粒图谱 SVG(含平移后的特征与验证酶标记) |
molbio_golden_gate | v13 Golden Gate 组装:IIS 酶(BsaI 等)多片段组装模拟——自动设计唯一、非回文、非互补的 4 bp 突出端(载体已有盒子则读取、裸载体给 replace_region 则自动加盒子并设计两端突出端)、检查酶不切片段/裸载体、生成带识别位点的订购片段(fragments_to_order)、拼出最终质粒(连接处无酶切位点;载体盒子位点保留在骨架上,下一级组装换另一种 IIS 酶)、特征坐标平移与验证酶切;save_path/map_path 直接出 FASTA/SVG |
molbio_clone_primers | 扩增引物加尾:酶切位点 + 保护碱基(内置推荐表)或 Gibson 同源臂;自动复检全长 Tm(NN 估算)/GC/二聚体,并警告"酶也切模板内部" |
molbio_mutagenesis_primers | QuickChange 式定点突变引物:支持 A123G/123A>G/123_125del/after123insGCT,突变居中、G/C 端、Tm/GC/结构复检,报告氨基酸变化(frame 1 假设) |
克隆验证
| 工具 | 功能 |
|---|---|
molbio_verify_sanger | 读 .ab1(ABIF 二进制:碱基 + 质量值)或 .seq/.txt/.fasta 测序文件 → 与参考质粒比对(环状感知,跨 origin 的读段也能对齐)→ 错配/缺失/插入报告(含质量标注)、同一性、CDS 内氨基酸后果(错义/沉默/移码) |
实验与统计
| 工具 | 功能 |
|---|---|
molbio_qpcr_analysis | ΔΔCt 法:各组均值/SD、ΔCt、ΔΔCt、fold change(可设扩增效率) |
molbio_qpcr_efficiency | 稀释系列 → 标准曲线:斜率/截距/R²、扩增效率 E=10^(−1/slope)−1;plot_path 直接写出带拟合线的 SVG 标准曲线并自动打开 |
molbio_plot | 通用 SVG 图表:柱状图(均值±SD 误差棒)与散点图(可选最小二乘拟合线),写成工作区文件并自动打开 |
molbio_virtual_gel | v13 虚拟琼脂糖凝胶:各泳道给出预期片段大小(酶切/PCR/连接检查)→ SVG 凝胶图 + 分子量 ladder(1kb/100bp),与真实胶对照;output_path 写工作区文件并自动打开 |
molbio_lab_math | 稀释计算(C₁V₁=C₂V₂)、摩尔浓度、DNA 拷贝数 |
蛋白质
| 工具 | 功能 |
|---|---|
molbio_protein_props | MW(平均残基质量)、等电点(Bjellqvist 1993 pK)、A280 消光系数(还原/全二硫键两种)、A280(0.1%)、GRAVY(Kyte-Doolittle)、脂肪族指数(Ikai 1980)——均为估算 |
molbio_peptide_digest | 质谱用酶切模拟:trypsin/chymotrypsin/LysC/GluC(P 前不切规则)、漏切 0-3、单同位素/平均 [M+H]+ 质量、质量范围过滤 |
molbio_codon_optimize | E. coli/酵母/人宿主密码子优化(公开发表的高频密码子表,启发式);avoid_enzymes 通过同义替换尽量避开指定酶切位点 |
序列分析扩展
| 工具 | 功能 |
|---|---|
molbio_align | Smith-Waterman 局部比对:可读的比对线( |
molbio_fasta_fastq | 工作区 FASTA/FASTQ 处理:条目统计(长度/GC)、按 id 提取(可写 FASTA)、FASTQ→FASTA 转换、FASTQ QC(Phred 均值/低质量比例/位点质量分布) |
molbio_extract_region | 从质粒文件按特征名(如 "AmpR"、"MCS")或坐标提取子序列,可选反向互补与 FASTA 保存——克隆/设计的下游输入 |
多序列比对与保守性(v15)
| 工具 | 功能 |
|---|---|
molbio_msa_align | 多序列比对(v15):2-50 条 IUPAC DNA 序列的渐进式比对——两两/谱-谱全局比对用带自由末端缺口的仿射罚分(match +4 / mismatch −4 / 缺口开 −6 / 延伸 −2),合并顺序来自 5-mer 距离 + UPGMA 引导树,"一旦有缺口、永远有缺口";返回输入顺序的比对序列(sequences 数组或 fasta_path 工作区 FASTA)与两两同一性统计,save_path 直接写出比对后的 FASTA |
molbio_conservation | 保守性分析(v15):共识序列(最高频碱基 ≥50% 直接给出,否则给出覆盖碱基的 IUPAC 简并码)、逐列 identity(最高频残基占比,缺口不计)、熵基保守性打分(1 − H/2)、保守/可变列统计(threshold 默认 0.8,可变位点列出至多 200 个;全缺口列计为保守)、两两同一性;输入可给 alignment(已比对等长序列,- 为缺口——如 molbio_msa_align 的输出)、sequences 或 fasta_path(后两者自动先比对) |
序列标识图与 CRISPR 设计(v16)
| 工具 | 功能 |
|---|---|
molbio_sequence_logo | 序列标识图(sequence logo):把保守性分析背后的逐列碱基组成画成 SVG——字母高度 = 信息量 Rᵢ = log₂4 − (Hᵢ + e_n)(bits,纵轴 0-2),堆叠高度按碱基频率分配,字母按经典配色(A 绿 / C 蓝 / G 黄 / T 红)。频率只按残基统计(缺口排除并在每列上报),简并碱基按其碱基集合摊分权重(R = A/G 各半)。small_sample(默认开)扣掉小样本熵校正 e_n =(K−1)/(2·ln2·n)——序列数少时这一项很关键(2 条完全相同的序列每列只有 0.918 bits 而不是名义上的 2);score_type: "frequency" 切换成纯频率图(字母和 = 1,纵轴 0-1)。输入可给 alignment / sequences / fasta_path,写得 SVG 后自动打开;返回 svg_path、总/平均 bits、最保守列、含缺口列数 |
molbio_grna_design | CRISPR gRNA 设计(默认 SpCas9 NGG PAM):双链扫描 PAM 锚定的 20 nt protospacer,逐条报告 1-based 顶链坐标、链向、GC%、NN Tm、Primer3 式自互补(self-any/self-end)、种子区自互补、发夹 Tm、最长 poly-T,以及一个逐项公开的启发式评分。硬过滤(GC 上下限、poly-T、3' 自互补、G/C 同聚)可用 gc_min/gc_max/max_t_run/max_self_end 调节,被过滤的条数照常报告。check_off_target(默认开)在同一条序列(双链)上建 k-mer 索引,对得分最高的若干候选做错配容差脱靶搜索(仅替换、无 bulge/indel,PAM 必须完好;种子末端 2 位不允许错配),每个脱靶扣 8 分——想在基因组尺度搜索就把基因组当作 target 传入。save_path 出订购用 CSV,map_path 出带 gRNA 标记的质粒图谱 |
图谱增强
molbio_plasmid_map/molbio_plasmid_map_file新增gc_skew: true(GC skew 环)与show_unique_cutters: true(绿色标记所有单切酶)
浏览器内面板(bundle 渠道,可选)
除了工具与"写 SVG 文件 + 系统查看器"这条链路,本包还有浏览器内的右栏面板与图谱调用卡:
| 落点 | 内容 |
|---|---|
| Molbio(右栏 tab) | 列出当前会话工作区的序列文件,选中当场在面板里画出来——.dna/.gb/.gbk 出质粒图谱 + 特征表,.fa/.fasta 出序列标识图 |
| Papers(右栏 tab) | 把 molbio_paper_* 工具维护的 papers.json 渲染成可搜索的阅读列表(标题/作者/期刊/年份/PMID/URL/标签/笔记,标题链接到 PubMed 或原 URL) |
| 图谱调用卡(对话内) | molbio_plasmid_map / molbio_plasmid_map_file 的调用直接在对话里画出这次产出的图谱(摘要 + 写入路径;失败时显示错误文本与 Inspect 入口),不必再去开文件 |
解析与渲染在浏览器里跑的就是本仓库自己的模块(lib/genbank/snapgene/plasmid/msa/logo
的同一份源码),不落盘、不弹外部窗口。
它走的是 bundle 渠道(dsh.client 双面包),因为 preset 渠道挂不了客户端 UI:
# 只要面板(不把 46 个工具带进该 profile 的每个会话)——推荐给共享的 web profile
dsh plugin --profile
add D:\path\to\dsh-molbio-tools\packages\molbio-panel
# 或:工具 + 面板一起(分子生物学专用的 profile)
dsh plugin --profile
add D:\path\to\dsh-molbio-tools
装上后重启一次服务并刷新页面(新插件行需要在启动时组合;之后改客户端代码才只靠刷新), 右栏引导页里会出现 Molbio 与 Papers 两个胶囊。与 preset 渠道可以共存:preset 给 46 个工具,bundle 给面板。
若升级后 GUI 顶栏出现 Failed to load plugins(failed to apply loader entry …),那是某个
客户端 entry 的 apply() 抛了异常,加载器拒绝启动——不是"面板没挂上"。0.7.1 的图谱调用卡
就踩过一次(裸 register() 抢一个还没被声明的座位);0.7.2 起所有座位都改成
slots.inject 等待声明。升级到 0.7.2+、重启并刷新即可;排查清单见
docs/maintainer.md("UI 起不来"一节)。
细节(产物格式、服务契约、上限、验证方式、已知限制)见 docs/client-panel.md。
文献助手
| 工具 | 功能 |
|---|---|
molbio_pubmed_search | 通过 harness 的 web 检索服务搜文献(自动提取 URL 中的 PMID) |
molbio_paper_add | 把文献加入阅读库(默认工作区 papers.json,按 PMID→URL→标题+年份去重) |
molbio_paper_list | 列出阅读库 |
molbio_paper_update | 按 id 更新笔记/标签等字段 |
molbio_paper_remove | 从阅读库删除一条文献 |
文献与记录
| 工具 | 功能 |
|---|---|
molbio_pubmed_abstract | NCBI E-utilities efetch 按 PMID 拉取摘要(依赖部署提供 web fetch 能力,不支持时明确报错) |
molbio_paper_export_bibtex | papers.json → BibTeX .bib 文件(可选按 tag 过滤) |
molbio_protocol_add / protocol_list / protocol_update | 协议库(protocols.json):步骤列表、自由参数对象、来源文献 id |
molbio_experiment_log / experiment_list | 实验日志(experiments.json):关联协议与文献、笔记与结果 |
目录结构
dsh-molbio-tools/
├── index.mjs # 插件入口:export { name, inject, apply },注册 46 个工具
├── lib.mjs # 基础库:IUPAC、翻译、酶表(含双链向切点查找)、NN 热力学、qPCR、lab math
├── design.mjs # 引物自动设计(含跨内含子 qPCR)
├── genbank.mjs # GenBank flatfile 解析器
├── snapgene.mjs # SnapGene .dna 二进制解析器(含极简 XML 扫描器)
├── plasmid.mjs # SVG 质粒图谱渲染器(环形/线形,GC skew/标记)
├── align.mjs # Smith-Waterman 局部比对 + 锚点窗口(Sanger 验证用)
├── msa.mjs # 多序列渐进式比对(仿射缺口 NW + UPGMA)与保守性分析
├── logo.mjs # 序列标识图:逐列碱基组成/信息量 + SVG 渲染
├── crispr.mjs # CRISPR gRNA 设计:PAM 扫描、质量指标与评分、脱靶搜索
├── cloning.mjs # 克隆模拟:选酶/酶切连接/Gibson/Golden Gate/克隆引物/突变引物
├── sanger.mjs # ABIF (.ab1) 解析 + 测序验证报告
├── protein.mjs # 蛋白性质/肽段酶切/密码子优化
├── plot.mjs # SVG 柱状/散点图 + 虚拟琼脂糖凝胶渲染
├── seqio.mjs # FASTA/FASTQ 解析与统计
├── records.mjs # 协议库/实验日志存储
├── papers.mjs # 文献库存储(经 harness fs 服务 + 沙箱政策)
├── view.mjs # 自动查看:把生成的 SVG 交给系统默认应用打开(镜像 host.openPath 语义)
├── build/ # 浏览器半的源码与打包器(见下)
│ ├── client-bundle.mjs # 零依赖打包器:产出 lazy-CJS 客户端产物
│ ├── browser-api.mjs # 浏览器安全面:从包根 .mjs 再导出面板可用的一切
│ ├── panel-core.mjs # 面板数据通路(分类/解码/解析/渲染,无 React)
│ └── client-entry.mjs # 浏览器半本体:右栏 tab 类型 + 正文 + 标题
├── lib/
│ └── client.js # 客户端产物(exports["./client"];npm run build:client 生成)
├── cordis.patch.yml # bundle 补丁层(可选安装渠道用,按包名插入 tool-molbio 行)
├── preset/
│ ├── install.mjs # 渠道 B 安装脚本:把包内 preset 注册为该 profile 的额外扫描根
│ └── molbio-lab/ # 推荐的专属模式预设(agent.cordis.yml + preset.yml + plugins/dsh-molbio-tools-v16/)
├── test/
│ ├── smoke.mjs # 冒烟测试(复用 harness 自身的 JSON Schema 校验器)
│ ├── slots-stub.mjs # 客户端座位桩:复刻 shell 的 SlotCore 声明规则(见下)
│ └── preset-health.mjs # preset 组合健康检查(逐行按该包自己的 Config schema 校验,对照官方 standard 预设)
├── docs/
│ ├── maintainer.md # 维护者文档(合规对照/开发测试/路线图)
│ ├── client-panel.md # 浏览器内面板的实现记录(产物格式/服务契约/上限/验证)
│ ├── route-b.md # 安装渠道 B:把包内 preset 注册进 profile(升级 Runbook/取舍/实测)
│ └── client-pipeline-exploration.md # 浏览器内面板的可行性与实现路径调研
├── CHANGELOG.md # 变更日志(包版本 + preset 版本目录对照)
├── package.json
└── README.md
安装(推荐:专属模式 preset)
推荐给最终用户的方式:安装后预设选择器出现 Molecular Biology Lab 专属模式, molbio 工具只在该模式出现,不会把 46 个工具和提示段注入到其它会话(避免污染无关场景)。
装进对方的 harness 有两条渠道,可以共存:
| 渠道 A:复制预设目录 | 渠道 B:注册包内 preset(新) | |
|---|---|---|
| 做法 | 把 preset/molbio-lab/ 复制到 ~/.dsh/.agent-presets/molbio-lab/ | 跑一次 preset/install.mjs,把包内 preset 目录注册为 profile 的额外扫描根 |
| 自包含 | 是(不依赖已装的包,可离线带走) | 否(依赖 profile 里已装的包) |
| 升级 | 每个新版本都要重新复制到新的 vN 目录 | `dsh plugin --profile |
| update dsh-molbio-tools`,不用复制、不用改配置 | ||
| 可否被用户编辑 | 可以(在 user 根下) | 否(trust: system,只读) |
| 适用场景 | 无法改 profile 配置的环境;交付一个"带走即用"的目录 | 自己的机器/团队 profile;长期使用并跟随升级 |
渠道 A(复制):仓库的 preset/molbio-lab/ 即完整预设目录,复制过去即可:
~/.dsh/.agent-presets/molbio-lab/
├── agent.cordis.yml # 标准编码 Agent + 末尾的 tool-molbio 行
├── preset.yml # 显示名称与描述
└── plugins/
└── dsh-molbio-tools-v16/ # 插件文件(版本目录,见下文)
对方重启(或刷新预设列表)后,在预设选择器中选择 Molecular Biology Lab 新建会话。
代价是每个新版本都要把目录重新复制到新的 vN(复制的那份会冻结在旧版本)。
渠道 B(注册,新):前提是该 profile 本来就装了本包(dsh plugin add 会把 46 个工具
装进该 profile,但不会让 preset 出现在选择器里):
dsh plugin --profile web add dsh-molbio-tools # 1. 装包(工具 + bundle 层)
node \preset\install.mjs --profile web # 2. 注册包内 preset(幂等)
脚本只改 profile 的 cordis.patch.yml:追加一条 - id: agent-presets 补丁,把
/preset 加进 config.roots(trust: system)。三个特性:
- 幂等:重复运行零字节改动;
--check可当健康检查(未注册时退出码 1),--dry-run只打印不落盘; - 先备份后写:
cordis.patch.yml.bak-; - 写完自检:跑
dsh --profile --dump-config,确认组合树确实带上了新 root。
之后重启该 profile,选择器里就会出现 Molecular Biology Lab;以后升级只跑
dsh plugin --profile update dsh-molbio-tools —— root 路径跨版本恒定,所以不用重新复制、
也不用再动配置。两条渠道共存时,重复 id 由配置根(渠道 B)胜出。
机制细节、升级 Runbook、完整取舍表与已知限制见 docs/route-b.md。
兼容性:当前 preset 组合已对齐 DSH 0.1.5-alpha.2(
persona行的prefix/suffix契约、present行)。DSH 侧插件包改名或改配置契约时,preset 会 硬挂载失败(该模式直接从选择器里消失),而插件代码本身仍然是好的——用node test/preset-health.mjs可以把每一行的 config 交给对应包自己的 schema 复核, 一眼看出是哪一行、哪个字段坏了。
插件更新(版本目录规则)
DSH 的 standing 挂载按 ESM 模块 URL 缓存模块。每次更新必须新建版本目录
(如 dsh-molbio-tools-v16/)并同步修改 agent.cordis.yml 中的插件行;绝不在已发布
目录里原地改文件。分发者从包根目录把 .mjs 文件复制进新版本目录即可:
cp *.mjs preset/molbio-lab/plugins/dsh-molbio-tools-v16/
# 并把 agent.cordis.yml 的行改为 './plugins/dsh-molbio-tools-v16/index.mjs'
安装(可选:官方组合包 bundle,全局可见)
本包同时是官方的组合包(bundle)(dsh.bundle manifest → cordis.patch.yml)。
注意:bundle 把插件行注册到 profile 的全局 tools 层——该 profile 的所有会话都会
加载 molbio 工具与提示段。适合"整个 profile 专用于分子生物学"的用户,不适合混合用途。
| 方式 | 命令 | 用户安装 |
|---|---|---|
| GitHub | 推送到仓库 | dsh plugin --profile add github:lovy2004/dsh-molbio-tools(纯 JS 零构建,无需 prepare 脚本与构建授权) |
| npm 发布 | npm publish | dsh plugin --profile add dsh-molbio-tools |
| tarball | pnpm pack | dsh plugin --profile add ./dsh-molbio-tools-0.1.0.tgz |
验证方式(官方推荐):
dsh plugin --profile demo add # 需要用户机器装有 pnpm(官方流程依赖)
dsh --profile demo --dump-config # 组合树中应出现 "# == dsh-molbio-tools" 层
本仓库已验证:--dump-config 输出以 # == dsh-molbio-tools + - id: tool-molbio / name: dsh-molbio-tools 开头(层序在 dsh-base 之上),且从 profile 目录按包名
import('dsh-molbio-tools') 成功注册全部 46 个工具。两种安装方式可以共存(同名工具
由 preset 层 shadow 全局层,无冲突),但通常二选一即可。
版本目录规则的原理(维护者必读):DSH 的 standing preset 挂载在整个进程生命周期 内存在,且 Node 的 ESM 模块缓存以文件 URL 为键——同一 URL 的
import()永远返回 第一次加载的模块,包括插件内部的相互 import(给入口加查询串只能破坏入口自身的 缓存,依赖文件仍会命中旧缓存)。因此原地替换.mjs不会让新会话加载新代码;目录名 变化使所有模块 URL 一次性更新。旧目录可删除(已运行的 generation 持有内存中的模块, 不受磁盘删除影响)。
行为与假设
- 纯计算工具(序列/引物/统计)确定性、无副作用;输入输出均为可持久化的 JSON。
- 图谱工具直接写文件:
molbio_plasmid_map/molbio_plasmid_map_file把 SVG 写入工作区(ctx.fs+ 会话沙箱政策),模型上下文里只出现文件路径,避免大文本截断。 - 自动查看(auto-view):所有生成图片的工具(
molbio_plasmid_map、molbio_plasmid_map_file、molbio_clone_simulate/molbio_golden_gate的map_path、molbio_qpcr_efficiency的plot_path、molbio_plot、molbio_virtual_gel)写完 SVG 后自动用操作系统默认应用打开(Windows 为Invoke-Item、macOS 为open、桌面 Linux 为xdg-open/$BROWSER、WSL 自动转译为 Windows 路径),结果中的auto_viewed字段报告交接是否成功。每调用可用auto_view: false关闭;无桌面环境(headless Linux)与MOLBIO_AUTO_VIEW=0时自动跳过。 - 克隆模拟约定:酶切-连接要求"插入片段按 5'→3' 书写、上游酶在 5' 端";单酶连接会给出双向连接说明与两种方向的验证酶切;特征坐标按插入/缺失自动平移,跨越连接点的特征标注
spans_insertion。 - Sanger 验证:参考序列按环状处理(读段跨 origin 也能正确对齐);
.ab1低质量( 0时,若某窗口没有精确引物通过全部约束,设计器用**最少的替换**尝试挽救(只针对可修复的约束:GC 失衡、run、Tm 微差)。3' 末端碱基永远不错配,默认在 3' 端mismatch_3prime_zone(默认 5 bp)关键区内也不放错配(max_3prime_mismatches` 可放宽)。每处错配逐条报告:引物内位置、模板位置、模板碱基/引物碱基、距 3' 端距离;每个错配都会加重排序罚分——存在精确引物时精确引物永远优先。 - Primer3 对齐的结构筛查(v12):自互补(self-any/self-end)为比对分(match +1 / mismatch −1 / gap −0.25,阈值 8.0/3.0);发夹与引物二聚体(any/end)用与 Tm 相同的 SantaLucia NN 参数折成 Tm(默认阈值 47 °C