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

生信技能路由 gsh150801/dsh-bioinf-routed

DeepSeek Harness
gsh15080166 天前有提交已提供中文文档扫描:含敏感能力

按需检索 986 个生信技能,省下大量提示词开销

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add gsh150801/dsh-bioinf-routed
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · skill
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 66 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 37 处,展示前 29 条)
  • 发起网络请求
    src/biohttp.ts:132
    async fetch(url: string, init?: RequestInit & { cacheTtlMs?: number; signal?: AbortSignal }): Promise<BioHttpResponse> {
  • 发起网络请求
    src/biohttp.ts:199
    const response = await this.fetch(url, opts)
  • 发起网络请求
    src/biohttp.ts:207
    const response = await this.fetch(url, {
  • 写入本地文件
    src/debate.ts:466
    await mkdir(this.dir, { recursive: true })
  • 写入本地文件
    src/debate.ts:467
    await writeFile(this.pathFor(t.id), JSON.stringify(t, null, 1), 'utf8')
  • 读取本地文件
    src/debate.ts:475
    const parsed = JSON.parse(await readFile(this.pathFor(id), 'utf8')) as Tournament
  • 读取本地文件
    src/debate.ts:486
    names = await readdir(this.dir)
  • 读取本地文件
    src/debate.ts:492
    return JSON.parse(await readFile(join(this.dir, name), 'utf8')) as Tournament
  • 写入本地文件
    src/debate.ts:649
    await writeFile(savedPath, markdown, 'utf8')
  • 读取本地文件
    src/index.ts:245
    text = await readFile(row.path, 'utf8')
  • 读取密钥环境变量
    src/index.ts:433
    const ncbi = { apiKey: config.queries.pubmedApiKey !== '' ? config.queries.pubmedApiKey : (process.env.PUBMED_API_KEY ?? process.env.NCBI_API_KEY ?? '
  • 读取密钥环境变量
    src/index.ts:434
    const patentsApiKey = config.queries.patentsviewApiKey !== '' ? config.queries.patentsviewApiKey : (process.env.PATENTSVIEW_API_KEY ?? '')
  • 读取本地文件
    src/knowhow.ts:119
    const entries = readdirSync(dir)
  • 读取本地文件
    src/knowhow.ts:123
    const text = readFileSync(join(dir, entry), 'utf8')
  • 发起网络请求
    src/queries.ts:265
    const response = await client.fetch(url.toString())
  • 执行外部命令固定命令
    src/remote.ts:47
    execFile('ssh', args, { timeout: Math.min(timeoutSec, 600) * 1000, maxBuffer: 32 * 1024 * 1024, windowsHide: true }, (error, stdout, stderr) => {
  • 读取本地文件
    src/report-plugin.ts:113
    const parsed = JSON.parse(await readFile(join(dir, MANIFEST_FILE), 'utf8')) as ReportMeta[]
  • 写入本地文件
    src/report-plugin.ts:121
    await mkdir(dir, { recursive: true })
  • 写入本地文件
    src/report-plugin.ts:122
    await writeFile(join(dir, MANIFEST_FILE), JSON.stringify(entries, null, 1), 'utf8')
  • 执行外部命令来自配置/变量
    src/report-plugin.ts:144
    execFile(python, ['-c', script, xlsxPath], { timeout: 60_000, maxBuffer: 16 * 1024 * 1024, windowsHide: true }, (error, stdout, stderr) => {
  • 读取本地文件
    src/report-plugin.ts:182
    content = await readFile(source)
  • 写入本地文件
    src/report-plugin.ts:191
    await writeFile(join(targetDir, safeName), content)
  • 写入本地文件
    src/report-plugin.ts:199
    await writeFile(join(targetDir, viewName), reportPageShell(`${reportTitle} · ${basename(source)}`, renderTableHtml(table), metaLine), 'utf8')
  • 写入本地文件
    src/report-plugin.ts:208
    await writeFile(join(targetDir, safeName), content)
  • 写入本地文件
    src/report-plugin.ts:211
    await writeFile(join(targetDir, viewName), reportPageShell(`${reportTitle} · ${basename(source)}(第 1 个工作表)`, renderTableHtml(table), metaLine), 'utf8'
  • 读取本地文件
    src/report-plugin.ts:275
    const text = await readFile(options.notebookPath.trim(), 'utf8')
  • 读取本地文件
    src/report-plugin.ts:369
    buffer = await readFile(filePath)
  • 发起网络请求
    src/router.ts:235
    const res = await fetch(endpoint, {
  • 读取本地文件
    src/search.ts:213
    const index = new SkillSearchIndex(parseIndexJson(readFileSync(path, 'utf8')))
扫描于 2026/11/5(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-skill@deepseek-ai/dsh-tools@deepseek-ai/dsh-web@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 检索986个生信技能
  • 节省提示词开销

README

由 DeepSeek 最新模型翻译生成
dsh-bioinf 面向 DeepSeek Harness 的生信技能路由插件。 它解决一个核心问题:一个整理好的 986 个生信技能的库,无法以扁平目录的形式发布到每个会话(否则每个会话会多出约 230 KB / 60–80k tokens 的提示词开销)。本插件用基于检索的路由取代全量目录: | 组件 | 作用 | | skill_search 工具 | BM25 式打分(idf 加权字段:名称 ×6、分类 ×2、whenToUse ×1.5、描述 ×1),支持 CJK 双字切分——中英文查询都能用。返回按精确名称 + 分类的 top-k 匹配。全库单次查询 <10 ms。 | | skill_categories 工具 | 分类树(15 个顶级分类、计数、子分类),用于领域浏览。 | | bioinf-library 技能提供者 | 把全部 986 个技能注册进 ctx.skills,让原生 skill 工具按需加载正文(名称已规范为 kebab-case;剥离 HTML 版权注释;保证字段有描述)。 | | dsh-bioinf-anysearch(独立插件行) | 把 [anysearch] 的 WebSearchProvider 注册进 ctx.web,驱动原生 web_search 工具。单独成行是因为 headless 配置不挂载 web seam。
展开完整文档(README 剩余 1 节)
dsh-bioinf

面向 DeepSeek Harness 的生信技能路由插件。

它解决一个核心问题:一个整理好的 986 个生信技能的库,无法以扁平目录的形式发布到每个会话(否则每个会话会多出约 230 KB / 60–80k tokens 的提示词开销)。本插件用基于检索的路由取代全量目录:

| 组件 | 作用 |
| skill_search 工具 | BM25 式打分(idf 加权字段:名称 ×6、分类 ×2、whenToUse ×1.5、描述 ×1),支持 CJK 双字切分——中英文查询都能用。返回按精确名称 + 分类的 top-k 匹配。全库单次查询 <10 ms。 |
| skill_categories 工具 | 分类树(15 个顶级分类、计数、子分类),用于领域浏览。 |
| bioinf-library 技能提供者 | 把全部 986 个技能注册进 ctx.skills,让原生 skill 工具按需加载正文(名称已规范为 kebab-case;剥离 HTML 版权注释;保证字段有描述)。 |
| dsh-bioinf-anysearch(独立插件行) | 把 [anysearch] 的 WebSearchProvider 注册进 ctx.web,驱动原生 web_search 工具。单独成行是因为 headless 配置不挂载 web seam。 |
| remote_exec 工具(可选启用) | 在配置好的 GPU/训练服务器上执行 SSH 命令:nvidia-smi、nohup 训练、日志轮询、预测。仅在设置了 remote.host/remote.user 时注册。 |
| 指引提示词段 | 路由规则("绝不猜测技能名")+ 三个场景剧本:(A) 文献深度综述并产出可证伪假说、(B) 生信数据检索/分析、(C) 远程训练/预测。 |

用法

与 @deepseek-ai/dsh-tool-skill 的 catalog: off 配置搭配使用(参见 ~/.dsh/profiles/bioinf/cordis.patch.yml)。

- insert:
- id: bioinf
name: 'file:///D:/projs/bioinf_agent/deepseek-harness/packages/examples/dsh-bioinf/lib/index.js'
config:
skillsIndexFile: 'D:/projs/bioinf_agent/skills_meta/_dsh_index.json'
- id: bioinf-anysearch
name: 'file:///D:/projs/bioinf_agent/deepseek-harness/packages/examples/dsh-bioinf/lib/anysearch-plugin.js'
config:
apiKey: '...'
- id: tool-skill
name: '@deepseek-ai/dsh-tool-skill'
config:
catalog: off

索引格式

skillsIndexFile 指向一个 JSON 数组(构建脚本:D:/projs/bioinf_agent/tools_scan/build_index.py,清单生成:validate_skills.py):

[{"name":"scanpy","dir":"scanpy","cat1":"细胞组学与组学整合场景","cat2":"单细胞与转录组分析",
"cat3":"scanpy","description":"...","whenToUse":"...","requirements":["pip install scanpy"],
"hasScripts":false,"nScripts":0,"bodyChars":1234,"path":"D:/.../scanpy/SKILL.md"}]

开发

pnpm run build:lib:host # 重建 lib/(tsc 项目图谱 + tsdown)
pnpm exec vitest run packages/examples/dsh-bioinf/tests/

单元测试套件(36 个用例,无需启动 harness 上下文):bioinf.spec.ts(索引/分词/正文提取/anysearch)、 scenarios.spec.ts(场景 A 文献→假说路由 + skill 加载链路;场景 B 数据源路由 + 分类树 + ssh 参数构建)、 perf.spec.ts(基于测量的护栏:每步模型可见负载、冷/缓存索引加载)。

本包遵循仓库约定:tsconfig.json 位于 tsc -b 图谱中(被根目录 tsconfig.host.json 引用),并提供本地 tsdown.config.ts,入口为 index、anysearch-plugin、search、anysearch。

二期新增:一手数据 / 证据核验 / 假说锦标赛 / 报告站点

- 专用查询组(配置 queryTools:true):pubmed_search · europepmc_search · arxiv_search · trial_search · patent_search · gds_geo_search · opentargets_query。
全部经 src/biohttp.ts 统一限速/重试/缓存(按 host 令牌桶,arXiv 自动保持 ≥3s 间隔, NCBI 读取 PUBMED_API_KEY/CONTACT_EMAIL 环境)。
- 证据核验组(evidenceTools:true,源码 src/evidence.ts):doi_verify / pmid_verify(带撤稿与 Expression-of-Concern 过滤)/ clinical_trial_status / uniprot_verify / geo_accession_verify / sra_accession_verify / claim_audit 批量审计并输出 markdown 判定矩阵——终端交付前的强制闸门。
- 假说锦标赛(debateTools:true,src/debate.ts):tournament_start → tournament_step×N → tournament_report;红方审查 + 配对辩论 + Elo 排名,状态持久化到 ~/.dsh/science-tournaments/。LLM 由 llmRouter 提供。
- 报告站点(独立插件行 report-plugin,需 webServer seam):在 dsh 同端口挂载
/reports/;report_publish(title, markdown, notebookPath?) 将 GFM 渲染成
自包含 HTML(本地渲染,无 CDN),.ipynb 转为内嵌图片的浏览页并入画廊。

测试:vitest run packages/examples/dsh-bioinf-routed/tests/。
预览分享卡片长什么样 ↓gsh150801/dsh-bioinf-routed
分享 · DeepSeek Harness Hub
gsh150801/dsh-bioinf-routed

按需检索 986 个生信技能,省下大量提示词开销

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部