ikashana/dsh-notify ↗★ 2

dsh-notify

DeepSeek Harness (dsh) 任务监控通知插件:turn 结束 / 需人工确认 / 确认超时 / 模型主动 notify 工具四种触发,经 HTTP webhook(QQ机器人/serverchan/钉钉/企微/ntfy)、A2A agent、MCP 工具与 Windows SAPI 语音通道推送。纯 Node、零运行时依赖、免构建 bundle。 适合需在任务结束或待确认时收到提醒的用户;需配置推送通道与触发条件

패키지
dsh-notify
호환성
미검증
버전
0.1.0
라이선스
MIT
최근 업데이트
2026. 8. 14.

같은 패키지 이름의 다른 저장소

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ikashana/dsh-notify

Configuration table (defaults = code DEFAULTS; Config validated with schemastery; all keys optional)

KeyDefaultMeaning
turnEnd.reasons[completed, error, blocked, max-tokens]trigger whitelist; explicit [] disables this trigger
turnEnd.cooldownMs10000quiet window after turn end (ms); a new turn inside it cancels
turnEnd.includeTextfalsebody preview switch (recent assistant text)
turnEnd.textMaxChars500body truncation length
confirmation.approvaltrueapproval/asked notification switch
confirmation.askUserQuestion'auto''auto'/'on'/'off': auto = only with a web layer
confirmation.timeoutMs600000escalation threshold, 0 disables
confirmation.notifyDecidedfalsesend “confirmed” after resolution signals
confirmation.includeQuestiontrueinclude the question summary (no option details)
confirmation.questionMaxChars120question summary truncation
rootOnlytruenotify root sessions only (origin/delegationDepth check)
http.timeoutMs10000HTTP request timeout
http.retries2per-channel retry count
http.retryBaseMs500exponential backoff base (500, 1000, 2000…)
http.channels[]HTTP channel list, see below
a2a.timeoutMs / a2a.retries / a2a.retryBaseMssame as httpA2A global defaults
a2a.channels[]A2A channel list: { id, agentUrl, template?, fallback? }
mcp.timeoutMs / mcp.retries / mcp.retryBaseMssame as httpMCP global defaults
mcp.channels[]MCP channel list: { id, url, tool, arguments?, headers?, fallback? }
tools.notify.enabledfalsenotify tool switch (model-initiated notifications)
sapi.enabledfalsevoice switch (Windows only)
sapi.template'任务通知:{{title}},状态:{{reason}}。'speech template
sapi.voice'auto''auto' = auto zh-CN; or a voice-name match (e.g. 'Huihui')
sapi.queue'merge'at most 1 Speak at a time: merge keeps latest / drop discards
escalation.sapitrueescalation includes voice (requires sapi.enabled)
escalation.channelIds[]high-priority channel ids for escalation (any channel type)
queue.concurrency2send concurrency cap
queue.flushTimeoutMs2000dispose flush wait cap

Each http.channels entry: { id, url, method='POST', headers={}, body, timeoutMs, retries, retryBaseMs, fallback: [backup channel ids] }. Object/array body values are JSON-serialized automatically. fallback on a2a.channels/mcp.channels shares the same failover chain and can reference any configured channel id.