# dsh-workbench-ui > [English](README.md) · [中文](#readme-zh-cn) **dsh-workbench-ui** 是 **DeepSeek Harness** 的 UI 插件。它把默认的聊天界面换成工作台式布局:任务面板与六阶段流水线、遥测场、命令控制台。浅色/深色主题跟随系统设置。界面上的所有数值都来自实时会话——没有定时器,没有伪造状态。 ![暗色](preview/dark.png) · ![浅色](preview/light.png) ![暗色状态条](preview/dark-status.png) · ![浅色状态条](preview/light-status.png) > 上图为真实截图。用浏览器打开 `preview/preview.html`,可在右下角切换浅色/深色,自行截图。 --- ## 概览 - 对话变成**过程流**:`INPUT` 块、实时 `REASONING` 时间线、工具卡、`RESULT` 块。 - 常驻 **Agent Core** 面板:当前任务 + 真实六阶段流水线 `ANALYZE → PLAN → EXECUTE → OBSERVE → VERIFY → COMPLETE`,全部由真实会话事件驱动,绝不用定时器伪造。 - 三层深度的**遥测场**(`SRC / Δ / SYNC / PROC / NODE / EXEC / MEM / OS`),全部真实数值,带轻微鼠标视差。 - 克制的**命令控制台**取代聊天输入框;模型切换菜单完全可用。 ## 功能 - **真实状态机** —— 阶段来自持久化会话日志(`reasoning-delta`、`tool/call`、`tool/result`、`assistant/message`、`request/context`)及 `agent.phase.kind`(completed / error / cancelled / waiting)。无伪造状态,无假 loading。 - **Agent Core** —— 任务 + 六节点流水线(✓ 完成 / ● 当前 / ○ 等待 / × 故障)+ 实时进程行(真光标)+ 工具扇出(`AGENT ● → read ✓ → bash ◐ …`)。 - **Reasoning 即信号** —— 垂直时间线、节点标记、逐行入场动画、历史衰减、闪烁光标、一次性扫描线。 - **工具 / 终端 / DIFF 视觉** —— 平铺工程卡、终端流式光标、逐行 diff 揭示。 - **遥测场** —— 远 / 中 / 近三层深度,仅真实数据,随 Agent 状态变化。 - **签名标识** —— 原创 `[ · ]` 方括号-节点-对角线标识 + 大字距 wordmark。 - **系统芯片与状态栏** —— 顶部系统与 Agent 状态;底部 Git、模型、令牌与运行时长。 - **命令面板** —— `⌘K` / `Ctrl+K`(纯键盘,无 UI 元素)。 - **截图隐私模式** —— `⌘⇧P` / `Ctrl+Shift+P` 一键模糊项目/会话名、路径与遥测数据,方便截图(纯视觉蒙版,数据不动)。 - **性能** —— 全部特效为 CSS transform / opacity / background-position;完整支持 `prefers-reduced-motion`。 ## 设计细节 - 字体:界面 Inter / Geist;代码、日志、数字与元数据 JetBrains Mono / IBM Plex Mono。 - 边框:1px 发丝线;圆角 4–8px,工作区 0。用边框而非阴影建立结构。 - 动效:快、准、机械,每一个动画都有功能。 - 深度:环境背景 → 计算场 → 工作台表面 → 活动进程 → 交互。 - 全部视觉为程序化生成(CSS 渐变 + 内联 SVG),无第三方素材、无壁纸、无复制布局。 ## 浅色模式 明亮、干净的工程工作台:白色表面、石墨文字、克制的青色信号;近乎不可见的网格与柔和景深。安静、精密、易读。 ## 深色模式 深邃的计算环境:石墨层次、冷青信号、极淡网格、漂浮的遥测与线框几何。焦点始终在运行中的 Agent 上。 两套主题共享同一套语义 token 系统,跟随系统 `prefers-color-scheme` 自动切换。界面不提供主题开关。 ## 安装 **本地副本安装(推荐——GitHub 下载超时时也能用):** ```bash git clone https://github.com/seedaylight/dsh-workbench-ui.git dsh plugin --profile web add ./dsh-workbench-ui ``` 如果你使用其他 profile(`default`、`tui` 等),把 `web` 换成你的 profile 名。macOS、Windows(PowerShell 或 cmd)、Linux 均可用,`dsh plugin` 命令完全一致。在 Windows cmd 中,将 `./dsh-workbench-ui` 换成 `dsh-workbench-ui`(或绝对路径)。 **直接从 GitHub 安装:** ```bash dsh plugin --profile web add https://github.com/seedaylight/dsh-workbench-ui.git ``` 如果提示下载超时(`codeload.github.com … error 23`),改用上面的本地副本方式即可——它完全不经过 tar.gz 下载。插件没有构建脚本,因此安装失败时打印的 pnpm `allowBuilds` 提示可以忽略;重试或改用本地方式即可。 ## 卸载 ```bash dsh plugin --profile web remove dsh-workbench-ui ``` ## 开始使用 安装后重启 web GUI 并刷新页面即可,工作台 UI 会自动出现,无需任何开关或配置。 1. **停止正在运行的 web 实例**(在运行 `dsh web` 的终端按 Ctrl+C,或结束其进程)。 2. **重新启动**:`dsh web`。 3. **刷新浏览器**(`http://127.0.0.1:3080`,或 dsh 打印的地址)。 加载后,会话视图会变成一张工作台: - **Agent Core** —— 当前任务 + 实时六阶段流水线 `ANALYZE → PLAN → EXECUTE → OBSERVE → VERIFY → COMPLETE`,全部由真实会话事件驱动。 - **遥测场** —— 远 / 中 / 近三层深度(`SRC / Δ / SYNC / PROC / NODE / EXEC / MEM / OS`),仅真实数值。 - **命令控制台** —— 取代聊天输入框(模型切换菜单仍可用)。 - **状态栏** —— 底部显示 Git、模型、令牌、运行时长与 Agent 状态。 - **命令面板** —— `⌘K` / `Ctrl+K`。 - **截图隐私模式** —— `⌘⇧P` / `Ctrl+Shift+P`,一键模糊项目/会话名与遥测。 - **主题** —— 浅色/深色跟随系统 `prefers-color-scheme`,界面不提供开关。 宿主端在 harness web 服务器上注册两个同源端点(`/__dsh-workbench-ui__/health`、`/__dsh-workbench-ui__/snapshot`);客户端每秒轮询一次快照。 ## 环境要求 DeepSeek Harness(dsh)Web 客户端 · Node.js ≥ 18。已在 dsh `0.1.0-rc.7` 上测试通过。CSS 针对当前 harness 构建的 DOM(类名哈希)编写;harness 升级后可能需要少量选择器刷新——这是社区 UI 插件的正常情况。 ## 隐私 无遥测、无分析、无任何外部请求。所有数值来自本地会话,在 harness 进程内计算。遥测端点为同源只读快照。插件不包含任何凭据、令牌、个人信息或机器路径。 ## 快捷键 | 功能 | macOS | Windows / Linux | | --- | --- | --- | | 命令面板 | `⌘K` | `Ctrl+K` | | 截图隐私模式 | `⌘⇧P` | `Ctrl+Shift+P` | | 收起/展开工作区侧栏 | `⌘\` | `Ctrl+\` | | 打开详情面板 | `⌘J` | `Ctrl+J` | ## 故障排查 **提示 "Failed to apply … cannot get property "timer" without inject"**:说明浏览器还在加载**旧的缓存 bundle**(这个错误来自 v0.3.1 之前使用 cordis timer 服务的旧版 client)。插件已不再使用 timer——更新插件后必须: 1. **重装更新后的插件**:`git clone`(或在已有 clone 中 `git pull`)后执行 `dsh plugin --profile web add ./dsh-workbench-ui`。 2. **重启 dsh**:停止 `dsh web` 进程后重新启动。 3. **硬刷新浏览器**(`⌘⇧R` / `Ctrl+Shift+R`),清除缓存的旧脚本。 验证实际加载的 bundle:打开 `http://127.0.0.1:3080/plugins/dsh-workbench-ui/client.js`,查看 URL 中的 `rev=`——当前版本应为 `9ad8d3e93c56` 或更新。若仍为 `7b447dd6b1a0`,说明旧副本还在生效。 **全新安装后提示 "Failed to load plugins / bundle script … failed to load"**:浏览器没能拉取到插件的 `client.js`——通常是网络连接中断(与安装时 `codeload.github.com … error 23` 超时同因),不是代码错误。 1. 刷新页面(`⌘R` / `Ctrl+R`)。如果浏览器缓存了不完整的下载,用硬刷新(`⌘⇧R` / `Ctrl+Shift+R`)清除。 2. 仍失败的话,验证 bundle 是否正常提供:打开 `http://127.0.0.1:3080/plugins/dsh-workbench-ui/client.js`——应返回脚本内容而非错误页。 3. 用本地副本重新安装,排除 GitHub 下载不完整(见 [安装](#安装))。 ## 许可 MIT。本项目是 DeepSeek Harness 的独立社区插件;产品及其品牌归原所有者。