前言¶
在 DeepSeek Harness(DSH)的插件开发中,直接将庞大的技能库(例如 986 个生物技能)打包成扁平的会话目录(约 230KB,60k-80k tokens)会导致性能下降。dsh-bioinf 作为一个插件,旨在解决这个问题:它用基于搜索的路由机制替代静态目录,并提供远程执行与场景化引导。
功能概览¶
该插件提供了以下核心能力:
-
skill_search 工具
实现了 BM25 风格的评分算法(权重:名称 ×6,类别 ×2,whenToUse ×1.5,描述 ×1),支持 CJK 双字支持。查询整个库的时间小于 10 毫秒,返回匹配的技能名称与类别。 -
skill_categories 工具
提供类别树结构,包含 15 个顶级分类及其子分类和技能数量,支持用户按领域浏览。 -
bioinf-library 技能提供者
将 986 个生物技能注册到ctx.skills中,使原生skill工具能够按需加载技能内容。技能名称标准化为 kebab-case,并过滤了 HTML 产地注释,保证描述的完整性。 -
dsh-bioinf-anysearch
注册一个WebSearchProvider到ctx.web,为原生web_search工具提供支持。该组件独立存在,因为无头配置文件不挂载 web 接口。 -
remote_exec 工具(可选)
支持在配置的 GPU/训练服务器上执行 SSH 操作,包括nvidia-smi查看状态、使用nohup启动训练、日志轮询和预测任务。仅在remote.host和remote.user配置项存在时生效。 -
Guidance 提示部分
提供路由规则(例如“绝不猜测技能名称”)以及三种场景剧本:A. 文献深度审阅(生成可证伪假设),B. 生物数据检索/分析,C. 远程训练/预测。
安装与启用¶
该插件作为 Cordis patch 插件工作,目前未提供单一的 npm/pnpm install 命令。启用过程需要手动编辑配置文件并构建库文件。
- 配置工具技能
确保在@deepseek-ai/dsh-tool-skill的配置中关闭 catalog:
config:
catalog: off
- 编辑 cordis.patch.yml
在cordis.patch.yml中插入bioinf和bioinf-anysearch插件:
- 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: '...'
- 构建库文件
在项目根目录下运行构建命令以生成lib/目录:
pnpm run build:lib:host
索引格式¶
skillsIndexFile 必须指向一个有效的 JSON 数组。索引文件定义了技能的元数据,示例格式如下:
[
{
"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"
}
]
注意事项¶
- Catalog 依赖:必须确保
tool-skill的配置中catalog: off已开启。 - 远程执行条件:
remote_exec工具仅在配置了remote.host和remote.user时可用。 - 文件格式:
skillsIndexFile指向的文件必须是有效的 JSON 数组,否则插件可能无法正常工作。 - 测试环境:运行单元测试需要安装
vitest,测试文件位于packages/examples/dsh-bioinf/tests/。
结语¶
dsh-bioinf 通过搜索路由和按需加载机制,解决了生物信息学场景下大型技能库的维护难题。结合远程执行工具,它能够支持从文献分析到服务器训练的全流程自动化。