Embed a "Plugin Management" panel and 4 agent tools into the DSH Web settings page, providing unified management of profile plugin installation states via the official mechanism, including bundle layer stack, insert row enable/disable, version check, and CRUD operations.
$ dsh plugin --profile web add github:vlln/plugin-registryRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
Embeds a "Plugin Management" panel + 4 agent tools into the DSH Web settings page. With 0 patch, it provides unified management of profile plugin installation states: bundle layer stack, insert lines, enable/disable, and version checks all go through official mechanisms without directly modifying source code.
https://github.com/o/r, github.com/o/r, and github:o/r formats). Auto-routes based on whether the package declares dsh.bundle: bundles go to layer stack (effective after restart), non-bundles write insert lines (configured with HMR for real-time mounting, no restart required).pnpm update) and uninstallation (pnpm remove + reconcile).plugin_search / plugin_install / plugin_uninstall / plugin_status). Agent and panel write to the same installation state, supporting command-line batch operations.cordis ^4.0.0-rc.7 (host half plugin runtime) / react ^18.2.0 (browser half panel) / @deepseek-ai/dsh-tools ^0.1.0-rc.5 (agent tool registration defineTool) / yaml ^2.4.0 (profile patch parsing and writing)plugin-console cordis plugin via dsh.bundle.patch, mounting to web profile's webServer (/api/plugin-console route) + loader (reads loader tree entries) + tools (registers 4 agent tools) + agentPresets (preset mount annotation) four inject services; Browser half mounts React panel to settings.section slot via dsh.client.injectpackages/plugin/console/src/index.ts (Node half) / packages/plugin/console/src/client/index.ts (Browser half) / packages/plugin/console/cordis.patch.yml (bundle injection declaration)DSH users who have installed multiple third-party bundles or non-bundle plugins and need centralized viewing/enabling/disabling/updating in the Web UI, without manually modifying profile configuration or restarting services one by one.
Agent developers who need to automatically install/uninstall plugins within controlled DSH workflows (e.g., setup flows, CI in-plugin validation) and prefer using official mechanisms over bypassing pnpm.
Users who want to try different plugin combinations in a clean environment without manually writing YAML in cordis.patch.yml every time—the panel + tools directly manage installation state read/write.
| Dependency | Min Version | Description |
|---|---|---|
| DSH | ^0.1.0-rc.5 | peerDependencies declares @deepseek-ai/dsh-tools ^0.1.0-rc.5; depends on web profile's webServer / loader / tools / agentPresets four inject services, corresponding to versions after 0811 when official repository-plugins mechanism was removed |
| Node | Not declared | package.json does not declare engines.node; devDependencies @types/node ^22.0.0, recommend Node ≥ 22 (aligned with DSH 0811 host baseline) |
| Platform | Web | dsh.client.platform: "web"; Node half is cross-platform but only registers routes under web profile composition |
| Native modules | None | Only uses node:fs / node:child_process / node:os / node:path built-in modules and browser fetch, no native bindings introduced |
dsh plugin --profile web add github:vlln/plugin-registry
| Config | Type | Description | Default |
|---|---|---|---|
| None | - | This plugin does not expose Cordis schema configuration options; behavioral parameters (DSH_HOME resolution, profile directory, registry timeout, 30 second startup delay pre-scan, etc.) are all source code constants | - |
Q: After installation, where can I find the management panel in DSH Web?
A: After installation, refresh the Web page. The settings page will have a new tab called "Plugin Management" (located next to the official "Plugins" tab). Click it to load the panel.
Q: Why don't non-bundle plugins require a DSH restart after installation?
A: The panel writes to profile cordis.patch.yml insert lines; starting from DSH 0811, profile-boot mounts a watch-only HMR instance, so line additions/deletions take effect in real-time.
Q: Why do bundle plugins still require a web restart after installation?
A: Bundle plugins are installed in profile package.json dependencies + dsh.profile.bundles layer stack. The layer stack is synthesized at startup and cannot be hot-swapped at runtime.
Q: How do agents use this installation mechanism? Do I need to switch to the panel?
A: Not necessary. The Node half simultaneously registers 4 defineTool tools (plugin_search / plugin_install / plugin_uninstall / plugin_status), writing to the same installation state as the panel.
Q: How do I distinguish the three states shown in the panel: "Running / Preset Mounted / Disabled"?
A: Running = host enabled; Preset Mounted = host disabled but agent preset still mounted (0811 model tools go through preset channel, disabling host doesn't mean tools disappear); Disabled = completely disabled.
Q: Can I disable or uninstall this management tool itself from the panel?
A: No. The Node half hard-blocks operations on @dsh-external/plugin-console in toggle/remove routes, returning 409—preventing self-destruction of the management entry point.
Q: What does "pnpm add succeeded but X is not in the profile dependencies" mean when installation fails?
A: This usually means the git source or path source didn't actually land on disk (pnpm exits 0 but dependency wasn't written to package.json). Installation state won't continue to be written to avoid false success; try again with an explicit package name or after confirming git/path is reachable.
Q: How do I update when a plugin has a new version?
A: Click "Check for Updates" in the panel to trigger Node half to check npm registry via native fetch with 6h cache (minimum 30 second interval for debounce). Bundles show an "Update" button, which runs pnpm update (effective after restart); git/link packages are marked as "Local" with no latest.
Beginner — ready to use after installation, no configuration; advanced users can integrate with automation flows through agent tools, no need to read source code.
cordis.patch.yml is deleted to empty, HMR fails due to YAML parsing to null — Node half write logic keeps comment + [] template as fallback structure (src/index.ts:206-211).@scope/name), the profile patch name field must be quoted — @ is a reserved indicator in YAML, bare writing causes HMR to not take effect (src/index.ts:140-145).pnpm / npm commands called via .cmd batch file shims trigger libuv EINVAL. Node half changed to directly spawn <node>\node_modules\npm\bin\npm-cli.js or %APPDATA%\npm\node_modules\pnpm\bin\pnpm.mjs JS entry, falling back to .cmd when entry not found (src/index.ts:382-403).MutationObserver to listen for DOM replacements, only matching text "插件管理" (Plugin Management) tab (won't mistakenly change official "插件" (Plugins) tab gear icon). Icon was accidentally changed before due to name collision (src/client/index.ts:18-42).agentPresets service being readable. When service is unavailable, falls back to ordinary disabled (src/index.ts:484-498).
DSH 插件生态基建:薄控制台 + 官方插件开发引导
浏览器面板管理 profile 插件安装态(bundle 层栈 + insert 行 + 启停),零补丁;
`make-dsh-plugin` skill 引导开发者按官方格式写插件。
转向(2026-08):官方 0809 推出仓库插件机制(
.dsh-plugin)覆盖旧独立机制 ~95%,本仓库收敛为 薄控制台 + 插件开发规范和引导(旧 patch/CLI/面板已移除)。0811 起官方删除 repository-plugins 机制(vendor/loader/src/repository.ts),外部插件统一经 web profile 安装: bundle 插件(dsh.bundle包)进dsh.profile.bundles层栈;非 bundle 插件(纯 cordis 包)经 profilecordis.patch.ymlinsert 行挂载(配置 HMR 实时生效)。完整评估见 官方 0809 覆盖度。
DeepSeek Harness 官方机制管「插件是什么、怎么跑」;本仓库补两件事(面板结构见 console README,开发引导见下文):
packages/plugin/console)——管理 profile 插件安装态的浏览器面板 + 4 个 agent 工具make-dsh-plugin skill + cookbook,指导创建官方 bundle / cordis 插件官方 DSH(DeepSeek Harness) 插件运行时 + profile bundle 机制(0811 起无 repository 机制)
│
├── 官方插件(bundle) loop / task-status / navbar 等——`dsh plugin --profile web add` 装进 profile 层栈
├── 第三方插件(bundle/纯插件)独立 GitHub 仓库或 npm 包——bundle 进层栈;纯插件走 insert 行(实时)
│
└── 本仓库(plugin-registry) ① 薄控制台:管理安装态的浏览器面板 + agent 工具
② make-dsh-plugin skill + cookbook:引导开发第三方插件
插件形态与安装路径说明见 插件类型对比;现有插件的安装示例见 examples。

