본문으로 건너뛰기
M

dsh-bio-genie

moonbowterfly/dsh-bio-genie

生物信息学「许愿式分析」插件:BioPython 全功能覆盖(任意代码执行器 bio_python + 14 个领域 skill)+ 高频语义化工具 + 零依赖自举 Python 环境(uv + venv + biopython 自动下载到插件私有目录)。用户下载安装即可许愿式分析。

설치

dsh plugin --profile web add github:moonbowterfly/dsh-bio-genie

README

🧬 dsh-bio-genie

中文 | English

面向 DeepSeek Harness (dsh) 的生物信息学「许愿式分析」插件

dsh bio analysis · dsh biology analysis · deepseek harness bioinformatics · Biopython · sequence analysis · genomics

说人话,出结果。用户用自然语言描述生物学分析需求,dsh 的 agent 自动完成分析。

下载安装即用 —— 无需用户安装 Python 或 Biopython,插件首次运行自动引导完全隔离的 Python 环境。


✨ 特性

特性说明
🪄 许愿式分析(Wish Coding)说人话就能分析:"这条序列的 GC 含量和 EcoRI 酶切位点?"
🧩 双引擎全功能覆盖bio_python 执行器可运行任意 Biopython 代码(比对、PDB、Phylo、motif、BLAST…)+ bio_r 执行器内置 R 4.6/Bioconductor 3.23(DESeq2 差异表达、fgsea GSEA、phyloseq 微生物组),配合 21 个领域 skill 配方
高频语义化工具17 个固定参数工具(GC 含量、翻译、限制酶、k-mer、文件 IO、Entrez 检索、通路富集、PubMed 文献、参考基因组、出版级绘图)+ 6 个执行器工具(bio_python / bio_r / bio_env / bio_r_env / bio_log / bio_memory)——省 token、输出稳定、参数有校验
📦 零安装自动下载隔离的双环境(uv + venv + Biopython 绘图栈;R 4.6 安装器 + BiocManager 核心包集)到 $DSH_HOME/dsh-bio-genie/,不污染系统
🇨🇳 网络自动适配默认直连官方源,任一环节失败自动切换国内镜像(uv→清华 PyPI、CPython→npmmirror、PyPI 包→清华镜像),无需任何配置
🛡️ 环境隔离Python 子进程以 -I(isolated)模式运行,不受宿主 PYTHONPATH 污染
🔁 自愈执行(ACR)bio_python 失败返回 needs_repair 信号 + stderr,模型自动修复重试(最多 3 次),失败即如实报告
📜 透明性日志每次代码执行/工具调用异步记 JSONL 日志(哈希/预览/耗时),bio_log 可回溯任何一次分析
🧬 科学严谨性约束persona 强制「生物学结论必须可溯源到工具输出」,纯推断标注 [推断-未验证]
🧠 会话记忆成功代码模式 + 错误→修复经验自动沉淀(本地 JSON),bio_memory 查询,越用越聪明
⚙️ 设置面板dsh 设置面板(⚙️ 齿轮)侧栏「BioGenie」菜单——四标签页:总览(包元信息/配置默认值)、Skill 模块(50 个条目按领域/R/协议/指南分组)、Python 环境(venv 包列表)、R 环境(Bioconductor 包列表)
📚 协议知识库19 个高频任务协议(质控/比对/BLAST/克隆/建树/结构/富集/出版级绘图/坐标系统/统计检验/差异表达/GSEA…),每个含可执行代码模板 + 常见坑,随插件打包

📦 安装

本插件已发布为 npm 包 @dsh-bio/dsh-bio-genie,使用 dsh 官方标准的 dsh plugin 命令安装:

# 方式一:从 npm 安装(推荐,安装预构建代码)
dsh plugin --profile web add @dsh-bio/dsh-bio-genie

# 方式二:从 GitHub 安装(拉取源码;本插件为纯 ESM 无构建步骤,可直接加载)
dsh plugin --profile web add github:moonbowterfly/dsh-bio-genie

# 方式三:从本地目录安装(开发调试)
dsh plugin --profile web add ./dsh-bio-genie

