前言¶
在 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 在社區目錄檢索。