dsh-jev
TypeSafe Jev (System One) typed-decision tools for DeepSeek Harness (dsh): ask noul/choice/score questions and get structured answers instead of prose 适合需要让模型输出结构化选择或评分,而非纯文本回答的特定任务。
同名パッケージの別リポジトリ
インストール
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:danbao/dsh-jevドキュメント
README 全文を読む ↗Configuration
The minimal setup is one key:
export OPENROUTER_API_KEY=sk-or-...
Everything else has a default. Override the row's config to change it — every field is documented
in cordis.yml:
- id: jev
name: 'dsh-jev'
config:
backend: typesafe # openrouter (default) | typesafe
apiKeyEnv: TYPESAFE_API_KEY # credential reference (an environment variable name)
model: jev-latest # omit to use the per-backend default
timeoutMs: 20000
budgetMs: 45000
maxRetries: 1
| Field | Default | Meaning |
|---|---|---|
backend | openrouter | openrouter | typesafe |
apiKeyEnv | per backend | Credential reference; openrouter → OPENROUTER_API_KEY, typesafe → TYPESAFE_API_KEY |
apiKey | — | Literal key (role('secret')). Discouraged; prefer apiKeyEnv |
baseURL | per backend | Override for a self-hosted gateway or proxy |
model | per backend | openrouter → jev-1.13; typesafe → jev-latest |
timeoutMs / budgetMs | 20000 / 45000 | Per-attempt timeout / whole-call budget (including retry backoff) |
maxRetries | 1 | Retries after the first attempt |
maxQuestions | 64 | Maximum questions per call |
maxStateChars | 96000 | Character limit on the serialized state |
maxInstructionChars | 8000 | Character limit on one instruction |
appName / appUrl | dsh-jev / — | OpenRouter attribution headers X-Title / HTTP-Referer |
logRequests | true | Structured log line per evaluation |
A settings write is rejected when timeoutMs > budgetMs or baseURL is not a valid URL, so the
settings document and the running plugin never disagree.
Model ids across the two backends
| OpenRouter | TypeSafe direct | |
|---|---|---|
| Alias | jev-latest → ~typesafe/jev-latest | jev-latest |
| Version | jev-1.13 → typesafe/jev-1.13 | jev-1.13.0 |
| Pinned | typesafe/jev-1.13-20260917 | same style |
| Extra fields | response carries id, provider, usage.cost | none |
Usage guidance
- Ask atomic questions. Instead of "rate this pitch", ask about market size, technical feasibility, and differentiation separately, then weight them with your own formula — changing a coefficient then means changing code, not a prompt.
- Batch questions. Questions in one request are evaluated independently and in parallel, so asking many at once barely costs more latency.
- Set your own thresholds. The probabilities exist so your code can branch; a
choiceanswer being the highest-probability option does not make it certain — look atconfidence. - Never present a Noul as a risk percentage. It is the probability of a yes/no statement.