前言¶
DSH 的理念是「一切皆插件」,能力靠插件往上疊。但插件一多,問題就反過來:面對一個具體倉庫,到底該裝哪些?哪些已經沒人維護?哪些帶着生命週期安裝腳本這類供應鏈風險?靠人去 npm 逐個搜索、看 README、覈對許可證,既慢也容易漏。
dsh-smart-profile 把這個流程倒了過來:不從一份通用插件清單出發,而是從倉庫本身和當前任務出發,先檢測技術棧,再推薦能力,最後給出一份可以逐條審查、顯式批准的安裝計劃。默認一切只預覽,不寫任何東西。
這是什麼¶
dsh-smart-profile 是一個面向 DeepSeek Harness 的插件,由 Makima667 維護,許可證爲 MIT,一句話定位:項目技術棧檢測與能力推薦。
當前 package.json 中的版本爲 1.0.0,engines 要求 Node >= 20,零運行時 npm 依賴。它要解決的是「一切皆插件」生態帶來的配置空檔:不要求用戶預先了解每個插件,而是把檢測、推薦、發現、評分、預覽、批准、安裝、驗證、回滾串成一條鏈路。
核心功能¶
技術棧檢測(smart_profile_scan)¶
對項目倉庫做啓發式技術棧檢測,返回證據與置信度,而不是把每個信號都說成確定結論。檢測覆蓋包括:
- JavaScript / TypeScript / Node.js、Python、Java / Kotlin、Go、Rust、PHP、Ruby、.NET、Dart / Flutter
- 前端框架:React、Next.js、Vue、Nuxt、Svelte、Angular
- 後端框架:Express、Fastify、NestJS、FastAPI、Django、Flask、Spring Boot、Gin、Axum、Actix Web、Laravel、Symfony、Rails、Sinatra、ASP.NET Core
- 數據庫信號:PostgreSQL、MySQL、MongoDB、Redis、SQLite
- 基礎設施:Docker / Compose、Kubernetes / Helm、Terraform
- 雲與 CI:部分 AWS / Azure / Google Cloud 信號,GitHub Actions、Azure Pipelines、Google Cloud Build
- 測試工具:Playwright、Cypress、Vitest、Jest、Pytest、PHPUnit、RSpec、xUnit
- monorepo:npm / yarn / pnpm workspaces、Turborepo、Nx、Lerna
能力推薦與任務裁剪¶
smart_profile_recommend 基於檢測結果給出項目能力推薦;smart_profile_compose 面向具體任務做能力裁剪,比如只保留和「修前端 Playwright 測試」相關的部分。
候選發現與評分¶
smart_profile_discover 從公開 npm 做候選發現,只發現、不安裝。smart_profile_score 對候選打分並標記風險,1.0 的評分綜合了:
- 項目 / 能力匹配度
- 發佈新鮮度
- npm 搜索相關性(弱信號)
- 倉庫 / 許可證 / 主頁等元數據
- 依賴體積
- 生命週期安裝腳本
- DSH bundle 聲明
自動 setup 選型會直接拒絕以下候選:低於設定分數閾值、被標記 review-required、存在阻塞性的生命週期安裝腳本風險、未聲明 dsh.bundle.patch。
安裝計劃與安全寫入¶
smart_profile_install_plan 給出單個候選的精確安裝命令計劃,不執行;smart_profile_setup_plan 預覽完整 setup 計劃,也不執行。默認行爲是 preview-only:寫入 DSH profile 必須同時提供 --apply 與 --approve,只給 --approve 不會安裝任何東西。
安裝階段的流程是:
- 逐個安裝選中的包
- 每次安裝後用 DSH
--dump-config驗證 - 驗證失敗時移除當前包
- 本次運行早前安裝的包按逆序回滾
回滾是盡力而爲,主機或包管理器層面的故障仍可能中斷回滾過程。若某個包已存在於組合 profile 中,setup 不改動它。原始組合配置不會被持久化,操作結果只返回哈希。
smart_profile_compat 輸出本地的 DSH 兼容性策略與矩陣報告。compatibility.json 區分三種狀態:ci-target(倉庫工作流嘗試測試的通道)、verified(保留給有證據支撐的組合)、unknown(矩陣中未記錄的目標)。聲明過的目標不會自動標記爲 verified。倉庫 CI 針對 Node 20 / 22 / 24 與 @deepseek-ai/dsh@next 測試 npm 包形態、本地 bundle 安裝和 --dump-config。
本地 Web UI¶
npx dsh-smart-profile web . --port 4173
這條命令在本地起一個只讀儀表盤:默認綁定 127.0.0.1,展示檢測到的技術棧和能力推薦,支持任務組合,不提供安裝 / 移除端點,對倉庫提供的文本做轉義,並啓用了 CSP。
另外需要說明一點設計取捨:這個插件刻意不給 Harness 模型自動安裝工具,profile 寫入始終是顯式 CLI 操作,模型調用無法靜默安裝主機級代碼。
安裝與啓用¶
把插件裝進一個 DSH profile:
npx --yes @deepseek-ai/dsh@next plugin --profile web add dsh-smart-profile@latest
命令中的 web 是 profile 名稱,可以換成你自己的。也可以用插件自帶的輔助命令完成同樣的事:
npx dsh-smart-profile install --profile web
安裝前如需確認當前發佈的版本號,可運行:
npm view dsh-smart-profile version
資料中可確認的 package.json 版本爲 1.0.0,npm 上的最新發布版本以上面這條命令的輸出爲準。
典型用法¶
先看幫助,再對當前目錄做一次技術棧檢測:
npx dsh-smart-profile --help
npx dsh-smart-profile scan .
最常見的入口是一條命令預覽完整 setup 計劃:
npx dsh-smart-profile setup .
把計劃裁剪到具體任務:
npx dsh-smart-profile setup . --task "fix the frontend Playwright tests"
換一個目標 profile 或調整候選分數閾值:
npx dsh-smart-profile setup . --profile web --min-score 75
審查完計劃後,顯式應用:
npx dsh-smart-profile setup . --profile web --apply --approve
兩個寫開關是刻意分開的:--approve 不帶 --apply 仍然什麼都不會裝。
如果不想走整條 setup 鏈路,也可以單獨調用各環節:
npx dsh-smart-profile recommend .
npx dsh-smart-profile compose "debug the database migration" .
npx dsh-smart-profile discover .
npx dsh-smart-profile score .
npx dsh-smart-profile compat next
對單個包做手動安全流程——先生成計劃,再批准執行:
npx dsh-smart-profile plan dsh-example@1.2.3 --profile web
npx dsh-smart-profile apply dsh-example@1.2.3 --profile web --approve
適用場景與注意¶
適合的人羣:同時維護多個技術棧不同的倉庫、希望 DSH 配置跟着項目走的開發者;想借助模型自動化選型、但要求每一步可審查、可回滾的團隊。
使用前有幾點需要清楚:
- 默認 preview-only,所有寫入都需要同時給出
--apply與--approve - 評分是參考性質,高分不是安全保證,敏感環境應審查源碼
- 回滾是盡力而爲,主機或包管理器故障可能中斷回滾過程
compatibility.json中聲明的目標不會自動標記爲 verified,具體矩陣內容以倉庫中的文件爲準- 插件以當前 dsh 進程的權限運行,安裝前應自行檢查源碼與許可證(本項目爲 MIT)
結尾¶
dsh-smart-profile 做的事情不復雜:讓插件選型從倉庫和任務出發,每一步可解釋、可預覽、可回滾。如果你維護的項目技術棧經常變,或者不放心讓模型自己決定裝什麼,這套「默認只預覽、顯式批准才寫入」的流程值得試一次。
- 目錄頁:https://www.skillhub.cn/plugins/Makima667/dsh-smart-profile
- GitHub:https://github.com/Makima667/dsh-smart-profile