# dsh-settings-hub
**Unify third-party plugin settings in DeepSeek Harness**
[](https://www.npmjs.com/package/dsh-settings-hub)
[](https://www.npmjs.com/package/dsh-settings-hub)
[](https://github.com/Amengclass/dsh-settings-hub/releases)
[](LICENSE)
[](https://github.com/deepseek-ai/dsh)
[](https://github.com/Amengclass/dsh-settings-hub/pulls)
English | [中文](README.md) | [Changelog](CHANGELOG.md)
---
## Highlights
- **Unified entry** — All third-party plugin settings automatically grouped under "扩展设置项", no more scattered across the sidebar
- **Auto-discovery** — Newly installed plugins appear automatically, no manual config needed
- **Group by parent** — Sub-settings grouped by their parent plugin via dependency analysis
- **Drag reorder** — Drag to reorder groups and items, order persisted to localStorage
- **Ghost drag** — Original item stays in place while a semi-transparent ghost follows the cursor
- **Zero intrusion** — No DSH source modifications; uses the official shadow mechanism on `sidebar.settings`
## How it works
```
┌─────────────────────────────────────────────┐
│ DeepSeek Harness │
│ ┌──────────────┐ ┌──────────────────────┐ │
│ │ Native │ │ 扩展设置项 ▾ │ │
│ │ 通用设置 │ │ ┌─ Plugin Group A ─┐│ │
│ │ 模型 │ │ │ Sub-item 1 ││ │
│ │ 插件 │ │ │ Sub-item 2 ││ │
│ │ Agent 预设 │ │ ├─ Plugin Group B ─┤│ │
│ │ │ │ │ Sub-item 1 ││ │
│ └──────────────┘ │ └──────────────────┘│ │
│ └──────────────────────┘ │
└─────────────────────────────────────────────┘
```
Native settings (General/Models/Plugins/Agent Presets) stay untouched. Third-party plugin settings auto-collapse under "扩展设置项".
## Quick Start
### Prerequisites
- [DeepSeek Harness](https://github.com/deepseek-ai/dsh) installed
- Node.js 18+
### Install
**Option1: npm (recommended)**
```bash
dsh plugin --profile web add dsh-settings-hub
```
Update:
```bash
dsh plugin --profile web update dsh-settings-hub@latest
```
**Option 2: GitHub**
```bash
dsh plugin --profile web add github:Amengclass/dsh-settings-hub
```
**Option 3: From source**
```bash
git clone https://github.com/Amengclass/dsh-settings-hub.git
cd ~/.dsh/profiles/web
npm link /path/to/dsh-settings-hub
```
### Run
```bash
dsh web
```
### Uninstall
```bash
dsh plugin --profile web remove dsh-settings-hub
```
Open `http://127.0.0.1:3080` and click "设置" in the bottom-left corner.
## Configuration
No configuration needed. Works out of the box:
| Behavior | Description |
|----------|-------------|
| Auto-discovery | Scans installed plugins, dynamically registers settings groups |
| Drag reorder | Drag to adjust order, saved to localStorage |
| Group attribution | Auto-groups by `node_modules` dependency tree |
## FAQ
Settings not showing after install?
1. Verify: `ls node_modules/dsh-settings-hub`
2. Restart DSH: `dsh web`
3. Clear browser cache and refresh
Newly installed plugin not appearing?
Plugins must register `settings.section` to be discovered. Some plugins (e.g. dsh-vision-router) use alternative registration mechanisms and are not yet supported.
## Development
```bash
git clone https://github.com/Amengclass/dsh-settings-hub.git
cd dsh-settings-hub
cd ~/.dsh/profiles/web
npm link /path/to/dsh-settings-hub
dsh web
```
### Project structure
```text
dsh-settings-hub/
├── index.js # Node: HTTP API + dependency scanning
├── lib/
│ └── client.js # Browser: settings UI + drag & drop
├── cordis.patch.yml # DSH bundle layer declaration
├── package.json
└── README.md
```
## Contributing
Issues and PRs welcome!
1. Fork the repo
2. Create a feature branch: `git checkout -b feature/my-feature`
3. Commit: `git commit -m 'feat: add my feature'`
4. Push: `git push origin feature/my-feature`
5. Open a Pull Request
## License
[MIT](LICENSE)