Back to home

simplosophy

dsh-evo-vis

No description

Stars
0
Language
HTML
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-evo-vis · DeepSeek Harness 组件生态实时可视化

把 DeepSeek Harness(dsh)的每一次组件活动,变成一座会进化的深海生物圈。 实时、美观、有趣地看见你的 harness 正在做什么。

Evo Vis 可视化面板

dsh-evo-vis 是一个面向 DeepSeek Harness (Everything is a Plugin)的宿主侧插件。它监听 harness 的 Cordis 事件 (session/eventtools/resultagent/*),把会话、模型推理、工具调用、 记忆压缩、智能体、任务清单等组件活动归一化成轻量事件,通过 SSE 实时推送到 一个零依赖的全屏可视化面板(/evo)——组件化作深海生物圈里的一颗颗生命, 活动越多,能量越足,组件会进化(Lv.1 孢子 → Lv.6 超新星)。

特性

  • 🌊 美观:深空鲸鱼蓝主题、玻璃拟态面板、Canvas 粒子引擎(星云、星点、 荧光浮游、辉光节点、进化光环),无需任何前端依赖。
  • 实时:SSE 事件流 + 快照回放;工具调用、token 流、回合/步骤、压缩、 审批等事件即时点亮对应组件;顶部徽章实时显示当前 Provider / Model, 生成中带有脉动"生成中"指示;60s 滑动窗口活动速率。
  • 🧬 有趣:每个组件都是会进化的"物种"(能量积累 → 升级 → 冲击波 + 名字进化);演示模式在无活动时自动点亮生态(也可手动开关)。
  • 🪶 抗风暴:streaming 时 assistant/chunk 按会话合并推送(默认 800ms 一帧),token 统计仍实时累加,活动流不再被逐 token 刷屏。
  • 🔌 零侵入:不修改 harness 核心;注册自己的 HTTP 路由 + tapIndex 注入一个 Web UI 悬浮入口按钮,卸载即完全还原。
  • 🪶 零构建:纯 ESM JavaScript,dsh plugin add 直接安装,无 prepare 构建脚本、无 TypeScript 编译产物。

安装

在 deepseek-harness 的 Web profile 中安装本插件:

# 本地目录安装
dsh plugin --profile web add /path/to/dsh-evo-vis

# 或从 GitHub 安装(仓库发布后)
dsh plugin --profile web add github:simplosophy/dsh-evo-vis

然后启动 Web UI:

dsh web

打开 http://127.0.0.1:3080/evo 即可看到可视化面板;也可以直接在 DeepSeek Harness Web UI 右下角的 Evo Vis 悬浮按钮打开。首次打开且暂无 组件活动时,页面会自动进入演示模式,点亮生态供你观赏。

插件在无 ctx.webServer 的 profile(如 headless)里不会挂载面板,但会 继续安全地监听事件,不会影响启动。

工作原理

┌───────────────────────── DeepSeek Harness ─────────────────────────┐
│  session/event · tools/result · agent/*  …Cordis 事件流…            │
└───────────────┬────────────────────────────────────────────────────┘
                │ 监听并归一化(组件分类、能量、等级、指标)
┌───────────────▼────────────────────────────────────────────────────┐
│  dsh-evo-vis(宿主侧插件)                                           │
│  · /evo        可视化面板(单文件 HTML + Canvas)                    │
│  · /evo/data   快照(环形缓冲最近 N 条事件 + 统计)                   │
│  · /evo/stream SSE 实时事件流(hello/snapshot/event/level-up/stats) │
│  · tapIndex    在 Web UI 右下角注入悬浮入口                          │
└───────────────┬────────────────────────────────────────────────────┘
                │ SSE(EventSource)
┌───────────────▼────────────────────────────────────────────────────┐
│  浏览器:节点辉光/冲击波/彗星流/粒子 · 活动流 · KPI · 物种进化表      │
└────────────────────────────────────────────────────────────────────┘

组件与事件映射

组件对应事件
核心循环 coreturn/*step/*session/end-seed
模型推理 llmassistant/chunkassistant/messagerequest/*
会话 sessionuser/messagesession/title
工具 toolstool/calltool/result、Cordis tools/result
记忆压缩 memorycompaction/startcompaction/end
智能体 agentagent/createdagent/statusagent/disposedagent/session-start
任务清单 todotodo/write
规划 planplan/mode
审批 approvalapproval/askedapproval/decided

事件会给组件贡献"能量",能量越过阈值即进化(Lv.1 孢子 / Lv.2 萌芽 / Lv.3 成长 / Lv.4 绽放 / Lv.5 星核 / Lv.6 超新星)。

模型 Provider / Model 取自 request/headerrequest/contextagent/created,显示在面板顶部的模型徽章和模型推理节点的详情提示里。

配置

在 profile 的 cordis.patch.yml 中覆盖:

- update:
    - id: evo-vis
      config:
        path: /evo          # 面板路径
        maxEvents: 400      # 内存保留的最大事件数(快照回放)
        heartbeatMs: 15000  # SSE 心跳间隔
        statsIntervalMs: 2000 # 统计帧推送间隔
        chunkFlushMs: 800   # streaming 时 assistant/chunk 合并推送间隔
        waitForWebMs: 60000 # 等待 ctx.webServer 的最大时长
        uiTitle: 'Evo Vis'  # 页面标题与悬浮按钮文案

本地开发与测试

npm install
npm test                 # 冒烟测试:模拟 ctx + 真实路由/SSE 断言
npm run dev:preview      # 开发预览:http://127.0.0.1:3788/evo(模拟事件流)

仓库中的 test/ 脚本均为独立开发工具,不随 npm 包发布。

Roadmap(欢迎 PR)

  • 作为 dsh.client 客户端插件嵌入 Web UI 侧边栏(面板常驻,而非独立页面)
  • 组件调用链时序图(工具 A → 工具 B 的依赖轨迹)
  • 会话/智能体粒度的筛选与回放
  • 更多进化形态与皮肤(浅色主题、极简模式)

License

MIT