安装后重启 dsh web 服务,插件即被加载。首次启动时插件会在后台自动引导 Python 环境(下载 uv → Python 3.12 → venv → biopython,约 1-2 分钟),之后秒级就绪。

验证插件层是否生效(无需启动):

dsh --profile web --dump-config   # 输出中应包含 "# == dsh-bio-genie" 层

故障排除:profile 已有本地包导致 pnpm 校验失败

若你的 profile 里已装过不在 npm registry 的本地包(如皮肤插件),dsh plugin add 触发的 pnpm 全量校验可能报 ERR_PNPM_FETCH_404。此时可手动挂载(已验证可行):

mkdir -p ~/.dsh/profiles/web/node_modules/@dsh-bio/dsh-bio-genie
cd /path/to/dsh-bio-genie
cp -r src index.js cordis.patch.yml package.json skills prompts python docs \
  README.md README.en.md LICENSE THIRD_PARTY_NOTICES.md \
  ~/.dsh/profiles/web/node_modules/@dsh-bio/dsh-bio-genie/

然后在 ~/.dsh/profiles/web/package.json 中:

  • dependencies 添加:"@dsh-bio/dsh-bio-genie": "file:.../dsh-bio-genie"
  • dsh.profile.bundles 数组添加:"@dsh-bio/dsh-bio-genie"

最后重启 dsh web 服务。


🛠 工具总览

执行器(双引擎,覆盖 100% 需求)

工具功能
bio_python运行任意 Biopython Python 程序(比对/PDB/Phylo/motif/复杂流程/自定义分析/出版级绘图)
bio_r运行任意 R 程序(R 4.6 + Bioconductor 3.23:DESeq2/edgeR/limma 差异表达、fgsea GSEA、phyloseq 微生物组、ggtree/ComplexHeatmap)
bio_envPython 环境诊断 / 重建
bio_r_envR 环境诊断 / 核心包集重建
bio_log执行日志回溯(bio_python/bio_r 代码哈希/预览/耗时 + 工具调用记录)
bio_memory会话记忆查询(成功代码模式 / 错误修复经验,越用越聪明)

语义化工具(高频稳定操作)

工具功能典型触发词
bio_seq_analyze长度 / GC% / 反向互补 / 六框翻译(正负链)/ 分子量 / 蛋白 AA 组成GC含量、序列特征、翻译
bio_seq_translateDNA→蛋白翻译(可指定密码子表)翻译、蛋白序列
bio_seq_gc_skewGC skew(复制起点识别)偏斜、复制起点
bio_seq_find_orf最长开放阅读框ORF、编码区
bio_seq_kmerk-mer 频率统计k-mer
bio_seq_io_read读 FASTA/GenBank(UTF-8/GBK 自适应)读取fasta、解析文件
bio_seq_io_write写序列文件写fasta、保存序列
bio_seq_restriction限制酶切位点(CommOnly 默认 / all 可选)限制酶、酶切位点
bio_entrez_searchNCBI 检索(esearch+esummary;db=gene 返回基因元数据摘要:全名/染色体位置/别名)NCBI、检索基因、查基因信息
bio_entrez_fetchNCBI 取序列下载序列
bio_enrichr通路/GO 富集分析(基因符号列表 → p 值排序条目;GO/KEGG/Reactome/MSigDB 等库)富集分析、通路、GO、KEGG
bio_pubmed_searchPubMed 文献检索(PMID/标题/期刊/作者/DOI)查文献、PubMed
bio_pubmed_abstract按 PMID 取结构化摘要(标题/摘要全文/作者/日期/DOI)读摘要、PMID
bio_ref_genome参考基因组 assembly 信息(Ensembl:assembly 名/染色体/下载目录)参考基因组、基因组版本

序列类型自动判断

bio_seq_analyzeseq_type 默认 auto,自动识别三类序列:

  • 含 U 无 T → RNA
  • 含 IUPAC 模糊碱基(R/Y/S/W/K/M/B/D/H/V)、X(未知/修饰碱基)、比对 gap 字符(-/.)→ DNA(引物/探针/SNP/比对结果安全)
  • 出现非核酸字母 → 蛋白质

