前言¶
在 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。