@xia-sc/dsh-decision:在 DSH 里用校准概率做多模态决策

前言

在 DeepSeek Harness(DSH)里做 Agent,常见做法是让大模型生成一段文字来「表态」:选 A 还是 B、是或否、打几分。这类输出可读,但概率未校准,也不适合一次前向就完成结构化判定。vLLM Semantic Router 提供的 Decision 3.0(System One 决策 API)走的是另一条路:对文本、图片或视频提问,返回的是各选项或各档位的校准概率,而不是续写文本。

@xia-sc/dsh-decision 由维护者 xia-sc 发布,把 Decision 3.0 接进 DSH:注册 Agent 工具、提供 Settings 设置页,并在对话里为 decision_ask 渲染概率条卡片。npm 包版本为 0.1.4,许可证 MIT;社区目录归类为「模型推理」。DSH 生态强调「一切皆插件」,SkillHub 目录页 与 GitHub 仓库为社区维护,与 DeepSeek / 幻方无官方从属关系。

这是什么

一句话:@xia-sc/dsh-decision 是 Decision 3.0 的 DSH 插件 bundle,Host 侧调用远程决策 API,Client 侧用同源 HTTP 路由展示配置与可视化,浏览器侧拿不到 API Key。

决策模型不生成文字;一次前向即可回答「哪个选项 / 是或否 / 几分 / 在图里哪里」,并给出每个答案的概率与置信度。

核心功能

下面按 README 中的能力表归纳,均可在安装后通过工具与 UI 验证。

能力 入口 形态
多类型决策(choice / noul / score / box) Agent 工具 decision_ask 一次请求可问多题,返回概率、置信度、框选坐标
服务洞察(模型表 / 配额 / 状态) Agent 工具 decision_info models、usage、status
概率可视化 对话内卡片 挂在 decision_ask 工具调用行,绘制概率条
Key、默认模型、用量管理 Settings → 决策模型 经同源路由读写,Key 不下发浏览器

题型含义(来自工具设计):choice 多选一;noul 是/否;score 0–10 档打分;box 在单张图内定位目标(本地要求恰好 1 张图,否则 Host 直接报错,不发起网络请求)。

典型用途包括:分类路由、二选一判定、档位打分、图片目标定位、对候选答案打分后由外层逻辑挑选。

安装与配置

Host 端零 npm 依赖、无需构建。从 npm 安装官方 bundle 的命令如下(勿凭仓库名自行拼接其他 install 形式):

plugin_manager action=install_bundle target=@xia-sc/dsh-decision

给执行安装的 Agent 使用的等价写法:

plugin_manager(action: "install_bundle", target: "@xia-sc/dsh-decision")

成功标志:application: "applied",且返回的 bundle 为 @xia-sc/dsh-decision。若返回 restart-required,需重启 Harness 后继续;若 failed,应读取 error.code 后停止,不要重复安装。

安装后整页刷新(Ctrl+R)即可看到设置页与卡片。开发时可从本地目录 link:

plugin_manager action=install_bundle target=<本目录绝对路径>

配置项与数据目录

项目 位置 默认值
API Key DSH 凭据 DECISION_API_KEY(设置页写入),或环境变量 DECISION_API_KEY 无(未配置时工具返回可读错误)
默认模型 $DSH_HOME/dsh-decision/config.json 的 model vllm-sr/d3-flash
服务地址 $DSH_HOME/dsh-decision/config.json 的 baseUrl https://decision.vllm-sr.ai
卡片结果缓存 $DSH_HOME/dsh-decision/results.json 200 条 / 1 小时,自动清理

插件写入的文件集中在 $DSH_HOME/dsh-decision/,不在 $DSH_HOME 根目录散落。从 0.1.3 及更早升级时,首次调用会把根目录下的 .dsh-decision.json / .dsh-decision-results.json 迁入该目录;若新旧文件并存,旧文件会备份到 dsh-decision/legacy/。

保存 Key 时,Host 会先请求上游验证 Key,成功才写入凭据;无效 Key 返回 400。通过同源接口配置示例:

