dsh-mcp-proxy
ben7am1n
Context-cheap lazy MCP access for DeepSeek Harness
PROJECT TOPICS
PROJECT README
Make raincode the model layer of DeepSeek Harness (dsh): a cheap model pool
with StablePrefix prompt caching, retries, and failover, driven by a local
OpenAI-compatible gateway. Inside dsh you can pick any model from your raincode
pool and browse the raincode skill library with /skills.
The plugin is the "mouth" — it translates dsh's GenerateOptions to the OpenAI
wire format and streams chunks back — while the raincode gateway (Rust) is the
"brain" that owns profile selection, caching, and retries. The plugin holds no
model logic.
Install raincode (>= 0.1.0 with gateway /v1/models and /skills):
cd raincode
cargo install --path crates/rc-cli
# or use ./install.sh
Configure profiles (your model pool):
raincode setup
# writes ~/.raincode/profiles.toml
Start the gateway (keep it running):
raincode proxy --port 8787
Verify: curl http://127.0.0.1:8787/health → {"ok":true,"service":"raincode-gateway"}.
dsh plugin --profile web add dsh-plugins-raincode
Then add the row to the profile's patch layer
(~/.dsh/profiles/web/cordis.patch.yml, or ~/.dsh/cordis.patch.yml for every
profile):
- insert:
- id: raincode
name: dsh-plugins-raincode
config:
baseURL: http://127.0.0.1:8787
apiKeyEnv: RAINCODE_API_KEY
dsh --profile web --dump-config should show the raincode row; restart
dsh web to load it.
| Field | Default | Meaning |
|---|---|---|
baseURL |
http://127.0.0.1:8787 |
raincode gateway address |
apiKeyEnv |
RAINCODE_API_KEY |
dsh credential seam only; a loopback gateway does not verify keys (missing credentials don't block it) |
models |
[] |
optional static catalog override; empty fetches the pool from the gateway's /v1/models |
streamIdleTimeoutMs |
300000 |
stream idle timeout (dsh-timeout helper) |
retryPolicy |
dsh default | retry policy via RetryPolicySchema |
/v1/models); the chosen model maps exactly to a gateway
profile./skills browsing — run /skills to list the raincode skill library,
/skills <name> to read a skill's body. Data comes from the gateway's
/skills endpoint (~/.raincode/skills/).sessionId → prompt_cache_key) and
retry/failover are handled by the gateway per profile; nothing to configure
in dsh.TRANSPORT-style errors from the model
call. Start it with raincode proxy --port 8787.~/.raincode/profiles.toml (inline, key
file, or env). The plugin only demands a credential when baseURL points at
a remote gateway.raincode setup (or edit ~/.raincode/profiles.toml
and restart the gateway).MIT
中文说明见 README.zh.md.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。