Introduction

Connecting third-party models to DeepSeek Harness (DSH) typically involves modifying configurations, manually filling in model lists, or installing a provider plugin. OpenCode Go operates via a subscription gateway, requiring correct session headers, a real-time model catalog, and alignment with the configuration entry points of various Harness versions. If catalog parsing fails or routing conflicts occur, models may disappear from the selector without explicit warnings.

dsh-opencode-go-plus is an OpenCode Go model provider plugin designed for DSH. It enables subscription to OpenCode Go models within the Harness, supporting streaming replies, tool calling, image input, and quota display. It also fetches the available model catalog from the gateway and displays remaining package quotas. The package description identifies it as a maintained branch of dsh-opencode-go, featuring fixes for scenarios such as “models existing on the gateway but not appearing in the list.” The current package version is 0.4.9 (MIT License).

What is this

The plugin is installed via the DSH plugin mechanism without requiring modifications to the DSH source code. At runtime, it automatically adds the necessary session headers for OpenCode Go and fetches the model catalog from the gateway. Configuration entries are centralized under Settings → Models within the OpenCode Go section (displayed as a collapsible card in the desktop version; a separate “Settings → OpenCode Go” section has been removed since 0.3.0).

Supported Harness versions (see repository README): 0.1.6 / 0.1.7 series starting from 0.1.6-alpha.1, and the 0.2 series starting from 0.2.0-rc.1 (including desktop and 0.2.1-rc.2). Different series utilize different settings models, which the plugin detects and routes at runtime.

Core Features

Provider and Session Capabilities

  • Acts as an OpenCode Go model source in DSH, supporting streaming replies, tool calling, and image input.
  • Automatically attaches Harness User-Agent (attributionHeaders()) and x-opencode-session headers (consistent with upstream dsh-opencode-go).

Real-time Catalog and Auto-Adaptation

The model list is formed by the intersection of a built-in adaptation table and the gateway’s real-time /models catalog, with automatic adaptation for unknown IDs:

  • Family Matching: Groups models by the first word (family) and clones protocols, parameters, and capacity estimates from sibling models in the same family.
  • Entirely New Families: When no family match exists, it borrows the globally closest model based on token overlap, majority protocol, and ID length rules to avoid discarding the entire entry; parameters are estimated values and can be overridden via modelOverrides.
  • This behavior can be disabled under Settings → OpenCode Go → Auto-adapt new models; the catalog is re-resolved approximately every 5 minutes by default (adjustable via refreshMinutes in advanced settings).

Each resolution outputs catalog statistics logs (curated / live listing / adapted / omitted / served) to facilitate troubleshooting why a specific ID did not appear in the selector.

Connection Status and Usage

  • Desktop Version (since 0.4.2): Paste your key into the OpenCode Go API Key input box and click Save & Check; use Refresh Status to re-read credentials, sync routes, and check usage endpoints. The check utilizes read-only usage and model catalog endpoints without sending chat requests. Keys are saved via the Harness credential service, are not displayed back, and are not written to plugin config or browser local storage.
  • Subscription Usage: Displays remaining quota via GET {baseURL}/usage in the plugin’s usage panel; 0.4.9 updates the usage panel to use an opaque background to prevent interference between text and underlying layers in translucent themes.

Key Fixes Relative to Upstream dsh-opencode-go

The repository documentation summarizes five host-side changes, all centered around “models exist on the gateway, but not in the selector”:

  1. Coexistence Fix: When coexisting with the baseline package under the same profile, prevent model discovery duplicate registration which causes the entire plugin tree to fail loading; this package cannot be installed alongside dsh-opencode-go simultaneously, so uninstall the old package before upgrading.
  2. Route Conflict Handling: If the opencode-go route is occupied (e.g., by a static model list materialized in settings.yaml), the plugin registers the opencode-go-plus route and issues a warning instead of silently discarding the entire dynamic catalog.
  3. New Family Support: Models belonging to entirely new families are no longer discarded due to lack of a family match.
  4. Diagnostics: Self-check logging for catalog resolution results.
  5. Configurable Additions: catalogAdditions is now configurable (Settings → OpenCode Go) rather than hardcoded in the source.

Installation and Activation

The plugin runs with the permissions of the current DSH process; please review the repository source code and license before installing. The package is a pre-compiled artifact (only lib/ is published), and engines.node requires ^22.19.0 || >=24.0.0.

