前言¶
DSH 跑在開發機上時,會話、審批和提問往往綁定在那一臺電腦的瀏覽器裏。你離開工位,只能等回到電腦前再處理;想在手機上續寫對話或批准工具調用,也沒有現成入口。常見做法是遠程桌面或 SSH,但那是整臺機器的接管,不是圍繞 DSH 工作流的輕量遙控。
下面介紹 Blank-not-black 維護的 DSH Remote(GitHub:Blank-not-black/dsh-Remote)。它通過 DSH 插件、獨立網關和 Android 應用 / WebUI 三件套,在局域網或 Tailscale 上提供會話查看、審批與提問處理、文件傳輸和運行狀態總覽,並用 Token 鑑權,數據只在你的設備之間流轉。
這是什麼¶
DSH Remote 是一套面向 DSH 的遠程控制檯:在手機或另一臺電腦上查看會話、處理審批與提問、傳輸文件,並掌握主機運行狀態。npm 包名爲 dsh-remote-plugin,當前倉庫版本爲 0.6.15,許可證 MIT。
三個部分各司其職:
| 部分 | 角色 |
|---|---|
| DSH 插件 | 在 DSH Web 內提供入口,自動管理網關,展示主機與網關狀態 |
| 獨立網關 | 負責令牌鑑權、即時連接、文件傳輸和設備監控 |
| Android 應用 / WebUI | 手機、桌面瀏覽器和插件內嵌的遠程操作界面 |
令牌即遠程控制憑證。項目默認不引入額外賬號系統;令牌保存在 ~/.dsh-remote/token,需像保護 SSH 密鑰一樣保管,不要提交到倉庫或截圖公開。
核心功能¶
以下能力均來自項目 README 與文檔說明。
會話遠程控制:查看會話、繼續工作、切換模型、處理目標與後臺任務。會話詳情支持即時消息、歷史加載、斜槓命令和全屏輸入。
即時決策通知:審批、提問、任務狀態即時推送;網絡波動時可自動降級爲輪詢,恢復後再切回 WebSocket。
文件與圖片:瀏覽主機目錄,支持分塊上傳、斷點續傳、暫停與取消;可將拍照或相冊圖片作爲 session.prompt 的圖片內容發送到當前會話(取決於當前 DSH 組合與模型是否支持圖像輸入)。
運行全景:DSH 版本、網關鏈路、設備連接、Token 用量和近期活動集中在主頁與統計頁;插件面板和管理控制檯可查看網關版本、端口、上游狀態與 Token 近 7 日用量。
多網絡接入:支持局域網、Tailscale,以及帶認證的 WebSocket 隧道。手機與電腦應位於同一可信局域網,或通過 Tailscale 互通;不要把網關端口直接暴露到公網。
離線可看聊天記錄:客戶端可加載歷史消息,便於弱網或短暫斷連後繼續查看。
安裝與啓用¶
插件需安裝在 DSH Web 的 web profile。先確認本機 DSH Web 可正常打開,再在安裝 DSH 的同一用戶下執行:
dsh plugin --profile web add dsh-remote-plugin
dsh plugin --profile web list --depth 0
第二條命令用於確認插件已裝入 web profile。
指定版本或從 Git 安裝:
dsh plugin --profile web add dsh-remote-plugin@0.6.8
dsh plugin --profile web add "github:Blank-not-black/dsh-Remote#main&path:/packages/plugin"
經過上面的步驟後:
- 完整重啓 DSH Web 進程(手動運行則停止後重新執行
dsh web;若使用 systemd 用戶服務可執行systemctl --user restart dsh-web)。 - 在 DSH Web 中 Ctrl+F5 強刷,從側欄打開 DSH Remote 面板。
- 在插件面板確認網關已運行,並在 DSH 主機上訪問
http://127.0.0.1:8787/health,返回 JSON 表示網關端口可用。 - 從插件面板複製令牌或掃碼配對;令牌亦保存在
~/.dsh-remote/token。 - 手機端在「設置 → 服務器」掃碼,或填寫
http://電腦局域網IP:8787與令牌(不可使用127.0.0.1或localhost)。 - 另一臺電腦可直接打開
http://DSH主機IP:8787,瀏覽器進入桌面 WebUI。
插件內置網關,默認監聽 0.0.0.0:8787,隨 DSH 自動啓動與自愈。網關開關意圖保存在 ~/.dsh-remote/gateway.enabled。端口優先級爲環境變量 DSH_REMOTE_GATEWAY_PORT → ~/.dsh-remote/gateway-port → 8787。
不使用插件時,可從 GitHub Releases 下載單文件網關(如 dsh-remote-linux-x64)獨立運行:
./dsh-remote-linux-x64
PORT=9000 TOKEN=your-token ./dsh-remote-linux-x64
默認上游爲本機 DSH Web http://127.0.0.1:3080,管理頁爲 http://127.0.0.1:8787/admin。
Android 應用安裝包爲 Release 中的 dsh-remote.apk。
典型用法¶
網關健康檢查(在 DSH 所在電腦執行,便於區分網關未啓動與網絡不可達):
curl -i http://127.0.0.1:8787/health
ss -ltnp | grep ':8787'
curl -i http://127.0.0.1:3080/
若 /health 返回 ok: true 但 upstreamOk: false,說明網關已開而 DSH Web(默認 3080)不可達,需檢查 DSH Web 進程而非網關本身。
文件傳輸 API(Bearer 令牌與插件面板或 ~/.dsh-remote/token 一致):
TOKEN=$(cat ~/.dsh-remote/token)
HOST=http://127.0.0.1:8787
curl -H "Authorization: Bearer $TOKEN" "$HOST/fs/list"
curl -OJ -H "Authorization: Bearer $TOKEN" "$HOST/fs/file?path=~/Downloads/example.zip"
curl -H "Authorization: Bearer $TOKEN" --data-binary @./photo.jpg \
"$HOST/fs/upload?path=~/Downloads&name=photo.jpg"
默認單文件上限 2GB,可通過 DSH_REMOTE_FS_MAX_UPLOAD 調整;允許目錄默認包含當前用戶目錄及 DSH workspace.list 已登記的工作區,額外根目錄可用 DSH_REMOTE_FS_ROOT 配置(Linux/macOS 用 : 分隔,Windows 用 ;)。
手機端導航:會話、文件、主頁(鏈路健康與待辦)、統計(Token 與費用)、設置(服務器、令牌、通知與皮膚)。
桌面 WebUI:左側會話列表與工作臺,文件傳輸、主頁總覽、統計抽屜,以及審批 / 提問通知卡片。
適用場景與注意¶
適合以下情況:
- DSH 在電腦上運行,需要在手機上查看會話、回覆提問或處理工具審批。
- 需要在手機與 DSH 工作目錄之間傳文件,或把圖片作爲會話附件發送。
- 從另一臺電腦查看會話、文件、Token 統計和設備連接,通過局域網或 Tailscale 訪問,而不額外搭建賬號系統。
使用前請注意:
- 插件以當前 DSH 進程的用戶與權限運行,安裝前應閱讀源碼並確認 MIT 許可證與行爲是否符合預期。
- 網關默認監聽所有網卡;防火牆需允許 TCP 8787 入站(無需對公網放行 DSH 3080)。手機連不上時檢查是否使用了電腦局域網 IP 或 Tailscale
100.x.x.x地址,以及路由器 AP 隔離。 - 401 或未授權多爲令牌不一致,應從當前插件面板重新掃碼或複製令牌;頁面黑屏或功能未更新時可 Ctrl+F5 或完全退出 App 後重開,避免靜態資源緩存。
- 優先通過插件面板啓動網關或重啓 DSH Web 觸發自愈;不要把
systemctl --user restart dsh-remote-gateway.service當作通用重啓方式(插件拉起的網關可能是 transient 進程)。
DSH 生態理念是「一切皆插件」。SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;dsh-remote-plugin 是社區維護的客戶端類插件,GitHub 約 19 stars。
結尾¶
DSH Remote 把 DSH 最關鍵的決策面——會話、審批、提問和文件——搬到手機與第二臺設備,而不是複製整臺遠程桌面。三件套分工明確,插件模式下一行命令即可啓用,網關與 Token 機制也便於在可信內網或 Tailscale 中自託管。
- 目錄頁:https://www.skillhub.cn/plugins/Blank-not-black/dsh-Remote
- GitHub:https://github.com/Blank-not-black/dsh-Remote
- npm:https://www.npmjs.com/package/dsh-remote-plugin