前言¶
在 DeepSeek Harness(DSH)的 web 會話裏,模型可能會調用 shell 執行 Python、R 或命令行工具。不同任務常需要不同環境:一個 conda 環境、某個 standalone R 安裝、某個 WSL 發行版,或者一個手動指定的解釋器路徑。
dsh-envsel 做的事情比較具體:給 DSH 會話提供 Python、R 和 CLI tools 三個環境槽位,允許從 conda、standalone R、WSL 或用戶固定的自定義路徑中選擇,並把選擇持久化到重啓之後。
這是什麼¶
dsh-envsel 是 beihzb 維護的獨立 DSH 插件,包名是 @beihaizb/dsh-envsel,許可證爲 MIT。它通過 --profile web 安裝,屬於 npm-installable 插件。
它解決的問題是:同一個 DSH 實例裏,不同會話可以綁定不同的語言環境,並且模型在 shell 調用裏能看到這些選擇。
核心功能¶
下面列出插件提供的能力:
- 按會話保存環境選擇,重啓後仍然保留。
- 爲 Python、R 和 CLI tools 分別提供環境槽位。
- 環境來源包括 conda、standalone R 安裝、WSL 發行版,以及用戶固定的自定義路徑。
- 在聊天中使用
/env命令讀取、分配、清除和列出環境。 - 提供
session_env模型工具,讓模型可以列出、選擇、固定和取消固定環境。 - 爲 shell 調用暴露
DSH_ENV_PYTHON、DSH_ENV_RSCRIPT、DSH_ENV_CLI_PREFIX這幾個 shell facts。 - 在會話頁頭部提供 Env 下拉菜單,可按語言選擇,並用 Add path 表單固定解釋器或安裝目錄。
- 界面文案跟隨 DSH 的語言設置,即 bilingual UI。
安裝與啓用¶
插件要求 DSH 版本爲 0.1.0-rc.7,或兼容的 0.1.0-rc.x web profile。它還要求 PATH 中存在 pnpm,因爲 dsh plugin 會用到。
先確認 DSH 和 pnpm 可用,然後執行:
dsh plugin --profile web add @beihaizb/dsh-envsel
如果你使用本地源碼倉庫,也可以用本地路徑安裝:
dsh plugin --profile web add "file:/absolute/path/to/this/repo"
經過上面的步驟後,插件會作爲 web profile 的獨立插件接入。隨後可以用 /env 和 session_env 管理當前會話的環境選擇。
典型用法¶
使用 /env 命令¶
/env 是面向聊天窗口的主入口。常用形式如下:
/env
/env python=mycondaenv
/env r=R-latest
/env cli=base
/env list [filter]
/env add <path>
/env unpin custom:<name>
/env clear
/env wsl
各條命令的作用:
1、/env:查看當前選擇。
2、/env python=mycondaenv:把 Python 槽位設置爲指定環境名。
3、/env r=R-latest:把 R 槽位設置爲指定環境名。
4、/env cli=base:把 CLI 槽位設置爲 PATH prefix。
5、/env list [filter]:列出可發現的環境,可按 filter 過濾。
6、/env add <path>:記住本機上的一個解釋器或安裝目錄。
7、/env unpin custom:<name>:忘記一個已固定的路徑。
8、/env clear:清空所有槽位。
9、/env wsl:在 Windows 上重新掃描 WSL 發行版;非 Windows 主機會跳過 WSL 掃描。
使用 session_env 工具¶
模型也可以自己管理環境。session_env 支持列出、選擇、固定和取消固定環境。適合在對話中讓模型根據任務選擇環境,而不是每次手動輸入 /env。
使用會話頭部 Env 菜單¶
會話頭部會提供 Env 下拉菜單。它可以按 Python、R、CLI tools 分開選擇,也提供 Add path 表單,用於固定一個絕對路徑的解釋器或安裝目錄。
選擇如何生效¶
這裏有一個容易誤解的點:dsh-envsel 的選擇不會以 runtime-context 文本渲染進模型 system prompt。模型看到當前選擇的方式主要有兩條:
- 每次 shell 調用都會看到
DSH_ENV_PYTHON、DSH_ENV_RSCRIPT、DSH_ENV_CLI_PREFIX。 - 模型可以通過
/env或session_env查詢當前狀態。
選擇保存在本機 JSON store:
$DSH_HOME/envsel-state.json
該文件按 session id 作爲鍵。選擇不寫入 session event log。
可選配置¶
插件可以無配置使用。如果你的 profile 使用 cordis.patch.yml,可以在 envsel 行下配置可選項。已覈實的配置鍵包括:
listTtlMscondaCommandstandaloneRRootswslEnabledregisterToolprobeTimeoutMs
例如,可以在 envsel 行的 config 下設置:
config:
wslEnabled: false
registerTool: true
適用場景與注意¶
適合:
- 需要多個 DSH 會話使用不同 Python、R 或 CLI 環境。
- 環境來源是 conda、standalone R、WSL 或自定義路徑。
- 希望模型在 shell 調用中通過
DSH_ENV_*看到當前選擇。 - 希望用
/env或session_env在會話中管理環境。
注意:
- 插件以當前
dsh進程權限運行。安裝前應檢查源碼和許可證。本插件聲明 MIT 許可證。 - 插件 peer-bound 到
@deepseek-ai/dsh-*@^0.1.0-rc.7,使用前應確認 DSH 版本在要求範圍內。 - WSL 掃描只在 Windows 上啓用,非 Windows 主機自動跳過。
- 選擇不會寫入模型 system prompt,而是通過 shell facts 和
/env/session_env暴露。 - DSH 插件目錄是獨立站點,不等同於官方應用商店。已覈實資料未提供星標數量或目錄頁 URL,本文不拼接不可覈實的鏈接。
結尾¶
dsh-envsel 的價值在於把“這個會話用哪個 Python / R / CLI 環境”變成會話級、可持久化、可被模型查詢的狀態。適合在 DSH web profile 中處理多語言環境切換的開發者。
GitHub 倉庫:
https://github.com/beihzb/dsh-envsel
目錄頁鏈接:已覈實資料未提供 URL,本文不給出;如需檢索,可搜索包名 @beihaizb/dsh-envsel。