前言¶
在 DeepSeek Harness(DSH)里跑 coding agent 时,常见重复判断会堆在日志行、工具输出、失败测试、搜索结果或候选文件上。把这些内容全部塞进大模型上下文,或逐个开 subagent 去读,成本和延迟都会上去。机械条件用 grep 更合适;需要语义判断、又要结构化概率时,就需要专门接口。下面介绍社区插件 dsh-jev-plugin(维护者 RaulLazaro),它把 TypeSafe 的 Jev(System One 决策模型)挂进 Harness,通过 jev 工具对同一段 state 并行提问,返回带概率的 typed 答案,并在 Settings → Plugins → Jev 里按用户配置 Provider 与密钥。
这是什么¶
dsh-jev-plugin 属于 DSH 社区插件目录中的「模型推理」类条目(目录页:skillhub.cn/plugins/RaulLazaro/dsh-jev-plugin)。插件不负责写长文或生成 prose,而是返回 judgements:每个问题在同一段文本上并行评估,README 说明一次请求里带 50 个问题与带 1 个问题的耗时和成本大致相当,适合 agent 需要对大量条目做同类判断的场景。
插件向 Harness 注册两类表面:
| 表面 | 作用 |
|---|---|
jev 工具 |
发送 state + questions,返回 typed 答案、概率与 confidence |
| Settings → Plugins → Jev | 按用户选择 Provider、可选 model override、Custom 时的 Base URL、API key,以及 Test connection |
源码与说明见 GitHub:RaulLazaro/dsh-jev-plugin(package.json 版本 0.2.2,许可证 MIT,要求 Node >=20、dsh >=0.1.1-rc.1)。社区目录与 DeepSeek / 幻方无官方从属关系;插件在当前 dsh 进程权限下运行,安装前请自行审阅源码与许可证。
核心功能¶
- 批量 typed 问题:
state为字符串(可含多段,用稳定标签如### ITEM 1引用);questions为对象,每题指定type与instructions(及choice/score所需的criteria)。 - 三种问题类型:
-noul:返回 yes 的概率(0–1)
-choice:返回choice、probabilities、confidence
-score:有序 rubric 上的score、probabilities、confidence - 多 Provider:TypeSafe 直连、Vercel AI Gateway、Laya Studio、OpenCode Zen、Custom;各 Provider 使用独立 API key,也可通过对应环境变量回退(如
TYPESAFE_API_KEY)。密钥存入 DSH credentials store,不写入settings.yaml。 - 连接测试:Settings 内 Test connection 会做一次真实往返,报告解析到的 provider、model、延迟、input tokens 与答案。
README 在相同任务与数据上给出了与「直接用模型」「用 subagent」的对比测量(含 median subagent 9 次请求、48 s、$0.035 等),并注明在机械标准上不如 grep;完整证据见仓库内 docs/MEASUREMENTS.md,刻意不做的事见 docs/DECISIONS.md。设计问题可参考 TypeSafe 官方 typesafe-ai/skills 与 agent-skill 文档。
安装与启用¶
包内自带 bundle patch,安装一条命令即可。dsh plugin 会转发到 pnpm,本地路径、git spec、registry 名称均可:
dsh plugin --profile web add /path/to/dsh-jev-plugin # 本地 checkout
dsh plugin --profile web add github:RaulLazaro/dsh-jev-plugin # 从 GitHub
dsh plugin --profile web add dsh-jev-plugin # 发布后从 registry
上述命令会添加依赖、把 dsh-jev-plugin 写入 profile 的 bundle 列表,并按 cordis.patch.yml 合成配置。不启动进程即可确认合成结果:
dsh --profile web --dump-config | grep -A4 'dsh-jev-plugin'
# - id: jev
# name: dsh-jev-plugin
# config:
# enabled: true
# provider: typesafe
必须重启 Harness 才能挂载新 bundle;运行中的进程不会热加载。API key 在 UI 填写,不必写进 composition。卸载:
dsh plugin --profile web remove dsh-jev-plugin
配置¶
打开 Settings → Plugins → Jev:
- Provider — Jev 服务来源(见下表)。
- Model override — 可选;留空则用该 Provider 默认模型。
- Base URL — 仅 Custom Provider 需要。
- API key — 见上文 credentials store;界面会提示是否已配置。
- Test connection — 真实 round trip 与结果摘要。
| Provider | Endpoint | 默认 model | 凭证 / 环境变量 |
|---|---|---|---|
| TypeSafe (direct) | https://api.typesafe.ai/v1/systemone |
jev-latest |
TYPESAFE_API_KEY |
| Vercel AI Gateway | https://ai-gateway.vercel.sh/typesafe/v1/systemone |
typesafe-ai/jev |
AI_GATEWAY_API_KEY |
| Laya Studio | https://api.laya.studio/v1/systemone |
auto-routed | LAYA_API_KEY |
| OpenCode Zen | https://opencode.ai/zen/v1/systemone |
jev-1.13 |
OPENCODE_ZEN_API_KEY |
| Custom | 自建 URL | jev-latest |
JEV_API_KEY |
评估接口走 TypeSafe 兼容的 POST …/v1/systemone,不是 OpenAI / Anthropic 兼容端点。Laya Studio 与 Jev 同 wire、同题型,但有截断与选项数等限制(README 有说明);自建 Laya 可通过 Custom 指向例如 http://127.0.0.1:<port>/v1/systemone。
典型用法¶
向 jev 工具传入 JSON 形参(README 示例):
{
"state": "### ITEM 1\nTypeError: x is undefined\n\n### ITEM 2\nAll 42 tests passed in 1.2s",
"questions": {
"item1_failed": { "type": "noul", "instructions": "Does ITEM 1 report a failure?" },
"item2_failed": { "type": "noul", "instructions": "Does ITEM 2 report a failure?" },
"worst": {
"type": "choice",
"instructions": "Which item is the failure?",
"criteria": { "item1": "a code exception", "item2": "a passing run" }
}
}
}
使用上 README 强调:原子化提问(每题窄、按标签引用条目);instructions / criteria 用英文,state 语言不限;看概率而不只看选项,平坦分布表示在猜,noul 上 confidence 约 0.4–0.6 信息量少,是否门控动作需在自己 workload 上标定。
适用场景与注意¶
适合:对大量同质条目做并行语义判断(是否失败、选哪一项、打分等),在 agent 流程里用代码组合多题答案,而不是一次问整篇文档。
不要用 Jev 做(README 明确拒绝):
- 写作、摘要、翻译或重排版 — 不能生成文本
- 精确字符串或算术 — 不是正则或计算器
- 需要长链推理 — 应拆成原子问题,在代码里组合
与 grep 的分工:标准可机械匹配时用 grep;需要语义与概率时再调 jev。
DSH 生态理念是「一切皆插件」;本插件是社区贡献的模型推理扩展,按 profile(示例为 web)安装后需在 Settings 配好 Provider 与密钥,重启 Harness 即可在 agent 中调用 jev 工具。
更多说明与变更记录见 GitHub 仓库 README,插件索引见 SkillHub 目录页。