Neplich
dsh_plugin
No description
- Stars
- 1
- Language
- TypeScript
- Created
- Aug 14, 2026
- Updated
- Aug 14, 2026
Introduction
dsh_plugin
A collection of DeepSeek Harness plugin bundles. Each package under packages/ is one installable dsh plugin; this repository only manages them together — it is not itself a plugin.
Layout
packages/dsh-<name>/ one plugin per directory (dir name starts with dsh-), published as @neplich/dsh-<name>
package.json npm manifest + dsh.bundle declaration
cordis.patch.yml the layer applied when a profile installs this bundle
src/index.ts function plugin: name / inject / Config / apply
tests/ package-level vitest tests
A package becomes an installable bundle by declaring "dsh": { "bundle": { "patch": "./cordis.patch.yml" } } in its manifest; the patch rows reference the package by name so Node resolution finds the installed build. See the official Package and install a plugin tutorial for the full bundle/profile model.
Plugins
| Package | Description | README |
|---|---|---|
@neplich/dsh-auto-fold | Web GUI plugin: when the assistant starts outputting body text, auto-collapse the thinking and tool-call records above it behind one persistent expand/collapse bar (bilingual zh/en bar copy following dsh's UI language) | README |
@neplich/dsh-file-mention | Web GUI plugin: @ file mentions in the composer (cached local substring filter, icon-marked chips, multi-file references); mentioned files are inlined into the prompt as <file path="...">...</file> | README |
@neplich/dsh-config-skills | Web GUI plugin: a 技能 settings section — read-only browser of personal (~/.dsh/~/.agents) and project (<root>/.dsh/<root>/.agents) skills with source badges and shadowing (bilingual zh/en UI following dsh's language) | README |
@neplich/dsh-config-instructions | Web GUI plugin: an 指令文档 settings section — view and edit personal and project-root AGENTS.md / AGENTS.local.md files (atomic writes, live effect; bilingual zh/en UI following dsh's language) | README |
@neplich/dsh-config-mcp | Web GUI plugin: an MCP 服务 settings section — live server status, add/edit/toggle/delete written to the user-level cordis.patch.yml with automatic HMR reload (bilingual zh/en UI following dsh's language) | README |
@neplich/dsh-preset-dev | Agent preset installer: installs the 开发模式 (dev) preset — standard coding agent plus the cordis toolset — into the user preset root | README |
The three config plugins share code through packages/dsh-config-shared (@neplich/dsh-config-shared), an internal library inlined at build time — not itself a plugin. Its shared scope-widget copy ships as dictionaries (sharedScopeZh/sharedScopeEn) that each consumer spreads into its own locale namespace.
Every finished plugin ships a README.md in its package directory describing its function (features, config, install); the table above links to it. Keep the table in sync with packages/: any plugin addition, removal, or major update must update the plugin README and this table in the same change.
Commands
pnpm install # pnpm workspaces, node ^22.19 || >=24
pnpm run build # tsc project-references build, emits packages/*/lib
pnpm run test # vitest
pnpm run clean # remove build outputs
Add a plugin
- Create
packages/dsh-<name>/(directory name must start withdsh-and match the package suffix) withpackage.json(name: @neplich/dsh-<name>plus thedsh.bundledeclaration),src/index.ts,tsconfig.json,tests/andREADME.md. - Update the plugin row in
cordis.patch.yml(bothidandname) andnameinsrc/index.ts. - Add
{ "path": "packages/dsh-<name>" }to the roottsconfig.jsonreferences. - Write
packages/dsh-<name>/README.mddescribing the plugin's function, config, and install, and link it from the Plugins table above. pnpm install && pnpm run build && pnpm run test.
Installability: plugin source must install and build in any environment after cloning. Depend on harness packages with npm-registry semver ranges in
devDependencies(matchingpeerDependencies), neverlink:../../../deepseek-harness/...sibling-checkout paths; use the pnpmworkspace:protocol for in-repo dependencies. Re-run a fullpnpm install(not just the existingnode_modules) after any dependency change.
Choose the extension point before writing code — tool, hook, LLM adapter, command, capability seam — with the dsh-plugin-development agent skill and the upstream extension cookbook.
Try a plugin locally
pnpm run build
dsh plugin --profile demo add ./packages/dsh-<name> # links the checkout into the profile
dsh --profile demo # boot the profile
During active development against a source checkout of deepseek-harness, a --patch overlay can load src/index.ts directly without building; see Your first plugin.
Publish
pnpm run build && pnpm -r publish --access public ships the prebuilt lib/; consumers install with dsh plugin --profile <name> add @neplich/dsh-<name>. Add the dsh-plugin topic to this repository for discoverability.