dsh-conversation-width:在設置裏調節 DSH 對話欄寬度

前言

DeepSeek Harness(DSH)在寬屏上默認把中間對話內容區限制在約 920px,長文閱讀時兩側留白較多。宿主本身支持拖拽對話區邊緣改寬度,偏好會寫入瀏覽器 localStorage,但全新安裝時很多人不知道這一機制,或希望用數值精確調節。下面介紹社區 Web 客戶端插件 dsh-conversation-width:它在 設置 → 通用 增加「對話顯示區域寬度」一行,與拖拽手柄共用同一套存儲與 CSS 變量,不另起一套寬度體系。

這是什麼

dsh-conversation-width 由維護者 ElioFanyu 發佈,當前 npm 包版本爲 1.0.1,許可證 MIT。它是一個面向 DSH Web 客戶端的插件(dsh.client.platform: "web"),Node 側入口 lib/index.js 有意留空,界面邏輯在 lib/client.js 通過 exports["./client"] 注入宿主。

插件解決的具體問題是:把 Conversation 模塊裏已經存在的寬度偏好 localStorage["dsh.conversation.contentWidth"](單位 px,拖拽手柄也會寫同一 key)暴露到設置頁,讀寫始終一致;宿主仍通過 --dsh-chat-content-width 等 CSS 變量渲染,並對存儲值疊加 clamp(640, columnWidth - 176, …),超出範圍的值由佈局糾正,而不是破壞頁面。

核心功能

設置頁新增一行控件,行爲與 README 描述一致:

控件 行爲
滑塊 640–1600px,步進 20px,實時生效
數字框 同樣範圍;輸入過程中的空值或半截草稿會被忽略
920 / 1100 / 1280 一鍵預設
恢復自適應 刪除存儲的 key,回到 clamp(680, column * .64, 920) 的默認邏輯

上限設爲 1600px 是爲寬屏與偏好寬欄的用戶留餘量;佈局側 columnWidth - 176 仍是任意窗口下的硬上限。插件在偏好變更時直接把 --dsh-chat-user-width 寫到 [data-conversation-content] 父元素,與 dsh-client-ui-conversation 的 publishWidths() 一致,避免舊版僅靠 window.resize 導致「改設置不立刻生效」的問題。

宿主兼容性(資料中已實測或聲明):

  • engines.dsh:>=0.2.0-rc.2 <0.3.0
  • dsh.compatibility.dshReleases 登記:0.2.0-rc.2、0.2.1-rc.2、0.2.1-rc.3、0.2.1-rc.5 均爲 compatible
  • 在 DSH 0.2.1-rc.5 上實測通過;設置項 order 調整爲 18,避免與內置 composer-enter(order 20)同分排序不穩定

安裝與啓用

官方 README 未給出 dsh plugin add 一類命令,安裝方式是把包 link 進某個 DSH profile 並加入 bundle 列表,然後 重啓宿主(刷新頁面不夠:客戶端模塊圖在啓動時快照)。

  1. 將倉庫放到固定目錄後,編輯 profile 的 package.json(路徑形如 <userData>/.dsh/profiles/<profile>/package.json):
"dependencies": {
  "dsh-conversation-width": "link:/absolute/path/to/dsh-conversation-width"
},
"dsh": {
  "profile": {
    "bundles": [ /* … */, "dsh-conversation-width" ]
  }
}
  1. 讓 node_modules/dsh-conversation-width 指向該目錄——Windows 用 junction,其他平臺用符號鏈接。README 示例(Windows):
New-Item -ItemType Junction `
  -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-conversation-width" `
  -Target "D:\path\to\dsh-conversation-width"

鏈接而非拷貝時,改插件源碼後重啓宿主即可生效。

卸載(可逆):從 dependencies 與 dsh.profile.bundles 移除條目,刪除 junction,重啓宿主。殘留的 localStorage key 無害,拖拽手柄仍可繼續使用該值。

典型用法

經過上面的安裝並重啓 DSH 後:

  1. 打開 設置 → 通用,找到對話顯示區域寬度相關行(插件註冊在 settings.general.item 插槽,order: 18)。
  2. 用滑塊或數字框在 640–1600px 內調節,或點 920 / 1100 / 1280 預設。
  3. 若希望回到宿主默認的自適應寬度,使用「恢復自適應」,會刪除 dsh.conversation.contentWidth。
  4. 與拖拽對話區邊緣混用時,兩者讀寫同一 key,應始終保持一致。

插件管理卡片標題默認顯示包名 dsh-conversation-width;副標題來自 locale/en.json、locale/zh.json 中的 meta.description,隨界面語言切換。

適用場景與注意

適合經常在 ultrawide 或大屏上使用 DSH Web 客戶端、希望用數值或預設統一對話欄寬度、又不想依賴邊緣拖拽的用戶。

安裝前請注意:

  • 插件以當前 DSH 進程權限在瀏覽器側運行,會讀寫 localStorage 並操作 DOM/CSS 變量;啓用前應自行查看 GitHub 源碼 與 MIT 許可證。
  • 僅聲明支持 dsh 0.2.0-rc.2 至 0.3.0 之前;更高版本需等維護者更新 engines.dsh 後再評估。
  • 社區目錄 SkillHub 插件頁 與 GitHub 由社區維護,與 DeepSeek / 幻方無官方從屬關係;星標數會變動,以倉庫頁爲準。

結尾

dsh-conversation-width 沒有引入第二套寬度體系,只是把 Conversation 已有的寬度偏好搬到 設置 → 通用,並與拖拽手柄、宿主 clamp 對齊。若你需要在寬屏上穩定控制 transcript 欄位寬度,可按 README 的 profile link 方式安裝,並在改完後重啓宿主。

  • 目錄頁:https://www.skillhub.cn/plugins/ElioFanyu/dsh-conversation-width
  • 倉庫:https://github.com/ElioFanyu/dsh-conversation-width
羽毛球分组比赛记分
小程序二维码

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

小夜