dsh-classic-mode:經典側邊欄一鍵打開 DS Bot Web 配置

前言

DeepSeek Harness(DSH)可以在桌面端使用經典 Agent 殼,同時用另一個 Web 配置跑 DS Bot,供瀏覽器或平板使用。兩套配置共用 ~/.dsh 數據目錄,但 Web 實例需要單獨啓動,還要從命令行輸出裏拿到帶 ?token= 的地址再粘貼到瀏覽器。手動做這幾步容易打斷工作流。dsh-classic-mode 由社區維護者 shiyoungwoo 發佈,歸類爲客戶端插件,在經典界面側邊欄底部增加入口,點一次即可在 Safari 中打開已配置的 Web 配置;若實例未運行會先拉起進程。它不負責安裝 DS Bot,也不改動任一配置裏的插件列表。

這是什麼

dsh-classic-mode(npm 包名 @local/dsh-classic-mode,當前資料中版本爲 0.1.7)是一個 DSH bundle:在經典 Agent 側邊欄底部的插件操作區註冊「DS Bot」按鈕(圖形爲內嵌的 DS Bot 鯨魚靜態資源,Apache-2.0),點擊後由宿主側啓動或複用指定 profile 的 Web 服務,並用系統瀏覽器打開認證 URL。默認目標 profile 名爲 classic,需在該 profile 中已啓用 DS Bot 才能使用其團隊界面。

架構與行爲

插件拆成兩半,職責在 README 中有明確說明。

宿主側(index.js) 讀取 ~/.dsh/classic-mode/state.json;若本插件此前在同一宿主下已啓動過 Web 進程則複用,否則執行 dsh --profile <profile> --no-open --port <port>,從標準輸出解析帶 token 的 URL,寫入 state,再打開瀏覽器。還會在適當時機清理「殘留實例」(見下文)。

客戶端側(client.js) 通過 sidebar.footer.action 註冊按鈕,位置隨經典側邊欄佈局:展開時顯示圖標與標籤,摺疊爲窄欄時僅圖標;不懸浮在對話區域。按鈕請求 GET /classic-mode/open。DS Bot Web 獨立側欄不提供此入口。

環境與依賴

  • DSH:>=0.2.1-rc.3 且 <0.3.0(Web 或 Desktop)。
  • Node:>=22.19。
  • 需要第二個已啓用 DS Bot 的 DSH profile(默認名 classic)。
  • 默認用 macOS 的 open -a <browser> 打開瀏覽器;其他平臺可將 browser 改成本機可用的啓動方式,或自行讀取接口返回的 url。

安裝與啓用

1、把包加入某一 profile(本地 checkout 或 GitHub):

pnpm add link:/path/to/dsh-classic-mode
# or: pnpm add github:shiyoungwoo/dsh-classic-mode

2、將倉庫 cordis.patch.yml 中的條目追加到該 profile 的 bundle 列表,或依賴包自帶的 patch 自動應用,然後填寫 config(見下節)。

3、重啓 DSH,或在 Plugins 頁面切換該 bundle 的啓用狀態。

配置

倉庫內 cordis.patch.yml 爲佔位值,四項都需按本機填寫;建議在自己的 profile 補丁里覆蓋,避免把絕對路徑寫進倉庫:

字段 含義
cliPath dsh 啓動器絕對路徑,必填。Desktop 示例:/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh
profile 要拉起的 profile,默認 classic
port Web 服務監聽的本機迴環端口,默認 3090,需保持未被佔用
browser 傳給 open -a 的應用名,默認 Safari

示例覆蓋(來自 README):

- id: local-classic-mode
  name: '@local/dsh-classic-mode'
  config:
    cliPath: /Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh
    profile: classic
    port: 3090
    browser: Safari

典型用法

完成安裝與配置後,在已加載該 bundle 的經典 Agent 界面中,展開或摺疊側邊欄均可看到底部 DS Bot 入口。點擊後:

  • 若目標 profile 的 Web 實例已在運行(且屬於當前宿主或已被正確複用),直接在 Safari(或你配置的 browser)中打開已有會話 URL。
  • 若未運行,宿主會 detached 啓動 dsh --profile classic --no-open --port 3090(實際 profile/port 以配置爲準),解析 token URL 後打開瀏覽器。

無需手動複製終端裏的地址。插件不會替你安裝 DS Bot,也不會修改 desktop 與 classic profile 各自的插件選擇。

殘留實例與佔用會話

classic Web 服務以 detached 方式啓動,會存活於啓動它的 DSH 宿主進程之外。DSH 重啓後,舊進程仍可能佔用 Harness 會話,其他 DSH 實例(桌面端或另一個 dsh web)可能報會話已被佔用。插件在 state.json 中記錄宿主 PID,並在兩處嘗試清理:bundle 在新宿主進程中加載時;以及點擊按鈕時發現記錄的 server 屬於更早的宿主。僅當進程命令行同時包含本插件配置的 profile、port 且爲 DSH 入口時纔會發終止信號;PID 已被無關進程複用時只報告、不 kill。當前宿主自己啓動的實例始終複用,不重啓。

安全與權限

  • /classic-mode/open 在 DSH Connection 認證之前響應,會拒絕 Origin 與服務 host 不一致的跨站請求;僅接受 GET,其他方法返回 405。
  • 拉起的 Web 服務綁定迴環地址;token 寫在 ~/.dsh/classic-mode/state.json,權限隨用戶主目錄,勿將該文件提交到版本庫。
  • 插件以當前 DSH 進程權限運行,安裝前應閱讀倉庫源碼與許可證(啓動器代碼 MIT;內嵌鯨魚素材見 DS-Bot-LICENSE)。社區目錄 SkillHub 插件頁 與 GitHub 倉庫由社區維護,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-classic-mode 面向「桌面經典殼 + 獨立 Web profile 跑 DS Bot」的分工方式,用側邊欄一鍵補齊「啓動 Web 實例並打開帶 token 的 Safari 頁」這一步。進一步說明與 issue 見 GitHub:shiyoungwoo/dsh-classic-mode,目錄索引見 SkillHub。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