前言¶
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.0dsh.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 列表,然後 重啓宿主(刷新頁面不夠:客戶端模塊圖在啓動時快照)。
- 將倉庫放到固定目錄後,編輯 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" ]
}
}
- 讓
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 後:
- 打開 設置 → 通用,找到對話顯示區域寬度相關行(插件註冊在
settings.general.item插槽,order: 18)。 - 用滑塊或數字框在 640–1600px 內調節,或點 920 / 1100 / 1280 預設。
- 若希望回到宿主默認的自適應寬度,使用「恢復自適應」,會刪除
dsh.conversation.contentWidth。 - 與拖拽對話區邊緣混用時,兩者讀寫同一 key,應始終保持一致。
插件管理卡片標題默認顯示包名 dsh-conversation-width;副標題來自 locale/en.json、locale/zh.json 中的 meta.description,隨界面語言切換。
適用場景與注意¶
適合經常在 ultrawide 或大屏上使用 DSH Web 客戶端、希望用數值或預設統一對話欄寬度、又不想依賴邊緣拖拽的用戶。
安裝前請注意:
- 插件以當前 DSH 進程權限在瀏覽器側運行,會讀寫
localStorage並操作 DOM/CSS 變量;啓用前應自行查看 GitHub 源碼 與 MIT 許可證。 - 僅聲明支持
dsh0.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