前言¶
DeepSeek Harness (DSH) 插件。解决无人值守审批请求(subagent、scheduled、cron)可能无限挂起的问题。在 dsh >= 0.2.0-rc.2 中,如果交互 answerer 注册了但永不应答,这类请求会停在原地。本插件在审批请求的 waterfall 上 prepend 了一道门控:为无人值守请求设置一个有界的应答窗口,窗口内有人应答则用人的答案,窗口耗尽则按 fail-closed 默认裁决落定。
安装¶
插件通过 npm 安装。安装前请确保宿主 DSH 版本 >= 0.2.0-rc.2。
dsh plugin add @aiwayds/dsh-approval-policy
安装后插件会自动挂载到 approval/request waterfall 的链首。
配置¶
配置位于 cordis.patch.yml。挂载块 ID 为 dsh-approval-policy。
- insert:
- id: dsh-approval-policy
name: '@aiwayds/dsh-approval-policy'
config:
origins: [subagent, scheduled, cron]
windowSeconds: 60
defaultOutcome: rejected
配置项说明:
origins:判定为无人值守的来源列表,支持subagent、scheduled、cron、all。默认为[subagent, scheduled]。sessions:按 agent id glob 点名的会话,命中即门控该会话所有 turn。默认为空数组。windowSeconds:应答窗口时长(秒),0 表示立即拒绝且不委托下游。默认为 60。defaultOutcome:窗口超时后的默认裁决,仅支持rejected或unavailable。默认为rejected。
行为与限制¶
- 判定粒度:
subagent:基于会话级判定(session.header.origin === 'subagent')。scheduled/cron:基于最后一条溯源 user 消息的source.kind判定(跳过合成注入的runtime-context等消息)。all:全局门控。
- 交互会话:未命中任何来源的交互会话,插件会立即透传,不做任何修改,默认行为不变。
- 零落盘:插件不写入额外的审计日志或状态文件,依赖宿主的
approval/asked和approval/decided日志。 - 裁决限制:
defaultOutcome不支持allowed-once,超时必须落定为rejected或unavailable。
卸载¶
dsh plugin remove @aiwayds/dsh-approval-policy
卸载后,审批行为回到宿主原生状态,不再有窗口限制。