deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:edynasty/dsh-opencode-go-provider
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
OpenCode Go LLM provider bundle for DeepSeek Harness (DSH rc.6): a single
opencode-go model route over the OpenCode Go gateway, with a Web Connect
settings card, a stale-while-revalidate model catalog and safe diagnostic
commands.
Status: community software, not published to npm. This package is installed as a commit-pinned Git dependency into a DSH profile; the npm registry is not an installation path. It is not affiliated with, endorsed by, or sponsored by DeepSeek, OpenCode, or any model provider vendor. See LICENSE and THIRD_PARTY_NOTICES.md.
0.1.0-rc.6 peer graph).^22.19.0 || >=24.0.0.corepack enable first if pnpm --version
does not resolve through Corepack).OPENCODE_GO_API_KEY; it is never written into settings, the catalog, logs,
errors or the package.The package is not published to npm; the supported installation is a commit-pinned Git dependency for the DSH web profile:
dsh plugin --profile web add github:edynasty/dsh-opencode-go-provider#d2a447610a5dff4006ac966525effd9669342a78
lib/ is committed to the repository, so the Git install loads the bundle
without a build step. Uninstall removes the package and its bundle row:
dsh plugin --profile web remove dsh-opencode-go-provider
The web profile's base bundle (@deepseek-ai/dsh-llm-pi-ai) already declares
opencode-go in the provider directory (its catalog ships the route). This
bundle adopts that entry instead of re-registering it, and takes over the
route with its own adapter (richer SWR catalog), Connect card and doctor
routes. No profile changes — and in particular no need to disable
llm-pi-ai — are required to install alongside the base bundle.
opencode-go, mounted by the llm-opencode-go
bundle row (cordis.patch.yml).llm-opencode-go (refresh interval, freshness
window, network timeout, deprecated grace, credential ref).dsh.client.inject) that can
connect, test the connection, run diagnostics and disconnect.bin (dsh plugin --profile web exec dsh-opencode-go-provider)
for status, doctor, migration-dry-run and migration-apply.The embedded catalog (catalog/models.json) is derived from OpenCode's
models.dev metadata (https://models.opencode.ai/api.json); only the
opencode-go provider record is retained. Each model carries its own protocol
from that metadata, and the adapter dispatches per model with no
model-name-prefix guessing:
| Protocol | Selection |
|---|---|
openai-responses |
models whose models.dev SDK metadata maps to @ai-sdk/openai |
openai-completions |
models mapped to @ai-sdk/openai-compatible (the default class) |
anthropic-messages |
models mapped to @ai-sdk/anthropic (base URL https://opencode.ai/zen/go) |
Model availability is checked against the live endpoint
https://opencode.ai/zen/go/v1/models, which contributes only available
ids; models.dev remains the sole authority for protocol, context, modalities,
cost and reasoning metadata.
0600, fsync, rename) at
$DSH_HOME/cache/dsh-opencode-go-provider/catalog.json and only then swaps
the in-memory snapshot; in-flight requests keep the snapshot they started
with.origin: embedded/corrupt); the corrupt file is never deleted, and
failures never overwrite the last good state.deprecatedAt timestamp; after 14 days
it is evicted (and resurrects if it returns to live).OPENCODE_GO_API_KEY; keys are never rendered
back, echoed or written anywhere else.GET https://opencode.ai/zen/go/v1/models and reports sanitized counts and
fixed error codes; it never calls generation endpoints.OPENCODE_GO_API_KEY credential. The
opencode-go route and Connect card remain registered and selectable —
disconnect never removes the provider, writes it to a disabled list, or
touches other providers.connect/disconnect are Host-only: the standalone bin refuses them with a
fixed message because the DSH credential store is owned by the running Host.
If an older setup configured llm-pi-ai.providers.opencode-go by hand, the
bundle can migrate it away:
dsh plugin --profile web exec dsh-opencode-go-provider migration-dry-run <settings.yaml>
dsh plugin --profile web exec dsh-opencode-go-provider migration-apply --revision <64-hex> <settings.yaml>
migration-dry-run is read-only and prints the target, the SHA-256 revision
and removed key/line counts (never the key names or values).migration-apply verifies the expected revision, acquires a same-directory
lock, re-reads and re-hashes immediately before writing, creates a
timestamped recoverable backup (never touching credentials files), and
publishes atomically. A concurrent edit yields conflict with zero
residue; a second apply is an idempotent no-change.unsupported-shape) before any lock, backup or write.llm-pi-ai.providers.opencode-go block is
removed, and the credential ref is left untouched.See SECURITY.md for the supported scope, the private reporting route, credential handling and the safe-diagnostics contract.
See CONTRIBUTING.md for setup, the TDD workflow, the strict-type/no-private-import rules, the 250-LOC production ceiling and the full local gate:
corepack enable
pnpm install --frozen-lockfile
pnpm run check
CI (.github/workflows/ci.yml) runs the same gates on Node 22.19.0, 24 and 26
with pnpm 11.7.0 and a frozen lockfile. Live smoke requires both a local
RUN_OPENCODE_GO_LIVE=1 opt-in and a local OPENCODE_GO_API_KEY; CI
injects neither, so the step always skips.
MIT — see LICENSE. Upstream notices and attribution are retained in THIRD_PARTY_NOTICES.md.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。