dsh-research-suite:把科研全流程做成可自动接管的 DSH 插件

前言

在 DSH 里做科研任务,常见写法是装一堆技能,然后要求模型「先读哪个技能再用哪个」。问题不在缺技能:同一个任务往往有三到八个技能都能做,各有长处。但大多数插件的处理方式是选定一个「首选技能」,把技能名交给模型,让它自己去读那份技能原文再发挥。结果是机械单选丢掉了别人的长处、技能原文照读会漏掉判据和阈值、以及把组合责任又踢回给了模型。

dsh-research-suite 走的是另一条路。它是维护者 xuzhecomeon 发布的 DeepSeek Harness(DSH)插件,面向临床科研全流程:写作、润色、绘图、统计、科研思路、审稿、PPT、文献、数据库取数、期刊格式。装进 DSH 之后它自动接管科研任务,没有界面、没有按钮,也不需要用户手动挑技能。下面按「它解决什么问题、怎么实现、怎么装、怎么用、注意什么」来讲。

这是什么

一句话定位:把 592 个科研源技能逐条判优劣,融合成 10 个能力域、103 张能力卡;当模型识别到科研诉求时,自动走能力卡协议执行,最后用门禁做机械自检。

基本属性(来自仓库 README 与 package.json):

  • 包名 dsh-research-suite,版本 3.0.1,许可证 MIT
  • 仓库 xuzhecomeon/dsh-research-suite,分类「工作流」
  • 实测 DSH:0.2.1-rc.5、0.2.2-rc.1
  • 运行环境:Node ^22.19.0 || >=24.0.0,DSH >=0.2.0-0 <0.3.0
  • 自包含:592 个源技能全文加技能自带的 references/scripts/templates 资产随包分发,运行时不读任何外部技能目录

它解决的是「同一个任务多技能竞争时,模型该用谁的哪一招」。做法不是返回一张技能名清单,而是返回一条已经组合好、带阈值和判据的协议。

能力卡替代技能路由器

插件里的核心概念是能力卡(capability)。一张能力卡对应一件可独立验收的事,比如「给中文稿去 AI 味并保持字数」「做倾向评分匹配并出 Love plot」。卡里把该任务的所有竞争技能拆成三部分:best_at 说明它最擅长哪一招,limits 写明它明确不做哪些,take 是从该技能搬进协议的具体规则、阈值和模板。然后合成为一条融合协议,每一步都标注「取自谁、为什么取它、放弃了谁、为什么放弃」。

验收判据是硬的:读完一张能力卡,不打开任何原始技能原文也能把这件事做完。原文保留在包内作为深读层,用途是查细节,不是照做。

592 个源技能全部逐条判定过,判定结果写在 data/ledger/<domain>.json:fused(融进哪张卡的哪一步)、index-only(仅编目不产卡)、deprecated(明确不用)、out-of-scope(不属于科研)。这条「全部研究过、只留最好的」的说法因此可审计:

node scripts/verify-ledger.mjs all

这条命令机械核对覆盖度,并检查每条 fused 是真的属于它声称的那张卡。

除正文外,技能自带资产也随包:451 个技能带来 3924 个文件(约 29 MB)的 references/、scripts/、templates/,放在 knowledge/skills/<域>/<slug>__assets/。另有 9 份规范文档在 references/ 下,例如中华医学会格式、中文语言风格与好句语料库、Elsevier 英文语言标准等。

覆盖的 10 个能力域

域 源技能数 覆盖内容
writing 66 按论文类型与章节切分(原创/综述/病例报告/标书等)
polish 12 语体、去 AI 味、降重、审校、Word 精修报告
figures 36 数据图、统计图、机制图、示意图、组合排版
stats 31 描述、比较、回归、生存、预测模型、PSM、MR、Meta、缺失数据、样本量
ideation 39 选题、查新、假说、标书、伦理
review 21 自审、审稿意见、修回、rebuttal、回复信
slides 37 汇报型、讲课型、答辩型、组会型、海报
literature 26 检索式、筛选、精读、证据表、查全查准
format 51 投稿格式、参考文献、图表规范、投稿包
data 40 数据库与组学数据:GEO / TCGA / dbGaP / 基因型与变异库、组学数据获取与整理

