ARTICLE · 1275349
dsh插件推荐 - 把dsh的线性对话变成非线性对话,在画布中查看对话内容
FILE 832 · dsh-synapse
dsh-synapse
把 dsh 那条竖线,摊成一张能拖能缩的图
LINEAR · 只有时间
FORKED · 还有关系
同一个会话,两种看法
3001 字
约 8 分钟
08 节
DSH 本来就能 fork,麻烦的是分岔完看不出来。它把每个提问摊成一张卡,按原生的 fork 关系连成画布——结构是它画出来的,不是它编出来的。
分享一个 dsh 插件。
它干的事一句话能说完:DSH 里的对话是线性的,它把对话变成非线性的。
不是换皮肤。
DSH 一个会话就是一条竖线,从上往下写。这个插件把每个提问摊成一张卡片,追问出去的分支从原来那张卡上分岔,全摆在一张能拖、能缩的画布上。
CH 01
/ 08
线性对话,装不下会分岔的思路
先说清楚 DSH 原本的对话长什么样。
打开 DSH,挑一个工作目录,跟它聊。第一轮、第二轮、第三轮,一直往下。

这个形式最大的好处是简单。坏处是它只认时间这一个维度。
可我们想事情,不是按时间来的。
聊到第七轮,你对某句回答不满意,想换个方向再问一遍。在真实的思路上,这是一条新的支线;在界面上,它只是又往下写了一行。
CORRECTION · 一个常见的误解
等一下,DSH 是能 fork 的。
它确实能 fork,这个能力一直都有。问题在 fork 完之后。
那些分支在列表里,还是一个一个条目,按时间排着。你分不出谁是从谁那儿长出来的。
所以真正的麻烦不是「不能分岔」,是「分岔了看不出来」。
一个工作区堆了四十条会话,列表按时间排。哪一条是从哪一条上分出去的,它不告诉你。
名字你还会自己改,改完之后更不知道了。
于是你回到最初那个动作:往下滚,靠记忆找。
滚到一半,你已经忘了自己在找什么了。
最后干脆重新问一遍。
那个结论就躺在会话记录里。你没删,它也没走,只是找不着。
这个插件改的就是这个。
它把「时间」这个维度换成了「关系」。
原本的维度
时间
→
换成的维度
关系
时间是串行的,关系是可以分叉的。

CH 02
/ 08
它把那条竖线,摊成了一张图
每个提问是一张卡片。
卡片之间有线。线不是画上去的装饰。
谁是谁的下一句、这一支是从哪张卡上分出去的,它不自己编一套。
它去问 DSH 原生的 fork 关系。
这一条得单独说,因为它是后面所有省心事的地基。
BOUNDARY · 它只管画,不管记
IT STORES · 存在盘上的
· 卡片坐标
· 画布布局
· 分支锚点
IT DOES NOT · 不归它管
· 血缘关系
· 会话历史
所以地图上看到的父子关系,跟会话记录里的是同一份。
卡片摆在画布上哪个坐标,它自己存着,随便你拖。
但血缘不归它管。
它也没有第二套历史。
SYNC · 同一份,两个视图
地图上点一张卡
→
原生对话切到那一轮
原生里切一次会话
→
地图上是同一个位置
你在地图上点一张卡,原生对话就切到那一轮;你在原生界面里切了一次会话,回到地图上也是同一个位置。

