dsh-attention-group:先路由、再唤醒的多智能体群聊

前言

在 DSH 里同时跑多个会话、让它们像「群聊」一样协作时,常见做法是:一条消息发出就唤醒所有成员,每个被唤醒的会话再自己判断这条消息是不是给自己看的。结果是:一条没人需要的消息,也会消耗 N 次回合预算。

下面介绍的 dsh-attention-group(维护者 cilarx)把「谁值得被唤醒」的决定放在唤醒之前:消息先落盘、再算路由计划,真正唤醒是另一步,且需要两道开关一致。分类上属于 DSH 社区目录中的工作流类插件;仓库当前星标为 0,许可证 MIT(见 package.json)。

这是什么

一句话:面向 DSH 的多智能体群聊插件——持久化消息记录、注意力路由、跨工作区成员,并明确区分「投递计划」与「实际唤醒」。

房间、 transcript、结论与导出都是普通文件,不依赖调用其他插件;在「裸」 DSH 上也能工作,卸载插件后数据仍可保留(README 中的设计说明)。

和普通群聊的差别

普通群聊在投递时就花预算:全员被唤醒,再各自发现消息与自己无关。

本插件的流程是:

  1. 发消息 → 得到路由计划,例如 routing: SILENT — nobody matched, zero turns spent,或列出匹配对象但标注 not-woken (dry run)。
  2. 唤醒是第二步,且需两道开关同时同意(README 中「Two switches」一节)。

由此带来的三条设计规则(资料原文强调「不是偶然」):

  • 建房间、加成员、读历史、导出与总结不会唤醒任何人。
  • 面板里不 @ 任何人则不唤醒;只有 @name(或房间开启「允许 @所有人」时的 @所有人)且房间「唤醒」开关打开时,面板才会唤醒对应成员。除「生成群史摘要」(也受「唤醒」约束)外,没有点名就没有事件——你在自己面板里打字,不会成为别人会话跑一轮的理由。
  • 不调用其他插件;数据以文件形式存在。

核心概念与能力

房间(Room)

房间由 JSON 账本中的一条记录,加上一份只追加的 JSONL transcript 组成。包含:由标题派生的 id、标题、charter、成员列表、路由模式、群级 reasoning-effort、四个 sink 设置、对外 liaison 列表等(README「Room」小节)。

成员类型(Member kinds)

kind 含义 能否被唤醒
session DSH 会话(session id) 是(在线或冷恢复)
user 人类;面板代表该成员 否(仅记录)
admin 房间内置管理员 否(除非 id 同时也是 session)
bot 非会话的自动化参与者 否
liaison 跨房间信使(预留) 否

会话 id 支持 session-<uuid> 与裸 <uuid> 两种形态。

工具与面板

  • 侧栏有「群聊」入口;可通过 Agent 调用 attention_group_list、attention_send(wake 关闭时只看计划、不打扰他人)等工具。
  • 健康检查可调用 attention_probe:报告数据根目录、房间数量、可见 live agent、可选服务、最近五次唤醒尝试及路径、面板路由注册状态、未读提示是否注册等。

环境与安装

版本要求

README 写明:接口最后在 DSH 0.2.1-rc.2 上验证;最初基于 0.2.0-rc.2,并在 0.2.1-rc.1、0.2.1-rc.2 上复验。安装需指定 profile,下文示例使用 --profile desktop。

安装命令

资料中验证过的安装方式为 GitHub 源(尚无 npm 发布名解析,勿用裸包名 dsh-attention-group):

dsh plugin --profile desktop add github:cilarx/dsh-attention-group

2026-10-17 资料记录:从干净 profile 端到端验证通过(退出码 0,包含七个源文件、bundle patch 与 cordis.patch.yml)。

安装成功后,~/.dsh/profiles/<profile>/package.json 应同时出现依赖与 bundle 层,例如:

{
  "dependencies": { "dsh-attention-group": "github:cilarx/dsh-attention-group" },
  "dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "dsh-attention-group"] } }
}

仅写在 dependencies 而未写入 dsh.profile.bundles 时,包已安装但不会作为 profile 层加载。

安装后必做:重启 DSH

宿主侧代码在启动时加载一次;在插件面板里开关插件不会重新 import。资料实测:新工具在 toggle 后仍为 unknown tool,重启后才出现侧栏「群聊」。

离线或本地包可用 npm pack 后 dsh plugin --profile <name> add /path/to/dsh-attention-group-0.1.0.tgz;link: 依赖或目录 junction 在资料环境中会导入失败(模块路径解析问题),需在 profile 内安装真实副本。

典型用法(首分钟)

按 README「First 60 seconds」可复现:

  1. 侧栏 →「群聊」→「+」→ 命名房间。
  2. 设置 → 仅在确实需要群消息能启动回合时,打开「唤醒」。
  3. 设置 → 添加成员:点击 id 框可从本机会话列表选择(标题、工作区、最近活动);也可粘贴 session-<uuid> 或裸 <uuid>。
  4. 在该会话中让 Agent 先调 attention_group_list,再调 attention_send 且不打开 wake——得到路由计划,无人被唤醒。

确认运行时调用 attention_probe 查看面板是否 registered,避免「没有房间」实为路由未注册。

适用场景与注意

适合谁:需要在同一台机器上协调多个 DSH 会话(可跨 workspace)、又希望无关消息零回合、且希望历史与导出可长期保留的开发者。

权限与安全:插件以当前 DSH 进程权限运行,可读写其数据目录与会话相关资源。安装前请自行查看 源码 与 MIT 许可证,确认符合你的环境策略。

生态说明:DSH 社区插件目录(如 SkillHub 上的条目)为独立站点,与 DeepSeek / 幻方无官方从属关系;安装命令以仓库 README 为准。

结尾

dsh-attention-group 把多智能体协作里的成本从「投递即全员唤醒」改成「先写日志、再算路由、显式唤醒」;建群、读史、干跑路由都不消耗他人回合。若你在 DSH 工作流里需要可审计的群聊与跨会话成员,可按上文命令安装、重启后从侧栏「群聊」起步。

  • 目录页:https://www.skillhub.cn/plugins/cilarx/dsh-attention-group
  • GitHub:https://github.com/cilarx/dsh-attention-group
羽毛球分组比赛记分
小程序二维码

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

Xiaoye