前言¶
在 DSH 桌面客戶端裏做長對話開發時,常見有三處摩擦:對話列默認閱讀寬度偏窄,長回答和表格需要反覆橫向掃視;待辦散落在筆記或外部工具裏,和當前會話脫節;上下文接近上限時,缺少一眼能看懂的佔用與「繼續還是新開」判斷。社區插件 dsh-wide-focus(維護者 quanwenbo,分類爲客戶端)把寬屏閱讀、懸浮任務看板和上下文管家收進一個包,全部在本機運行,README 寫明零運行時依賴。從 v0.12.0 起,原 dsh-context-guard 已合併進本插件,一般不必再單獨安裝上下文相關插件。
這是什麼¶
dsh-wide-focus 面向 DSH 桌面客戶端(--profile desktop),在對話界面側做三件事:把對話列拉到接近全寬、在界面上方提供可拖動的任務面板、在面板工具條展示上下文佔用並在必要時引導交接與新會話。宿主側註冊任務持久化與上下文狀態等 HTTP 路由;客戶端通過 Cordis patch 注入會話 UI,不依賴額外構建步驟(client.js 爲預構建 ESM)。
核心功能¶
寬屏閱讀模式¶
開啓後給 <html> 加上 data-dsh-wide-focus,將 --dsh-chat-user-width 覆蓋爲 calc(100% - 40px) !important。因宿主會在 resize 時重寫列寬內聯樣式,插件在寬屏開啓期間約每 400ms 同步相關節點;列寬拖拽把手 [data-width-handle] 會隱藏,改由標題欄 寬屏 / 標準 按鈕切換(掛載點 conversation.session.header.utilities,id wide-focus-toggle)。默認開啓,偏好記在 dsh.wide-focus.enabled。
懸浮任務面板¶
面板掛在 shell.overlay,id wide-focus-task-panel。標題欄約 78px 高,可拖動定位;摺疊成膠囊後按 R 或再點膠囊可展開;雙擊標題欄恢復默認尺寸與位置;從底部兩角縮放,最小寬度 300px。字號用 Ctrl + 滾輪或 Ctrl + = / - 調整。
四個固定標籤:待驗收 / 進行中 / 暫時擱置 / 已驗收。對話裏選中文字後右鍵 加入待辦 可生成任務;列表首行 + 添加待辦 支持多行輸入(Enter 添加,Shift + Enter 換行)。任務數據僅存一份,由宿主讀寫 $DSH_PROFILE_DIR/wide-focus/tasks.json(另有回退路徑),客戶端通過 GET / PUT /wide-focus/tasks 同步,改動約 400ms 防抖保存。
面板自帶深/淺主題(八卦按鈕切換,記在 dsh.wide-focus.panelTheme),不跟隨宿主主題。其它桌面插件可通過 window.__dshWideFocus.registerTool 把小組件掛到面板工具條。
上下文管家¶
工具條上的 NN% 佔用徽章(id context-guard)按水位變色(60 / 70 / 80 / 85% 等閾值);點開卡片可看佔用、緩存命中、輪次與工具調用、任務連貫性,以及 繼續本會話 / 新開會話 建議。唯一動作按鈕爲 生成交接文檔並新開會話;交接文件寫到當前工作目錄下 docs/handoff/YYYYMMDD-HHmm-<id>.md。宿主路由包括 GET /context-guard/state?sessionId=、POST /context-guard/handoff。
推理檔位(自動)¶
工具條膠囊可切換 自動 / 建議 / 手動 三種模式:自動模式下發請求前僅會在 Low 與 High 之間切換(Max 留給手動);模式持久化在 $DSH_PROFILE_DIR/wide-focus/effort.json,對應 GET / POST /wide-focus/effort。
安裝與啓用¶
從 GitHub 固定 tag 安裝(命令以 README 爲準):
dsh plugin --profile desktop add git+https://github.com/quanwenbo/dsh-wide-focus.git#v0.12.3
若曾安裝 dsh-context-guard,應先卸載,避免兩個徽章並存:
dsh plugin --profile desktop remove dsh-context-guard
本地開發時可從目錄安裝,例如:
dsh plugin --profile desktop add C:\Users\BOB\dsh-plugins\wide-focus
說明:client.js 側刷新頁面即可生效;index.js 註冊了 /wide-focus/tasks、/context-guard/state、/context-guard/handoff 等路由,首次安裝或修改宿主入口後需重啓一次桌面端。package.json 中聲明的 DSH 引擎範圍爲 >=0.2.0-rc.1 <0.3.0-0。
典型用法¶
- 安裝並重啓桌面端後,在會話標題欄用 寬屏 / 標準 切換閱讀寬度。
- 拖動任務面板標題欄擺到不擋對話的位置;需要時用
R召回被擠掉的面板。 - 在回覆裏選中關鍵句 → 右鍵 加入待辦,在 進行中 等標籤裏拖拽改狀態或排序。
- 上下文徽章變琥珀/橙/紅時點開卡片;佔用過高或需要換會話時,使用 生成交接文檔並新開會話。
擴展其它插件控件時,可在客戶端腳本中檢查橋接對象:
const bridge = window.__dshWideFocus
if (bridge) {
const dispose = bridge.registerTool('my-plugin', MyChip)
bridge.getSessionId()
bridge.onSessionChange((id) => {})
}
適用場景與注意¶
適合長期在 DSH 桌面端做實現、排查、多輪工具調用的開發者:寬屏減少橫向滾動,任務面板把「待驗收 / 進行中」和對話綁在一起,上下文管家把佔用與交接路徑寫進同一套 UI。
安裝前請自行查看 GitHub 源碼與 MIT 許可證;插件以當前 DSH 進程權限讀寫 profile 目錄與交接文檔路徑,安裝命令會從遠程拉取指定 tag 的代碼。README 列出的已知限制包括:寬屏依賴定時同步列寬、任務刪除爲兩步確認且無撤銷、拖拽基於 Pointer Events 等。社區目錄頁與 GitHub 倉庫由維護者發佈,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-wide-focus 把寬屏、任務看板和上下文佔用提醒合成一個桌面客戶端插件,並承接原 context-guard 能力。目錄與詳情見 SkillHub 插件頁,源碼與完整說明見 GitHub:quanwenbo/dsh-wide-focus。