前言¶
在 DeepSeek Harness(DSH)里长期跑多个工作区、多条会话时,产品自带的会话列往往是按时间或列表平铺,很难按「项目 / 主题」一眼找到某次对话。手动改标题、靠搜索记关键词可以凑合,但结构一多就不够用了。
下面介绍社区客户端插件 dsh-conversation-tree(维护者 chriswang):在会话列左侧增加一条可折叠、可拖宽的对话树栏,把对话按「工作区 → 主题 → 对话」组织,并仍通过产品原生方式打开真实会话。产品的会话列、标题栏、Chat/Trajectory 页签、右栏与输入框保持原样;对话树只占左侧栏位,不替换任何内置 UI。
这是什么¶
- 名称:对话树 / Conversation Tree(npm 包名
dsh-conversation-tree,GitHub:chriswang/dsh-conversation-tree) - 分类:客户端(
dsh.client.platform: web) - 版本(资料记载):0.1.2,MIT 许可
- 环境要求:DSH
>=0.2.1-rc.3(见包内engines.dsh)
插件把 DSH 对话映射成树形结构:工作区为一级,主题为节点,会话挂在节点下;还支持多个「空间」,每个空间独立一棵树。
核心功能¶
对话树栏¶
- 入口:左侧导航面板行区的「对话树」行(常驻);或会话列头部 28×28 图标(仅在栏折叠时出现)。
- 折叠 / 展开:两个入口均可展开;收起用栏内顶栏左上角「⇤」。展开与折叠状态会被记住。
- 宽度:拖动栏右边缘,最小 320px;会话列保留自身最小宽度,不会被挤没。
组织与打开会话¶
- 树结构:工作区 → 主题(节点)→ 会话;多「空间」时各空间一棵树。
- 打开会话:走产品原生导航;对话树高亮与产品当前会话、右栏始终对齐同一会话。
搜索¶
栏内搜索框(按需展开)可检索:节点标题与说明、已索引会话标题、会话正文。正文索引在 Host 进程内按需建立。搜索范围不含模糊、分词与拼音;正文仅 user/assistant 文本,不含系统提示与工具调用。
数据与持久化¶
- 权威数据由 Host 保存:
$DSH_HOME/conversation-map/map.json,经/conversation-mapRPC 读写,带 revision 乐观锁。 - 浏览器侧仅保留迁移备份;从旧版升级时,浏览器本地文档不会合并进 Host,只备份到
localStorage的dsh.conversation-map.v1.host-backup。 - Host 不可用时(例如 CLI 环境)自动降级为浏览器本地模式,栏内显示「本地模式」。
模型工具¶
插件向 harness 注册 9 个工具,模型可直接读写对话树:
| 工具 | 作用 |
|---|---|
map_list_workspaces |
列出工作区 |
map_get_state |
读取当前文档(工作区、节点、空间、会话归属) |
map_plan_goal |
一次创建「目标 + 策略 + 任务」结构 |
map_create_nodes |
创建节点 |
map_update_nodes |
重命名 / 改描述 |
map_move_nodes |
改父节点或同级排序 |
map_move_session |
把会话归入节点或改名/移动 |
map_attach_sessions |
把已有会话挂到节点下 |
map_delete_nodes |
删除节点(含子树) |
安装与启用¶
要求 DSH >=0.2.1-rc.3。官方 README 给出的安装方式如下。
通过 CLI(web 配置)安装:
dsh plugin --profile web add dsh-conversation-tree
或在 DSH 应用内:插件 → 发现 → 索引源,添加市场索引:
https://chriswang.github.io/dsh-plugins-index/index.json
安装后重启 App。首装默认折叠:会话列头部会出现一枚图标,点击可展开对话树栏。
DSH 生态里插件以「一切皆插件」方式扩展;社区目录(如 SkillHub 上的插件页)是独立站点,与 DeepSeek / 幻方无官方从属关系。安装前建议自行查看 GitHub 源码与 LICENSE,插件以当前 DSH 进程权限运行。
典型用法¶
- 安装并重启后,从左侧导航「对话树」行或会话头图标展开栏。
- 在工作区下创建或整理主题节点,把会话挂到对应节点(界面操作,或通过上表
map_*工具由模型维护)。 - 需要定位历史内容时,用栏内搜索框查节点说明或会话正文,再点击树项打开会话。
- 用「⇤」收起栏;宽度不适当时拖右边缘调整。
节点改父级需通过 ⋯ 菜单,插件不做节点拖拽;空间也不支持拖拽排序。跨工作区移动会话不受支持(Host 排序仅在同一工作区内)。
适用场景与注意¶
适合:在 web 客户端长期维护多工作区、多主题对话,希望有稳定树形索引、并允许模型通过工具自动整理结构的 DSH 用户。
已知限制(摘自 README):
- 依赖产品公开 DOM 约定(如
shell.overlay槽、会话渲染锚点等)。产品结构变更时,栏可能显示「暂不可用」而非覆盖会话列;面板行入口仍可用。 - 左侧带槽位与其他插件通过
html[data-dsh-band-owner]协商,占用时本插件不在会话头重复插入入口。 - 同一
$DSH_HOME多进程同时写时,以后写者为准(单写者语义)。 - 界面文案目前以中文为主(包内提供
locale/zh.json、locale/en.json展示元数据)。
结尾¶
dsh-conversation-tree 在不动 DSH 主界面布局的前提下,用可折叠对话树把会话按工作区与主题管起来,并暴露一套 map_* 工具供模型维护结构。需要索引与详情时可访问:
- 社区目录页:https://www.skillhub.cn/plugins/chriswang/dsh-conversation-tree
- GitHub:https://github.com/chriswang/dsh-conversation-tree