设置页「插件管理」面板管理 profile 插件安装态:安装插件区(统一入口——输入 npm 包名或 GitHub 项目:https://github.com/o/r / github.com/o/r / github:o/r,URL 自动规范化——自动 pnpm add,bundle 插件进层栈、非 bundle 写 insert 行)+ 已加载插件区(版本检查/更新、disabled 启停持久化、bundle 卸载)。
方式一:git 源直接安装(推荐,真一行)
dsh plugin --profile web add "github:vlln/plugin-registry#main&path:/packages/plugin/console"
构建产物已入库(git 源安装不触发构建),一行命令直接装(实测约 15 秒)。
方式二:本地目录(有源码时)
git clone https://github.com/vlln/plugin-registry
cd plugin-registry/packages/plugin/console
dsh plugin --profile web add . # 产物已入库,无需构建;当前目录即 bundle 包子目录(dsh 锚定 . 为绝对路径)
挂载后刷新 Web 页面,设置页出现「插件管理」面板。
| Skill | 作用 |
|---|---|
| make-dsh-plugin | 创建官方 bundle / cordis 插件:先选形态(skill 包 / MCP / Node 工具 / 带 UI)→ 声明 dsh.bundle 或纯 apply → 安装验证纪律。详情分置 references/;仓库内参考实现 packages/plugin/console |
关键坑(官方包未发布、Node half 改动需重启、宿主 CSS 覆盖等)与完整清单见 skill references/gotchas——开发前先读。
MIT License。见 LICENSE。