dsh-synapse:把 DeepSeek Harness 对话变成可浏览的分支地图

前言

用 DeepSeek Harness(DSH)处理复杂任务,很少是一条直线:你可能在第二轮问题里分叉出一个新会话试另一条方案,又在几个并行会话之间来回切换找上下文。原生对话列表能列出会话,却难以一眼看清「谁从哪一轮分叉出来、哪条路径还在探索、当前焦点在哪」。

dsh-synapse(Synapse)是社区维护者 liangmianya 推出的客户端类 Web 插件,目前在 SkillHub 插件库 归类为「客户端」,目录显示 GitHub 184 stars、24 forks,采用 MIT 许可证,当前包版本 0.3.0。它不替代 DSH 的模型、工具、会话或权限逻辑,而是在原生对话界面上增加可视化工作台,把同一工作区内的会话、追问和分支呈现为可拖拽、可缩放的对话地图。

需要说明的是:SkillHub 是面向中国用户的 DSH 插件社区目录,与 DeepSeek / 幻方无官方从属关系;DSH 本身的理念是「一切皆插件」,这类目录便于发现与安装,但不等于官方应用商店。

这是什么

一句话定位:dsh-synapseDeepSeek Harness 的可视化、非线性对话工作区插件——在一张画布上浏览会话关系,同时继续使用 DSH 原生的打开、追问、分叉与归档能力。

维护者为 liangmianya,源码仓库:https://github.com/liangmianya/dsh-synapse。插件仅向 web profile 的 Web 组合注入补丁,复用 DSH 现有 Web 服务,不启动第二个应用进程,也不创建第二套 Agent。

核心功能与亮点

会话地图:原生对话与画布一键切换

顶部提供「会话地图」与「对话」开关。进入画布后,同一工作区内的会话以卡片节点呈现;点击顶部「对话」或卡片上的「在 DSH 中打开」,可回到原生聊天界面。复杂探索不必牺牲熟悉的 DSH 对话体验。

分支可见:真实分叉点连线

分支通过 DSH 原生 session fork 创建,Synapse 按真实分叉轮次把节点连起来,而不是把列表里的会话平铺成无关卡片。想保留一条替代路径时,用「分支」操作即可,关系会留在地图上。

持续投影与工具过程折叠

用户消息和助手回复投影到对应卡片;流式回复在卡片「详情」中持续更新。工具调用与结果按 callId 配对,折叠进对应助手回复卡,不再单独占一张卡,画布更干净。

双向会话同步

原生对话页与会话地图同步当前会话:任一侧切换焦点,另一侧跟随高亮。侧边栏点会话、画布点卡片,效果一致。

画布交互与工作区映射

支持拖动画布、缩放视图(最高 )、移动卡片(位置自动保存)、展开或折叠后续对话子树、一键定位当前会话,卡片内可平滑滚动。插件读取 DSH 工作区与目录归属,便于在正确的项目上下文中创建和浏览会话。

不改变模型与工具执行

Synapse 只读取已提交的会话事件并渲染画布,不向模型请求添加系统提示、工具 schema 或请求上下文,也不影响 KV 缓存复用。会话内容仍由 DSH session log 保存和管理。

安装与启用

插件以 当前 dsh 进程权限 运行,安装前建议阅读源码与 MIT 许可证,确认可接受其数据与安全边界。

环境要求

  • 已安装支持 dsh plugin profile 插件机制的 DeepSeek Harness(官方 README 标明 2026-08 及之后版本);
  • Node.js ≥ 22.19package.jsonengines 字段要求 >=22.19.0);
  • 本插件仅支持 web profile

从 GitHub 安装

目录页与 README 给出的安装命令一致:

corepack pnpm dsh plugin --profile web add github:liangmianya/dsh-synapse

GitHub 安装会执行本包的 prepare 脚本(node --check 语法校验)。

若使用 pnpm ≥ 10,默认可能拦截 git 依赖的构建脚本。安装被拦截时,把 pnpm 打印的确切键(包名加 tarball URL,内含 commit,不是裸包名)写入 DSH profile 的 pnpm-workspace.yaml

