前言¶
在 DeepSeek Harness(DSH)里跑带子智能体(subagent)的任务时,会话数量会快速变多:主会话下面挂着一层层子任务,内置左侧会话列表往往是扁平的,很难一眼看出「谁是谁的子节点」。要在某条子智能体对话里继续多轮追问,还得在列表里来回找 id。
orphiczhou/dsh-session-tree 是一个客户端侧的 DSH profile bundle,由维护者 orphiczhou 发布,用树形视图替换默认左侧栏,并按 Host 报告的 workspace 分组;同时注册 Host 工具 tree_send,向树里任意可继续的子智能体会话发消息(包括内置 send_message 到不了的兄弟节点)。许可证为 MIT,当前 package 版本为 1.0.4。
这是什么¶
一句话:左侧栏显示「每个会话 + 其嵌套 subagent 后代」,点行即可进入多轮对话;Agent 可通过 tree_send 跨树发消息。
DSH 没有集中式插件商店,插件以普通 npm/Git 包分发,README 即安装说明。本插件属于 客户端 类 bundle,通过 Cordis patch 注入侧边栏,依赖 @deepseek-ai/dsh-client-ui-sidebar 与 @deepseek-ai/dsh-client-ui-workspace。
核心功能¶
下面介绍 README 中已列出的能力,均可在启用后于界面或 Host 工具列表中验证。
树形会话与 workspace 分组¶
| 能力 | 说明 |
|---|---|
| Tree view | 按 parentId 把 origin: 'subagent' 的子会话嵌套在持久父会话下,深度不限(渲染缩进最多 8 层)。 |
| Workspace grouping | 会话挂在 Host 报告的 workspace 下,折叠标题显示名称、路径及(折叠时)会话数;无 workspace 的归入 Ungrouped,始终在最后。 |
| Lazy expansion | 默认折叠;展开某节点才构建其子树,每层缩进 13 px。 |
| Bounded fan-out | 单层最多渲染 300 个子行,超出显示 N more omitted,避免静默丢弃。 |
状态、搜索与视图选项¶
- 四态状态点:运行中(蓝、脉冲)、已完成未读(绿)、已完成已读(灰)、等待回复(橙),颜色跟随 DSH 主题 token。
- 搜索框:按标签或 session id 过滤,匹配项仍保留在对应 workspace 标题下。
- Header
…菜单:按最后更新或标题排序(置顶会话始终在前)、归档显示策略(隐藏 / 显示 / 仅归档)、全部展开 / 折叠、重新加载标题。 - 折叠侧栏:侧栏收成图标轨时,提供
≡按钮重新展开。
行内操作与导航¶
- 点击 ▶ 展开或折叠;有子节点时在右侧显示子数量。
- 点击行主体:顶层会话走内置
openSession(sessionId);subagent 行走openSession({ parentSessionId, childSessionId, mode }),可继续的多轮 subagent 可追问,一次性 subagent 只读(与 DSH 本身行为一致)。 - subagent 行的 ↗ 在右侧栏以
subagentchat资源单独打开,左侧栏位置不变。 - Header + 新建会话(弥补内置浏览器入口被 shadow 的情况)。
- 行 …(悬停可见):置顶 / 取消置顶、重命名(Enter 提交、Esc 取消、失焦提交)、Fork(仅普通会话)、归档 / 取消归档。
tree_send 与 SessionTree inspect¶
内置 send_message 按「当前 live sender」授权,只允许直接父子相邻;兄弟 subagent 之间无法互发。tree_send 改为按目标会话的 持久父地址 授权,因此可向树中任意 可继续 的 subagent 投递消息。
| 参数 | 必填 | 含义 |
|---|---|---|
target |
是 | 要发消息的可继续 subagent 的 session id。 |
message |
是 | 消息正文。 |
插件还注册只读 Cordis Inspect 提供者 SessionTree:通过 cordis_inspect_query 可读取侧栏 实际渲染 的行序、层级、缩进与样式,便于 Agent 自检 UI 而无需人工读屏。
tree_send 仅在 Host 同时存在 tools、subagents、sessionQuery 服务时注册;否则 bundle 仍会加载,只是不提供该工具。
安装与启用¶
先做安装,再在 Plugins 页确认 bundle 已启用。
图形界面¶
- 打开侧边栏 Plugins 页。
- 选择 Add plugin。
- 在 spec 中粘贴仓库 URL 并确认:
https://github.com/orphiczhou/dsh-session-tree
bundle 加入当前 profile 后,左侧栏会切换为树视图,无需重启。
命令行¶
在终端执行(owner/repo 为 GitHub 简写,与完整 clone URL 等价;--profile <name> 可指定非默认 profile):
dsh plugin add orphiczhou/dsh-session-tree
该命令在 profile 目录内通过 pnpm 安装仓库,并在 dsh.profile.bundles 中登记一条目。本包为纯 ESM、无 build 步骤,pnpm ≥ 10 不会因 build script 需要额外 allowlist。
本地路径¶
若已有本地目录,使用绝对路径:
dsh plugin --profile <name> add /absolute/path/to/dsh-session-tree
验证¶
- 打开已启用该 bundle 的 profile:左侧栏标题应为 Sessions(中文 UI 下为 会话树),即本插件而非内置浏览器列表。
- 展开带 child count 的行,应看到嵌套的 subagent 行。
- 若界面仍是内置列表:在 Plugins 页确认名为
session-tree的行已启用;仍无效则查阅仓库 Troubleshooting 章节。 - 可选:让 Agent 列出 Host 工具,应出现
tree_send(在具备上述服务的前提下)。
典型用法¶
展开并打开对话¶
- 用 ▶ 展开有子节点的会话,查看嵌套 subagent。
- 点击目标行进入该会话;需在右侧并行查看 subagent 时,点该行 ↗。
- 在 Header 用 + 开新顶层会话;用搜索框按标题或 id 定位。
批量整理视图¶
- Header … → 选 Order by(Last updated 或 Title)。
- 按需切换 Archived sessions 显示策略。
- 任务结束后可用 Expand all / Collapse all;标题过期时用 Reload titles 从 Host 重新拉取。
Agent 向兄弟 subagent 发消息¶
当编排需要让某个 subagent 通知同层另一个可继续 subagent 时,在具备 tree_send 的 Host 上调用该工具,传入 target(目标 session id)与 message。不要依赖 send_message 做兄弟节点通信。
用 inspect 核对侧栏渲染¶
调试 UI 或写自动化时,可通过 cordis_inspect_query 查询 SessionTree 提供者,获取当前侧栏真实 DOM 结构与样式,而不是让用户口述屏幕内容。
适用场景与注意¶
适合谁
- 频繁 spawn subagent、需要看清父子关系和多 workspace 混用的 DSH 用户。
- 需要在 Agent 侧向树内任意可继续 subagent(含兄弟节点)发消息的编排场景。
- 希望 Agent 通过 Cordis inspect 读取侧栏实际布局的开发者。
安装前须知
- 插件以 当前 DSH 进程权限 运行;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全与合规要求。
- DSH 插件由社区维护;SkillHub 目录页 为独立生态索引,与 DeepSeek / 幻方无官方从属关系,也不是应用内商店。
- 星标、版本以仓库与 package 为准;功能边界以 README 为准,勿假设未文档化的配置项。
结尾¶
dsh-session-tree 把左侧栏从扁平列表改成按 workspace 分组、可懒加载展开的会话树,并补上 tree_send 与 SessionTree inspect,方便人机两边在复杂 subagent 拓扑里导航与通信。
- 目录页:https://www.skillhub.cn/plugins/orphiczhou/dsh-session-tree
- 源码与完整说明:https://github.com/orphiczhou/dsh-session-tree