前言¶
在 DeepSeek Harness(DSH)裏做智能體或會話式開發時,經常需要對照真機或模擬器上的界面:截圖進對話、點按驗證、拉起 AVD。把 scrcpy、adb、Xcode 模擬器拆到多個終端,和 Web 會話之間來回切換,上下文容易斷。社區插件 dsh-device-deck(維護者 zhouatie,分類:客戶端)把設備列表、Android 鏡像、模擬器管理與少量 Agent 工具收到 Session 頂欄和浮動鏡像裏,在同一套 Harness Web UI 中完成上述操作。插件當前爲 alpha(0.3.0);README 寫明 Android 鏡像可用,iOS / Web 頁面鏡像與 AI E2E 測試在路線圖上且尚未實現。
這是什麼¶
Device Deck 是帶 Host 與 Client 兩半的 DSH 插件:description 爲 “Device mirror, emulator manager, and agent tools for DeepSeek Harness.” Host 註冊 /api/device-deck/* 路由並驅動本機 adb、xcrun 等;Client 注入會話頭部,渲染設備菜單與鏡像浮層。代碼採用 MIT 許可證;包內捆綁 scrcpy-server 3.3.3(Apache-2.0),無需單獨安裝 scrcpy 客戶端。插件不依賴雲服務,設備命令走本機工具鏈;截圖僅在用戶通過輸入框 + 菜單加入 composer 併發送時進入當前聊天。
目錄頁:https://www.skillhub.cn/plugins/zhouatie/dsh-device-deck
源碼:https://github.com/zhouatie/dsh-device-deck
核心功能(當前已實現)¶
下面按 README「Available now」歸納;路線圖中的 Web 預覽、模擬器鏡像、E2E、錄製回放、多設備 deck 均不算已實現能力。
會話頭部的設備菜單¶
Session 右上角設備圖標一鍵展開:運行中的設備、已停止的 Android AVD、iOS 模擬器列表,並支持無線 ADB 配對。
Android 鏡像與控制¶
- 使用 scrcpy 推流,頁面內用 WebCodecs 解碼視頻。
- 鏡像打開時可通過 scrcpy 控制通道關閉物理屏,關閉鏡像後恢復(部分 OEM 可能不生效)。
- 支持點擊、滑動、返回、Home、多任務、文本輸入、打開 URL / deep link。
- 快捷鍵 Ctrl+M 打開或關閉鏡像。
模擬器與真機管理¶
- Android AVD:列出、無頭啓動、停止,就緒後打開鏡像。
- iOS 模擬器:列出、啓動/關閉、打開 Simulator 應用;不提供模擬器畫面鏡像。
- iOS 真機:用
devicectl列出已連接 iPhone/iPad;通過 WebDriverAgent MJPEG 鏡像畫面,支持點按、滑動、輸入、Home、截圖;首次啓動會構建 WebDriverAgent(約 2–5 分鐘,緩存於~/.dsh/device-deck/wda)。
連接、文件與截圖¶
- 無線 ADB:填寫
host或host:port(僅 host 時默認端口5555)。 - 文件傳輸:從本機選文件,經
adb push推到所選設備的/sdcard/Download/<name>(單次一個文件,最大 2 GB)。 - 截圖:保存當前畫面;最新截圖可瀏覽;輸入框
+菜單選 Device screenshot 將選中截圖加入 composer。 - Agent 工具:
device_screenshot將當前選中的截圖作爲圖片返回給智能體。
截圖目錄:~/.dsh/device-deck/screenshots(每設備保留最新 30 張,已選中的截圖不會被自動刪除)。上傳臨時文件在 ~/.dsh/device-deck/uploads。
環境與依賴¶
安裝前請對照 README「Requirements」:
- 支持插件的 DeepSeek Harness 實例。
- Host 側 Node.js ≥ 20(
package.json中engines.node)。 - Android:adb(platform-tools)、管理 AVD 時需 Android SDK emulator。
- iOS 模擬器:macOS 上 Xcode 命令行工具。
- iOS 真機:macOS、帶 iOS SDK 的 Xcode、iproxy(libimobiledevice)、設備開啓開發者模式;Xcode 需登錄 Apple ID 做自動簽名(免費賬號簽名約 7 天有效,過期需重新構建 WDA)。
限制摘要:鏡像同時僅一臺設備;視頻 H.264 only(H.265 設備報錯);Android 文本輸入經 adb shell input text,僅 ASCII;iOS 真機鏡像時設備須解鎖並保持喚醒;iOS 真機無法像 Android 那樣關物理屏推流。
安裝與啓用¶
官方 README 採用本地目錄安裝(bundle 鏈接到該文件夾,移動或刪除目錄會導致插件失效)。步驟如下。
- 獲取源碼並進入目錄:
git clone https://github.com/zhouatie/dsh-device-deck.git
cd dsh-device-deck
- 安裝依賴:
pnpm install
-
在 Harness 中安裝該文件夾爲 bundle:通過 Settings → Plugins,或使用插件管理器指定該目錄的絕對路徑。
-
刷新一次 Harness Web 頁面。
依賴變更後需在同一目錄再次執行 pnpm install。開發自檢可運行:
pnpm check
(對 index.js 與 client.js 做 node --check。)
插件以當前 DSH 進程權限運行,可調用本機 adb、xcrun 並讀寫 ~/.dsh/device-deck/。安裝前應自行審閱源碼與 MIT / 捆綁 scrcpy 的許可證條款。
典型用法¶
- 打開一個 Session。
- 點擊 Session 頭部右上角的設備圖標。
- 選擇已運行的 Android 設備打開鏡像,或啓動處於停止狀態的 AVD。
- 鏡像左側欄:返回、Home、多任務、文本、鏈接、截圖、歷史(有截圖後出現)、重連、關閉;附件圖標可選文件推送到設備。
- 標題欄:設備切換、連接狀態、拖拽手柄。
- 若要把畫面交給模型:打開輸入框
+→ Device screenshot → 選擇截圖 → 可在 composer 中補充文字後發送。
無線 ADB 示例(在插件提供的連接輸入中使用):
192.168.1.102:5555
架構要點¶
Host(index.js)爲每臺 Android 設備維護 scrcpy 會話,視頻經同源分塊 HTTP 傳到瀏覽器;Client(client.js)負責頭部菜單與 WebCodecs 解碼渲染。iOS 真機路徑由 Host 構建/啓動 WebDriverAgent,iproxy 轉發端口並中繼 MJPEG,輸入走 WDA HTTP API。捆綁的 bin/scrcpy-server 版本爲 3.3.3。
適用場景與注意¶
- 適合:已在 DSH 會話裏做 Android / iOS 真機聯調、需要把設備截圖餵給 Agent、或在 Web UI 內管理 AVD / 模擬器而不必頻繁切終端的開發者。
- 不適合:依賴路線圖中尚未交付的 Web 頁面遙控、iOS 模擬器畫面鏡像、或多設備同屏;需要非 ASCII 輸入或 H.265 推流的場景需另尋方案。
- 生態說明:DSH 奉行「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文安裝步驟以 GitHub README 爲準。
結尾¶
dsh-device-deck 把設備鏡像、模擬器管理和 device_screenshot 工具收進 Harness 會話界面,減少 adb / scrcpy / 模擬器與聊天窗口之間的切換。使用前請確認 Node、SDK 與平臺依賴齊全,並知曉 alpha 版本與 README「Limitations」中的約束。