🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

工作区环境变量注入 Momojie-S/dsh-workspace-env

DeepSeek Harness
Momojie-S25 天前有提交已提供中文文档扫描:含敏感能力

DSH 插件:pwsh 工具每次调用时,自动把当前 workspace 目录下的 .env…

31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/11 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Momojie-S/dsh-workspace-env
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · dev
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/30·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 25 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查需源码安装

engines.node 要求 >=24,不满足 Node 22.19.0

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@momojie-s/dsh-workspace-env(未发布到 npm,仅可源码安装)
✗Node 引擎要求 >=24 · 基线 Node 22.19 不满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 04:17:07

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 30 处,展示前 24 条)
  • 删除本地文件递归
    scripts/build.mjs:27
    await rm(stage, { recursive: true, force: true })
  • 执行外部命令固定命令
    scripts/build.mjs:28
    execSync('tsc --outDir lib-tmp', { cwd: root, stdio: 'inherit' })
  • 读取本地文件
    scripts/build.mjs:37
    const liveExists = await readdir(live).then(() => true, () => false)
  • 删除本地文件递归
    scripts/build.mjs:39
    await rm(retired, { recursive: true, force: true })
  • 写入本地文件
    scripts/build.mjs:40
    await rename(live, retired)
  • 写入本地文件
    scripts/build.mjs:43
    await rename(stage, live)
  • 写入本地文件
    scripts/build.mjs:45
    if (liveExists) await rename(retired, live)
  • 删除本地文件递归
    scripts/build.mjs:48
    await rm(retired, { recursive: true, force: true })
  • 读取本地文件
    scripts/build.mjs:50
    const pkg = JSON.parse(await readFile(join(root, 'package.json'), 'utf8'))
  • 写入本地文件
    test-parse.mjs:20
    writeFileSync(join(tmp, '.env'), 'FOO=bar\nBAZ=qux\n')
  • 写入本地文件
    test-parse.mjs:24
    writeFileSync(join(tmp, '.env'), 'MSG="hello world"\nMSG2=\'single quoted\'\n')
  • 写入本地文件
    test-parse.mjs:28
    writeFileSync(join(tmp, '.env'), '# comment\n\nKEY=val\n # indented comment\n')
  • 写入本地文件
    test-parse.mjs:35
    writeFileSync(join(tmp, '.env'), 'DSH_SECRET=hack\nNORMAL=ok\nDSH_WEB_URL=evil\n')
  • 写入本地文件
    test-parse.mjs:39
    writeFileSync(join(tmp, '.env'), 'JUSTKEY\nA=b\nnoequals\n')
  • 写入本地文件
    test-parse.mjs:43
    writeFileSync(join(tmp, '.env'), '')
  • 删除本地文件递归
    test-parse.mjs:54
    rmSync(tmp, { recursive: true })
  • 写入本地文件
    test-spawnspec.mjs:48
    writeFileSync(join(tmp, '.env'), 'MY_API_KEY=secret123\nJAVA_HOME=/usr/lib/jvm\n')
  • 写入本地文件
    test-spawnspec.mjs:56
    writeFileSync(join(tmp, '.env'), 'EXISTING=overridden\n')
  • 写入本地文件
    test-spawnspec.mjs:63
    writeFileSync(join(tmp, '.env'), 'DSH_SESSION_ID=hack\nDSH_EVIL=bad\nSAFE=ok\n')
  • 删除本地文件递归
    test-spawnspec.mjs:75
    rmSync(tmp2, { recursive: true })
  • 写入本地文件
    test-spawnspec.mjs:78
    writeFileSync(join(tmp, '.env'), '')
  • 写入本地文件
    test-spawnspec.mjs:85
    writeFileSync(join(tmp, '.env'), 'X=y\n')
  • 写入本地文件
    test-spawnspec.mjs:91
    writeFileSync(join(tmp, '.env'), 'PATH=D:\\tools;${PATH}\n')
  • 删除本地文件递归
    test-spawnspec.mjs:116
    rmSync(tmp, { recursive: true })
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 按工作区注入环境变量

DSH 插件:为 shell 子进程按工作区注入 .env

README

