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

包管理器守卫 acus9345/dsh-enforce-package-manager

DeepSeek Harness
acus93457 天前有提交已提供中文文档扫描:未发现敏感能力

DeepSeek Harness 插件,阻止智能体用错包管理器(npm 还是 pnpm、pip 还是 uv),并给出正确命令。

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add acus9345/dsh-enforce-package-manager
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · market
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/29) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh@deepseek-ai/dsh-agent@deepseek-ai/dsh-fs@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-enforce-package-manager 你的仓库用 pnpm,智能体却敲下 npm install zod。结果 pnpm-lock.yaml 旁边多出一个 package-lock.json,还多了一个 pnpm 不认识的依赖。Python 这边也一样:uv 项目里跑 pip install requests,包装进了 venv,却永远进不了 pyproject.toml,下次 uv sync 就没了。 这个 DeepSeek Harness 插件会判断项目用的是哪个包管理器。如果智能体伸手去用别的,命令会被拦下,模型拿到正确的命令,而且已经翻译好了: dsh-enforce-package-manager blocked npm install zod --save-dev: this project uses pnpm, not npm ("packageManager": "pnpm@…
展开完整文档(README 剩余 1 节)
dsh-enforce-package-manager

你的仓库用 pnpm,智能体却敲下 npm install zod。结果 pnpm-lock.yaml 旁边多出一个 package-lock.json,还多了一个 pnpm 不认识的依赖。Python 这边也一样:uv 项目里跑 pip install requests,包装进了 venv,却永远进不了 pyproject.toml,下次 uv sync 就没了。

这个 DeepSeek Harness 插件会判断项目用的是哪个包管理器。如果智能体伸手去用别的,命令会被拦下,模型拿到正确的命令,而且已经翻译好了:

dsh-enforce-package-manager blocked npm install zod --save-dev: this project uses pnpm,
not npm ("packageManager": "pnpm@…" in /work/app/package.json). Mixing package managers creates a second lockfile, ignores the existing one, and can install different versions. Run this instead:
pnpm add -D zod

模型接下来通常就直接跑建议的那一行。

安装

dsh plugin --profile web add dsh-enforce-package-manager

这里用的是 web 配置档,也就是你用 dsh web 启动的浏览器界面。如果你用别的方式跑 DSH,就换成 headless(脚本和 CI)或 acp(编辑器集成)。每个配置档各管各的插件列表,所以你用到的每个配置档都要加一遍。没有别的要设置。卸载用 dsh plugin --profile web remove dsh-enforce-package-manager。

从克隆的仓库安装

想试本地改动,就打个 tarball 再装:

git clone https://github.com/acus9345/dsh-enforce-package-manager
cd dsh-enforce-package-manager
npm install
npm pack
dsh plugin --profile web add ./dsh-enforce-package-manager-0.2.0.tgz

它怎么判断项目的包管理器

起点是命令将要运行的那个目录,同一命令行里前面的 cd 也会跟着走。从那里往上找,遇到第一个能给出答案的目录就停。它不会越过 git 根目录;没有 git 仓库时,不会越过你启动 DSH 的那个文件夹,所以你家目录里一个乱放的 lockfile 不算数。

JavaScript 这边,package.json 里的 packageManager 字段优先。其次找唯一的 lockfile:pnpm-lock.yaml、yarn.lock、bun.lock / bun.lockb 或 package-lock.json。如果发现两个不同管理器留下的 lockfile,它不猜,直接让开。

Python 这边,它找 uv.lock、poetry.lock、pdm.lock、Pipfile,或者 pyproject.toml 里的 [tool.poetry] / [tool.uv] / [tool.pdm] 段。只有 requirements.txt 的项目没有可强制的管理器,所以那里 pip 不管。

哪些命令会被翻译

| 智能体运行 | 在 pnpm 项目里 | 在 uv 项目里 |
| npm install | pnpm install | |
| npm ci | pnpm install --frozen-lockfile | |
| npm i -D vitest | pnpm add -D vitest | |
| yarn add zod | pnpm add zod | |
| npm uninstall left-pad | pnpm remove left-pad | |
| pip install httpx | | uv add httpx |
| python -m pip install -e . | | uv sync |
| pip uninstall httpx | | uv remove httpx |

yarn、bun、npm 项目也一样,poetry(poetry add)、pipenv(pipenv install)、pdm(pdm add)同样适用。

文件夹与工作区选项也一并沿用。npm i -w web react 换成 pnpm --filter web add react(或 yarn workspace web add react),npm install --prefix api 换成 pnpm -C api install。

在 Windows 上,DSH 通过 PowerShell 执行命令,同样的检查也适用于 npm.cmd、pip.exe、完整程序路径和 Set-Location。

它只关心会改动项目依赖的命令。npm run build、npm test、npx vitest 和全局安装(npm i -g ...)都能通过,因为它们不动项目的 lockfile。Python 这边,pip install --user ... 和升级安装器自身(pip install -U pip、pip install uv)同样不管,原因一样。

配置

最简单的办法:打开 DSH 侧边栏里的 Plugins,点 dsh-enforce-package-manager,改你要改的,然后按 Save。下一次工具调用就生效,不用重启。

或者往 ~/.dsh/profiles/<profile>/cordis.patch.yml 加一行,想对所有配置档生效就加到 ~/.dsh/cordis.patch.yml。没写的键保持默认值。

- id: enforce-package-manager
config:
mode: deny # or ask to approve mismatches yourself
javascript: true # false: don't police npm/pnpm/yarn/bun
python: true # false: don't police pip
shellTools: [bash, pwsh] # pwsh is the shell DSH uses on Windows

开发

npm install
npm test # detection and translation unit tests
npm run test:e2e # real dsh runs against a scripted local model, no API key needed

安装测试会跑 dsh plugin add,这需要 PATH 里有 pnpm。

MIT 协议。作者 acus9345。欢迎在 issues 里提 bug 和想法。
预览分享卡片长什么样 ↓acus9345/dsh-enforce-package-manager
分享 · DeepSeek Harness Hub
acus9345/dsh-enforce-package-manager

DeepSeek Harness 插件,阻止智能体用错包管理器(npm 还是 pnpm、pip 还是 uv),并给出正确命令。

回到顶部