Desktop Version (including 0.1.7-rc.2 / 0.2.0-rc.1 / 0.2.1-rc.2)

Fill in the following under Plugins → Add Plugin → Git Repository:

https://github.com/HaydenSmith1121/dsh-opencode-go-plus

Starting from 0.4.1, you no longer need to allow installation scripts for @google/genai or protobufjs specifically for this plugin; OpenAI / Anthropic protocol modules are pre-compiled and distributed with the package. If you were previously stuck on “Allow installation script required,” close the old installation task and reinstall from the repository above, confirming in the installation details that the version is 0.4.9 or newer.

Web Profile

dsh plugin --profile web add dsh-opencode-go-plus

After installation, start or restart dsh web, find the OpenCode Go row under Settings → Models, and configure the API Key (default environment variable name OPENCODE_API_KEY; the specific reference location varies by harness version in settings.yaml or the profile’s cordis.patch.yml, see the README “Compatibility” table).

Headless Profile

dsh plugin --profile headless add dsh-opencode-go-plus

Example patch and run command:

- id: agent-default-model
  config:
    provider: opencode-go
    model: deepseek-v4.1-flash
read -s OPENCODE_API_KEY
export OPENCODE_API_KEY
dsh --profile headless --patch ./headless.patch.yml "Hello"

The model ID must be available in the current gateway catalog. Web and Headless use different profiles, so the plugin must be installed separately for each.

Typical Usage: Configuring Keys and Selecting Models

Logging into the OpenCode website does not automatically connect to Harness. You must confirm your Go subscription and copy the API Key from the OpenCode Console; integration instructions are available in the OpenCode Go documentation.

Desktop Version Steps:

  1. Open Settings → Models → OpenCode Go.
  2. Paste the key into OpenCode Go API Key and click Save & Check (no need to click the general “Edit” under Harness 0.1.7-rc.2).
  3. Select a model under OpenCode Go in the session model selector; click Refresh Status if needed to sync the catalog and authentication.

Web Side: After installing the plugin and restarting, check the Key status in the OpenCode Go row under Settings → Models (a green dot indicates configuration is complete), then select the corresponding model in the session. Installing the plugin does not automatically change the default model.

Optional: Maintain catalogAdditions in settings to specify a sibling clone source for new gateway IDs, for example:

llm-opencode-go:
  catalogAdditions:
    - id: deepseek-v4.1-flash
      siblingId: deepseek-v4-flash
      inputSiblingId: deepseek-v4-flash-vision-exp
      name: DeepSeek V4.1 Flash

All four fields must be complete; otherwise, the entry will be ignored.

Use Cases and Notes

Who it’s for: Developers who already have an OpenCode Go subscription and want to use the same set of gateway models for agent development within DSH (Web, Headless, or Desktop), requiring dynamic catalogs, usage display, and compatibility with newer Harness versions.

Important Notes:

  • Do not coexist with dsh-opencode-go under the same profile; when migrating from upstream, run dsh plugin --profile <profile> remove dsh-opencode-go before installing this package. Refer to examples/migrate-from-fork.patch.yml in the repository.
  • If the opencode-go route is occupied by a static list in settings.yaml (llm-pi-ai.providers.opencode-go), the plugin will switch to the opencode-go-plus route; do not use “Fetch available models → Add selected” in DSH “Settings → Models → opencode-go” to materialize the catalog into settings.yaml again, otherwise dynamic catalog issues will recur.
  • The plugin requests external gateway and usage endpoints; assess key and network policies yourself.

The DSH ecosystem emphasizes “Everything is a plugin”; the community directory site and DeepSeek / High-Flyer have no official affiliation. This article is purely for technical introduction.

Conclusion

dsh-opencode-go-plus connects OpenCode Go subscriptions to DeepSeek Harness. While maintaining consistency with upstream protocols, it fixes issues such as silent catalog loss, route conflicts, and coexistence loading failures, and consolidates configuration into Settings → Models. For further information, please refer to the community directory page and the GitHub repository README.

  • Directory Page: https://www.skillhub.cn/plugins/DPH-1121/dsh-opencode-go-plus
  • GitHub: https://github.com/DPH-1121/dsh-opencode-go-plus (The installation repository URL in the README is https://github.com/HaydenSmith1121/dsh-opencode-go-plus)