Introduction¶
The core capability of DeepSeek Harness (DSH) is extending Agent functionality through Skills. In real-world development, you often need to temporarily block certain tools or capabilities without uninstalling a Skill, or you need to manage a large number of Skills in a unified way. DSH does not natively provide a global-level mechanism for enabling/disabling Skills or runtime filtering.
dsh-skill-manager is a plugin that provides a management dashboard through the Web GUI. It fully filters disabled Skills during Agent runtime while preserving visibility in the management list and the ability to restore them.
Plugin Overview¶
This is a client-side plugin maintained by welsione. It addresses the following issues:
- Centralized management: View, search, and filter all Skills in the Web GUI settings page.
- Runtime control: After disabling a Skill, the Skill is completely invisible to the Agent during directory injection, tool invocation, or direct reference.
- Persistent configuration: The disabled list is stored in a local file and remains effective after restart.
Core Features¶
Settings Page Management Panel¶
After installing the plugin, go to the “Settings” page in the Web GUI, and a “Skill Management” panel will appear.
- List display: Shows all Skill names, descriptions, sources, and whether they are user-invocation-only.
- Search and filtering: Supports keyword search and filtering by “All / Enabled / Disabled”.
- Toggle operation: Enable or disable individual Skills.
Batch Operations¶
The toolbar provides one-click action buttons:
- Enable all: Batch-enable all Skills.
- Disable all: Batch-disable all Skills (confirmation required before the operation).
Plugin Configuration Card¶
In the “Settings” -> “Plugins” -> “Plugin Configuration” area, the dsh-skill-manager configuration card will appear. This card displays the current enable/disable statistics and the state file path in real time.
Runtime Filtering Mechanism¶
This is the core capability of the plugin. Once a Skill is disabled in the management panel, DSH intercepts access to that Skill at runtime:
- Directory injection interception: The
<available_skills>tag no longer includes that Skill. - Tool invocation interception: The Agent cannot invoke that Skill through the
skilltool. - Reference interception: If a user directly uses
/nameto reference that Skill, the request is intercepted.
This filtering applies globally to all Agents and their sub-Agents.
Persistence and Visibility¶
- Persistence: The disabled list is stored in
~/.dsh/skill-manager.json. The configuration remains valid after the plugin or DSH restarts. - Full visibility: Disabling only affects runtime discovery by the Agent. In the management list, all Skills remain visible and can be re-enabled at any time.
Headless Compatibility¶
The plugin supports Headless mode (profiles without the Web GUI). Although runtime filtering is a hard dependency, loading the Web server and Agents is an optional wait, so it does not affect usage in Headless environments.
Automatic Directory Updates¶
When an open session detects changes in the Skill list (such as disabling/enabling), it automatically publishes a “directory updated” message. No manual refresh or session recreation is required.
Technical Features¶
- Zero build: Single-file plugin (ESM host + ModuleLoader client), no compilation steps required.
- Automatic mounting: Automatically enters the
dsh.bundle.patchlayer throughdsh.profile.bundles, without manual configuration file editing.
Installation and Enablement¶
Before installing, make sure your DSH version meets the following requirements:
- DSH version: 0.1.0-rc.7 or later
- Model requirements: A bundle plugin model is required (
dsh.profile.bundles+dsh.bundle.patch)
Use the following command to install the plugin:
# 1. 通过 npm 仓库安装(推荐固定版本)
dsh plugin --profile web add dsh-skill-manager
# 2. 或直接从 GitHub 安装
dsh plugin --profile web add github:welsione/dsh-skill-manager
# 3. 或指定版本安装(避免主分支漂移)
dsh plugin --profile web add github:welsione/dsh-skill-manager#v1.2.0
After installation, refresh the Web page. The “Skill Management” entry will appear under “Settings”.
Note:
* Do not manually editcordis.patch.yml; the bundle layer will be mounted automatically.
* When installing viagithub:, the repository version must have been committed and pushed withgit push(v1.1.0+).
API Usage Examples¶
In addition to GUI operations, the plugin also exposes an HTTP API for script-based control.
Get Skill List¶
curl -s http://127.0.0.1:3080/api/skill-manager/list
Enable/Disable a Single Skill¶
curl -s -X POST http://127.0.0.1:3080/api/skill-manager/set \
-H 'content-type: application/json' \
-d '{"name":"mmx-cli","enabled":false}'
Batch Enable/Disable¶
curl -s -X POST http://127.0.0.1:3080/api/skill-manager/set \
-H 'content-type: application/json' \
-d '{"names":["a","b"],"enabled":true}'
Uninstallation¶
To uninstall the plugin, run the following command:
dsh plugin --profile web remove dsh-skill-manager
After uninstallation, the ~/.dsh/skill-manager.json file is retained. When the plugin is installed again, the previous disabled list configuration can still be used.
Dependencies and Environment¶
- Peer Dependencies:
@deepseek-ai/dsh-settings(^0.1.0-rc.7) - Dependencies:
@deepseek-ai/dsh-home-paths,@deepseek-ai/schemastery - Git dependency note: When installing via
github:, ensure the local code has been pushed to the remote repository. Otherwise, installation may fail due to dependency resolution errors.
Summary¶
dsh-skill-manager provides a lightweight way to manage Skill visibility in DSH. It implements visual enable/disable control through the Web GUI and ensures consistent Agent behavior through runtime interception. For developers who need fine-grained control over Agent capabilities, it is a practical tool.