Introduction

DeepSeek Harness (DSH) adopts the “everything is a plugin” philosophy. When using open-source models, configuring API keys or maintaining local processes (Sidecars) is often cumbersome. The opencodezen4dsh plugin connects directly to OpenCode Zen’s free channels through a native DSH adapter, eliminating registration and authentication steps, and improves session log handling and thinking levels.

Plugin Introduction

This is a maintained fork project based on FishBottle7/opencode2dsh (upstream 0.3.11). It registers a native LlmAdapter with DSH and directly streams responses from OpenCode Zen’s anonymous free channel.

Installation and Enablement

Installing the plugin requires downloading a built .tgz package and then adding it via the DSH CLI.

  1. Download the .tgz package from the Release attachments or build it from source:
# Build from source (located at packages/plugin)
git clone https://github.com/defaver04/opencodezen4dsh.git
cd opencodezen4dsh/packages/plugin
pnpm install && pnpm pack
  1. Use the DSH CLI to install the plugin:
dsh plugin --profile web add ./opencodezen4dsh-dsh-plugin-<version>.tgz
  1. Restart dsh web to load the new plugin. Because Cordis imports plugin modules when the process starts, refreshing the selector alone will not take effect.

  2. Find the opencodezen4dsh group in the model selector, select a model, and start the conversation.

Configuration

The default configuration works out of the box. If adjustments are needed, edit cordis.patch.yml in the corresponding configuration file:

- id: opencodezen4dsh
  name: '@opencodezen4dsh/dsh-plugin'
  config:
    mode: adapter        # Default mode, native adapter
    providerId: opencodezen4dsh
    refreshSeconds: 300  # Directory refresh interval (seconds)

Main configuration options:
* mode: defaults to adapter, using the native streaming adapter; sidecar is a legacy mode and is not included in the release package.
* refreshSeconds: controls how often the model directory is refreshed; defaults to 300 seconds.
* restartDelayMs / restartMaxDelayMs / maxConsecutiveCrashes: restart backoff and circuit-breaker settings for the adapter or Sidecar.

Core Features

  • Zero credentials, zero setup: uses OpenCode Zen’s anonymous free channel, requiring no API key or registration.
  • Native adapter: a single npm package with no subprocesses and no local port occupation.
  • CLI-identical disguise: request headers include the OpenCode CLI User Agent and session association headers, impersonating CLI traffic.
  • Optional thinking levels: reasoning models support xhigh and max thinking levels (forced override); response-only models (such as muse-spark-*) retain the levels supported upstream.
  • Image input: attachments are allowed only when the model declares image input support in models.dev; otherwise they are rejected.
  • Self-healing capability: includes rapid startup retries, periodic refreshes, and health snapshot diagnostics.
  • Session log safety: fixes an issue where tool calls without IDs (such as text-simulated tool calls) could corrupt logs, downgrading them to plain text processing.

Notes

  • Environment requirements: DSH version must be 0.1.7 or higher, with Web Profile enabled; Node.js version must be >= 20.
  • Network requirements: outbound HTTPS connections to opencode.ai and models.dev are required.
  • Blocked models: the following models are blocked in the current fork:
    • jev-1.13-free (SystemOne only)
    • exo-free
    • ling-3.0-flash-fin-free
  • Maintenance status: the plugin maintains a fork of the upstream project, mainly fixing session log pollution issues and unlocking some muse-spark models.

Ecosystem Background

The DSH community directory is an independent site and has no official affiliation with DeepSeek or High-Flyer. This plugin aims to provide a localized model access solution without an API key.