两边一直在看着同一件事。
你想想看,一个插件如果自己存了一份历史,那它和宿主迟早会不一致。谁对?不知道。用户就夹在中间对账。
顺手说一句,这个「不另造一套」的坚持看着有点枯燥,但后面省心的事全从这儿长出来。
它一开始就不给自己留这个麻烦。
CH 03
/ 08
它解决的问题,其实就三个
说真的,功能可以列很长,但真正被解决的困扰就三个。
01
上文找不着了
以前只能靠滚。现在你能看见那条思路是从哪一句拐走的,顺着线往上游走就行。
你不用记住它在第几轮,你只要记得它长在哪个问题上。
02
分支看不见结构
尤其你一天里试了三四种方案,每种都往下追了几轮。哪条是死路,哪条后来走通了,以前全凭记忆。
现在画布上摆着,一眼能看出你当时分了几个岔。
而且这个结构是可以回看的。隔两天再打开,你还能看出自己当时为什么拐了那一下。
03
想看某一轮细节要来回翻
这个到 2.0 才补上。
CH 04
/ 08
2.0 补了四样东西
作者自己把这一版的更新归成几块,我按他讲的顺序说。
01
动态加载
一个工作区用久了,卡片会堆到几千张,几万张也有,全铺出来谁也拖不动。
现在的做法是屏幕上看得见的才渲染,屏幕外的先不管。
拖动就顺了。

02
追问
你在回答里选中一段字,可以直接带进新的追问。不用复制,不用切窗口,不用回去找「我刚才说的是哪一段」。
旁边还有一排快捷词,「展开说明」这种,可以自己改、自己加。
我一直觉得这类小东西的差别,全在「顺手」和「差一点」之间。
一个概念你不懂,想追问,但得先想清楚怎么问、再决定要不要问——那多半就不问了。
门槛就是这么长起来的。
03
右侧栏
以前看某一轮的细节,得回原生对话里翻,翻到了又是一屏大段。
现在点一下卡片,右边出一栏。文字在里面,工具调用也在里面。
每一次读文件、每一次跑命令、那种澄清提问的卡片,都按调用编号折进对应的那条回答里,不再一长串铺开。
栏里还有个数字,这一轮一共调了多少次工具。
这东西对写小项目特别有用。工具调用又碎又密:读文件、改文件、跑一次看报错、再改。
以前这些痕迹散在聊天流里,你只能感到「它好像忙了很久」。
现在能看见它忙在哪儿。
有一说一,这种详细的调用记录不是每个人都想看。但需要排查的时候,它在,就够了。
04
轮次状态
之前一轮卡住没响应,或者中途出了故障,界面上什么提示都没有,你只能干等,等到怀疑是自己网络出问题。
现在它会告诉你这一轮是什么状况。
问题是,加了这么多东西,画布会不会变成一个仪表盘?
作者的处理方式是往回削,不是往前堆。
顺手还有两处小的:分支那类入口换成了图标,界面清爽不少;深色模式也跟上了,宿主换主题它跟着换。
CH 05
/ 08
作者划的规矩,我觉得比功能值钱
这一节我的判断下得比较明确。
它的作者说过自己的初衷:尽量贴合 DSH 原生那套功能,不往里加新功能,整体往轻量化走。
我一开始以为这是句客套。
后来去看他文档里划的那几条线,才发现是认真的。
HANDS OFF · 作者给自己划的线
不建
· 第二个 HTTP 服务
· 第二个模型或 agent 运行时
不替代
· DSH 自己的鉴权和权限检查
不改
· prompt · 模型请求 · 工具 schema
· provider 路由 · 可复用的缓存前缀
只存
· 画布元数据 · 卡片布局 · 分支锚点
四条线,写在同一份文档里。
翻成大白话就是:它只读已经提交的事件,不做任何会影响模型行为的事。
它把东西存在哪儿也写清楚了——只存画布元数据、卡片布局和分支锚点。
删掉那个文件,你丢的是布局,会话还在。

