maque2333/dsh-profile-manager--packages-cli ↗★ 0
dsh-profile-manager
dshm — manage DeepSeek Harness profiles as instances: CLI (dshm) + Cordis bundle (ctx.profileManager, profile_* tools, /profile command, /profile-manager panel)
AI 分析
核心用途是提供命令行工具和 Web 面板,将 DSH 配置集作为实例进行导入、导出、启动、停止和状态监控。适合需要管理多个 DSH 配置集和运行实例的进阶用户。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:maque2333/dsh-profile-manager#fb4ab66eb32a1393e06f0f367a84e21ffe715bb5&path:packages/cliドキュメント
README 全文を読む ↗dsh-profile-manager (dshm)
Profiles as instances — manage DeepSeek Harness profiles and their running instances.
dshm is an open-source CLI + Cordis plugin that treats DSH profiles as first-class objects: list, show, import/export, start, stop, restart, status, delete — plus a web panel and model tools for visual/agent-driven management.
Why
The official dsh CLI gives you low-level primitives:
dsh plugin --profile add
# create + install plugins
dsh --profile web --port N # boot
…but it has no import/export format, no registry view, and no process (instance) management. dshm fills that gap by introducing the Instance concept:
profiles/writing/ # the profile (definition) — always one copy
├─ writing-1 (:3082) # running instances (0..N)
└─ writing-2 (:3083) # same recipe, second table
Install
npm install -g dsh-profile-manager
Requirements:
- Node.js ≥ 20
- a working
dshinstallation (0.1.0-rc.x) onPATH pnpmonPATH(only forimport/bootstrap)
Quick start
dshm list # list all profiles + their instances
dshm import writing.yaml # install a profile from a definition file
dshm start writing # start an instance (web shapes auto-pick a port)
dshm status # live status
dshm stop writing # graceful stop
dshm bootstrap # create & start the manager (web panel) profile
Commands
| Command | Description |
|---|---|
dshm list | List every profile: shape, bundles, dependencies, instance status |
dshm show | One profile's manifest + patch layer + dependencies |
dshm import [--name N] [--force] [--allow-builds] | Install a profile and all its packages from dshm-profile.yaml |
dshm export [-o file] | Reverse-export a profile to the same format |
dshm delete [--purge] [--yes] [--force] | Delete (archive by default; --purge truly removes) |
dshm start [--port N] [--foreground] | Start an instance (multi-instance needs explicit --port) |
dshm stop [--port N] | Stop instance(s): SIGTERM → ≤8s → SIGKILL |
dshm restart [--port N] | Stop all + restart on the last port |
dshm status [name] | Instance status (web: HTTP probe; generic: process liveness) |
dshm doctor | Consistency diagnostics + crash residue + archive listing |
dshm bootstrap [--port N] | Create + start the manager profile (the web panel) |
All commands respect DSH_HOME (default ~/.dsh).
Profile definition file (dshm-profile.yaml)
The import/export carrier — a declarative front-end to the official profile trio (package.json + cordis.patch.yml + pnpm-workspace.yaml). Importing produces exactly what hand-crafting would.
dshmProfile: 1 # format version
name: writing # profile name (= $DSH_HOME/profiles/)
bundles: # ordered bundle list (= dsh.profile.bundles)
- '@deepseek-ai/dsh-base'
- '@deepseek-ai/dsh-web-app'
dependencies: # mirrors package.json dependencies (any pnpm spec)
dsh-news-briefing: ^1.0.0
some-bundle: github:owner/some-bundle#v0.2.0
patch: | # your user layer (written verbatim to cordis.patch.yml)
- insert:
- id: ui-topbar
name: 'dsh-ui-topbar-compact'
meta: # dshm-only metadata (ignored by dsh)
description: 写作助手实例
port: 3082 # suggested port
Plugin form (the manager)
dsh-profile-manager is also a Cordis bundle — one npm package, two skins:
- CLI (
bin: dshm) — scripting, CI, offline rescue. - Plugin (
dsh.bundle.patch) — a web panel at/profile-manager,profile_*model tools, and a/profilecommand. The panel and tools cover the full CLI surface: list / show / import / export / start / stop / restart / status / delete / doctor.
dshm bootstrap creates and starts a plain profile named manager (dsh-base + dsh-web-app + dsh-profile-manager). It shows up in dshm list like any other row — the manager manages itself.
dshm bootstrap # then open http://127.0.0.1:
/profile-manager
Compatibility
- Targets
dsh0.1.0-rc.x; consumes only the stable surface (CLI syntax,$DSH_HOMElayout,dsh.profilemanifest,cordis.patch.yml) — no internal@deepseek-ai/dsh-*APIs. - Shapes are classified by bundles: web / headless / generic — new community shapes need zero changes.
- External contract: config hot, package install cold (same as upstream).
License
MIT