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