POST http://127.0.0.1:<PORT>/dsh-decision/config
content-type: application/json

{ "apiKey": "sk-vsr-..." }

成功时响应含 keyConfigured: true 与掩码后的 keyPrefix。

安装后验证(建议逐项做)

  1. 确认工具已注册:cordis_inspect_query 的 Tool.listTools 中出现 decision_ask 与 decision_info。
  2. 确认 UI:settings.section 的 occupants 含 id: "dsh-decision";tool.call.toolview 含 key: "decision_ask"。缺失则整页重载后再查。
  3. 确认路由:GET http://127.0.0.1:<PORT>/dsh-decision/status 返回 200,JSON 含 models、keyConfigured。
  4. 冒烟:decision_ask 使用类似下面的 payload,应返回 answers 与 usage.input_tokens;decision_info(action: "models") 在 README 验收说明中预期返回 7 个模型。
{ "state": "ping", "questions": { "ok": { "type": "noul", "instructions": "Is this a test?" } } }

回滚:

plugin_manager(action: "remove_bundle", target: "@xia-sc/dsh-decision")

工作原理(简述)

插件分为 Host 与 Client 两半,经 同源 HTTP 路由 通信(非 typert Remote)。Host 注册 decision_ask、decision_info,并向 webServer 注入 /dsh-decision/status、/usage、/config、/result、/client-report 等路由;对外请求 POST /v1/systemone,超时 60 秒,携带 X-API-Key。Client 的设置页与概率条卡片通过相对路径 fetch('/dsh-decision/...') 访问同一 webServer,因此 Key 不会进入浏览器。

一次 decision_ask 链路:Agent 根据工具描述决定是否调用 → Host 校验 Key、state、题数与题型,必要时把本地 png/jpeg/webp 或 mp4/webm/mov/mkv 转为 base64 data URL → 请求 Decision 服务 → 返回 { model, answers, usage, requestId },并写入会话 markdown 与按 callId 的结果缓存。卡片用 GET /dsh-decision/result?callId=… 取结构化结果画条;缓存 miss 时会读盘,并在 phase 变化或 1.5 秒后重试。

典型用法

Agent 在对话中调用 decision_ask,在 questions 里按题指定 type 与说明;多模态时在 state 中附带文本或媒体。decision_info 用于查看模型列表、用量或状态,便于在自动化脚本里先确认配额与可用模型。

上面冒烟示例是最小的 noul 题;业务上可把 choice 用于路由标签、score 用于质量档位、box 用于视觉定位,再依据返回的概率与置信度做阈值或排序,而不是解析模型自由生成的句子。

适用场景与注意

适合谁:需要在 Harness Agent 里做校准概率决策、且能使用 Decision 3.0 API Key 的开发者;希望在同一会话里直接看到概率条、并在 Settings 里管理 Key 与默认模型的 DSH 用户。

运行与权限:插件以当前 DSH 进程权限运行,会读写 $DSH_HOME/dsh-decision/、调用配置的 baseUrl、并在工具执行时读取 Agent 传入的本地媒体路径。安装前应阅读 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求;不要把 API Key 写进仓库或会话日志外的明文文件。

依赖与环境:package.json 要求 Node >=18;Decision API 依赖上游 https://decision.vllm-sr.ai(或你在 config.json 中修改的地址)。README 还列出了服务端限制、性能实测、排查与版本矩阵,遇到 model_not_allowed、request_too_long 等错误时应对照官方 README 第 7–10 节。

边界:卡片结果有 TTL 与条数上限,过期时界面会提示「详细结果不可用」,但工具返回的 markdown 仍在会话中;无 Key 时工具直接返回可读错误,不会静默失败。

结尾

@xia-sc/dsh-decision 把 Decision 3.0 的多模态校准决策收成两个 Agent 工具、一条 Settings 入口和对话内概率条,适合在 DSH 里做路由、判定、打分与框选,而不用把「答案」完全交给生成式续写。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