X 与 gap 在翻译时按未知碱基处理(Biopython 标准行为),含 X/gap 的序列不会因模糊密码子崩溃。


📚 Skill 体系(22 个)

主 skill:dsh-bio-genie

工具分层决策树 + 双引擎路由表先查语义化工具表 → 命中就用;否则按任务选引擎(Python/R)写代码执行

21 个领域配方(15 Python + 6 R)

Skill覆盖的 Biopython 模块
bio-core核心工作流(任何分析先加载)
bio-ioBio.SeqIO(FASTA/FASTQ/GenBank/EMBL…)
bio-seqBio.Seq / Bio.SeqUtils(GC、Tm、分子量)
bio-alignBio.Align.PairwiseAligner / Bio.AlignIO
bio-blastBio.Blast(NCBIWWW / NCBIXML)
bio-searchioBio.SearchIO(BLAST/HMMER/Exonerate 解析)
bio-entrezBio.Entrez(esearch/efetch/esummary/elink)
bio-phyloBio.Phylo(Newick/Nexus、系统发育)
bio-structureBio.PDB(结构解析、距离、叠合)
bio-motifBio.motifs(PWM、JASPAR/MEME)
bio-restrictionBio.Restriction(酶切位点、片段)
bio-utilsBio.Data.CodonTable(遗传密码表、密码子用法)
bio-graphicsBio.Graphics.GenomeDiagram(图谱绘制)
bio-popgenBio.PopGen(群体遗传学)
bio-figure出版级科研绘图顾问(figurelib:选图决策、18 陷阱、期刊规格、CJK 中文)
bio-r-coreR 执行器核心(bio_r 契约、双引擎分工、ACR 信号表)
bio-r-basicsBiostrings / GenomicRanges / SummarizedExperiment(对象模型)
bio-r-rnaseqDESeq2 / edgeR 差异表达管道与解读纪律
bio-r-enrichmentfgsea GSEA + enricher ORA(与 bio_enrichr 分工)
bio-r-microbiomephyloseq 微生物组多样性(alpha/beta/PCoA/PERMANOVA)
bio-r-visggplot2 / ggtree / ComplexHeatmap(R 生态可视化)

🧞 精灵专家人设(bio-genie preset)

本插件同时提供一个 dsh agent preset(智能体预设)——bio-genie,让 AI 一进 dsh 就成为精通本插件的「生物基因精灵」专家人设。

它是什么

  • 人设文件preset/bio-genie/preset.yml + agent.cordis.yml)——覆盖 base persona,告诉 AI「你手头有 21 个工具 + 33 个 skill + 双引擎」。
  • 入门口诀skills/dsh-bio-genie-expert.md)——一个 meta-skill:「先看工作区 → 二选一(语义化工具 / bio_python / bio_r) → 失败按 ACR 三层修 → 报告带可追溯链」。
  • 一键安装pnpm install 跑 postinstall 钩子会自动把 preset 复制到 ~/.dsh/.agent-presets/bio-genie/;无需手动操作。

不是

  • 不接管 21 个工具——所有 bio_* 工具仍由本插件的 cordis.patch.yml 注入,preset 不重声明任何工具,避免冲突。
  • 不抢默认人设——postinstall 装完后,「生物基因精灵」出现在 dsh 预设选择器里;用户主动选择才激活。agent-presets.default 不会被改成 bio-genie
  • 不破坏其他插件——presets 与 plugins 是 dsh 的两个独立 seam,共存不冲突。

怎么用

  1. 安装本插件pnpm add @dsh-bio/dsh-bio-genie(postinstall 会自动装 preset)。
  2. 重启 dsh web
  3. 设置面板 → 选「生物基因精灵」人设。
  4. 之后 AI 启动会话即说:「我是生物基因精灵……你的工作区是 {{cwd}}……先看看你有什么数据再开工」。

手动安装 / 卸载

# 手动复制(postinstall 失败时)
node scripts/install-preset.js

# 强制覆盖(用户就地编辑过 preset 时也覆盖)
node scripts/install-preset.js --force

