dsh-agent-tree: Turn Lead → Member → Grand Agent into a real-time tree

前言

DSH 里跑多智能体时,Lead 派出成员,成员再派孙代理。层数一多,人脑就记不住谁派生了谁:排查问题时盯着某个成员的输出,其实要往上找它的父会话才知道上下文从哪来。现有的办法是翻日志、手动对照 session 列表,效率不高。

dsh-agent-tree 解决的就是这件事:它读取会话快照里的 parentSessionId,把多层代理关系画成一棵实时树,并附带团队焦点、真状态点和模型路由中心。维护者为 ruaruaTon,分类属于工作流,来源是 GitHub 仓库,许可证 MIT,当前版本 0.4.5,仓库星标为 0,属于比较新的项目。

下面按「能做什么 → 安装 → 配置 → 数据原理 → 边界」的顺序介绍。

一、核心功能

1. 代际树

按会话快照的 parentSessionId 建树,层级没有上限,成员、孙代理、重孙代理都会挂到对应父节点下。这一层用的是 client 侧数据,不需要宿主事件,构建成本低。

2. 两种视图

  • 宽容器(中心面板 ≥ 760px)渲染横向组织树,卡片加连接线;
  • 窄容器(右栏页签)自动切成缩进列表;
  • 拖动分栏会实时切换视图,不需要重启或刷新。

3. 真状态点

host 半订阅 agent/created 与 agent/status 事件,并结合 agents 的即时活性:🔵活跃、🟢已结束、🟡待命、⚪沉睡、🔴失败。事件缺失时会降级为按活跃时间推断,面板不会因此空白。

4. 团队焦点与只看活跃

多团队并行时默认锁定最新派出的团队,可以用下拉一键切换,焦点视图支持 1.5× 放大。默认折叠 2 小时无活动的沉睡叶枝,也可以一键展开全量。

5. 模型路由中心(可选增强)

需要 dsh-plugin-subagent-director。开启后有两件事:

  • 孙代理默认模型可热配置,写入 subagent-director 设置后立即生效;白名单模式开启时会自动收敛到授权路由。
  • 孙代理节点挂上实际运行路由的标签,读取 session 的 request/header,走的是官方通道。

另有团队覆盖层,依赖 @nanmicoder/dsh-agent-teams,提供团队名册、任务计数和成员模型路由,点 💬 可直接跳到成员会话。

二、安装与启用

插件市场

在 DSH 里走「插件 → 添加插件」,搜索 dsh-agent-tree,或把仓库地址粘进添加框即可。

npm 方式

dsh plugin --profile <你的profile> add dsh-agent-tree

安装后重启一次 DSH,侧边栏出现「代际树」图标即表示成功。

环境要求

DeepSeek Harness >= 0.2.1-rc.2,README 记录在 0.2.1-rc.5 Desktop / Windows 上实测。两个可选增强不装也能正常使用,面板会自动降级。

三、想看到孙代理,两道闸要打开

孙代理(成员的子代理)默认被两道闸拦住,面板要显示它们需要同时满足:

subagent:
  maxDepth: 2
- id: agent-teams
  memberMaxDepth: 1

对应两处配置:

  1. 宿主深度:插件 → 子智能体 → 限制,maxDepth ≥ 2(或在 cordis.patch.yml 里写 subagent.maxDepth: 2)。
  2. 团队成员派生权限:agent-teams 的 memberMaxDepth: 1,写在 cordis.patch.yml 的 - id: agent-teams 条目里。

改完需要重启一次 DSH。

四、数据从哪里来

数据 来源 说明
血缘树 会话快照 parentSessionId(client 侧) 无需宿主事件,稳定低风险
团队 / 成员 / 路由 .agent-teams/*/team.json(host 半读取) 成员 id 即会话 id,可直接跳转
真状态 agent/created + agent/status 事件 + agents 即时活性(host 半订阅) 事件仅本进程内,重启后旧会话自动降级为时间推断
孙代实际路由 subagent-director 桥接 subagentModel(session request/header) 官方可观测性同源
模型目录 宿主模型目录(三级回退读取) 与任务看板同款

数据源不止一个,排查显示问题时可以先定位是快照缺失还是事件缺失。

五、故障排除

  • 启动失败弹窗:只点「Exit」,不要点 Disable third-party plugins。把 %APPDATA%\@deepseek-ai\dsh-desktop\logs\crash-*.log 附到 issue 上。
  • 面板空白 / 没有图标:改过 client.js 之后要重启一次;同时确认 bundles 里有 agent-tree。
  • 团队覆盖层提示 cwd 缺失:当前根会话的快照没有工作区字段,血缘树不受影响。

六、适用场景与注意

适合已经在 DSH 里跑多智能体、层级至少到成员一层,并且希望在界面上而不是日志里看到代理关系的人。如果只有一层 Lead → 成员,这个面板带来的增量有限。

安装前应该自己读一遍源码。插件以当前 DSH 进程的权限运行,其中自带的 cordis.patch.yml 会修改宿主运行时行为。许可证是 MIT,使用和修改都比较自由。

已知边界:模型路由中心的写入依赖 subagent-director 桥接。在 headless 环境或未安装该插件时,该区块只显示降级提示,其余功能不受影响。

结尾

dsh-agent-tree 没有引入新的代理调度逻辑,只是把已有的会话快照和宿主事件投影成一棵可交互的树。分层一深,这层可见性的提升会比较明显。

  • GitHub:https://github.com/ruaruaTon/dsh-agent-tree
  • 插件目录页:https://www.skillhub.cn/plugins/ruaruaTon/dsh-agent-tree
羽毛球分组比赛记分
小程序二维码

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

Xiaoye