前言¶
DSH 里跑一段时间后,对话窗口会越开越多:同一个工作区的分支话题互相有关联,跨工作区的对照又完全不同。原有界面把对话按时间排成列表,你得靠标题和记忆去回忆“这条对话是跟着哪条往下走的”。本文介绍的 dsh-talk-pages 就是解决这件事的:它把已有的对话渲染成一张可视化白板,卡片可以自由摆放,用连线表示关联,用框把几段对话收在一起。
先说它不是官方组件。这是一个社区插件,仓库在 github.com/HanYu-me/dsh-talk-pages,维护者 HanYu-me,在 SkillHub 目录中归类为「客户端」。它也不是另一个可视化插件 dsh-talk-map 的替代品式包装——两者使用不同的存储和接口,下文会说明。以下内容全部来自仓库 README 与 package.json,可直接核对。
这是什么¶
一句话:dsh-talk-pages 给 DeepSeek Harness 加上一层「按工作区分页的对话画布」,把现有对话作为卡片铺在页面上,支持自由摆放、框分组和卡片间连线。
对话本身仍然归 dsh 所有,插件只读取对话内容,并在你分叉时通过官方接口新建对话。画布上的位置、框、连线和摘要是插件自己存的一份数据。
核心能力¶
分页¶
顶部标签栏列出每个工作区,并带上该工作区的对话数,点击即可切换。每个页面各自记住镜头位置,最后停留的页面重开时还在。
自由摆放¶
卡片落在哪就在哪,插件不会替你重排。右上角的「吸附」开关控制卡片落下时是否对齐 16px 网格。
框¶
+ 新建框,或在空白处右键新建。双击标签改名,右键换颜色,可拖动,也可从四边四角缩放。把卡片拖进框里(以卡片中心落在框内为准)即入框,拖出来就恢复自由。删除框只是解散成员,不会删除任何对话。
框内默认自由摆放(成员位置由你定,拖动框时成员跟着走),右键框可切换成网格排列;放不下的成员会折叠成堆叠格。
连线¶
从卡片手柄拖到另一张卡片即建立关联;拖到空白处可以分叉出一个带上下文的新对话。连线只画在同一页内的卡片之间。
卡片正面与状态灯¶
卡片正面显示标题、你最后说的话、相对时间和状态灯,状态灯覆盖运行中 / 等待 / 未读 / 中断四种。左侧状态栏只列带灯的卡片。
显示 / 隐藏、归档与选择¶
- 在画布空白处右键 →「显示 / 隐藏对话…」,列出当前页面(工作区)的全部对话(含已归档),带 ✓ 的在地图上;列表保持打开,可连续点击切换。
- 已归档的对话在卡片上标「已归档」;点击卡片会先取消归档再跳转到该对话,不会跳到新对话。在搜索结果里点已归档对话行为相同。
- 顶部「选择对话」弹窗列出全部对话(含已归档),勾选哪些放在地图上,应用后自动加入或移出。新对话默认不会自动出现,弹窗里可以打开「自动加入新对话」。
优先级¶
右键卡片可以标记 高 / 中 / 低,卡片左侧出现色条和标签;左侧「重点对话」栏按优先级列出所有已标记卡片,点击即定位。侧栏里的置顶不影响地图。
让对话来整理地图¶
插件提供了文件接口,允许 Agent 直接读写画布数据。开一个新对话说「按行业整理个股研究」之类,Agent 就能按 ~/.dsh/talk-pages/ 下的约定操作布局。具体接口见仓库内的 docs/AGENT.md 和 skills/talk-pages-layout/SKILL.md。
安装与启用¶
官方安装命令,直接执行:
dsh plugin add github:HanYu-me/dsh-talk-pages
构建产物已提交在仓库里,不需要自己构建。执行后重启 dsh,侧栏底部会出现按钮。
package.json 里声明了运行要求:Node >=22.19.0,dsh >=0.2.1-rc.1 <0.3.0-0。当前版本 0.2.3,许可证 MIT。
典型用法¶
下面是几个可复现的操作:
1、新建对话卡片。在画布空白处双击,新的卡片就生成在点击的位置;双击已有卡片则打开该对话。
2、建立关联或分叉。从一张卡片的手柄拖到另一张卡片建立关联;拖到空白处则会带上下文分叉出一条新对话。
3、用框收拢相关对话。右键空白处新建框,命名、改色,把几张卡片拖进框内。需要逐个加入或移出时,改用空白处右键的「显示 / 隐藏对话…」列表。
4、标记重点。右键卡片设置 高 / 中 / 低,之后在左侧「重点对话」栏点击对应条目直接定位。
5、让 Agent 代为整理。新开一条对话,让 Agent 按 ~/.dsh/talk-pages/ 的接口组织页面,例如「按行业整理个股研究」。
数据与边界¶
画布数据存在:
$DSH_HOME/storages/talk_pages.json
包含位置、框、连线和摘要。对话内容不复制进插件,插件只读;只有分叉时才通过官方接口新建对话。
它与 dsh-talk-map 使用不同的存储和接口,可以并存,但两者都在侧栏占一个按钮,建议只启用一个。已有 talk-map 数据可以用 node scripts/migrate-from-talk-map.mjs 一次性迁入,迁移后旧的文件夹会变成同名的框。
适用场景与注意¶
适合对话数量多、分支之间有参照关系的 DSH 使用者:跨话题对照、给一组相关对话做分组、给重要对话打优先级。如果你只是偶尔开几条对话,列表界面足够用。
两点提醒:
- 插件运行在当前 dsh 进程权限内,因此安装第三方插件前应先读一遍源码(仓库为 MIT,源码与
cordis.patch.yml都在仓库内),并确认你能接受它读写$DSH_HOME下的画布数据。 - 这是第三方插件,SkillHub 目录与 DeepSeek / 幻方没有官方从属关系,本文也不构成任何背书。
小结¶
dsh-talk-pages 做的是一件事:把 DSH 已有的对话搬进一张可自由摆放、可连线、可用框分组的画布,并按工作区分页,每页记住自己的镜头位置。它只读对话、自行保存画布数据,还留了文件接口让 Agent 参与整理。如果你在对话列表里已经找不到上次那条讨论的上下文,可以试试装它。
目录页:https://www.skillhub.cn/plugins/HanYu-me/dsh-talk-pages
仓库:https://github.com/HanYu-me/dsh-talk-pages