前言¶
DeepSeek Harness 的 web GUI 是一個編碼智能體,New Session 界面要求先選一個工作區才接收消息——對編碼智能體來說合理,因爲它總得工作在某個目錄裏。但不是每次提問都是工作:想隨手問一句、理一條思路時,選目錄這一步就成了障礙。
DSH 的理念是一切皆插件,這類體驗缺口正好留給插件補。下面介紹的 omdsh-chatmode 做的就是這件事:在對話上方加一個 Chat / Work 切換,Chat 模式下不用選項目目錄就能開始對話,這些對話統一收納在側邊欄一個受管的 Chat 工作區裏。
這是什麼¶
omdsh-chatmode 是 DeepSeek Harness web GUI 的聊天模式插件,屬於 omdsh-plugins,npm 包名 @omdsh-plugins/omdsh-chatmode,當前版本 0.2.5,許可證 MIT,包元數據中歸類爲 workspace。
它依賴 omdsh-basemode 發佈的註冊表(sessionModes、modeOf、column 等),自身不修改 harness 的任何部分,全部能力建立在這些接縫上。
核心功能¶
Chat / Work 開關與受管工作區¶
插件向 omdsh-basemode 發佈的 sessionModes 分段註冊表註冊 Chat 和 Work 兩個分段,在會話上方提供模式切換。同時註冊真實目錄 <dshHome>/sessions/chat 作爲側邊欄的 Chat 工作區分組,並保持其標題爲 Chat;無論打開多少項目,該分組始終排在側邊欄第一位——host 半區在啓動時置頂,browser 半區負責維持。
兩個分段攜帶 tone / owns,側邊欄會話上的綠、藍圓點由 omdsh-basemode 依據這些聲明繪製。
Chat 的新會話行上,工作區 chip 被移除:插件對自帶按鈕做標記而非替換,harness 自帶的預設 chip 保留在原位。
模式是派生的,不是存儲的¶
一個會話是 Chat,當且僅當它歸入受管的 Chat 工作區。開關讀取這一事實並報告它,所以從側邊欄打開一個對話會把開關移動到對應模式——開關描述當前會話所在位置,而不是決定它。
相應地,按分段是導航,不是狀態寫入。
Work 切換始終留在當前項目¶
按 Work 時,插件先借助 omdsh-basemode 發佈的 sessionModes.column 判定屏幕上的項目,然後按順序回答:回到該項目最近離開的會話、其次該項目最近的會話、否則在該項目新建一個——不會跳到別的項目。
“最近的會話”有兩個排除條件:
1、其他 posture 認領的會話,註冊表用 modeOf 判定,模式增加時依然成立;
2、空白會話——除非項目裏只有空白會話,此時空白會話就是這個項目的 New Session 行,打開它好於再建一個。
另外,Chat 分段聲明 inProject: false,表明其對話不歸檔於某個具體工作項目。
New Session 的歸屬¶
New Session 請求先交給持有當前列的分段處理,也就是 modes.register 的 newSession 回調;Chat 與 Work 不響應,交給框架自身的 New Session,並讓出該列。本插件負責的一處行爲是:New Session 複用工作區已有的空白會話。
安裝與啓用¶
本包是 profile bundle:通過 dsh plugin 安裝進 profile,並追加到該 profile 的 layer stack,它的加載行組合在自帶代碼樹之上。README 只描述了這一機制,未給出完整命令原文,本文不代擬,安裝前以倉庫 README 爲準。
版本與環境要求(來自 package.json):
包名:@omdsh-plugins/omdsh-chatmode
版本:0.2.5
Node:^22.19.0 || >=24.0.0
包管理器:pnpm@11.7.0
許可證:MIT
client 側注入以下模塊,platform 爲 web:
@deepseek-ai/dsh-client-locale
@deepseek-ai/dsh-api-session-controller
@deepseek-ai/dsh-api-workspace-controller
它不替換 harness 的任何控件。移除插件時,加載行、兩個分段及其用到的所有接縫會一併移除。
典型用法¶
經過上面的安裝,日常使用就是三種導航:
1、按 Chat:回到離開的聊天,或在 Chat 工作區開始一個新對話;
2、按 Work:回到當前所在項目中離開的工作會話,否則該項目最近的會話,否則在該項目新建一個;
3、從側邊欄打開一個對話:開關隨之移動到對應模式。
對話裏跑的是什麼:聊天運行與工作會話相同的 agent,使用部署默認預設——除非部署另有說明,即爲 Standard mode。要換預設,仍用 harness 自帶的 chip。
對想給 omdsh-basemode 寫模式的開發者,README 給了 newSession 回調的接口示例,omdsh-chatmode 的 New Session 路由依賴這一約定:
modes.register({
id: 'code',
newSession: (workspaceId) => startAnotherTerminal(workspaceId),
})
返回 true 表示“我已啓動”,列保持不變;不響應的模式把請求讓給框架處理。
適用場景與注意¶
適合在 DSH web GUI 裏既有項目工作、也想隨手提問的人:問題不關於某個項目時,不必爲它選目錄,這些對話也與項目會話分開收納。
使用前注意三點:
1、插件依賴 omdsh-basemode 發佈的註冊表(sessionModes、modeOf、column 等),環境裏需要這套接縫;
2、插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證,本插件許可證爲 MIT;
3、它是 profile bundle 而非對 harness 的改動,移除即整體還原。
結尾¶
omdsh-chatmode 用一個開關和一組受管接縫,把“隨手一問”和“項目工作”在 DSH web GUI 裏分開,且沒有動 harness 本身。如果你兩種用法都有,可以看一下。
- GitHub:https://github.com/omdsh-plugins/omdsh-chatmode
- 社區目錄頁:https://www.skillhub.cn/plugins/omdsh-plugins/omdsh-chatmode (skillhub 爲獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係)