CREAIT-nl/dsh-plugins
Plugins for DeepSeek Harness. One repo, eight packages, published independently under @creait. They came out of running dsh against self-hosted models, and each closes a gap the harness leaves open.
catalog 简介 / catalog descriptioncatalog description:—
项目介绍Project Overview
dsh-plugins 是面向 DeepSeek Harness 的 8 个独立 npm 包,统称 @creait 命名空间,弥合自托管模型使用 dsh 时的功能空白。核心能力包括通过 hookkit 以 YAML 配置生命周期钩子与上下文注入、gen-limit 按 provider/model 限制并发、web-search-searxng 与 web-fetch 提供可自托管的网络工具、research-mode 以受控循环执行深度研究、think-level 设定推理强度、tool-disclosure 延迟加载工具以节省 token、to-english 翻译市场插件。适用场景为需要自定义 dsh 行为、避免第三方依赖、降低 token 消耗或将研究流程固化的开发者。注意事项:所有包依赖 dsh 1.0 之前的内部接口,无兼容性保证,升级 dsh 可能使其失效。
dsh-plugins is a monorepo of eight independent npm packages for DeepSeek Harness, published under the @creait scope. They fill gaps left by the harness, especially for self-hosted model setups. Core capabilities include hookkit for YAML-configured lifecycle hooks with context injection, gen-limit for per provider/model concurrency caps, web-search-searxng and web-fetch as self-hosted web tool providers, research-mode for a fixed deep-research agent loop, think-level for persistent reasoning effort control, tool-disclosure for deferred tool loading to cut token costs, and to-english for translating installed plugins' Chinese copy. Use them when you need to extend dsh without writing full plugins, want to avoid third-party web routing, or need to cap subagent fan-out on a single GPU. Each package installs independently via the dsh plugin command. Caveat: all eight bind to pre-1.0 internal dsh seams with no compatibility guarantee, so a harness upgrade can break them; check the peerDependencies and the What breaks this section in each README.
请帮我了解并安装插件:【dsh-plugins】【https://github.com/CREAIT-nl/dsh-plugins】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add @creait/dsh-hookkit
把 CREAIT-nl/dsh-plugins 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-plugins
Plugins for DeepSeek Harness. One repo, eight
packages, published independently under @creait. They came out of running dsh
against self-hosted models, and each closes a gap the harness leaves open.
| Package | What it does | Why |
|---|---|---|
hookkit@creait/dsh-hookkit |
Config-driven lifecycle hooks, including context injection. Declare event → handler → outcome in YAML. |
dsh has the seams (agent/pre-step, tools/pre-execute, …) but reaching them means writing a plugin. This turns them into config. |
gen-limit@creait/dsh-gen-limit |
Per provider/model concurrency cap, enforced at subagent spawn and at the stream, with a settings card. | One self-hosted GPU has a real ceiling; a fan-out of subagents will find it. Denying the spawn beats letting the child die opaquely. |
web-search-searxng@creait/dsh-web-search-searxng |
Points web_search at a self-hosted SearXNG instance instead of the native route. |
Search without handing every query to a third party. |
web-fetch@creait/dsh-web-fetch |
A guarded local fetch provider behind ctx.web, with SSRF blocking on the resolved address. |
dsh implements web_fetch in full but ships no provider, so the tool is present and every call fails. |
research-mode@creait/dsh-research-mode |
Deep research as an agent mode: a fixed, reviewed loop that plans, researches in adaptive parallel rounds, synthesises and reviews. | A loop the model rewrites per call re-earns the same mistakes per call. Shipping it as a preset also keeps it out of every session that is not research. |
think-level@creait/dsh-think-level |
A reasoning effort per provider and model, plus one control to change it for the session you are in. | dsh's effort dropdown is per session and remembered nowhere, so "this model should think hard" is re-typed in every new conversation. Subagents are never asked at all. |
tool-disclosure@creait/dsh-tool-disclosure |
Progressive tool disclosure: a deferred group of tools costs one catalog line until the model loads it with tool_search. |
dsh advertises every mounted tool on every request. An MCP server's 24 browser schemas are ~4.4k tokens charged to every session, including the ones that never open a browser. |
to-english@creait/dsh-to-english |
Rewrites a market-installed plugin's Chinese copy into English with a model you already have configured, guarding the Chinese the program itself reads. | Most of the market is written in Chinese, and a blunt find-and-replace gives you a plugin that reads English and no longer works. |
hookkit is the general-purpose one: a small engine that ships no hooks of its
own — 13 lifecycle events × 3 handler kinds (in-process tool, shell, HTTP) ×
3 outcomes (inject context, deny the call, fire-and-forget). It is what makes
something like memory recall a config change rather than a plugin. The rest are
single-purpose. web-search-searxng and web-fetch are both providers for the same
ctx.web seam and compose: together they give an agent search and page reading
without a third-party round trip. research-mode wants web-fetch mounted —
without it, its researchers are capped at search snippets. to-english is the
outlier: it acts on the other plugins you install rather than on a harness
seam.
Install
Each package installs on its own — you do not need the others:
dsh plugin --profile web add @creait/dsh-hookkit
Every package ships its own bundle patch, so that command mounts the row rather
than only recording the dependency. Mounting is not the same as switching on:
the two ctx.web providers register themselves and then wait to be pointed at
something, and hookkit mounts with no hooks declared. Each README says which
keys finish the job.
Develop
The packages resolve their dsh peer dependencies from the harness you have installed, not from the registry, so you are always building against the version you actually run:
DSH="$(npm root -g)/@deepseek-ai/dsh/node_modules/@deepseek-ai"
mkdir -p node_modules/@deepseek-ai
for p in cordis dsh-llm dsh-settings dsh-web schemastery; do
ln -sfn "$DSH/$p" "node_modules/@deepseek-ai/$p"
done
Then:
pnpm test # 577 tests across the eight packages
Do not run pnpm install at the root — it would replace those symlinks with
published copies that may not match your harness.
To run a checkout against a live harness, link the package directory into a profile:
// ~/.dsh/profiles/web/package.json
"dependencies": {
"@creait/dsh-hookkit": "link:/path/to/dsh-plugins/hookkit"
}
then pnpm install in the profile and restart dsh web. The boot manifest is
built at startup, so adding a plugin needs the restart — editing a linked one
does not.
Release
Versions are independent; publish only what changed:
cd hookkit && npm publish --access public
pnpm publish-all does every package that has a new version. Scoped packages
default to restricted, so --access public matters on a package's first
publish.
Caveat
All eight bind to pre-1.0 internal dsh seams with no compatibility guarantee.
peerDependencies pins the versions each was built against; a harness upgrade
can move them. Each README has a "What breaks this" section.
License
MIT.
research-mode's loop design is ported from
dsh-deep-research
(MIT, Copyright (c) 2026 dsh2026); see research-mode/LICENSE for the
acknowledgement. Everything else here is original.
ruvnet/ruflo
amruthpillai/reactive-resume
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/colleague-skill
nocobase/nocobase
Tencent/WeKnora