前言¶
DeepSeek Harness(DSH)的核心理念是「一切皆插件」,开发者可以通过插件扩展模型能力与工作流。在做复杂决策时,让同一个模型先输出结论再自我复核,往往只是重复一遍它的推理过程。独立复核的价值在于提供「第二意见」:复核方只看到问题、主模型的预选、证据与约束,不参与原始推理,也不掌握工具权限。dsh-decision-review 就是为这种场景设计的 DSH bundle,把独立复核做成一个工具,而不是替模型做决定。
是什么¶
- 插件名:dsh-decision-review
- 维护者:ninetyhe-90
- 核心定位:主模型继续拍板,第二个模型只提供复核意见;不替模型做决定
- 解决的问题:在 DSH 工作流中引入结构化的复核流程,通过置信度分层与权限隔离,在不影响主模型决策权的前提下,引入第二意见
核心能力¶
- 三种运行模式
off:不注册工具,不产生任何调用shadow:只记录复核过程与结果,不回灌给主模型advisory:返回结构化建议,由主模型决定采纳或保留- 不替模型决策
- 复核只返回建议与置信度,最终选择仍由主模型决定
- 结构化输出
- 固定返回
status、recommendation.choice、confidence、reasonCode - 置信度分层
- 达到
minConfidence可采纳 - 未达标但高于
abstainBelow保留但不推荐 - 低于
abstainBelow视为弃权 - 失败不重试
- 复核失败立即返回原因,主模型按原判断继续
- 日志脱敏
- 只记录点位、状态、原因码、模型、HTTP 状态、请求 id、输入指纹与耗时
- 权限隔离
- 复核方不获得任何工具、文件、网络或审批权限
- 权限提升、用户确认、写操作、网络目标与工具白名单不进入复核范围
安装与启用¶
插件以 DSH bundle 形式提供,安装后默认 mode: off,不会产生任何调用。要启用,需要配置复核服务并显式设置 model 与 baseUrl。
dsh plugin --profile <name> add dsh-decision-review
dsh plugin --profile <name> add /path/to/dsh-decision-review
dsh plugin --profile <name> add github:ninetyhe-90/dsh-decision-review
启用时,在 DSH 配置文件中指定 mode、model、baseUrl 等字段,并将决策点加入 allowedDecisionPoints 白名单。
复核协议¶
复核端点不是 OpenAI 兼容的聊天接口,而是一个结构化决策接口。
POST {baseUrl}/v1/decision
Authorization: Bearer {DECISION_API_KEY}
请求体包含三个顶层字段:
| 字段 | 说明 |
|---|---|
model |
复核模型名 |
state |
上下文状态,包含 question、primaryChoice、evidence、constraints |
questions |
选项与推荐标准,包含 recommendation.criteria |
返回值包含 answers.recommendation.choice 与 confidence,probabilities 仅透传给主模型参考,不参与判定。
baseUrl 是网关根地址,插件自行拼接 /v1/decision;如果地址已经以 /v1 或端点路径结尾,启动时会被拒绝。
配置项¶
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
mode |
off | shadow | advisory |
off |
运行模式 |
model |
string |
无 | 必填,复核模型名 |
baseUrl |
string |
空 | 复核服务根地址,不含 /v1 |
apiKeyEnv |
string |
DECISION_API_KEY |
存放凭据的环境变量名 |
allowedDecisionPoints |
string[] |
[] |
允许调用复核的决策点名列表 |
timeoutMs |
number |
5000 |
单次复核超时 |
minConfidence |
number |
0.75 |
可采纳阈值 |
abstainBelow |
number |
0.5 |
弃权阈值,不得高于 minConfidence |
promptSection |
boolean |
true |
是否注入提示段 |
promptSectionOrder |
number |
30 |
提示段顺序 |
systemExtra |
string |
空 | 追加到复核请求的领域约束 |
示例配置:
- insert:
- id: decision-review
name: dsh-decision-review
config:
mode: advisory
model: your-decision-model
baseUrl: https://your-gateway
allowedDecisionPoints:
- custom_review_point
失败码¶
reasonCode |
含义 |
|---|---|
timeout / cancelled |
本地超时,或父请求被取消 |
upstream_timeout |
网关报告上游超时(HTTP 504) |
credential_unavailable |
凭据环境变量缺失 |
authentication_failed |
凭据缺失或被拒绝(HTTP 401) |
model_not_authorized |
凭据无权使用该模型(HTTP 403) |
model_unsupported |
网关不认识该模型名 |
invalid_request |
请求体被拒绝(HTTP 400) |
route_unavailable |
HTTP 404,检查 baseUrl 是否为网关根地址 |
rate_limited / quota_exceeded |
上游限流或额度耗尽 |
context_too_large |
HTTP 413 |
invalid_response / response_too_large |
响应无法解析或超出上限 |
provider_error |
其它网络或服务端错误 |
安全边界¶
- 复核方不获得任何工具、文件、网络或审批权限
- 权限提升、用户确认、写操作、网络目标与工具白名单不进入复核范围
- 复核结果只是建议,不能绕过主模型的判断与宿主的确认流程
- 日志不记录请求正文与原始错误,只记录结构化元数据
兼容性¶
- Node.js 20.11+
- DeepSeek Harness 0.2.x:需要
ctx.tools、ctx.logger;缺少ctx.systemPrompt时跳过提示段注入 @deepseek-ai/schemastery3.18.x
项目结构¶
src/decision-core.mjs 配置校验、输入归一化、提示段与失败码
src/decision-model.mjs 工具注册、复核请求与结果映射
test/ 配置、协议与工具行为测试
cordis.patch.yml bundle 层,默认 mode: off
开发与验证¶
npm install --include=dev
npm test
npm run check
路线图¶
- [x] 三档模式与置信度分层
- [x] 结构化失败码与日志脱敏
- [x] 可配置决策点白名单
- [x] bundle 安装形式
- [ ] npm 发布
- [ ] 复核服务的最小参考实现
适用场景与注意¶
- 适合需要在 DSH 工作流中引入结构化复核、对决策权与权限隔离有要求的场景
- 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证
- 需要一个兼容
POST /v1/decision的复核服务,并配置model与baseUrl
小结¶
dsh-decision-review 通过「主模型继续拍板,第二个模型只提供复核意见」的方式,在 DSH 中实现结构化的独立复核流程。它提供三档运行模式、置信度分层与权限隔离,帮助你在不牺牲主模型决策权的前提下,引入可观测、可配置的第二意见。
- 目录页:https://www.skillhub.cn/plugins/ninetyhe-90/dsh-decision-review
- GitHub:https://github.com/ninetyhe-90/dsh-decision-review