前言¶
在 DeepSeek Harness(DSH)裏跑智能體時,很多分支邏輯仍依賴模型用自然語言回答,再由代碼或後續 prompt 去解析「是/否、選哪一項、打幾分」。這類做法 fragile:格式不穩、閾值難定、和業務代碼耦合在 prompt 裏。
下面介紹社區插件 dsh-jev(維護者 danbao):它把 TypeSafe Jev(System One) 接到 DSH,給智能體一個 jev_ask 工具——傳入待評估的 state 和一組 typed questions,拿回可分支的結構化結果(概率、choice 選項、score 檔位等),而不是還要再 parse 的散文式回覆。
這是什麼¶
dsh-jev 是面向 DeepSeek Harness 的插件(npm 包名 dsh-jev,當前版本 0.1.0,MIT 許可證)。它不改動 harness 主循環,也不綁定 agent/pre-step 等決策層鉤子;只是在工具層提供 jev_ask,專門做「帶類型的判斷題」。
後端默認走 OpenRouter(一個 OpenRouter key 即可);配置裏把 backend 設爲 typesafe 可切到 TypeSafe 官方端點。插件用原生 fetch 調用 POST /v1/systemone,不依賴廠商 SDK;換後端主要是改 base URL、key 和 model id。
核心功能¶
jev_ask 工具¶
調用形態(概念上)如下:傳入 state 與 questions[],每條問題有 id、type、instructions,並按類型附帶 options(choice)或 levels(score)等字段。
jev_ask({
state: "Customer says they were charged twice, three days ago, and is upset.",
questions: [
{ id: "urgent", type: "noul", instructions: "Does this express urgency?" },
{ id: "team", type: "choice", instructions: "Which team should handle this?",
options: ["billing", "technical", "sales"] },
{ id: "anger", type: "score", instructions: "How upset is the customer?",
levels: ["Calm", "Frustrated", "Very angry"] }
]
})
返回的 answers 是代碼可直接分支的值,例如 noul 的概率、choice 的選中項與各選項概率、score 的數值與檔位 legend;響應裏還會帶上 model id 與 token 用量(OpenRouter 側可有 usage.cost)。README 中的示例 model 爲 typesafe/jev-1.13-20260917。
問題類型¶
| type | 含義 | 要點 |
|---|---|---|
noul |
是/否類,帶概率 | API 不提供 confidence,插件也不會爲 Noul 僞造 |
choice |
多選一 | 需提供 options;本地校驗最多 255 個選項 |
score |
有序檔位 | 需提供 levels,2–10 檔,從低到高 |
參數約定(摘自工具契約):
state:待評估文本;發送內容都會參與評估,只放問題需要的上下文。state_json:結構化 state 的 JSON 字符串;與state同時存在時優先用state_json。- 同一請求內多條問題 獨立、並行 評估,適合批量原子題。
校驗、密鑰與重試¶
- 出站 / 入站雙重校驗:問題格式、答案完整性、選項是否在題面內、分佈和爲 1、類型匹配等;任一項失敗則 整次調用失敗,不會出現「讀了一半」的判斷。
- API key 按次解析、不緩存:字面量
apiKey→credentials服務 → 進程環境;缺 key 不阻止插件加載(加載時打 warning),首次jev_ask才報錯,便於先裝插件後配密鑰。 - 重試分類:429 / 529 / 5xx / 超時 / 連接錯誤會退避重試(尊重
Retry-After);401 / 403 / 404 / 422 立即失敗。timeoutMs限制單次嘗試,budgetMs覆蓋整次調用含退避。
v1 刻意不做的事¶
插件 不 做決策層(不綁 tool 收窄、執行前門禁、模型路由等),不 自動加載 skill、改 harness 循環、審批緩存或 dashboard,也 沒有 瀏覽器配置卡片;配置在 cordis.yml / dsh 設置文檔,密鑰走 credentials 或環境變量。
安裝與啓用¶
DSH 從 dist/ 加載插件,需先在本機構建。官方 README 給出的步驟如下。
cd /path/to/dsh-jev
pnpm install
pnpm build # dsh loads from dist/, so build before installing
dsh plugin --profile <name> add /path/to/dsh-jev
dsh --profile <name> --dump-config # expect the "# == dsh-jev" layer and the jev row
開發時可不寫入 profile,用 patch 覆蓋:
pnpm dev # tsc --watch
dsh web --patch ./cordis.patch.yml
運行環境要求 Node ^22.19.0 || >=24.0.0;peer 依賴包括 @deepseek-ai/cordis(>=4.0.2)及 dsh-credentials / dsh-settings / dsh-tools 等(見倉庫 package.json)。
配置¶
最小配置只需 OpenRouter 密鑰:
export OPENROUTER_API_KEY=sk-or-...
其餘字段有默認值;在 profile 裏覆蓋 jev 插件行的 config 即可。完整字段說明見倉庫 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
| 字段 | 默認 | 說明 |
|---|---|---|
backend |
openrouter |
openrouter | typesafe |
apiKeyEnv |
隨 backend | OpenRouter → OPENROUTER_API_KEY;TypeSafe → TYPESAFE_API_KEY |
model |
隨 backend | OpenRouter 默認 jev-1.13;TypeSafe 默認 jev-latest |
timeoutMs / budgetMs |
20000 / 45000 | 單次嘗試超時 / 整調用預算(含重試退避) |
maxQuestions |
64 | 單次最多問題數 |
maxStateChars |
96000 | state 序列化長度上限 |
若 timeoutMs > budgetMs 或 baseURL 非法,設置寫入會被拒絕,避免文檔與運行態不一致。
典型用法與建議¶
- 把問題拆成原子題:例如不要一條「給 pitch 打分」,而是分別問市場規模、技術可行性、差異化,再在業務代碼里加權。
- 同一
jev_ask裏批量提問:並行評估,延遲通常不會隨題數線性暴漲。 - 閾值自己定:
choice的最高概率選項不一定等於「足夠確定」;用返回的probabilities在代碼裏設門檻。
智能體在對話中調用 jev_ask 後,用返回的 JSON 走 if/switch、路由到不同 tool 或人工隊列即可;失敗時表現爲普通工具調用錯誤,模型可按錯誤信息補救(例如補 key、縮 state、改 question 格式)。
適用場景與注意¶
適合:需要在 agent 流程裏做可重複、可測試的分流判斷——客服分派、 urgency 檢測、情緒檔位、合規 yes/no 等,且希望 概率和選項 id 進代碼 而不是進 prompt 字符串。
注意:
- 插件以 當前 dsh 進程權限 運行;安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。
- 社區目錄 SkillHub 上的 danbao/dsh-jev 是獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝命令以倉庫 README 爲準(本地路徑
dsh plugin add,而非憑名稱拼接github:owner/repo)。 - 無 API key 時插件仍可加載,但真正調用會失敗;桌面 profile 下若
ctx.get('credentials')爲undefined,解析會回退到環境變量。
小結¶
dsh-jev 把 TypeSafe Jev 的結構化判斷能力封裝成 DSH 工具 jev_ask:無 SDK、默認 OpenRouter、嚴格校驗與可配置超時/重試,讓智能體在 noul / choice / score 三類問題上拿到可直接分支的數據結構。