前言¶
在 DeepSeek Harness(DSH)裏做遊戲、前端或工具開發時,Agent 常會執行命令拉起 Godot 編輯器、本地 dev 服務器瀏覽器頁或預覽窗口。多屏環境下,這些窗口往往按程序自己的習慣落在任意位置,最常見的是壓在 DSH 對話窗口上,擋住繼續協作。手動拖窗口可以救急,但 Agent 每次啓動都會重來一遍。
下面介紹社區客戶端插件 dsh-test-window(維護者 Aily-DSH):在 DSH 設置裏選定一塊物理顯示器後,無論是設置頁手動啓動,還是 Agent 調用 open_test_window,新窗口都會被識別、移動並在目標屏上保持擺放。插件當前版本 0.2.0,許可證 MIT,僅支持 Windows 10/11。
這是什麼¶
dsh-test-window 解決「測試窗口開在哪塊屏」這一件事:把顯示器選擇做成持久配置,並同時覆蓋兩條入口——設置頁的「立即啓動」與 Agent 工具 open_test_window。一次選擇,兩邊共用同一套最大化、置頂與焦點策略。
分類上屬於 DSH 客戶端插件(注入設置 UI),不是純服務端擴展。社區目錄頁:skillhub.cn 插件條目;源碼與文檔:GitHub - Aily-DSH/dsh-test-window。
核心功能¶
顯示器與擺放¶
設置頁會列出真實物理屏幕(DPI 感知、物理像素、座標、工作區、是否主屏),點選即寫入配置。窗口出現後插件會移動或最大化到目標屏,並在默認 6 秒(settleMs)內持續校正位置,以應對引擎啓動後回寫窗口幾何的情況。若程序拒絕最大化,會降級爲鋪滿目標屏工作區的普通窗口,避免越界。
窗口識別¶
只認啓動後新出現的可見主窗口:啓動前已存在的窗口不會被誤抓;按進程樹歸屬分檔匹配,並每 300ms 重讀進程樹,以便 .bat、npm 等啓動器延遲拉起子進程時仍能命中。GPU 驅動或引擎創建的隱藏輔助窗口(如 Godot 4 在 NVIDIA 下的 NVOpenGLPbuffer)以及控制台黑框不會被當成測試目標。
啓動體驗¶
程序在「創建即隱藏」的新控制台裏啓動(CREATE_NEW_CONSOLE + SW_HIDE),主屏不會閃控制台黑框,.bat 中的 timeout / pause 仍可用。焦點策略三檔:never / idle / always,默認 idle——你在打字、拖動或開着右鍵菜單時,新窗口只擺位、不搶前臺;檢測到鼠標按住、窗口正在移動/縮放或菜單打開時,會暫停位置校正。窗口被程序銷燬重建時,插件會跟蹤新窗口而不是直接報「窗口已關閉」。
Agent 與回報¶
註冊工具 open_test_window,並在會話系統提示中引導 Agent 用該工具開窗口。返回結構包含窗口矩形、是否在目標屏內、是否用戶拖動、焦點是否給予等字段;窗口被關掉返回 window-closed,啓動失敗返回 spawn-failed / command-failed(含退出碼)。HTTP 路由僅接受迴環地址。
環境要求¶
- Windows 10/11(依賴 PowerShell 與 Win32 窗口 API;macOS / Linux 不支持)
- PowerShell 5.1+(系統自帶)
- DeepSeek Harness >= 0.2.1-rc.2
- Node.js ^22.19.0 || >=24.0.0
安裝與啓用¶
在 DSH CLI 所在目錄執行官方安裝命令(資料原文如下):
cd "/d/Program Files/DeepSeek Harness/resources/runtime/cli/bin"
./dsh.cmd plugin --profile desktop add "git+https://github.com/Aily-DSH/dsh-test-window.git"
本地開發時可改用 file: 路徑安裝。裝完後重啓一次 DeepSeek Harness 客戶端(宿主半與注入清單在啓動時計算),再打開 設置 → 測試窗口。
卸載:
dsh plugin --profile desktop remove dsh-test-window
可選刪除配置目錄 ~/.dsh/dsh-test-window/。
典型用法¶
設置頁¶
- 打開 設置 → 測試窗口,從列表選擇顯示器(例如
2 · 1920×1080 @ 640,-1080)。 - 按需勾選「最大化」「置頂」,選擇焦點策略(默認「空閒時才切到前臺」),保存。
- 在「立即啓動命令」填寫例如
godot --path D:/GC/MyGame並啓動,確認窗口落在目標屏。 - 之後 Agent 通過
open_test_window拉起窗口時會沿用該配置,除非工具參數顯式覆蓋。
Agent 工具參數¶
| 參數 | 說明 |
|---|---|
command(必填) |
要執行的命令,如 godot --path D:/GC/MyGame、npm run dev |
cwd |
工作目錄 |
displayIndex |
覆蓋設置中的顯示器序號(從 1 起,與設置頁一致) |
titleContains |
窗口標題子串(瀏覽器等由別的進程持有時常用) |
maximize / topMost |
覆蓋最大化、置頂 |
focus |
never / idle / always |
timeoutMs / settleMs |
等待窗口出現與後續校正的時長 |
配置文件路徑:~/.dsh/dsh-test-window/config.json。常用字段包括 displayIndex(0 表示未選)、maximize(默認 true)、topMost(默認 false)、focus(默認 idle)、timeoutMs(默認 20000)、settleMs(默認 6000)。
適用場景與注意¶
適合在 Windows 多屏環境下長期用 DSH Agent 跑本地遊戲、編輯器或前端 dev 預覽的開發者。全屏(fullscreen)程序不受擺位控制;無人值守或服務會話下窗口 API 不可用。使用 titleContains 時若進程快速換窗口標題,可能需要增大 timeoutMs 或改用更穩的標題片段。
DSH 社區插件以當前 dsh 進程權限運行,安裝前建議自行查看倉庫源碼與 MIT 許可證。社區目錄與 GitHub 索引由社區維護,與 DeepSeek / 幻方無官方從屬關係;若在客戶端插件市場暫未搜到,可直接用上述 git+https://... 命令安裝。
結尾¶
dsh-test-window 把「Agent 拉起的測試窗口落在哪塊屏」收成一項設置,併兼顧窗口識別、持續校正與不搶輸入等細節,減少多屏開發時被預覽窗蓋住對話的情況。
- 目錄頁:https://www.skillhub.cn/plugins/Aily-DSH/dsh-test-window
- GitHub:https://github.com/Aily-DSH/dsh-test-window