DSH 多 Agent 喊话(dsh-cross-session):对话层跨会话协作

前言

在 DeepSeek Harness(DSH)里并行开多个对话做同一件事时,常见做法是人工在侧边栏之间切换、复制粘贴上下文。官方 dsh-superagent 面向的是仓库层自主工人(GitHub / 飞书触发、工单与 PR 体系),并不直接接管你桌面上已有的聊天窗口。若目标是让多个侧边栏对话按角色分工、在 step 边界互发消息、worker 遇阻回问「队长」而不是反复打扰用户,就需要在对话层做跨会话投递与只读盯进度。下面介绍社区插件 dsh-cross-session(维护者 cao123-2024,分类:工作流)。

这是什么

dsh-cross-session 是 DSH 持久化插件:不依赖第三方包,以本地目录作为 bundle 安装。一句话定位:让 Harness 里多个独立对话在 step 边界互相喊话、worker 用 ask_master 回问创建它的主 Agent,并用 get_chat_info 只读查看对方进度——目标会话对只读窥视完全无感知。

生态上,DSH 奉行「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。源码与说明见 GitHub:cao123-2024/dsh-cross-session(MIT,package 版本 1.1.0)。

与官方 Super-agent 的分工(摘自 README 对比表):

官方 dsh-superagent 本插件
工作层级 仓库层自主工人 桌面上的对话层协作
是否接管侧边栏对话 否 是,在已有对话之间通信
是否替代对方 — 不替代;可叠加使用

团队层级与角色

标题前缀即角色,侧边栏会在名字前显示图标。新建对话可自动带前缀;已有对话用 assign_agent_role 补角色,刷新页面后客户端图标生效。

角色 标题前缀 职责
队长 leader 队长| 接需求、拆分、派活、汇总
总监 director 总监| 四层模式;管经理
经理 manager 经理| 管 3+ worker
worker worker| 执行;问题回问上级

默认 2 层:队长直管 3–4 个 worker。3 层为队长 → 经理 → worker;每个经理建议带不少于 3 个 worker,经理不够时不要硬开三层。4 层需配置 allowFourTier: true 且任务规模足够。完整规则见仓库内 docs/HIERARCHY.md,AI skill 见 skills/multi-agent-shout/SKILL.md。

协作关系可概括为:

队长对话 ── new_conversation ──▶ worker 对话 A
    │  ◀──── shout / ask_master ────┘
    │
    └────── get_chat_info(只读看上下文与进度)

核心工具与行为

README 中列出的主要工具如下。

工具 作用
new_conversation 新建独立对话,支持 role / reports_to;自动写角色标题前缀
assign_agent_role 给已有对话改角色
get_agent_team 读当前层级、allow_four_tier 与各 agent 角色
list_conversations 列出 root 对话:标题、工作区、运行状态(已归档不显示)
shout 向另一对话投递消息:运行中在最近 step 边界收到,空闲时唤醒新 turn
ask_master worker 专用:把问题交给创建它的主 Agent,而非直接问用户
get_chat_info 只读查看状态、turn/step、最近消息与工具调用
rename_conversation 改侧边栏显示名(保留角色前缀)
interrupt_conversation 停止目标当前 turn,保留待处理输入
archive_conversation 归档已完成的 worker
list_permission_presets / list_models 查看可选权限预设与模型
configure_conversation 调整目标对话的权限预设 / 模型 / 思考强度

设计要点(便于理解边界):

  • 投递通过 sessionController.resolveAgent 拿到 live Agent(冷会话自动 resume),再以 agent-message relay 形式 steer 用户消息。
  • UI 侧来源显示为「来自会话 AI「标题」」;get_chat_info 仅注册在非 worker 的 Agent scope。
  • new_conversation 默认把队长的权限预设复制给新对话(inheritPermissions)。
  • 安全护栏包括:创建上限、每分钟限流、消息体积上限、同一对会话交替喊话上限(防 AI 乒乓)、拒绝 subagent 会话。

安装与启用

要求:DSH 0.2.1-rc.x(desktop 或其他 profile 均可),无额外依赖。

方式一:Plugin Manager(推荐)

在 DSH 中把仓库目录作为本地 bundle 安装:

plugin_manager install_bundle
target = <本仓库绝对路径>

方式二:CLI

dsh plugin --profile desktop add "<本仓库绝对路径>"

安装后在对应 profile 的 bundle 列表中启用 @local/dsh-cross-session,必要时刷新页面。插件以当前 DSH 进程权限运行,安装前应自行查看源码与 MIT 许可证。

配置

插件通过 cordis.patch.yml 注入 bundle,默认配置示例:

- insert:
    - id: cross-session-shout
      name: '@local/dsh-cross-session'
      config:
        maxCreatedConversations: 12
        rateLimitPerMinute: 20
        maxMessageBytes: 32768
        maxShoutChain: 6
        inheritPermissions: true
        allowFourTier: false

可按需调整创建数量、限流、消息大小、喊话链深度、权限继承与是否允许四层模式。

典型用法思路

  1. 在队长对话中明确任务书(层级与 worker 数量为建议,模型也可自行决定)。
  2. 用 new_conversation 创建 worker,设置 role 与 reports_to;或对用户已有对话执行 assign_agent_role。
  3. 用 get_agent_team / list_conversations 确认团队结构与运行状态。
  4. 队长用 shout 派工或插话;worker 阻塞时用 ask_master,避免把细节问题抛给用户。
  5. 队长用 get_chat_info 只读盯各对话进度,必要时 interrupt_conversation 或 configure_conversation 调整模型与权限。
  6. 完成后对 worker 调用 archive_conversation 收尾。

仓库提供 1080p 预告片(约 67s,3D 工作台与真实演示),可从 Release v1.1.0 资源 下载对照操作流程。

适用场景与已知限制

适合:同一项目在桌面上并行多个对话,需要队长调度、step 边界可靠投递、worker 向上澄清且用户少被打断的场景。与 Super-agent 叠用时,可让前者管「活从哪来」,本插件管「活如何在几个对话之间流动」。

限制(README 明示):

  • agent-message 不会触发自动标题/活跃度,插件会显式 rename。
  • 进程重启后 pending inbox 不会自唤醒;无跨重启离线投递。
  • 喊话目标仅支持 root 会话;subagent 会话会被拒绝。
  • DSH 创建时绑定对话工作区,已有对话不能原地迁移;adopt_workspace 会改为在新工作区创建项目对话。

结尾

dsh-cross-session 把多 Agent 协作落在 DSH 侧边栏的真实对话上:角色层级、shout / ask_master 与只读 get_chat_info 构成一条可复现的工作流。查阅与安装入口:SkillHub 目录、GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

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

小夜