合计 592 个源技能、103 张能力卡。另有一个 toolbox 索引桶,收 233 个工具类技能,只进 research_catalog 检索和 research_kb_read 深读,不产能力卡——插件作者的判断是「工具是手段,不是用户要办的一件事」。

自动接管怎么实现

没有 UI、没有按钮。由三部分拼起来。

1、策略段注入。lib/prompt.js 通过 buildPolicy(core) 生成名为 research-suite/policy 的文本,lib/index.js 用 systemPrompt.section({ name, order, text: () => buildPolicy(core) }) 注册,排序值 order: 650,落在「团队策略之后、工具说明之前」。策略规定:识别到科研诉求 → 先调 research_playbook → 按能力卡协议执行 → 需要细节再深读 → 交付前跑 research_gate。

2、11 个技能(skills/):1 个入口技能加 10 个域融合 SOP(writing / polish / figures / stats / ideation / review / slides / literature / format / data)。注册时当场内联 content 字符串——这里不能传 load() 之类的惰性钩子,否则会过不了 DSH 加载期校验、技能全被丢弃,这是 v1 的原始故障。

3、7 个只读工具,给模型查能力卡、检索 592 个源技能、读原文与自带资产、读规范、做机械自检。

当 research_playbook 没有命中时,策略不拒答,而是回退到 research_catalog 再靠 research_kb_read 直读原文。

7 个只读工具

工具 作用
research_playbook 唯一入口。传用户原话,返回最匹配的 1~3 张能力卡,带融合协议、判据、交付物、建议深读
research_capability 展开完整能力卡:成员对比表、protocol、decide、gates、outputs、kb。可按 id 或按 domain 调用
research_catalog 在 592 个源技能里按名称/描述关键词检索,可加域过滤;每条命中会报告它附带多少资产
research_kb_read 读单个技能原文或 INDEX.md/FUSION.md;asset 参数可读技能自带文件如 scripts/plot.py,省略则列出该技能附带哪些资产;支持分段,越界路径直接拒绝
research_standard 列出或读取 references/ 下的 9 份规范
research_gate 门禁与机械自检。section 取 all / data / selfcheck / mutex / forbidden / hard / handoffs,text 检查全角标点、引用上标、AI 套话、绝对化措辞
research_suite_status 装载自检:版本、10 域能力卡数量、592 索引完整性、资产收录统计、references 齐备性、包根路径

安装与启用

插件已发布到 npm。最短路径是用 plugin_manager:

plugin_manager(action="install_bundle", target="dsh-research-suite@3.0.1")

等价的 CLI 命令,Windows 用 dsh.cmd,POSIX 用 dsh:

dsh.cmd plugin --profile desktop add dsh-research-suite@3.0.1
dsh plugin --profile desktop add dsh-research-suite@3.0.1

改源码调试时可以从本地目录装:

plugin_manager(action="install_bundle", target="<包的绝对目录>")

npm 不可达时从 GitHub 装:

dsh.cmd plugin --profile desktop add github:xuzhecomeon/dsh-research-suite

装完必须完全退出 DSH Desktop 再启动——关窗口不够,要退出进程,因为 loader 只在启动时读补丁层 cordis.patch.yml。

验收方式是让模型调 research_suite_status。7 个工具都在、技能计数正确、592 索引完整,才算装好。

配置

插件刻意不导出 Config。原因是 v2.0.0 上线当天因导出了一个 toJSON() 返回 JSON Schema 的 Config,被 DSH Host 的 settings 服务当作 schemastery 信封水合,schema.meta 为 undefined,直接导致 DSH Desktop 起不来。现在配置由 apply() 内的 validateConfig() 兜底校验,共 3 个键:

