前言¶
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
卸載後,審批行爲回到宿主原生狀態,不再有窗口限制。