# 试运行(只看会做什么)
node scripts/install-preset.js --dry-run

# 卸载:直接删
#   Windows: rd /s /q %USERPROFILE%\.dsh\.agent-presets\bio-genie
#   macOS/Linux: rm -rf ~/.dsh/.agent-presets/bio-genie

故障排除

  • 预设选择器看不见「生物基因精灵」 → 检查 ~/.dsh/.agent-presets/bio-genie/preset.yml 是否存在;不存在则 node scripts/install-preset.js 手动装。
  • 切到 preset 后工具没出现 → 工具由插件注入,与 preset 无关;检查插件是否真在 dependenciespnpm ls @dsh-bio/dsh-bio-genie)。
  • 想自定义 persona → 直接编辑 ~/.dsh/.agent-presets/bio-genie/agent.cordis.yml(不被自动覆盖除非 --force)。

🚀 使用示例

场景 1:语义化工具路径(高频操作)

用户:"分析这个文件里的序列 GC 含量和 EcoRI 位点:D:/data/genes.fasta"

agent 自动:
1. bio_seq_io_read        → 读取 FASTA
2. bio_seq_analyze        → 逐条 GC 含量
3. bio_seq_restriction    → 检查 EcoRI
4. 汇总报告 + 生物学解读

场景 2:执行器路径(语义化工具覆盖不到的功能)

用户:"画一下这两个基因的蛋白结构比对"

agent 自动:
1. 加载 bio-align / bio-structure skill
2. bio_python 写 Biopython 程序执行
3. 产出文件 + 报告

场景 3:组合路径(实测)

用户:"读取 FASTA 分析每条序列的 GC、最长 ORF 和 EcoRI 位点"

agent 自动(实测行为):
1. 加载 dsh-bio-genie 主 skill(决策指引)
2. bio_seq_io_read 读取文件
3. bio_python 一次性完成 GC + ORF + 酶切组合分析
4. 输出汇总表(GC 48.28%、ORF 7aa、EcoRI nt 3-8)+ 生物学解读

🔧 环境引导(零依赖自举)

首次调用(或 dsh 启动后台预热)时插件自动执行:

1. 下载 uv            → $DSH_HOME/dsh-bio-genie/bin/uv
   (官方 GitHub 直连失败自动切换清华 PyPI 的 uv wheel,实测 18MB/约 2 秒)
2. uv python install  → $DSH_HOME/dsh-bio-genie/python/(私有 CPython 3.12)
   (官方源失败自动切换 npmmirror 的 python-build-standalone 镜像)
3. uv venv --seed     → $DSH_HOME/dsh-bio-genie/python-env/(预装 pip,方便按需补包)
4. uv pip install     → biopython + numpy + matplotlib + reportlab + pandas/scipy/seaborn/Pillow(出版级绘图栈;官方 PyPI 失败自动切换清华镜像)

R 环境(首次 bio_r 调用时惰性引导,默认不随插件加载预热)

1. 下载 R 4.6.0 安装器 → $DSH_HOME/dsh-bio-genie/r/(官方 CRAN 失败自动切清华镜像,MD5 校验)
2. 静默安装(/VERYSILENT,用户零操作)
3. Rscript install_packages.R → BiocManager 安装核心包集(DESeq2/edgeR/limma/
   fgsea/phyloseq/ggplot2/ggtree/ComplexHeatmap 等)到 r-lib/(CRAN 走清华镜像、
   Bioconductor 走官方源——清华 Bioc 镜像二进制 zip 缺失;Windows 二进制优先)
  • 网络自动适配:每个环节默认直连官方源,失败自动切换国内镜像,全程无需用户配置; 高级用户可用环境变量覆盖镜像地址(DSH_BIO_UV_BASE / DSH_BIO_PYTHON_MIRROR / DSH_BIO_PYPI_INDEX, 也尊重 uv 官方变量 UV_PYTHON_INSTALL_MIRROR / UV_DEFAULT_INDEX / UV_INDEX_URL); ⚠️ uv 二进制下载后一律做 SHA256 校验(官方/镜像通道均校验,校验失败拒绝执行)—— 自定义 DSH_BIO_UV_BASE 镜像需在镜像根目录提供 sha256sums.txt(与 uv 官方 release 同格式)
  • 全部产物$DSH_HOME/dsh-bio-genie/(默认 ~/.dsh/dsh-bio-genie/),删除即完全卸载
  • 不假设系统有任何 Python/uv(自举);引导失败自动回退系统 python(若有)
  • 升级插件不丢环境:环境在 DSH_HOME 私有目录,与插件本体(node_modules)分离
  • 幂等:已就绪则秒级复用;引导失败自动重试
  • 首次引导需网络;引导完成后可离线使用语义化工具

