前言¶
在 DSH 智能体工作流里,pwsh 工具调用经常需要读取 token、路径、本地工具环境变量。如果每次都在系统层手工导出,容易出现两个问题:项目之间串环境,切到另一个 workspace 后还带着上一个项目的变量;或者改完 .env 后还要重启进程才能生效。
dsh-workspace-env 解决的就是这类问题:它作为 DSH 插件增强 pwsh executor,在每次调用时从当前 workspace 目录读取 .env,并把其中的变量注入子进程环境。下面介绍它的定位、能力、安装方式和验证方法。
这是什么¶
dsh-workspace-env 是一个 DSH 插件,仓库位于 Momojie-S/dsh-workspace-env,许可证为 MIT。
它的一句话定位是:
DSH 插件:
pwshexecutor 增强,从 workspace.env注入环境变量到子进程。
这个插件作为 dsh.bundle 组合包安装,使用 dsh plugin 安装进 profile 后,会自动追加配置层。安装后不需要手工编辑 patch,也不提供额外配置项。
核心能力¶
下面列出已核实的几项行为。
-
按 workspace 隔离
pwsh工具每次调用时,自动把当前 workspace 目录下的.env注入子进程环境变量。切项目时自动切换 env,agent 无感知。 -
每次调用现读
.env每次命令调用时现读,改完立即生效,无需重启 DSH。 -
忽略 DSH 管理变量
DSH_*前缀的 key 一律忽略。原因是 DSH 管理变量有自己的通道,workspace.env不覆盖这些 key。 -
同 key 覆盖规则
同 key 覆盖时,workspace.env优先级最高,赢过系统环境变量和 DSH 注入的同名变量;DSH_*除外。 -
支持变量引用
支持${VAR}引用父环境和同文件中更早定义的变量。未定义变量展开为空串。
覆盖是整体替换,如果要追加,需要使用引用,例如:
PATH=D:\tools;${PATH}
- 基础解析规则
支持成对单引号、双引号自动去除,支持#注释,空行和无=的行会被跳过。
环境与限制¶
使用前需要确认环境:
- DSH 版本要求:
DSH >= 0.1.0-rc.6 - 已验证至:
0.1.1-rc.2 - 仅覆盖 Windows
pwsh bash链路未覆盖- 依赖 shell 服务的
spawnSpec内部方法 - 升级 DSH 后建议重跑验证
安装与启用¶
1、安装插件¶
官方安装命令如下:
dsh plugin --profile web add github:Momojie-S/dsh-workspace-env
如果你使用 pnpm >= 10,首次 add 会提示授权构建。需要按提示把包键写入:
~/.dsh/profiles/web/pnpm-workspace.yaml
的 allowBuilds 中,然后重新执行 add。
也可以使用 tarball 安装:
dsh plugin --profile web add momojie-s-dsh-workspace-env-0.1.0.tgz
2、验证配置层¶
安装后执行:
dsh web --dump-config | Select-String workspace-env
应看到:
# == dsh-workspace-env
看到这一层,说明插件配置层已就位。
3、重启 DSH¶
验证层就位后,需要重启 DSH。
典型用法¶
1、在 workspace 根目录放 .env¶
在 workspace 根目录,也就是 session cwd,放一个 .env 文件:
GH_TOKEN=gho_xxx
QUOTED="value with spaces"
PATH=D:\mytools;${PATH}
其中:
GH_TOKEN=gho_xxx:注入普通环境变量。QUOTED="value with spaces":成对双引号会被自动去除。PATH=D:\mytools;${PATH}:通过${PATH}引用父环境,实现PATH前置追加。
2、验证注入是否生效¶
在 workspace 的 .env 中写入:
WS_ENV_TEST=hello
让 agent 执行:
pwsh: echo $env:WS_ENV_TEST
如果输出:
hello
说明注入生效。
3、验证 workspace 隔离¶
切换到没有 .env 的目录,执行同一条命令:
pwsh: echo $env:WS_ENV_TEST
如果输出为空,说明 workspace 级隔离生效。
适用场景与注意¶
这个插件适合以下情况:
- 你使用 DSH 的 Windows
pwsh链路。 - 不同项目需要不同的环境变量。
- 希望环境变量跟随 workspace 切换,而不是手动维护系统环境。
- 修改
.env后希望立即生效,不希望每次重启 DSH。
需要注意:
- 插件以当前
dsh进程权限运行,安装前应检查源码与许可证。 - 本插件许可证为 MIT。
DSH_*前缀的 key 不会由 workspace.env覆盖。${VAR}未定义时展开为空串。- 覆盖是整体替换,追加请使用
${VAR}引用。 - 仅覆盖 Windows
pwsh,bash链路未覆盖。 - 升级 DSH 后建议重跑验证。
结尾¶
dsh-workspace-env 的价值在于把环境变量管理下沉到 workspace:同一个 DSH profile 下,不同项目目录可以各自携带自己的 .env,pwsh 子进程每次调用时现读现注入。它适合需要按项目隔离环境变量的 DSH 使用场景。
GitHub:
https://github.com/Momojie-S/dsh-workspace-env
社区目录 URL 未在本文已核实资料中出现,这里不附未确认链接;可按插件名 dsh-workspace-env 在社区目录检索。