allowBuilds:
  "dsh-synapse@https://codeload.github.com/liangmianya/dsh-synapse/tar.gz/<commit>": true

然后重新执行安装命令。上游推送新 commit 后该键会变化,需复制 pnpm 新打印的键。

本地开发可使用 link: 指向本地检出,改代码即时生效:

corepack pnpm dsh plugin --profile web add link:E:\path\to\dsh-synapse

启动 Web 服务

corepack pnpm dsh web                # 默认 http://127.0.0.1:3080
corepack pnpm dsh web --port 0       # 3080 被占用时自动分配空闲端口

打开 http://127.0.0.1:3080/,点击顶部「会话地图」进入画布。

卸载

corepack pnpm dsh plugin --profile web remove dsh-synapse

remove 只移除插件依赖与 profile 激活层,不会删除画布数据($DSH_HOME\synapse\workspaces.json)。重装后旧数据会自动迁移恢复。若要彻底清理,需手动删除 $DSH_HOME\synapse\ 目录。

典型用法示例

按官方 README 的使用流程,日常操作可以概括为四步:

  1. 在 DSH 中选择工作目录,或打开一个已有会话;
  2. 点击顶部「会话地图」进入画布;
  3. 浏览卡片:点击卡片或侧边栏会话即可切换当前会话(原生页同步跟随);需要替代路径时使用「分支」;
  4. 点击卡片底部「详情」查看完整对话;通过顶部「对话」或卡片「在 DSH 中打开」回到原生界面。

可选配置

插件通过 profile 的 cordis.patch.yml 注入,可在自有 patch 中按行 id synapse 覆盖 config(需重述全部键):

默认值 说明
dataFile $DSH_HOME/synapse/workspaces.json 画布元数据持久化路径
autoProjection true 是否自动把已提交的 DSH 会话事件投影为画布卡片
projectionWorkspaceTitle DSH 任务 投影工作区的标题
trustedHosts [] 额外放行的 Host;localhost127.0.0.1 始终放行,局域网访问需加入你的主机

示例:

- id: synapse
  config:
    dataFile: !!js dshHomePath('synapse/my-workspaces.json')
    autoProjection: true
    projectionWorkspaceTitle: 我的任务

适用场景与注意事项

适合谁用:

  • 在同一项目里并行探索多种方案,需要看清分叉关系而不是在会话列表里盲找;
  • 长链路调试或调研,想在一屏内定位「从哪一轮岔出去、哪条路径已放弃」;
  • 已习惯 DSH Web 对话,希望加一层可视化组织而不换 Harness 或自建第二套 UI;
  • 需要工具调用细节留在助手卡片内,避免画布被大量工具节点淹没。

使用前请注意:

  1. 权限与安全:插件与 DSH 同进程权限运行;安装前请检查源码与许可证。画布元数据保存在本地 $DSH_HOME/synapse/workspaces.json(当前 schema v4,旧版自动迁移),与会话正文分离。
  2. 数据边界:单条消息投影上限 8000 字符,超出会截断并标注「—…(详情查看全文)」。删除 workspaces.json 会丢失画布布局与分支锚点,不会丢失 DSH 会话日志。
  3. 单实例建议:两个 dsh web 实例共享同一 profile 时会写同一个 workspaces.json;运行时已加跨进程写锁与外部修改警告,但最后写入覆盖的风险仍在——请只运行单个实例。
  4. 平台限制:仅 web profile;Headless 或其他 profile 不会加载此插件。
  5. 社区数据:Stars、Forks 随时间变化,本文写作时 SkillHub 目录显示约 184 stars;以你打开目录页或 GitHub 时的实时数据为准。

结尾

dsh-synapse 把 DSH 里最难「一眼看懂」的非线性对话关系,落到一张可交互的画布上:分叉、同步、投影与工具折叠都围绕原生会话能力展开,而不是另起一套 Agent 栈。若你经常在 Harness 里开分支、并行试路,这个客户端插件值得装到 web profile 里试一轮。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