dsh-opencode-provider
Manifest valid★ 1Use OpenCode models inside DeepSeek Harness without a separate provider API key.
dsh-opencode-provider
Use models available through a local OpenCode server inside DeepSeek Harness without a DeepSeek API key.
Architecture
DeepSeek Harness (DSH)
└─ LLM Runtime
└─ opencode-local provider route
└─ OpenCodeAdapter (dsh-opencode-provider)
├─ POST /api/session → create session
├─ POST /api/session/{id}/prompt → serialized conversation
├─ GET /api/session/{id}/event → SSE stream
└─ POST /api/session/{id}/interrupt → best-effort cancel
↕ HTTP + SSE
OpenCode Server (127.0.0.1:4096)
↕
Model (mimo-v2.5-free)
The adapter serializes the full DSH conversation (system prompt + messages) into a single prompt string, sends it to the OpenCode server, and translates the SSE event stream into DSH StreamChunk values. OpenCode runs its own internal agent/tool loop, so the adapter exposes text output only — structured DSH tool calling is not available.
Verified Features
- No API key required — connects to a local OpenCode server over plain HTTP
- Streaming — text deltas are delivered as they arrive
- Cancellation — abort signal tears down the SSE stream and interrupts the session
- Timeouts — configurable SSE establishment (10 s), prompt admission (10 s), and terminal completion (120 s) limits
- Retry policy — provider-level retry config forwarded to DSH runtime
- Live SSE event formats — handles both legacy (
session.text.delta,session.execution.succeeded) and current (session.next.text.delta,session.next.step.ended) event envelopes - Graceful fallback — unknown SSE events are skipped; non-JSON lines are ignored;
data.wrapperenvelopes are unwrapped defensively
Requirements
- Node.js ≥ 22
- OpenCode server running locally (default:
http://127.0.0.1:4096) - DeepSeek Harness ≥ 0.1.0-rc.8
Installation
Via DSH plugin command
dsh plugin --profile web add dsh-opencode-provider
From source checkout
git clone https://github.com/goku54477/dsh-opencode-provider.git
cd dsh-opencode-provider
pnpm dsh
Quick Start
- Start the OpenCode server:
opencode serve --hostname 127.0.0.1 --port 4096
-
The adapter auto-configures with the default base URL (
http://127.0.0.1:4096). No additional setup is needed. -
In DeepSeek Harness, select the model:
opencode-local/mimo-v2.5-free
Configuration
All fields are optional. Defaults work out of the box with a local OpenCode server.
# Inside your DSH cordis.yml or plugin config
llm-opencode:
# Endpoint of the OpenCode server
baseURL: "http://127.0.0.1:4096"
# Context window reported to the harness (default: 128000)
defaultContextWindow: 128000
# Max output tokens per request (default: 16384)
maxTokens: 16384
# Advisory model list for discovery consumers
models:
- id: mimo-v2.5-free
name: mimo-v2.5-free
description: "OpenCode local agent (text output only)"
contextWindow: 128000
# Retry policy
retryPolicy:
mode: always
backoff:
initialDelayMs: 100
maxDelayMs: 5000
jitterRatio: 0.2
How It Works
- Session creation —
POST /api/sessionwith{ model: { id, providerID: "opencode" } } - Concurrent SSE + prompt — the adapter fires the SSE subscription (
GET /api/session/{id}/event) and prompt delivery (POST /api/session/{id}/prompt) concurrently. This avoids a deadlock where the OpenCode server withholds SSE headers until the session has activity. - Conversation serialization — the full DSH conversation is formatted as
[System]\n...\n\n[User]\n...\n\n[Assistant]\n...and embedded in the prompt. - Event translation — SSE events (
session.text.delta,session.next.step.ended,session.execution.succeeded, etc.) are mapped to DSHStreamChunktypes (block-start,text-delta,block-end,finish). - Cleanup — on completion, error, or abort, the adapter sends a best-effort interrupt to the session.
Development
# Build
npm run build
# Type-check
npm run typecheck
# Run tests
npm run test
# Build + test
npm run check
# Clean output
npm run clean
Security Warning
This plugin communicates with a local HTTP server (no TLS by default). Do not expose the OpenCode server to untrusted networks. The default binding (127.0.0.1) restricts access to the local machine.
Platform Compatibility
v0.1.0 has been tested on the following exact environment:
| Component | Version |
|---|---|
| OS | Windows 11 |
| Node.js | 22.23.2 |
| DeepSeek Harness | 0.1.0-rc.8 |
| OpenCode | 1.18.19 |
| Model | opencode/mimo-v2.5-free |
Other platforms, Node versions, harness releases, OpenCode versions, and models have not been verified. The adapter may work elsewhere, but no guarantees are made.
Limitations
- Text output only — OpenCode runs its own agent/tool loop. Structured tool calling exposed by DSH is not available through this adapter.
- No multimodal support — the adapter reports
inputModalities: ["text"]only. Image/audio/video inputs are not forwarded. - Single model advertised — the default catalog lists
mimo-v2.5-free. Adding models requires manual config; the adapter does not dynamically discover available models from the server. - Prompt size — the entire conversation is serialized into a single prompt string. Very long conversations may exceed the model's context window.
- No persistent sessions — each
stream()call creates a fresh OpenCode session. Conversation state is not preserved across requests. - Local-only by default — the adapter expects the OpenCode server on
127.0.0.1. Remote servers require manualbaseURLconfiguration and appropriate network access.
License
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.1.0 | — | — |
Comments
Loading…
From the same category
by tt-a1i
Agent skill for beautiful, verifiable architecture, workflow, sequence, data-flow, and lifecycle diagrams—self-contained HTML with motion and crisp export.
★ 71.5k
↓ 3.5k/wk
MIT
JavaScript
Sep 25, 2026
dsh plugin --profile agent add @tt-a1i/archify-dshDeepSeek Harness plugin for Reactive Resume: bridges your resumes and job applications into a Harness session over MCP.
★ 41.7k
↓ 236/wk
MIT
Aug 24, 2026
dsh plugin --profile web add dsh-plugin-reactive-resumeby Tencent
Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.
★ 30k
↓ 838/wk
NOASSERTION
Go
Sep 25, 2026
dsh plugin --profile web add @wxg-prc-cpg/dsh-weknoraby anywhere-labs
为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 29k
↓ 167/wk
MIT
TypeScript
Sep 25, 2026
dsh plugin --profile web add dsh-plugin-desktopdeepseek-harness-desktop is a interface plugin for DeepSeek Harness. See the repository documentation for its documented capabilities.
★ 28.6k
MIT
by titanwings
Distilly — Distill how they think into reusable Skills for any Agent or Bot. Formerly Colleague Skill(原同事 Skill).
★ 25k
MIT
TypeScript
Sep 22, 2026