YYTbit/dsh-plugin-jev-router ↗★ 1
dsh-plugin-jev-router
Per-turn model and reasoning-effort routing for DeepSeek Harness -- one Jev choice question per turn 适合追求性价比与效果平衡的用户,每轮对话根据输入自动选择最合适的模型与思考强度。
Install
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:YYTbit/dsh-plugin-jev-routerREADME
Read the full README ↗Configuration
- id: jev-router
name: dsh-plugin-jev-router
inject: []
config:
# Routing targets. The rates below are example list prices, in USD per
# million tokens. Replace them with the rates you are billed.
candidates:
- { model: deepseek-v4-fast, effort: low, costPerMTokIn: 0.07, costPerMTokOut: 0.14 }
- { model: deepseek-v4, effort: low, costPerMTokIn: 0.28, costPerMTokOut: 0.42 }
- { model: deepseek-v4, effort: high, costPerMTokIn: 0.28, costPerMTokOut: 0.42 }
- { model: deepseek-reasoner, effort: high, costPerMTokIn: 0.55, costPerMTokOut: 2.19 }
# Accepts a model@effort label, a bare model name, or a list index.
# Default: the most expensive candidate, so an undecidable turn is never
# under-served.
defaultCandidate: deepseek-reasoner@high
# A Jev answer below this confidence routes to the default candidate.
minConfidence: 0.5
# Turns a candidate stays pinned after an escalation or an expensive Jev
# choice. 0 disables the hold, which is the setting to use when testing or
# debugging the Jev path, since a held turn skips the request entirely.
stickyTurns: 1
# Extra escalation patterns, appended to the built-in defaults.
escalateOn: []
# Extra trivial patterns, appended to the built-in defaults.
trivialPatterns: []
# Set false to route with only the patterns given above.
useDefaultPatterns: true
# Byte cap for the trivial fast path.
trivialMaxBytes: 240
# Byte cap on the summary sent to Jev.
maxSummaryBytes: 4000
endpoint: https://api.typesafe.ai/v1/systemone
apiKey: ''
timeoutMs: 2500
question: ''
# Token profile used to turn per-million rates into a per-turn cost.
tokensInPerTurn: 12000
tokensOutPerTurn: 800
# JSONL receipt log. Empty disables it.
receiptPath: ''
# Inject the current route into the system prompt. Off by default because a
# section that changes every turn rewrites the cached prefix.
promptSection: false
# Cost weight used by `jev-route replay --prefer cheap`.
replayCostAversion: 2
Environment variables fill in the fields that are not set in config.
| Variable | Field |
|---|---|
JEV_API_URL | endpoint |
JEV_API_KEY | apiKey |
JEV_ROUTER_RECEIPTS | receiptPath |
JEV_ROUTER_CANDIDATES | candidates, as a JSON array |