dsh-envsel:在 DSH 會話裏選擇 Python、R 與 CLI 環境

前言

在 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_PYTHONDSH_ENV_RSCRIPTDSH_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 的獨立插件接入。隨後可以用 /envsession_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_PYTHONDSH_ENV_RSCRIPTDSH_ENV_CLI_PREFIX
  • 模型可以通過 /envsession_env 查詢當前狀態。

選擇保存在本機 JSON store:

$DSH_HOME/envsel-state.json

該文件按 session id 作爲鍵。選擇不寫入 session event log。

可選配置

插件可以無配置使用。如果你的 profile 使用 cordis.patch.yml,可以在 envsel 行下配置可選項。已覈實的配置鍵包括:

  • listTtlMs
  • condaCommand
  • standaloneRRoots
  • wslEnabled
  • registerTool
  • probeTimeoutMs

例如,可以在 envsel 行的 config 下設置:

config:
  wslEnabled: false
  registerTool: true

適用場景與注意

適合:

  • 需要多個 DSH 會話使用不同 Python、R 或 CLI 環境。
  • 環境來源是 conda、standalone R、WSL 或自定義路徑。
  • 希望模型在 shell 調用中通過 DSH_ENV_* 看到當前選擇。
  • 希望用 /envsession_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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