dsh-plugin-desktop:DSH-desktop 官方伴生插件

前言

DSH(智能體開發框架)的理念是「一切皆插件」。dsh-plugin-desktop 是 DSH-desktop 的官方伴生插件。原版桌面端保持極簡;安裝此插件才解鎖增強功能。它運行在 dsh 服務進程內,一方面把桌面端需要的內部狀態以穩定 HTTP 端點暴露出來,替代了過去通過嗅探 webRequest 或解壓文件估算用量的 hack 做法,另一方面往 Web UI 注入增強的頁內右鍵菜單與「置頂會話」擴展。

核心功能

該插件提供以下主要能力:

  • 桌面端狀態暴露:通過 HTTP 端點直接讀取當前會話和用量數據。
  • 全局快捷輸入:提供統一的發送通道,用於外部程序向 DSH 發送 prompt。
  • Web UI 增強:爲 Web UI 注入完整的右鍵菜單(會話/工作區/正文/鏈接/輸入框)及「置頂會話」功能。
  • 終端橋接:提供 /api/shell 端點,用於 PTY 終端交互。

安裝

官方推薦使用命令行安裝:

dsh plugin add github:Quan-Robin/dsh-plugin-desktop

DSH-desktop-for-Linux 托盤或設置頁也提供「安裝伴生插件」的一鍵安裝功能。若需手動安裝,需將目錄拷貝至 $DSH_HOME/profiles/web/node_modules/dsh-plugin-desktop/,並在 $DSH_HOME/profiles/web/cordis.patch.yml 中註冊:

- insert:
    - id: dsh-plugin-desktop
      name: dsh-plugin-desktop
      inject:
        - webServer
        - apiProxy

典型用法

安裝後,桌面端會持續嗅探 /api/session.* 請求以保持同步。以下是幾個核心 API 的使用示例:

  • 檢查當前會話狀態:
    curl http://127.0.0.1:3080/api/state
返回示例包含 `currentSessionId`, `turn` 狀態等。
  • 發送全局快捷輸入:
    # POST /api/prompt { sessionId?, text }
    # sessionId 缺省用當前會話
  • 查詢用量數據:
    curl http://127.0.0.1:3080/api/usage
返回聚合後的會話用量信息。
  • 設置當前會話:
    # POST /api/set-session { sessionId }
    # 用於桌面殼在 Web UI 切換會話時調用

技術細節

  • 零依賴:插件本身不依賴 npm 包,桌面端直接拷貝目錄安裝即可。
  • 適配機制:插件 API 尚未文檔化,交互集中在 lib/index.js 中的三個 ADAPTER 函數(EVENT_BUS_SHAPES、ROUTER_SHAPES、PROMPT_SHAPES)。適配真實 dsh 時只需修改這三個列表。
  • 實時同步:桌面端會持續嗅探 /api/session.* 請求,確保 UI 導航導致的當前會話變化能被正確同步。

適用場景

適合需要深度集成 DSH 狀態管理、構建桌面級快捷輸入通道或需要增強 Web UI 交互體驗的開發者。

參考資料

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

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

小夜