前言¶
在 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 。