🔄 兼容性

维度要求
Node^22.19 || >=24(与 dsh 一致)
dshpeer 依赖 @deepseek-ai/dsh-tools 等为 ^0.1.0-rc.6,与 dsh 源码仓库当前构建版本匹配。若宿主 dsh 为 npm latest 旧版本(0.0.1-rc.1),可能解析出两份 dsh-tools 导致类型不匹配——建议使用与源码仓库同步构建的 dsh
平台Windows / macOS / Linux(x86_64 / arm64),按平台自动下载对应 uv/Python

🧩 开发

纯 ESM JavaScript,无构建步骤,改完即用:

git clone https://github.com/dsh-bio/dsh-bio-genie
# 直接调用引导器(首次会下载环境,约 1-2 分钟):
node --input-type=module -e "import('./src/runtime.js').then(m => m.ensureEnvironment({}))"
  • 架构设计详见 docs/ARCHITECTURE.md
  • 给 dsh agent 的使用说明书docs/agent-guide/——8 份指南(总览/工具参考/skill 导航/bio_python 编程/工作流/绘图专题/故障排查/严谨性),随插件注册为 dsh-bio-genie-guide-* 技能,agent 可随时加载
  • 加语义化工具:python/bio_ops.py 加 op + src/tools.js 加 bioTool 条目
  • 加领域 skill:skills/bio-xxx.md + src/skills.js 的 SKILL_MANIFEST
  • skill 语言标注约定:所有 skill(领域/协议/指南)开头 frontmatter 必须含 language: 字段(python/r/mixed/none),test-skills.mjs 强制校验

📄 许可证

  • dsh-bio-genie 本体:MIT License
  • Biopython:Biopython License Agreement / BSD 3-Clause(宽松,详见 THIRD_PARTY_NOTICES.md
  • numpy:BSD License
  • scipilot-figure-skill(figurelib 绘图脚本):MIT(Copyright Haojae,详见 THIRD_PARTY_NOTICES.md)
  • K-Dense scientific-agent-skills(figurelib 样式资产 + 知识型协议来源):MIT(Copyright K-Dense Inc.,详见 THIRD_PARTY_NOTICES.md)
  • R / Bioconductor 生态:GPL-2|GPL-3(R 本体)/ Artistic-2.0 / MIT / LGPL-3 / GPL-2 / AGPL-3(phyloseq)——运行时安装 + API 调用模型,零源码分发,逐包许可证清单与合规论证见 THIRD_PARTY_NOTICES.md
  • 不含 BioSQL(LGPL,刻意排除)

🙏 致谢

本项目的一切生物学计算能力都建立在 Biopython 之上 —— 感谢 biopython/biopython 项目及全体贡献者 25 年来的卓越工作:他们维护的序列分析、比对、结构生物学、系统发育等高质量实现,让"许愿式生物信息学"成为可能。Biopython 采用宽松的 Biopython License Agreement(兼容 BSD 3-Clause),允许自由复制、修改与分发,本插件因此得以安心地依赖并推广它。

出版级绘图能力(figurelib)借鉴了 Haojae/scipilot-figure-skill(MIT)的"可视化顾问"工作流与视觉自检设计,样式资产与部分知识型协议参考 K-Dense-AI/scientific-agent-skills(MIT)——一并致谢。

同时感谢 DeepSeek Harness 提供的插件化 Agent 框架,以及 numpy 社区的基础贡献。

관련 플러그인