前言¶
在 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。
安装后验证(建议逐项做)¶
- 确认工具已注册:
cordis_inspect_query的Tool.listTools中出现decision_ask与decision_info。 - 确认 UI:
settings.section的occupants含id: "dsh-decision";tool.call.toolview含key: "decision_ask"。缺失则整页重载后再查。 - 确认路由:
GET http://127.0.0.1:<PORT>/dsh-decision/status返回 200,JSON 含models、keyConfigured。 - 冒烟:
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 里做路由、判定、打分与框选,而不用把「答案」完全交给生成式续写。