thayronarrais/dsh-bridge-subscriptions0

dsh-bridge-subscriptions

DeepSeek Harness plugin that turns the CLIs you already subscribe to into provider routes. Ships the Claude Code bridge; each bridge can be enabled or disabled on its own.

包名
dsh-bridge-subscriptions
版本
0.1.0
最近更新
2026年8月17日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:thayronarrais/dsh-bridge-subscriptions

Configuration

Everything lives under a per-bridge section. Every field is optional, and the bundle patch deliberately sets none of them: a patch replaces a row's whole config rather than merging into it, so inlining defaults would shadow the bridge-subscriptions: section of $DSH_HOME/settings.yaml that the Models page writes.

claude

FieldDefaultMeaning
enabledtrueWhether this bridge serves requests.
transportsdksdk (Agent SDK) or spawn (claude -p). Only sdk supports tools.
binaryPathresolved on PATHOverride for the claude executable.
cwdharness process cwdWorking directory for the provider process.
discoverModelstrueAsk the CLI which models it can reach.
models(empty)Pinned catalog. Non-empty overrides discovery entirely.
modelCacheTtlMs600000How long a discovered catalog stays fresh.
defaultContextWindow200000Used when the selected model has no exact value.
defaultEffort(unset)Reasoning effort when the caller picks none.
maxTurns2Ceiling on Claude Code's own turns.
streamIdleTimeoutMs300000Maximum provider silence during one read.
maxPromptBytes2000000Conversation budget; oldest turns drop first.
retryPolicyharness defaultProvider-owned policy consumed by llm-retry.

Settings changes take effect on the next request without restarting the server. Changing binaryPath, cwd, models, or discoverModels also drops the cached catalog, so the picker cannot keep showing models read from a previous CLI.

Models and reasoning effort

The catalog is discovered from the CLI, not hardcoded. Asking is free: discovery is a control request over a query that never sends a prompt, so it consumes no subscription quota.

That matters for two things a static list gets wrong:

  • Versions. The harness picker shows the model name and little else, so the resolved wire id rides along in it — Opus (1M context) · claude-opus-5[1m] instead of a bare opus. A [1m] suffix also sets the context window to 1M rather than the 200k default.
  • Effort. Effort support is per model, and the CLI is the only authority on it. On the current CLI every model accepts all five levels except Haiku, which accepts none — so Haiku correctly gets no effort picker at all, rather than one whose settings are ignored.

A defaultEffort the selected model does not offer is dropped instead of sent. If discovery fails — CLI missing, signed out, offline — the route stays usable on a small alias-only fallback catalog, and the next query retries.