DeepSeek Harness 插件:后台子 agent 消息延迟投递

前言

在 DeepSeek Harness (DSH) 中,利用 run_in_background 启动后台子 agent 是常见的开发模式。然而,后台子 agent 完成时的通知或汇报消息,往往会在父会话仍处于忙碌状态(如正在生成回复或调用工具)时直接进入收件箱或显示在界面上。这会导致消息混入正在进行的回合,或者提前打断用户的注意力。

@momojie-s/dsh-subagent-idle-delivery 解决了这个问题。它通过“挂起并释放”(hold-and-release)机制,拦截后台子 agent 的完成通知,直到父会话完全空闲后,才将这些消息作为新的对话回合投递。

插件简介

这是一个 DSH 插件,由开发者 Momojie-S 维护。

其核心逻辑是拦截后台子 agent 的完成通知,并在父会话空闲时投递。挂载后无需任何额外操作即可生效。它支持拦截 subagent-settled(后台子 agent 结算通知)、subagent-report(旧版汇报工具)和 agent-message(新版 send_message 回复)等类型。

安装与启用

通过命令行安装插件:

dsh plugin --profile web add github:Momojie-s/dsh-subagent-idle-delivery

首次安装时,如果使用 pnpm,可能需要在 profile 目录下的 pnpm-workspace.yaml 文件中添加 allowBuilds 授权构建。安装完成后重启 DSH 以生效。

配置项

插件支持通过 patch config 字段进行扩展配置。

字段 类型 默认值 说明
heldKinds string[] ['subagent-settled', 'subagent-report', 'agent-message'] 指定需要拦截的 source.kind 列表。扩展前需确认该类型的全部来源,以免误拦审批或任务完成通知。
maxHoldMs number 600000 放水阀时限。如果扣留时间超过该毫秒数仍未进入空闲状态,消息将以“排队到当前回合之后”的方式释放。设为 0 可严格扣留到空闲,但慎用(连续驱动的 goal 会话可能长期不空闲)。

验证与使用场景

典型用法:
让模型起一个后台子 agent(使用 run_in_background),同时父会话继续执行当前任务。

验证步骤:
1. 启动后台子 agent。
2. 观察日志,应出现 holding N notice(s) ... until idle,表示消息已被拦截。
3. 此时界面不应出现子 agent 的汇报消息。
4. 完成父会话当前回合的工作。
5. 子 agent 的汇报作为新回合出现在历史记录中,日志显示 released ... (idle)。

注意事项

  1. 环境依赖:插件依赖 DSH 版本 >= 0.1.0-rc.7。
  2. 类型变更:默认拦截 agent-message 类型(在 DSH rc.1 steer 统一后,此类消息取代了旧的 report 工具)。
  3. 权限:本插件以当前 DSH 进程权限运行,安装前请检查源码与许可证。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