Introduction¶
The philosophy of DSH is “everything is a plugin”. However, during actual extension runtime, tools, skills, commands, prompt sections, event listeners, LLM adapters, sub-agent providers, web routes, settings namespaces, projections, blueprints, services, and others still remain scattered across different seams. dsh-fabric targets this scenario, converging these extension points into a declarative DSL, a fabric Service, and two model tools.
What is this¶
- GitHub Repository:
https://github.com/hellosky983/dsh-fabric - License:
MIT - Positioning:
Fabric — the everything-is-a-plugin primitive for DeepSeek Harness (dsh).
It provides a unified fabric Service and model tools fabric_extend / fabric_inspect for registering, querying, and managing DSH runtime extensions.
Core Capabilities¶
Service API¶
The fabric Service provides the following methods:
register
list
get
remove
graph
schema
Plugin code obtains this Service via ctx.get('fabric') and calls register to register extensions.
Model Tools¶
fabric_extend is used to register pure declarative extensions within a conversation, such as promptVariable or promptSection.
fabric_inspect is used to view census or schema:
fabric_inspect({ detail: 'census' })
fabric_inspect({ detail: 'schema' })
Supported Extension Seams¶
The following kinds are supported:
tool
skill
command
promptSection
promptContext
promptVariable
eventListener
llmAdapter
subagentProvider
webRoute
settingsNamespace
projection
blueprint
service
Among these, kinds with executable code must be registered by plugin code via ctx.get('fabric').register(...), and cannot be registered via JSON’s fabric_extend.
Read-only census route¶
This plugin registers a read-only route on DSH’s built-in web server:
GET /fabric/census
The census contains only counts and extension metadata, and does not contain session content.
Installation and Enablement¶
The following is the installation command for the local web profile link method provided in the README. Do not use dsh plugin --profile web add ./dir during installation; the README suggests using link: to manually write into the profile’s package.json, and then execute the installation.
-
Add
dsh-fabricto the target profile’spackage.jsonusing thelink:method. -
Execute:
export PATH=/home/kevin/.local/lib/nodejs/node-v24.19.0-linux-x64/bin:$PATH
cd /home/kevin/.dsh/profiles/web && pnpm install
The peerDependency declared by this plugin is:
@deepseek-ai/dsh-tools@0.1.0-rc.6
The DSH main package version verified in the text is:
@deepseek-ai/dsh@0.1.0-rc.6
Typical Usage¶
Registering a tool via plugin code¶
The following example shows registering a tool with code in the plugin’s apply(ctx):
const fabric = ctx.get('fabric')
if (!fabric) return
fabric.register({
kind: 'tool',
name: 'hello_fabric',
description: 'A tool born from another plugin via the Fabric DSL.',
parameters: { who: { type: 'string' } },
execute: async (args) => ({ hello: (args && args.who) || 'world' }),
})
Registering promptVariable or promptSection in a conversation¶
The following example registers pure declarative extensions via fabric_extend:
fabric_extend({ definitions: [
{ kind: 'promptVariable', name: 'myvar', value: 'hello' },
{ kind: 'promptSection', name: 'my-rules', order: 800, text: 'Always be concise.' },
]})
Viewing census and schema¶
fabric_inspect({ detail: 'census' })
fabric_inspect({ detail: 'schema' })
Local Checks¶
Perform syntax checking:
node --check index.js && node --check client.js
Perform smoke tests:
node smoke-test.mjs
Use Cases and Notes¶
Suitable for:
- DSH plugin developers: Register other extensions via a single plugin, and use the
fabricService to query, obtain, remove, and view the graph. - Models or users: Use
fabric_extendin a conversation to register pure declarative extensions likepromptVariableandpromptSection. - Runtime observers: View current extension counts and metadata via
fabric_inspectorGET /fabric/census.
Notes:
- Plugins run with the permissions of the current dsh process; you should check the source code and license before installing.
- End-to-end runtime testing has not been performed on a real DSH process; static syntax checks and mock context smoke tests have been passed.
- Zero configuration: no configuration items, no environment variables, no sensitive items.
- Does not read or write any files; does not read session content; does not read or store any credentials.
- No persistent state; all runtime extensions are automatically disposed when the plugin stops.
- If security issues are found, they should be reported via GitHub private vulnerability reporting.
Related Links¶
- GitHub:
https://github.com/hellosky983/dsh-fabric - Community Directory Page:
https://www.skillhub.cn/plugins/hellosky983/dsh-fabric(Independent site, not an official app store)