一个视图层最难的部分,从来不是画得好看。
是决定什么东西不画。
装插件这件事,最怕的不是难看,是它悄悄把你的东西搬走。它偏把「删了也不丢」写成文档里的一条。
有一说一,这个分寸在这个生态里不算常见。
它会让你想起别的插件怎么干的。
大部分插件,本能是先加一个自己的存储、自己的状态、自己的那一层。加着加着,插件就成了一个必须依赖的中间件,卸都卸不干净。
它反着来。
所以这一节我给的评价不是「它功能强」,是「它知道自己不该做什么」。
CH 06
/ 08
装之前要知道的三件事
坑 01
最容易翻的车是「装上了没反应」
DSH 的插件按 profile 分套装:桌面 App 一套,命令行 dsh web 一套,互不影响。
装错了它不报错,顶部只是不会出现「会话地图」那个开关。
它的文档里给了句自检口诀,我觉得写得挺好——装完顶部看不到开关,就是装到另一套去了,换条命令再装一遍。
坑 02
版本是硬门槛
它只支持比较新的 DSH,早一点的版本不兼容。麻烦的是包里没声明这个约束,装的时候不会有东西拦你。
所以真遇到「进去了但行为不对」,先看版本,别急着重装。
这个坑阴的地方在于,它的症状不像版本问题。你会以为是数据坏了,会去清缓存、换浏览器、重启电脑。
一圈折腾下来,回到起点。
坑 03
一个 profile 只跑一个 dsh web
两个实例共用同一份画布文件。就算有写锁和外部修改提醒,仍可能最后写的那个把前面盖掉。
表现是两个窗口布局对不上,你刚摆好的卡片位置莫名回退。
我猜不少人第一次遇到会以为是自动保存坏了。
实际上是两个进程在抢同一份文件。
顺带一句:画布不是备份。它能删掉不丢会话,但反过来不成立,别拿它当存档用。
CH 07
/ 08
它跟侧栏插件,不是一类东西
顺手把这事说清楚,省得你装完觉得亏。
SIDEBAR · 侧栏底座
我把活干完
文件树、编辑器、终端、Git、子代理,全塞在一个侧栏里。
MAP · 对话地图
我站在哪儿
这堆活里,我现在的位置在哪,从哪一句拐过来的。
两件事不冲突,也不互相替代。
但它的价值是有条件的。
会话少的时候,地图是空的,你会觉得这东西没用,还不如列表。
得等你一个工作区里攒了几十条会话、分支真的分出去了,那种「刚才那条思路是从哪拐的」的困扰才会开始出现。
那时候你才会需要一张图。
所以我的判断很简单:要快速切换,用侧栏;要看清楚结构,才轮到画布。
至于「两个都装行不行」,我自己的看法是能装,但你得想清楚每天第一眼想看哪个。
想先看结构,那地图当主界面;想先干活,那侧栏当主界面。
两个都摆在一级位置,每天开场都要多点一下。
CH 08
/ 08
回到那条竖线
说回开头那个场景。
聊到第七轮,你从一句回答上分出去三条支线。
现在它们都在画布上摆着,你能看见它们是从哪一句拐走的,也能看见哪一条后来走通了。
以前它们也都在,只是你得靠记性才能把它们捞回来。
我这几年有个越来越强烈的感觉:我们记下来的东西,和我们能看明白的东西,正在变成两件事。
LOG · 给机器
日志是给机器写的,它的任务是记录发生了什么。
MAP · 给人
图是给人看的,它的任务是回答我在哪。
以前这两件事挤在同一份东西里,所以人看得很累。
中间那一层,一直没人做。
现在有人做了一层出来,还顺手把边界划清楚了——它只负责看,不负责改。
愿意只负责看,其实是件挺难的事。
手上有了读你全部对话的权限,忍得住不往里写一个字,这需要点定力。
行了,就聊到这儿。
最后丢个链接:
github.com/liangmianya/dsh-synapse
装之前记两件事:先把 profile 认对,然后看版本。
还有——如果你的工作区里只有三五条会话,先别急。它解决的不是你的问题。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
THE END
如果这篇让你少滚了几屏
谢谢你看我的文章,我们,下次再见。
/ 作者:Patrick
/ 这里分享好用的AI工具和skill
/ 创作不易,三连支持一下吧~















































































