前言¶
用 DeepSeek Harness(DSH)处理复杂任务,很少是一条直线:你可能在第二轮问题里分叉出一个新会话试另一条方案,又在几个并行会话之间来回切换找上下文。原生对话列表能列出会话,却难以一眼看清「谁从哪一轮分叉出来、哪条路径还在探索、当前焦点在哪」。
dsh-synapse(Synapse)是社区维护者 liangmianya 推出的客户端类 Web 插件,目前在 SkillHub 插件库 归类为「客户端」,目录显示 GitHub 184 stars、24 forks,采用 MIT 许可证,当前包版本 0.3.0。它不替代 DSH 的模型、工具、会话或权限逻辑,而是在原生对话界面上增加可视化工作台,把同一工作区内的会话、追问和分支呈现为可拖拽、可缩放的对话地图。
需要说明的是:SkillHub 是面向中国用户的 DSH 插件社区目录,与 DeepSeek / 幻方无官方从属关系;DSH 本身的理念是「一切皆插件」,这类目录便于发现与安装,但不等于官方应用商店。
这是什么¶
一句话定位:dsh-synapse 是 DeepSeek Harness 的可视化、非线性对话工作区插件——在一张画布上浏览会话关系,同时继续使用 DSH 原生的打开、追问、分叉与归档能力。
维护者为 liangmianya,源码仓库:https://github.com/liangmianya/dsh-synapse。插件仅向 web profile 的 Web 组合注入补丁,复用 DSH 现有 Web 服务,不启动第二个应用进程,也不创建第二套 Agent。
核心功能与亮点¶
会话地图:原生对话与画布一键切换¶
顶部提供「会话地图」与「对话」开关。进入画布后,同一工作区内的会话以卡片节点呈现;点击顶部「对话」或卡片上的「在 DSH 中打开」,可回到原生聊天界面。复杂探索不必牺牲熟悉的 DSH 对话体验。
分支可见:真实分叉点连线¶
分支通过 DSH 原生 session fork 创建,Synapse 按真实分叉轮次把节点连起来,而不是把列表里的会话平铺成无关卡片。想保留一条替代路径时,用「分支」操作即可,关系会留在地图上。
持续投影与工具过程折叠¶
用户消息和助手回复投影到对应卡片;流式回复在卡片「详情」中持续更新。工具调用与结果按 callId 配对,折叠进对应助手回复卡,不再单独占一张卡,画布更干净。
双向会话同步¶
原生对话页与会话地图同步当前会话:任一侧切换焦点,另一侧跟随高亮。侧边栏点会话、画布点卡片,效果一致。
画布交互与工作区映射¶
支持拖动画布、缩放视图(最高 4×)、移动卡片(位置自动保存)、展开或折叠后续对话子树、一键定位当前会话,卡片内可平滑滚动。插件读取 DSH 工作区与目录归属,便于在正确的项目上下文中创建和浏览会话。
不改变模型与工具执行¶
Synapse 只读取已提交的会话事件并渲染画布,不向模型请求添加系统提示、工具 schema 或请求上下文,也不影响 KV 缓存复用。会话内容仍由 DSH session log 保存和管理。
安装与启用¶
插件以 当前 dsh 进程权限 运行,安装前建议阅读源码与 MIT 许可证,确认可接受其数据与安全边界。
环境要求¶
- 已安装支持
dsh pluginprofile 插件机制的 DeepSeek Harness(官方 README 标明 2026-08 及之后版本); - Node.js ≥ 22.19(
package.json的engines字段要求>=22.19.0); - 本插件仅支持
webprofile。
从 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 的使用流程,日常操作可以概括为四步:
- 在 DSH 中选择工作目录,或打开一个已有会话;
- 点击顶部「会话地图」进入画布;
- 浏览卡片:点击卡片或侧边栏会话即可切换当前会话(原生页同步跟随);需要替代路径时使用「分支」;
- 点击卡片底部「详情」查看完整对话;通过顶部「对话」或卡片「在 DSH 中打开」回到原生界面。
可选配置¶
插件通过 profile 的 cordis.patch.yml 注入,可在自有 patch 中按行 id synapse 覆盖 config(需重述全部键):
| 键 | 默认值 | 说明 |
|---|---|---|
dataFile |
$DSH_HOME/synapse/workspaces.json |
画布元数据持久化路径 |
autoProjection |
true |
是否自动把已提交的 DSH 会话事件投影为画布卡片 |
projectionWorkspaceTitle |
DSH 任务 |
投影工作区的标题 |
trustedHosts |
[] |
额外放行的 Host;localhost 与 127.0.0.1 始终放行,局域网访问需加入你的主机 |
示例:
- id: synapse
config:
dataFile: !!js dshHomePath('synapse/my-workspaces.json')
autoProjection: true
projectionWorkspaceTitle: 我的任务
适用场景与注意事项¶
适合谁用:
- 在同一项目里并行探索多种方案,需要看清分叉关系而不是在会话列表里盲找;
- 长链路调试或调研,想在一屏内定位「从哪一轮岔出去、哪条路径已放弃」;
- 已习惯 DSH Web 对话,希望加一层可视化组织而不换 Harness 或自建第二套 UI;
- 需要工具调用细节留在助手卡片内,避免画布被大量工具节点淹没。
使用前请注意:
- 权限与安全:插件与 DSH 同进程权限运行;安装前请检查源码与许可证。画布元数据保存在本地
$DSH_HOME/synapse/workspaces.json(当前 schema v4,旧版自动迁移),与会话正文分离。 - 数据边界:单条消息投影上限 8000 字符,超出会截断并标注「—…(详情查看全文)」。删除
workspaces.json会丢失画布布局与分支锚点,不会丢失 DSH 会话日志。 - 单实例建议:两个
dsh web实例共享同一 profile 时会写同一个workspaces.json;运行时已加跨进程写锁与外部修改警告,但最后写入覆盖的风险仍在——请只运行单个实例。 - 平台限制:仅 web profile;Headless 或其他 profile 不会加载此插件。
- 社区数据:Stars、Forks 随时间变化,本文写作时 SkillHub 目录显示约 184 stars;以你打开目录页或 GitHub 时的实时数据为准。
结尾¶
dsh-synapse 把 DSH 里最难「一眼看懂」的非线性对话关系,落到一张可交互的画布上:分叉、同步、投影与工具折叠都围绕原生会话能力展开,而不是另起一套 Agent 栈。若你经常在 Harness 里开分支、并行试路,这个客户端插件值得装到 web profile 里试一轮。