DeepSHPlugins
dshp 專案預覽
GITHUB / COMMUNITY PROJECT

dshp

生態與開發JavaScriptMIT

註冊 `list_profiles` 與 `export_profile`:讓 agent 列出本機有哪些配置,並把整套 profile(bundle 順序、外掛版本、patch)匯出成一個可直接分享的檔案。只讀。

3 Starsasdf17128 更新時間 2026-08-29
訪問 GitHub 倉庫
dshp 專案預覽

專案介紹

中文

註冊 `list_profiles` 與 `export_profile`:讓 agent 列出本機有哪些配置,並把整套 profile(bundle 順序、外掛版本、patch)匯出成一個可直接分享的檔案。只讀。

English

Registers `list_profiles` and `export_profile`, so the agent can show what setups exist and hand back a whole profile — bundle order, plugin versions and patch — as one portable file to share. Read-only.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
asdf17128
倉庫
asdf17128/dshp
GitHub Stars
3
Forks
0
開發語言
JavaScript
許可證
MIT
最近推送
2026-08-29
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

60/ 100
維護活躍
92
文件與實用資訊
85
生態關注度
17
安裝便捷訊號
100
專案宣告訊號
100

近 13 天仍在更新;README 含完整安裝與使用說明;關注度尚低(3)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:asdf17128/dshp

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

dshp

Hand your whole dsh setup to someone as one file — and they get the exact same tree.

English | 中文

npx github:asdf17128/dshp ls

Shows every profile on your machine in one line each. Read-only, zero dependencies.

dshp in use


What it gives you

See what you actually have. dshp ls and dshp show answer "what is installed, in what order, and did I patch it" without opening a single file.

Copy before you break it. dshp clone web web-test duplicates a working setup in under a second, node_modules and all. Experiment on the copy; rm it when done.

Share a setup that reproduces exactly. dshp export writes bundle order, plugin versions and your patch into one short file. dshp import rebuilds it — verified: a 132-entry profile reproduced into a fresh $DSH_HOME composes an identical tree, patch included.

dsh itself can boot a profile and forward installs to pnpm, but it cannot create an empty one, list what you have, or copy a working setup before you experiment on it. That is all manual work under ~/.dsh/profiles today.

Share a setup

dshp export web -o my-setup.dshp
# dsh profile — reproduce with: dshp import <this-file>
dshp: 1
name: web
bundles:
  - @deepseek-ai/dsh-base
  - @deepseek-ai/dsh-web-app
  - dsh-cloudflare-browser-run
plugins:
  dsh-cloudflare-browser-run: "^0.1.1"
patch: |
  - id: session-title
    config:
      fallbackMaxWords: 12

Short enough to paste into a forum post. On the other machine:

dshp import my-setup.dshp

That writes the profile, installs the plugins through dsh's own pnpm, and you boot it with dsh --profile web. Verified end-to-end: a fresh $DSH_HOME reproduced a 132-entry tree identical to the original, patch included.

Experiment safely

dshp clone web web-试验田      # instant, keeps node_modules
dsh plugin --profile web-试验田 add some-experimental-plugin
dshp diff web web-试验田
web -> web-试验田

plugins
  + some-experimental-plugin@^0.2.0

If it goes wrong, dshp rm web-试验田 --yes. Your working profile was never touched.

Commands

dshp lsprofiles, with bundle/plugin counts and disk size
dshp show <name>bundles in load order, plugins, patch
`dshp new [--web\--headless]`create a profile — dsh itself cannot make an empty one
dshp clone <from> <to>copy a working setup, node_modules and all
dshp export <name> [-o FILE]portable file (stdout by default)
dshp import <file> [--as NAME] [--no-install]recreate a profile
dshp diff <a> <b>what differs
dshp rm <name> --yesdelete

What a profile actually is

Under $DSH_HOME/profiles/<name>:

  • package.json — dependencies are the plugins, dsh.profile.bundles is the ordered layer stack
  • cordis.patch.yml — your own id-targeted overrides
  • cordis.yml, pnpm-workspace.yaml — boilerplate, regenerated

So three things reproduce a setup: plugin versions, bundle order, and the patch. That is exactly what the portable file carries.

Bundle order is part of the format: it decides which layer patches which, so a reordering is reported by diff as a real difference.

The patch block is copied byte-for-byte rather than re-serialised, because it may hold !!js expressions (root: !!js dshHomePath('sessions')) that a YAML round-trip would mangle or evaluate. Nothing here ever evaluates your config.

Install and uninstall

As a CLI: npx dshp ls — nothing to install.

As a plugin:

dsh plugin --profile web add github:asdf17128/dshp   # install
dsh plugin --profile web remove dshp                 # uninstall

Removing it drops the list_profiles and export_profile tools. Your profiles are untouched — the plugin only reads.

Compatibility

Verified against @deepseek-ai/dsh 0.1.0-rc.5. The profile layout it reads (package.json with dsh.profile.bundles, cordis.patch.yml) is dsh's own; a change there is what would break it first.

Requirements

Node 18+. import needs a working dsh (local node_modules/.bin/dsh preferred, otherwise on PATH) because it installs through dsh's own pnpm; every other command is pure filesystem work.

See also

dsh-doctor — checks a profile for patches that silently stopped applying.

License

MIT

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案