
GengDaPeng/dsh-agent-message
30最近提交 2026年8月15日
dsh-agent-message DSH 插件
本插件为 Harness 进程中的每个 Agent 会话提供三个工具:list_peer_agents、send_agent_message 和 check_delivery。Agent 可以彼此发现、以不同模式(followup、steer、inject)发送消息,并查询送达状态。还提供 @ 会话引用 UI 和可见的 Agent 消息卡片。
如何安装 dsh-agent-message DSH 插件
dsh plugin --profile web add dsh-agent-message复制不会执行命令。安装 dsh-agent-message DSH 插件前请核对仓库和版本。
dsh-agent-message DSH 插件数据来源
dsh-agent-message DSH 插件快照日期:2026年8月16日
discovered
dsh-agent-message DSH 插件能做什么
- list_peer_agents:列出所有可发送的独立会话(排除归档和真实子代理),返回 ID、标题、工作目录和运行状态。
- send_agent_message:按目标会话 ID 发送消息,支持 followup(新轮次)、steer(立即介入)、inject(静默补充上下文)模式,离线时自动恢复后投递。
- check_delivery:按消息 ID 查询送达状态(排队中/已认领/被丢弃/未知),进程重启后仍可查询。
- @ 会话引用:在输入框开头键入 @ 从原生候选菜单选择目标,显示标题和运行状态。
- 可见的 Agent 消息卡片:relay 消息显示为左侧 Agent 消息卡片,可点击消息头跳转到发送方会话。
- 复制会话 ID 按钮:会话头部新增一键复制当前会话 ID 的按钮。
dsh-agent-message DSH 插件适合哪些场景
- 编排者 Agent 通过跨会话消息给开发 Agent 分配任务。
- 两个 Agent 协作完成多步骤工作流,在会话间传递上下文。
- 监督者 Agent 监控多个 worker Agent,并在需要时发送 steering 指令。
- 主会话给测试会话发指令,并通过 check_delivery 确认送达状态。
dsh-agent-message DSH 插件适合谁
- 在 DeepSeek Harness 中运行多个 Agent 会话并需要跨会话通信的用户。
- 在 Harness 内构建多 Agent 工作流或编排系统的开发者。
dsh-agent-message DSH 插件的限制
- 目标会话必须未归档且存在于本机持久化中;归档会话拒绝发送。
- 真实子代理(origin: subagent)不会出现在目标列表中,也不能作为调用方。
- 同一对会话在滚动 60 秒内最多投递 10 条消息,超过被拒绝。
- 自动恢复离线会话时使用默认模型,不继承之前手动选择的模型。
- 不指定 messageId 的批量回执依赖内存记账(最近 1000 条,FIFO 淘汰)。
- 不支持跨进程或跨机器通信。
dsh-agent-message DSH 插件的仓库 README 摘录
以下文字摘自 dsh-agent-message DSH 插件的上游仓库 GengDaPeng/dsh-agent-message 的 README,版权归原作者,仅作引用。
> DeepSeek Harness 的**跨会话 Agent 通信**插件:让运行在同一个进程里的不同 Agent 会话,像发消息一样互相收发信息。  --- ## 这是什么 在 DeepSeek Harness 里,一个进程会同时挂着多个 Agent 会话。本插件给每个会话装上三个工具,让它们能互相"发消息": - 发消息前,先**列出所有可发送的独立会话**(未归档、排除真实子代理,含离线未打开的),按标题找到目标; - 找到后,**把消息投递到目标会话**——普通消息统一进入独立的新 turn;目标离线(进程重启后还没打开)时,插件通过 Harness 公开接口恢复会话、投递,并保持加载供后续通信,插件卸载时再释放 handle; - 需要时,可以**按需查询**某条消息的送达状态(排队中/已认领/被丢弃/未知),并单独查看目标是否正在运行,供监督场景使用。 典型场景:编排者 Agent 给开发 Agent 派活、两个 Agent 协作接力、主会话给测试会话发指令、监督者 Agent 盯梢多个 worker。 ## 功能 | 能力 | 说明 | |---|---| | `list_peer_agents` | 列出所有**可发送**的独立会话:未归档、排除真实子代理;普通 fork 保留。返回 id、标题、工作目录和运行状态 | | `send_agent_message` | 给指定会话 ID 发消息;默认使用 `followup` 创建独立的新 turn,离线时自动恢复后投递;显式支持 `followup`、`inject`、`steer` | | `check_delivery` | 按需查询消息回执(pending/claimed/discarded/unknown);发送成功时先返回 accepted,接纳前失败由工具错误表示;指定消息 ID 时支持重启后恢复查询 | | `@` 会话定位 | 在输入框开头键入 `@` 选择目标;候选只显示会话标题和“运行中/空闲”,空白占位和子代理不混入。选择后用户看到可读标题,当前 Agent 收到稳定 session ID;`@` 只定位,发送、读取或分析由整句意图决定 | | 可见的 Agent 消息卡片 | relay 仍保留真实的插件来源,但 Client 将它显示为左侧 Agent 消息卡片;`From Session · <名称>:` 可点击或通过键盘打开发送方会话 | | 复制会话 ID | 会话头部新增「复制ID」按钮,一键复制当前会话 ID | ### 发送方导航示例 有什么区别?
默认模式是 `followup`,在目标会话中创建独立的新一轮对话。`steer` 会立即打断目标当前正在运行的任务。`inject` 则静默地在下一步补充上下文,不打断当前工作。Agent 会根据你的意图选择模式,如果不确定则使用默认的 `followup`。
能不能查看消息是否送达?
可以。让 Agent 调用 `check_delivery` 并传入消息 ID,它会返回状态:pending(排队中)、claimed(已认领)、discarded(被丢弃)或 unknown(未知)。即使进程重启后,只要你知道消息 ID 仍可查询。
这个插件有什么限制?
目标会话必须未归档且存在于本地。真实子代理不能作为目标或发送方。同一对会话在 60 秒内最多发送 10 条消息。离线会话恢复时使用默认模型而非之前选择的模型。不支持跨进程或跨机器通信。