前言¶
在 DSH 里同时跑多个会话、让它们像「群聊」一样协作时,常见做法是:一条消息发出就唤醒所有成员,每个被唤醒的会话再自己判断这条消息是不是给自己看的。结果是:一条没人需要的消息,也会消耗 N 次回合预算。
下面介绍的 dsh-attention-group(维护者 cilarx)把「谁值得被唤醒」的决定放在唤醒之前:消息先落盘、再算路由计划,真正唤醒是另一步,且需要两道开关一致。分类上属于 DSH 社区目录中的工作流类插件;仓库当前星标为 0,许可证 MIT(见 package.json)。
这是什么¶
一句话:面向 DSH 的多智能体群聊插件——持久化消息记录、注意力路由、跨工作区成员,并明确区分「投递计划」与「实际唤醒」。
房间、 transcript、结论与导出都是普通文件,不依赖调用其他插件;在「裸」 DSH 上也能工作,卸载插件后数据仍可保留(README 中的设计说明)。
和普通群聊的差别¶
普通群聊在投递时就花预算:全员被唤醒,再各自发现消息与自己无关。
本插件的流程是:
- 发消息 → 得到路由计划,例如
routing: SILENT — nobody matched, zero turns spent,或列出匹配对象但标注not-woken (dry run)。 - 唤醒是第二步,且需两道开关同时同意(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」可复现:
- 侧栏 →「群聊」→「+」→ 命名房间。
- 设置 → 仅在确实需要群消息能启动回合时,打开「唤醒」。
- 设置 → 添加成员:点击 id 框可从本机会话列表选择(标题、工作区、最近活动);也可粘贴
session-<uuid>或裸<uuid>。 - 在该会话中让 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