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.
- Download the
.tgzpackage 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
- Use the DSH CLI to install the plugin:
dsh plugin --profile web add ./opencodezen4dsh-dsh-plugin-<version>.tgz
-
Restart
dsh webto load the new plugin. Because Cordis imports plugin modules when the process starts, refreshing the selector alone will not take effect. -
Find the
opencodezen4dshgroup 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
xhighandmaxthinking levels (forced override); response-only models (such asmuse-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.aiandmodels.devare required. - Blocked models: the following models are blocked in the current fork:
jev-1.13-free(SystemOne only)exo-freeling-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-sparkmodels.
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.