前言¶
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 交互體驗的開發者。