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.

  1. Add dsh-fabric to the target profile’s package.json using the link: method.

  2. 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 fabric Service to query, obtain, remove, and view the graph.
  • Models or users: Use fabric_extend in a conversation to register pure declarative extensions like promptVariable and promptSection.
  • Runtime observers: View current extension counts and metadata via fabric_inspect or GET /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)