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 。

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

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

小夜