liangmianya/dsh-synapse
liangmianya/dsh-synapseDeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
轨迹对比与实时迷宫:把智能体真实的探索过程——主干推进、失败或扑空的支路、折返点与子代理支路——画在同一根墙钟时间轴上;可上传 1–2 个 session log 做同轴对比,或在会话页签里实时生长。
🔀 `dsh-trace-compare` 已更名为 `dsh-maze`(v1.0.0 起)。旧包保留可装但不再更新,迁移只要两条命令。
中文 | English
还被收录于:fendouai/awesome-deepseek-harness(独立介绍页)· Zhiyuan-Fan/Awesome-DeepSeek-Harness-Plugins · ZeroPointRepo/awesome-dsh-plugins · cccakeee/awesome-dsh-plugins · diegosouzapw/awesome-omni-dsh-plugins · anbeime/skill · dsh-app 内置插件市场
DeepSeek Harness 的执行迷宫:把 Agent 真实的干活过程完整画出来、并分析给你看。
铁律:所有数字都是对判定数据的确定性聚合,不调 LLM;每个判定带依据、每个结论可回溯到证据;数据缺失时如实标注(不画没有数据的轨道、不猜未知模型的窗口),绝不编。
两个入口:会话内的「实时迷宫」页签(随当前会话实时生长),侧边栏的「执行迷宫」(上传 session log 单看或对比)。
origin: 'subagent'),手动分支和 side-chat 侧聊不入图。宿主 0.1.6-alpha.2 起子会话须先被持有才能读取,插件在这些宿主上自己持有子会话(来源名 maze,不切换当前会话):成员来自父会话的子代理目录,迷宫打开之前就结束的子代理也画完整支路;运行中的一直持有、已结束的读一次就释放并缓存;同时最多展开 8 个,超出的在泳道上注明。更早的宿主(0.1.5 / 0.1.2)只画宿主已打开过的子会话。支路名字取派出时的任务简述;运行中的支路每秒向右生长。check 脚本按测试计;cat vitest.config.ts、grep pytest 不算),一条命令命中多类分别记;通过 = 该调用没有错误标志且返回末行没有非零退出码;每个类别以最后一次运行的结果为准,此前别的命令最后一次失败的条数小字注明(「同一条命令」按命中的那段算,cd 前缀、重定向、&& echo PASS 装饰不同不算两条);后台任务按之后 job_output 末行的退出码计,取不到就不计并标注;点格定位到最后一次运行所在的那一步并打开该步详情。产物 = 写入/编辑/补丁类调用成功触及的文件去重(格内展开路径);任务完成 = 最后一轮 turn/end 不是 error/aborted/interrupted/blocked 且最后一步是回答;人工确认只看最终回答之后有没有真人消息,不解读内容。一条验证命令都没有时显示中性的「未验证」;code 模式会话(run_code)里脚本内部派发的真实命令暂不识别,块里如实标注。规则在 verdict.js 的 ANALYSIS_RULES.VALIDATION。verdict.js 的 ANALYSIS_RULES.SIGNALS;各信号独立计数。点一条淡化其他节点并定位到该段第一个调用(再点或按 Esc 取消,与其他过滤叠加);没有信号时明说「本场没有触发任何信号」。code 模式本版只统计外层 run_code 调用,方法说明注明。上下文占用(峰值信号、上下文压力轨道、摘要卡与头部指标条)按每次请求当时的模型换算窗口:上传日志读 request/context,实时页签按逐请求模型查表;轨道纵轴是占用百分比,标题标注中途切过的窗口和因窗口值不可信而略过的样本。body[data-ds-dark-theme] 并 postMessage 进 iframe);独立打开时按系统偏好。时间轴的诚实规则:
⏸ 标注的细缝,标明省略了多久;活动段内的刻度仍显示真实墙钟时间。S15·47),多轮会话的支路不会挂错节点。assistant/message 的 usage(此前的「reasoning N tok」数的是流式段数,不是 token)。日志没有 usage 时标签诚实回退为「推理 N 段(日志未报 token 用量)」——中转站日志常缺推理 token 字段,与原厂日志并排时单位不同,标签自带原因(v0.5.1 起)。判定的诚实规则(v0.2.1 起):
src/client/verdict.js 的 VERDICT_RULES 常量里,可按项目语料调整;页面与实时两条渲染链路共用这一份实现(构建期注入)。按文件内容识别格式,文件名任意(macOS 复制出的「session.jsonl 2」也能直接选):
.jsonl(session 格式 v0 事件流)~/.dsh/sessions/ 下原样的 .jsonl.zstd——浏览器端直接解压(原生 DecompressionStream('zstd') 可用时优先,否则用内置的 fzstd)先看你的宿主是哪来的。 宿主 0.1.2 把客户端包重新拆分了一次(dsh-client-runtime 拆成 dsh-client-store 等),同时换掉了会话快照的数据模型,所以两条线的插件不通用:
你的宿主 · 装哪个版本 · 命令 0.1.2 及以后——npm 的 @deepseek-ai/dsh(现在的 latest 是 0.2.0-rc.2)、内核 0.1.2 以后的各家桌面版、或自建 master · dsh-maze 2.x,latest 标签 · dsh plugin --profile web add dsh-maze 老宿主(0.1.0-rc.6 ~ 0.1.1-rc.2) · dsh-maze 1.1.2,手动钉版本 · dsh plugin --profile web add dsh-maze@1.1.2
宿主 `0.1.7` 起需要 dsh-maze `2.3.0` 及以上:0.1.7 改了图标名和子代理目录接口,更早的 2.x 装上去侧边栏入口不显示、实时迷宫页签空白。0.1.6-alpha.2 起的宿主上 2.2.0 虽然不崩,但切换会话时不再自动关闭上传面板,也建议升级。桌面版(`0.2.0-rc.2`)请用 `2.4.0`:本版把 @deepseek-ai/dsh* 的 peer 范围从 <0.2.0 放开到 <0.3.0,并把构建产物 lib/ 纳入版本控制——否则从 GitHub 安装会装出一个没有 lib/index.js 的空壳,插件完全加载不了(2026-10-05 桌面版就是这个原因)。用 pnpm 11 的默认设置时,插件发新版后的 24 小时内,不带版本号的安装会解析回上一版,这时请钉精确版本,例如 dsh plugin --profile desktop add dsh-maze@2.4.0。
兼容性:2.4.0 对着 npm 的 0.2.0-rc.2 全家桶构建,类型检查另在 0.1.2-rc.1、0.1.5-rc.3 两套包上跑过,均为零错误,158 个测试全绿;实机验收在全新的 0.1.5-rc.3、0.1.7-rc.2、0.2.0-rc.2 宿主上做过(2.3.0 那轮:装上安装包、用模拟模型跑会话、界面数字与宿主自己的统计逐项对账,上传页也读通了这些宿主写出的第 3 版、第 4 版会话日志),0.2.0-rc.2 桌面版另装了本版做回归。1.1.x 已对官方 0.1.0-rc.6(构建 + 全量测试)与 rc.8(插槽/类型核对 + 实机验收)验证。
npm install --global @deepseek-ai/dsh
dsh plugin --profile web add dsh-maze
dsh web重启 dsh web 后,侧边栏底部出现「执行迷宫」入口,每个会话视图多一个「实时迷宫」页签。
从源码安装:
git clone https://github.com/lamost423/dsh-maze.git
cd dsh-maze
corepack enable && pnpm install && pnpm build
dsh plugin --profile web add .
dsh web也可以直接从 GitHub 装(仓库里带着构建产物,不用你本地构建;不钉版本时拿到的是默认分支最新提交):
dsh plugin --profile desktop add github:lamost423/dsh-mazedsh plugin --profile web remove dsh-trace-compare
dsh plugin --profile web add dsh-maze旧包停在 v0.7.0(功能与 dsh-maze 1.0.0 相同),此后只有 dsh-maze 继续更新。GitHub 旧地址自动重定向到本仓库。
全部演进见 CHANGELOG.md。
pnpm install
pnpm check # 类型检查 + vitest + 构建上传/可视化页面是一份自包含的 HTML(src/client/maze-upload.html),运行在沙箱化的 `` 里;解析与渲染全部在浏览器端完成,上传的日志内容不会到达宿主。
MIT。见 NOTICE——本项目包含源自 DeepSeek Harness 的衍生代码。