前言¶
在 DSH 的智能體工作流裏,dsh web 經常是本地開發、測試和 agent 協作的服務入口。手動在前臺啓動 dsh web 有一個明顯問題:終端關閉、進程異常退出、機器睡眠喚醒之後,服務可能不再可用;如果需要在多個會話裏穩定訪問本地 web 服務,就得反覆確認端口、進程和日誌狀態。
dsh-daemon 解決的就是這件事:把 dsh web 註冊爲一個自啓動、自愈的後臺服務。下面介紹它的能力、安裝方式、典型命令,以及部署時需要注意的權限和升級事項。
這是什麼¶
dsh-daemon 是一個 DSH 插件,用於將 DeepSeek Harness 的網絡服務 dsh web 註冊爲後臺服務。它不是直接替代 dsh web,而是在其外圍生成一個 watchdog 腳本,並按平臺註冊系統級服務來保持 watchdog 運行。
本次資料中可覈實的包信息如下:
- 倉庫路徑:
chenkai2/dsh-daemon - npm 包名:
@chenkai114/dsh-daemon - 版本:
0.1.20 - 許可證:
MIT - Node 要求:
>=18
peerDependencies 要求:
@deepseek-ai/cordis >=3
@deepseek-ai/dsh-tools >=0.1.0-rc.6
它的主要價值在於:安裝後,dsh web 可以按用戶級服務啓動,在異常退出、睡眠喚醒、進程不可用等場景下,由 watchdog 按策略恢復。
核心能力¶
平臺服務註冊¶
dsh-daemon 支持不同平臺的服務註冊方式:
- macOS:LaunchAgent,使用
RunAtLoad與KeepAlive - Linux:systemd user service;systemd 不可用時回退 cron
@reboot - Windows:VBS + 計劃任務;資料標註尚未在真實 Windows 機器上驗證
其中,Windows 行爲目前只能按“已實現但未在真實機器驗證”理解,不建議在未驗證環境裏直接當作生產可用能力。
watchdog 自愈¶
安裝後,插件會生成一個獨立的 watchdog 腳本。該腳本不依賴當前 DSH 會話,運行在用戶級服務管理之下。
已覈實的 watchdog 行爲包括:
- 每 30 秒進行一次健康檢查
- 連續 3 次健康檢查失敗後重啓服務
- 睡眠喚醒後自動重啓服務
- watchdog 是獨立生成的腳本,不依賴當前會話
- 維護
$DSH_HOME/daemon/下的狀態文件與日誌
默認被檢查的健康地址爲:
http://127.0.0.1:<port>/health
端口解析順序爲:當前監聽的 webServer 端口(通常 3080),其次 DSH_WEB_PORT,再其次工具顯式 port 參數。
工具與 CLI¶
插件註冊 7 個 dsh_daemon_* 工具,可供 agent 調用:
dsh_daemon_installdsh_daemon_uninstalldsh_daemon_reinstalldsh_daemon_statusdsh_daemon_startdsh_daemon_stopdsh_daemon_update
同時,安裝過程會生成一個輕量 CLI:dsh-daemon。終端中可使用以下命令:
dsh-daemon status
dsh-daemon restart
dsh-daemon start
dsh-daemon stop
dsh-daemon update
dsh-daemon install
dsh-daemon uninstall
dsh-daemon reinstall
dsh-daemon help
其中,dsh-daemon restart 和 dsh-daemon stop 會中斷所有打開的會話;如果直接拉起失敗,watchdog 會在後續健康週期中重新拉起 web 服務。
自動更新¶
watchdog 會按配置檢查 npm registry,並嘗試更新同 major 版本。
已覈實的更新策略:
- 同 major 版本可以自動更新
- major 版本變更不會自動更新,需要人工執行
dsh_daemon_update - 自動更新模式支持
restart和download
restart 模式下,watchdog 會在下載完成後等待安靜窗口,再重啓 dsh web。
download 模式下,新包安裝到 profile 並寫入待生效標記,下次自然重啓 dsh web 時生效。
安裝與啓用¶
安裝前需要確認 PATH 中已經有 pnpm。如果沒有,可以先啓用:
corepack enable
下面介紹正式安裝步驟。
1、安裝插件到 web profile¶
使用官方插件安裝命令,把包安裝到 web profile:
dsh plugin --profile web add @chenkai114/dsh-daemon
這一步會把包安裝到 web profile 的依賴目錄中。僅全局安裝不一定能被 loader 解析到,因爲 profile 內依賴是更直接的解析路徑。
2、重啓 dsh web¶
安裝完成後,重啓 dsh web,讓插件 bundle 生效。
3、讓 agent 運行 dsh_daemon_install¶
在重啓後的會話中,讓 agent 執行:
dsh_daemon_install
該工具會生成 watchdog 腳本、狀態文件,並按平臺寫入服務註冊,然後啓動 watchdog。
4、檢查安裝狀態¶
安裝完成後,可以用 agent 工具檢查:
dsh_daemon_status
也可以用 CLI 檢查:
dsh-daemon status
狀態信息包括安裝狀態、端口、本地/最新版本、更新狀態、watchdog PID、服務健康、最近日誌等。
典型用法¶
安裝後常用 agent 工具¶
在 agent 會話中,可以使用以下工具:
dsh_daemon_status
dsh_daemon_start
dsh_daemon_stop
dsh_daemon_reinstall
dsh_daemon_update
如果更換端口,使用:
dsh_daemon_reinstall
如果升級到包含新 watchdog 更新邏輯的版本後,也建議運行一次:
dsh_daemon_reinstall
這樣可以按當前配置重新生成 watchdog 腳本。
終端 CLI 用法¶
終端中可以直接使用:
dsh-daemon status
查看當前 daemon 狀態。
立即重啓 dsh web:
dsh-daemon restart
啓動或恢復服務:
dsh-daemon start
停止託管服務:
dsh-daemon stop
檢查或應用更新:
dsh-daemon update
註冊、卸載、重裝類命令:
dsh-daemon install
dsh-daemon uninstall
dsh-daemon reinstall
dsh-daemon help
插件升級¶
升級時使用:
dsh plugin --profile web update @chenkai114/dsh-daemon
升級後重啓 dsh web。
從舊版本升級的注意事項¶
如果從 v0.1.8 及更早版本升級,之前可能在 ~/.dsh/profiles/web/cordis.patch.yml 中手動添加過類似:
- insert: dsh-daemon
升級後必須刪除這一行,但保留文件裏的其他內容。否則 bundle 層和手動層會插入同一個 loader entry,導致 dsh web 啓動時報:
duplicate loader entry id: dsh-daemon
刪除後重啓 dsh web 即可。
自動更新相關配置¶
以下環境變量會參與 watchdog 行爲。它們的具體值可以在安裝或重裝時納入生成腳本。
DSH_DAEMON_AUTO_UPDATE
DSH_DAEMON_UPDATE_INTERVAL
DSH_DAEMON_UPDATE_MODE
DSH_DAEMON_QUIET_WINDOW
DSH_DAEMON_DEFER_MAX
DSH_DAEMON_NPM_REGISTRY
DSH_DAEMON_PROFILE
DSH_DAEMON_HEALTH_INTERVAL
DSH_DAEMON_OPEN_BROWSER
DSH_DAEMON_CLI_DIR
DSH_DAEMON_NO_SYSTEM
DSH_DAEMON_TRUSTED_HOST
其中幾個關鍵項:
DSH_DAEMON_AUTO_UPDATE:是否啓用自動更新檢查DSH_DAEMON_UPDATE_MODE:自動更新模式,可爲restart或downloadDSH_DAEMON_HEALTH_INTERVAL:watchdog 健康檢查間隔DSH_DAEMON_NPM_REGISTRY:檢查與更新使用的 npm registryDSH_DAEMON_PROFILE:插件所在 profile 目錄
適用場景與注意¶
這個插件適合需要長期運行 dsh web 的 DSH 使用者,尤其是:
- 希望在登錄或系統啓動後自動拉起
dsh web - 希望進程異常退出後能自動恢復
- 需要統一查看狀態、日誌、更新狀態
- 需要在 agent 會話中直接管理 daemon
- 需要在終端中不打開 GUI 也能控制服務
部署前需要注意以下幾點。
權限¶
該插件對文件與命令操作會請求 danger-full-access。它會處理用戶級系統服務、$DSH_HOME/daemon/ 下的狀態文件,以及生成 watchdog 腳本。
如果部署環境拒絕提權,相關工具會以沙箱拒絕失敗。因此安裝前應檢查源碼與許可證,並確認該權限範圍符合團隊要求。
會話中斷¶
restart 和 stop 會中斷所有打開的會話。執行這些操作前,應先確認當前沒有正在進行的重要對話或任務。
Windows 支持狀態¶
Windows 支持資料中明確標註尚未在真實 Windows 機器上驗證。若你的環境主要在 Windows 上使用,建議先在測試環境中驗證登錄時啓動、計劃任務、VBS 啓動器和日誌行爲。
major 版本更新¶
major 版本變更不會自動更新。需要人工執行:
dsh_daemon_update
依賴要求¶
插件要求 Node >=18,並依賴:
@deepseek-ai/cordis >=3
@deepseek-ai/dsh-tools >=0.1.0-rc.6
安裝到 web profile 時,還需要 PATH 中有 pnpm,可通過 corepack enable 啓用。
結尾¶
dsh-daemon 的價值在於把 dsh web 從“手動前臺服務”變成“用戶級後臺服務”:登錄或系統啓動後可自動拉起,異常退出後可按 watchdog 策略恢復,並提供 agent 工具與終端 CLI 兩套管理入口。
對於需要穩定使用 dsh web 的 DSH 開發者,它可以減少手動啓停、端口檢查、日誌確認和異常恢復的重複操作。
倉庫地址:
https://github.com/chenkai2/dsh-daemon