前言¶
在 DeepSeek Harness(DSH)裏,多數對話都綁定到已註冊的工作區:會話有 Workspace id,文件與權限與工作區目錄掛鉤。若你只想臨時聊一輪、或像 Codex 那樣做「無項目」會話,原生流程往往要先選或建工作區。DSH 原生在「空白且無工作區」時還會禁用輸入框,側邊欄「未分組」分組也沒有可用的「新會話」行爲。
下面介紹社區插件 dsh-plugin-outside-workspace(npm 包名 dsh-outside-workspace,維護者 realhenrylan):在 Host 已有「只傳 cwd、不傳 workspaceId」能力的前提下,補 UI 入口與首條消息 composer,讓你在不註冊工作區的情況下開聊,會話歸入側邊欄「未分組 / Ungrouped」。
這是什麼¶
一句話:在 DSH Web / Desktop 前端裏,新建不屬於任何已註冊工作區的會話,默認工作目錄落在 Host 文檔目錄下的 deepseek-harness/outside-workspace。
- 倉庫:github.com/realhenrylan/dsh-plugin-outside-workspace
- 社區目錄頁:skillhub.cn/plugins/realhenrylan/dsh-plugin-outside-workspace
- 許可證:MIT(見倉庫 README)
- 當前 package 版本:0.1.0(見倉庫
package.json) - 運行面:僅
dsh.client.platform: web(Web / Desktop 的 Web 前端)
社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝前請自行查看源碼與許可證,插件隨當前 DSH 進程權限運行。
核心功能¶
入口¶
- 空白新會話頁(hero):工作區選擇器右側的「不在工作區 / Outside workspace」按鈕,點擊後創建工作區外會話並打開。
- 側邊欄「未分組」:分組行右側的「新會話(+)」。DSH 原生對無 Workspace id 的「未分組」不處理該按鈕;本插件接管點擊,同樣創建工作區外會話並直接打開。
工作目錄與歸屬¶
- 默認目錄:Host 的
<文檔>/deepseek-harness/outside-workspace(缺失時由 Host 遞歸創建)。例如 Windows 上爲C:\Users\<你>\Documents\deepseek-harness\outside-workspace。 - 目錄推導:若存在宿主 first-use 默認工作區(
<documents>/deepseek-harness/default-workspace),沿用其 Documents 根(尊重 Host 的documentsDirectory);否則取$host.home/Documents。v1 暫無設置項修改默認目錄。 - 會話不註冊工作區,側邊欄歸入「未分組 / Ungrouped」。
首條消息與後續 UI¶
DSH 原生在空白且無工作區時會禁用輸入框。本插件對本插件剛創建的、仍爲 blank 的工作區外會話接管 composer,使新會話頁與普通新會話頁一致:標題、Agent 預設、權限選擇、模型選擇、發送按鈕;項目名稱位顯示爲「不在項目中」。首條消息支持添加文件、粘貼圖片或拖入附件;Enter 發送,Shift+Enter 換行。消息被接收後會話不再 blank,交還宿主標準對話 UI 與 composer。Slash 指令與 @ 引用補全從第二條消息起可用。
安裝與啓用¶
在任意 DSH 會話裏讓 agent 使用 plugin_manager 工具安裝(需要 Full access 權限):
plugin_manager({ action: "install_bundle", target: "github:realhenrylan/dsh-plugin-outside-workspace" })
也可從本地 checkout 的絕對路徑安裝(link: 安裝,node_modules/dsh-outside-workspace 指向該目錄):
plugin_manager({ action: "install_bundle", target: "<本倉庫 checkout 的絕對路徑>" })
安裝會寫入當前 profile 的 package.json(依賴與 dsh.profile.bundles)。在開啓 HMR 的 Desktop / Web profile 中新裝 bundle 可熱生效;若頁面未出現新按鈕,手動刷新一次即可。
卸載:
plugin_manager({ action: "remove_bundle", target: "dsh-outside-workspace" })
典型用法¶
- 安裝並刷新頁面後,打開空白新會話頁,點擊 hero 行「不在工作區 / Outside workspace」,或到側邊欄「未分組」行點擊「新會話(+)」。
- 在與普通新會話相同的首條消息頁選擇 Agent 預設、權限、模型,輸入首條內容(可附文件或圖片),發送。
- 發送後會話進入宿主標準對話界面;後續操作與常規 DSH 會話相同,工作目錄仍在上述默認
outside-workspace路徑。
工作原理(摘要)¶
Host 側 ctx.sessions.create({ cwd }) 與 workspaceId 互斥,Host 會創建目錄並把 cwd 記入 SessionHeader,無需改 Host。插件在瀏覽器半向 UI 貢獻:
conversation.hero.options:hero 行按鈕,創建後ctx.uiWorkspace.openSession(id)跳轉。conversation.composer(chain):僅 blank 工作區外會話時接管,複用宿主 hero 佈局,首條消息經ctx.sessions.using(...)的binding.session.prompt([...], 'queue')發送。- 「未分組」行「+」:在 document 捕獲階段識別
[role="treeitem"][data-row-key="workspace:"]行內最後一個行尾按鈕,阻止原生無操作並複用同一創建流程;DOM 不符時自動放棄,保持原生行爲。
適用場景與已知限制(v1)¶
適合:快速試 prompt、不打算建工作區的臨時對話;希望從「未分組」直接開聊;需要默認文檔目錄下獨立文件夾作爲 cwd 的輕量場景。
注意:
- 默認目錄固定推導,暫無配置項。
- 刷新頁面後,若仍停留在空白的工作區外會話,新會話頁不會恢復爲插件接管版(已發過消息的不受影響)。
- 「未分組」「+」與首條消息頁依賴當前 DSH 前端 DOM;上游改版可能安全退化或失效接管,不影響已創建會話的核心能力。
- 圖片與附件仍受 DSH 宿主格式與大小限制;組合 native directory picker 時
directoryPicker/list不可用,首次點擊可能出現預期的 fallback 警告。
結尾¶
dsh-plugin-outside-workspace 把 DSH 已有的「僅 cwd 會話」能力接到 hero 與「未分組」入口,並補齊空白無工作區時的首條消息體驗,適合需要 Codex 式 projectless 會話的 Web / Desktop 用戶。