← 返回列表
未验证
把插件装进 profile 并热挂载,无需重启
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/17 · 已提供中文文档
dsh包管理器中间件,对原有的add的模式进行的封装,支持预设和插件 (内容还在迭代!!!!)
综合分
27.7
GitHub 分
27.7
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add space-spacee-clamation/dsh-package-manager该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-subprocess用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-package-manager
@dsh-ext/dsh-package-manager 是 DSH 的插件包管理器。它只保留一条安装管线:
把 dsh-bundle 插件安装为 profile 依赖,然后把它声明的 dsh.bundle.patch
写入 profile 自己的 cordis.patch.yml。热挂载、热卸载、禁用/启用都不再碰
Loader API,而是完全交给宿主启动时已经挂好的 watchUserPatches。
只有一条管线:profile 依赖安装 + cordis.patch.yml 中的托管块。
宿主自身的 watchUserPatches 会对根 Include 做 diff,
并热挂载/卸载这些行。dsh-bundle 插件永远不需要重启。
为什么这样设计
DSH 的每个 profile 在 boot 时会把以下补丁层合成为一棵 Loader 树:
bundle 层(dsh.profile.bundles 顺序)
-> profile cordis.patch.yml
-> home cordis.patch.yml
-> --patch overlays
apps/cli/src/profile-boot.ts 里的 watchUserPatches 监听 profile/home 两级
cordis.patch.yml,每次文件变化都会重新解析该层,并调用 root Include 的
entry.update({ config: { ...config, patches } })。Loader 随后按行 id 做增量
diff——这就是官方热重载路径,新增行即挂载,删行即卸载,disabled: true 即禁用。
因此本包*不导入 cordis-plugin-loader、不创建 Include 子树、不重算 profile
组合。安装 dsh-bundle 时只做两件事:
1. pnpm add (或 dsh plugin 的等价 pnpm 路径),让包可以从
profile 的 node_modules 解析;
2. 把该包的 dsh.bundle.patch 归一化后写进 profile cordis.patch.yml 的一个
带标记的托管块:
用户自己的补丁行保持原样
- id: user-row
name: ./user-row.mjs
dsh-package-manager: "my-plugin"
- insert:
- id: my-plugin-row
name: my-plugin
config:
token: !!js process.env.MY_TOKEN
/profiles/web),其中还没有本包。
bash
cd /profiles/web
pnpm add github:space-spacee-clamation/dsh-package-manager
pnpm install
或直接编辑 /profiles/web/package.json,只加依赖,不要加进
dsh.profile.bundles:
json
{
"dependencies": {
"@dsh-ext/dsh-package-manager": "github:space-spacee-clamation/dsh-package-manager"
}
}
然后把包管理器自己迁入 profile cordis.patch.yml 托管块:
bash
dpm self-managed --repo /path/to/dsh-package-manager --profile web
重启 DSH 后,包管理器由用户层托管块挂载。之后包管理器自己的源码/产物变化
就可以通过官方 watchUserPatches 热更新。
未发布到 profile 时,也可以直接执行 node bin/dpm.mjs ... 使用 CLI。
使用
bash
dpm state
dpm install --profile web --source github:owner/repo --adapter auto --dry-run
dpm install --profile web --source github:owner/repo --allow-build
dpm uninstall --profile web --id repo
dpm check-update --profile web --id repo
dpm disable --profile web --id repo
dpm enable --profile web --id repo
dpm restore --file ./requirements/deps.yaml
dpm sync --repo . --modes web,headless
dpm doctor
Web 设置页的链接输入会创建 AI 会话并派发 pm_install。详细 API 与 adapter
规范见 docs/。
目录
| 路径 | 含义 |
| --- | --- |
| /profiles//package.json | profile 依赖真相(安装) |
| /profiles//cordis.patch.yml | 热装卸真相(本包只编辑其中的托管块) |
| /package-manager/ledger.json | 本包元数据:source/id/packageName/steps |
| /package-manager/runtime/ | 工作区历史、git 源缓存与 scratch |
文档
| 文档 | 内容 |
| --- | --- |
| docs/usage.md | 设置页、CLI、Web API、程序化 API、source spec、requirements |
| docs/adapter-spec.md | custom adapter step 词汇表、占位符、逆操作 |
| docs/requirements-spec.md | requirements/deps.yaml 字段与校验 |
| docs/ai-tools.md | AI 安装流程与工具契约 |
| docs/development.md | 构建、测试与本地开发 |
UI 参考
设置页视觉样式参考
Dannimations/Browser-extensions-manager-ui
(Frontend Mentor 的 Browser extensions manager UI challenge):
浅蓝渐变背景、白色卡片、中性描边、红/灰开关状态。交互与业务逻辑为本项目独立实现。
License
MIT。扫码进群