dsh-skill-picker:在 DSH Web 輸入框裏可視化挑選技能

前言

DeepSeek Harness(DSH)支持通過用戶消息裏的 /技能名 手勢加載技能:發送前寫上 /kebab-case-name,框架在 agent/pre-step 階段識別並注入對應技能內容。這條路徑是官方原生能力,但 Web GUI 默認只有輸入 / 後的前綴補全——你得先記得技能名,才能打出前綴過濾。

技能裝得多了,名字和用途很容易對不上號。下面介紹社區插件 dsh-skill-picker(維護者 a735624258):在 composer 工具行右側加一個按鈕,把已安裝技能列出來,支持搜索和點選,選中後把官方 /技能名 寫進發送框,走 DSH 既有加載機制,不改 agent 側邏輯。交互思路類似 WorkBuddy 的「把技能寫進發送框」。

這是什麼

dsh-skill-picker 是 DSH Web GUI 的客戶端插件,分類爲「客戶端」。當前版本 0.2.0,許可證 MIT,GitHub 倉庫 a735624258/dsh-skill-picker,社區目錄頁 SkillHub

它只做 UI 一層:client 半註冊到 conversation.input.right 插槽,host 半提供技能列表路由;點選後通過 inputActions.setDraft 插入 /技能名,後續加載與執行完全交給 DSH 原生 SKILL_GESTURE 機制。

與官方 / 補全的關係

DSH 內置技能補全:在輸入框輸入 / 會按前綴過濾。本插件不替代它,而是補上「忘了名字也能翻到」的場景。兩者可同時使用。

官方 / 補全 dsh-skill-picker
觸發 輸入框打 / 輸入框旁按鈕
查找 前綴記憶驅動 全列表瀏覽 + 關鍵字搜索
排序 固定 最近使用置頂、常用靠前(localStorage)
描述 精簡 完整描述可見

記得技能名時,官方補全足夠快;名字記不清或想翻着選時,用本插件更順手。

核心功能

以下能力均來自插件 README 與 package.json 聲明,按 DSH 0.1.0-rc.6 API 編寫。

可視化選擇與搜索。 點擊 composer 工具行右側按鈕,彈出已安裝技能列表;可輸入關鍵字,按技能名或描述即時過濾。v0.2.0 起,在輸入框直接打 / 也會列出全部技能,並支持模糊搜索。

智能排序。 最近使用的技能置頂,常用項靠前,排序數據存於瀏覽器 localStorage。

官方數據源。 技能列表優先走宿主 connection.api.skills.list,與 DSH 內置 / 補全同一數據源,會話作用域內覆蓋用戶級 ~/.dsh/skills、項目級 <workspace>/.dsh/skills<workspace>/.agents/skills 等官方目錄。API 不可用時回退到 host 掃描路由。

零 agent 改動。 插入的是官方 /技能名 手勢,加載路徑與手寫 /技能名 相同。

主題適配。 樣式跟隨 Web UI CSS 變量,淺色/深色自適應。

架構。 純 client + host 雙半插件,無第三方運行時依賴;client 通過 esbuild 構建爲帶 __ModuleLoader__ 握手的 bundle。

安裝與啓用

插件尚未發佈到 npm(npm view dsh-skill-picker 會 404),請用 Git 克隆或 Git 依賴安裝。

# 方式一:克隆 + link(推薦)
git clone https://github.com/a735624258/dsh-skill-picker.git
dsh plugin --profile web add link:/path/to/dsh-skill-picker

# 方式二:Git 依賴直裝
dsh plugin --profile web add "github:a735624258/dsh-skill-picker"

若在 Windows PowerShell 下 dsh 因執行策略被拒,可改用:

powershell -ExecutionPolicy Bypass -Command "dsh plugin --profile web add link:C:\path\to\dsh-skill-picker"

安裝後重啓 dsh web,或刷新頁面加載新 bundle。

卸載:

dsh plugin --profile web remove dsh-skill-picker

典型用法

  1. 打開任一會話,在輸入框工具行右側找到技能選擇按鈕。
  2. 點擊彈出技能列表,可輸入關鍵字過濾。
  3. 點選目標技能,發送框自動出現 /技能名(末尾帶空格)。
  4. 繼續輸入你的話併發送;DSH 識別手勢後自動加載該技能。

示例:點選 duo-xuan-pi-gai 後,發送框變爲 /duo-xuan-pi-gai 幫我批改多選,發送後技能按指令執行。

工作原理(簡述)

[client]  按鈕  fetch('/dsh-skill-picker/skills')
                  
[host]    掃描用戶級與項目級技能目錄  返回 name + description
                  
[client]  點選  inputActions.setDraft(draft + '/技能名 ')
                  
[DSH]     agent/pre-step 識別 SKILL_GESTURE  注入 skill-invocation

host 半在 agent/pre-step 之外獨立提供列表;真正加載技能仍由 DSH 的 dsh-tool-skill 在手勢命中時完成。

適用場景與注意

適合誰。 本地或項目裏裝了多個 DSH 技能、經常記不清準確名字、希望在 Web 界面裏瀏覽描述再選用的開發者。

技能來源邊界。 當前優先官方 skills API,回退掃描覆蓋用戶級與項目級目錄;README 註明暫不掃描 ~/.agents/skillscustomSkillDirs 自定義目錄。

失敗保護。 client 在 conversation.input.right 插槽缺失時靜默跳過;host 路由對不存在目錄返回空列表,不拖垮啓動。

版本與權限。 插件以當前 dsh 進程權限運行,安裝前請查看倉庫源碼與 MIT 許可證。若 DSH 大版本更新導致 API 變化,以啓動日誌中的插件錯誤爲準;需要回退時執行上述 remove 命令即可。

開發構建。 若自行改源碼,需在倉庫內執行 npm installnpm run buildlib/client.js 爲構建產物,不可手改。

鏈接

SkillHub 是獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 生態奉行「一切皆插件」,本插件是其中面向 Web 輸入體驗的一項補充。

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

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

小夜