键 默认 作用
autoTakeover true 是否注入自动接管策略段。设为 false 后插件退化为「7 个工具 + 11 个技能」,不再自动接管
sectionOrder 650 策略段在系统提示里的排序值,合法区间 100~5000,非整数或越界会被配置校验拒绝
verbose false true 时把注册/注入失败写成 warn 日志,排查期建议开启

因此 DSH 设置面板里暂时看不到这个插件的配置项,这是刻意取舍。要改配置,在 profile 的 cordis.patch.yml 里给该 entry 写 config::

- id: dsh-research-suite
  config:
    autoTakeover: true
    sectionOrder: 650
    verbose: false

一次科研任务怎么走

以「把这篇中文稿去 AI 味,目标期刊是中华医学会系列的」为例,装好后不需要额外操作。系统提示里的策略段识别到这是科研诉求,模型会先调 research_playbook,传用户原话:

research_playbook(task="把这篇中文稿去 AI 味,目标期刊是中华医学会系列的")

返回的命中能力卡 polish.deai 里包含融合协议:第一步是立标杆,取目标期刊近三年同型范文 2~3 篇,抽取平均句长、每段句数、第一人称出现次数、动词偏好、被动句比例等语体指纹;没有指纹就改稿等于凭感觉改。卡里的判据是硬的:字数变动 ≤ ±5%、未改动任何专业术语/剂量/数值、文言虚词命中数为 0、全角标点校验通过。交付物是改好的 .docx 加一张修改说明表(原句/改句/理由/依据)。

需要确认某个阈值的来源时,可以深读源技能及其资产,不用退出当前任务:

research_kb_read(name="paper-deweight")
research_kb_read(name="paper-deweight", asset="scripts/plot.py")

第一个调用读技能正文并列出它附带了哪些资产,第二个直接读某个脚本。交付前跑一次机械自检:

research_gate(section="selfcheck")
research_gate(text="<待检查文本>")

section 用来跑门禁(数据、互斥、禁用、硬规则、交接),text 用来跑全文机械检查,覆盖标点、引用上标、AI 套话和绝对化措辞。

装完或排查时先确认装载状态:

research_suite_status()

返回版本、10 域能力卡数量、592 索引完整性、资产收录统计、references/ 齐备性、包根路径。

适用场景与注意

适合:在 DSH 里做临床科研文字与数据处理的人,希望模型按固定判据改稿、做统计、出图、写幻灯片,而不是每次临时挑技能。也适合做插件开发的人参考——它演示了如何在 DSH 里用 systemPrompt.section 注入策略、用 bundle 补丁层外带配置,以及惰性注册技能会导致的静默失败。

几点需要留意。

插件以当前 DSH 进程的权限运行,安装前应先检查源码与许可证(本项目为 MIT)再决定是否引入。它不做 UI,接管行为来自系统提示里的策略段,因此行为随 DSH 的系统提示组装方式变化。它依赖 Node ^22.19.0 || >=24.0.0 和 DSH >=0.2.0-0 <0.3.0,跨版本前先看 research_suite_status 的自检结果。仓库自述实测在 0.2.1-rc.5、0.2.2-rc.1 上通过。

toolbox 的 233 个工具类技能只供检索,不产能力卡,排查「为什么这张卡没用到某个技能」时可以从 data/ledger/<domain>.json 里查该技能的判定。

收尾

dsh-research-suite 的价值不在多装了一个技能,而是把「多个技能争一个任务」的取舍固化成了可审计的能力卡和协议,让模型有判据可依、有门禁可查。安装一条命令,验收一次 research_suite_status,就能确认装的是不是完整的 592 索引和 7 个工具。

目录页在 https://www.skillhub.cn/plugins/xuzhecomeon/dsh-research-suite ,源码与完整中文说明在 https://github.com/xuzhecomeon/dsh-research-suite 。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