由 DeepSeek 最新模型翻译生成
dsh-workspace-env npm 包名:@momojie-s/dsh-workspace-env DSH 插件:pwsh 工具每次调用时,自动把当前 workspace 目录下的 .env 注入子进程环境变量——workspace 级环境变量隔离,切项目自动切 env,智能体无感知。 环境要求 - DSH >= 0.1.0-rc.6(已验证至 0.2.0-rc.2:.env 注入实测正常。依赖 shell 服务的 spawnSpec 内部方法,升级 DSH 后建议重跑验证) - Windows pwsh(bash 链路未覆盖) 用法 workspace 根目录(session cwd)放一个 .env: GH_TOKEN=gho_xxx QUOTED="value with spaces" # 成对单/双引号自动去除 PATH=D:\mytools;${PATH} # ${VAR} 引用父环境,PATH 前置追加 开头是注释;空行、无 = 的行跳过 - .env 每次命令调用现读,改完立即生效,无需重启 - DSH_ 前缀的 key 一律忽略(DSH 管理变量有自己的通道) - 同 key 覆盖:workspace .env 优先级最高,赢过系统环境变量、DSH 注入的一切同名变量(DSH_ 除外)
展开完整文档(README 剩余 1 节)
dsh-workspace-env

npm 包名:@momojie-s/dsh-workspace-env

DSH 插件:pwsh 工具每次调用时,自动把当前 workspace 目录下的 .env 注入子进程环境变量——workspace 级环境变量隔离,切项目自动切 env,智能体无感知。

环境要求

- DSH >= 0.1.0-rc.6(已验证至 0.2.0-rc.2:.env 注入实测正常。依赖 shell 服务的 spawnSpec 内部方法,升级 DSH 后建议重跑验证)
- Windows pwsh(bash 链路未覆盖)

用法

workspace 根目录(session cwd)放一个 .env:

GH_TOKEN=gho_xxx
QUOTED="value with spaces" # 成对单/双引号自动去除
PATH=D:\mytools;${PATH} # ${VAR} 引用父环境,PATH 前置追加
开头是注释;空行、无 = 的行跳过

- .env 每次命令调用现读,改完立即生效,无需重启
- DSH_ 前缀的 key 一律忽略(DSH 管理变量有自己的通道)
- 同 key 覆盖:workspace .env 优先级最高,赢过系统环境变量、DSH 注入的一切同名变量(DSH_ 除外)
- ${VAR} 引用:展开自父环境(系统变量 + DSH 注入)+ 同文件中更早定义的变量;未定义展开为空串。覆盖是整体替换,要追加就用引用:PATH=D:\tools;${PATH}

安装

本插件是组合包(dsh.bundle),用 dsh plugin 安装进 profile,自动追加配置层,无需手编 patch:

GitHub(私仓需 git 凭据;pnpm ≥10 首次 add 会提示授权构建,按提示把包键写进 ~/.dsh/profiles/web/pnpm-workspace.yaml 的 allowBuilds 后重新 add)
dsh plugin --profile web add github:Momojie-S/dsh-workspace-env

或 tarball(pnpm pack 产物,无授权要求)
dsh plugin --profile web add momojie-s-dsh-workspace-env-0.1.0.tgz

验证层就位后重启 DSH:

dsh web --dump-config | Select-String workspace-env # 应看到 "# == dsh-workspace-env" 层

开发模式:源码直连(改代码 → 重启验证)

编译 npm install && npm run build,profile 的 cordis.patch.yml 手动加行(name 用 file:/// URL 指向 lib/index.js):

- insert:
- id: workspace-env
name: file:///D:/code/workspace/deepseek-harness-101/plugins/dsh-workspace-env/lib/index.js
disabled: !!js process.platform !== 'win32'

独立追加行,不替换 pwsh-sandbox——文件沙箱能力完整保留(patch 也禁止 id override 改 name)。

配置

无。

验证

workspace 放 .env 写 WS_ENV_TEST=hello,让智能体跑:

pwsh: echo $env:WS_ENV_TEST

输出 hello 即生效;切到无 .env 的目录同命令输出空,即隔离生效。

设计文档见 docs/design/overview.md;跨插件开发方法论见合集仓库 docs/development-guide/dsh-plugin-development.md。
预览分享卡片长什么样 ↓Momojie-S/dsh-workspace-env
分享 · DeepSeek Harness Hub
Momojie-S/dsh-workspace-env

DSH 插件:pwsh 工具每次调用时,自动把当前 workspace 目录下的 .env…

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部