夜雨聆风学习资料网

ARTICLE · 1275349

dsh插件推荐 - 把dsh的线性对话变成非线性对话,在画布中查看对话内容

dsh插件推荐 - 把dsh的线性对话变成非线性对话,在画布中查看对话内容

FILE 832 · dsh-synapse

MIT

dsh-synapse

把 dsh 那条竖线,摊成一张能拖能缩的图

LINEAR · 只有时间

FORKED · 还有关系

同一个会话,两种看法

DSH 插件
对话地图
开源
2.0

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

/ 创作不易,三连支持一下吧~

相关学习资料