dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
面向 DeepSeek Harness Web GUI 的维什戴尔主题插件。
视觉方向不是传统游戏金属框,而是明日方舟式信息终端与维什戴尔爆破涂写:黑灰信息层、细线框、编号、警示切角、红色状态轨、网点和不对称构图。
以下截图来自实际运行中的 DSH Web GUI,统一使用 1600 × 1000 视口,展示完整页面布局而不是局部素材或裁剪片段。

完整展示侧栏工作区、会话列表、维什戴尔背景、首页标题、Agent 预设、访问模式、模型选择和主题输入器。输入器同时集成提示词优化入口,适合直接开始新会话。

完整展示五列任务流:待规划、待办、进行中、已完成和已失败。看板支持真实 DSH Agent 执行、会话跳转、失败重跑、定时任务和持久化状态。

设置中心采用原生 DSH 弹窗布局,包含通用设置、模型、插件、Agent 预设和插件市场入口。主题插件的详细配置位于设置页的插件区域,具体名称会随 DSH 版本显示为“插件配置”或“可配置”。
除维什戴尔主题外,本插件提供五组功能,全部在插件自己的配置页里开关与调参(保存即生效,持久化于宿主)。配置入口随 DSH 版本不同:
DSH 0.2.0+:侧栏 插件 → 已安装 → @cdxdnrf/dsh-client-ui-skin-wishadel,配置区就在该 bundle 详情页的描述与组件行之间。
DSH ≤ 0.1.5:设置 → 插件 → 插件配置 里的「维什戴尔终端」折叠卡。
任务看板:侧栏底部「任务看板」进入。任务按 待规划 / 待办 / 进行中 / 已完成 / 已失败 五列组织;点击「执行」由真实 DSH 智能体会话执行,完成/失败状态自动回写,可跳转执行会话复盘;支持 cron 定时执行(如 0 23 * * * 每天 23:00、0 9 * * 1 每周一 09:00),到点自动开工。
工作区目录选择:接管官方的「添加工作区…」入口(空白页工作区选择器与侧栏工作区头部的添加按钮),点击后弹出增强面板:一键打开 Windows 原生文件夹选择窗口(WSL 下经 interop 启动 powershell.exe,选中的 Windows 路径自动经 wslpath 转换为 WSL 路径),同时提供已注册工作区快捷列表与手动输入(支持 ~、Windows 路径、相对路径)。所选路径经官方 directoryFlow owner 会话接纳,沿用 DSH New Session 流程注册并打开工作区;无图形界面时自动降级为快捷列表 + 手动输入。
原生替代功能(默认关闭):以下增强项已被新版 DSH 的原生能力覆盖,默认停用,可在配置页的「原生替代功能」区逐项重新开启——历史跳转(原生轮次导航)、工作台「活动」标签(原生会话头部后台任务列表)、工作台「文件」标签(原生右侧边栏的文件树 + 文档预览)、工作台「终端」标签与底部终端(原生右侧边栏的终端标签页)、Git 分支气泡(原生消息尾部的变更文件卡)、侧栏会话置顶(原生侧栏搜索与手动排序)、侧栏键盘导航(新版侧栏自带键盘处理)、会话文件标签页(原生消息尾部变更文件卡)、对话迷你滚动条(原生对话导航)。
Git 图谱:提交历史以分支泳道图可视化,点击提交查看详情与变更文件;从工作台「Git」面板头部的「图谱」按钮打开(分支气泡默认关闭后不再占用输入框上方)。可在配置页关闭。
右侧工作台(默认关闭,按需开启):会话打开后,右下角「工作台」胶囊展开/收起。含「Git」(真实变更、stage / unstage / discard、差异与提交,入口处可直达提交图谱)与「浏览器」(HTTP/HTTPS 地址栏、历史导航、外部打开、默认 opaque-origin sandbox);「文件」「终端」「活动」标签默认关闭(见「原生替代功能」)。面板宽度、折叠、当前 Tab、浏览器地址和底部辅助区域按会话/工作区持久化,支持键盘 Tab 导航。 DSH 0.2.x 的原生右侧边栏已提供文件树、文档预览与终端,0.2.1 起还补齐了原生工作台,因此本插件自带的工作台默认关闭,在配置页「启用右侧工作台(本插件)」里开启。 与原生右侧边栏共存时自动协调:原生栏打开后工作台整体让位(不覆盖原生栏、不挤压对话);原生栏关闭后自动恢复。
设置中心:主题选择(皮肤注册表 window.__dshSkins,便于后续接入更多主题)、终端装饰/角色图/会话背景、任务看板、Git 图谱、右侧面板的全部开关与参数。
宿主半边通过 /wishadel/* 同源接口与页面通信,任务、设置与面板状态持久化在 $DSH_HOME/storages/wishadel/。客户端通过 ctx.wishadelWorkbench 发布轻量扩展注册表,支持 registerTab({ id, title, order, component }) 与 registerFileViewer({ id, exts, priority, component });注册返回 disposer,兼容 HMR 生命周期。
所有素材都在预构建的 lib/client.js 中以内嵌 Data URI 分发,运行时不访问远程地址。
推荐使用 DSH 官方插件管理命令,不需要手动 clone 仓库,也不需要运行项目脚本。
要求:已经可以运行 DSH,并且 Node.js 提供 Corepack。
corepack enable
dsh plugin --profile web add git+https://github.com/cdxDNRF/wishadel-theme.git
安装完成后:
dsh web。http://127.0.0.1:3080。0.2.0+ 走侧栏 插件 → 已安装 → @cdxdnrf/dsh-client-ui-skin-wishadel;≤ 0.1.5 走 设置 → 插件 → 插件配置。如果你的环境找不到 pnpm,先运行 corepack enable;DSH 的 profile 插件命令会负责安装依赖、写入 Web profile,并把主题 bundle 加入组合配置。
Git 安装说明:pnpm ≥10 默认拒绝运行 git 依赖的构建脚本,第一次
add可能失败并提示授权——按提示把 pnpm 打印的包键加入该 profile 的pnpm-workspace.yaml的allowBuilds后重试即可。本包通过prepare脚本(node scripts/build.mjs,纯 Node 无第三方依赖)在安装时重建lib/;仓库也同时提交了预构建产物,两种路径都能安装。
使用同一个 DSH 官方命令重新解析远端包:
dsh plugin --profile web add git+https://github.com/cdxDNRF/wishadel-theme.git
然后重启 dsh web 并刷新页面。若需要固定到某个 Git 提交,可使用 Git URL 片段或本地路径作为 package source。
DSH 0.2.0+:侧栏 插件 → 已安装 → @cdxdnrf/dsh-client-ui-skin-wishadel,配置区渲染在该 bundle 详情页里(描述与组件行之间),可开关全部功能与主题选项。
DSH ≤ 0.1.5:设置 → 插件 → 插件配置,展开「维什戴尔终端」折叠卡。
两条路径读写同一份设置,保存后即时生效并持久化到宿主($DSH_HOME/storages/wishadel/settings.json)。配置界面自带重试按钮,若提示宿主服务未就绪,重启一次 dsh web 即可。
修改后立即生效。DeepSeek Harness 0.1.0-rc.6 的 Web 配置 API 只向内置插件开放 settings namespace,因此本插件通过自己的 /wishadel 同源接口实现宿主持久化(不使用浏览器 localStorage)。
使用 DSH 官方插件管理命令移除主题:
dsh plugin --profile web remove @cdxdnrf/dsh-client-ui-skin-wishadel
卸载后重启 dsh web 并刷新页面。该命令会移除主题 package dependency 以及 dsh.profile.bundles 中对应的 bundle,不修改其他插件。
仓库中的 scripts/install.ps1 和 scripts/uninstall.ps1 只是 PowerShell 包装器,适合无法直接调用完整命令的 Windows 环境;正常安装优先使用上面的 DSH 官方命令。
源码与构建产物分离:
assets/ 背景素材
src/client/*.js 客户端半边(主题核心、皮肤注册表、设置卡、任务看板、Git 图谱、右侧面板)
src/host/*.js 宿主半边(设置/任务/文件/Git 服务与 /wishadel 路由)
src/theme.css 主题样式
src/client.css 功能界面样式
scripts/build.mjs 无第三方依赖构建脚本(按序拼接为 lib/client.js 与 lib/index.js)
scripts/smoke-host.mjs 宿主半边冒烟测试(mock ctx 驱动全部路由)
scripts/smoke-client.mjs 客户端加载冒烟测试(mock window/React 执行 apply)
scripts/e2e-live.mjs 实机端到端验收(宿主上线后;含真实智能体任务执行,--cron 附加定时验证)
scripts/e2e-race.mjs 删除竞态回归(运行中任务不可删除、结算不击穿进程)
scripts/inspect-session.mjs 解压任务会话日志取证
lib/ 构建产物(客户端 bundle + 宿主 ESM)
docs/screenshots/ README 预览图(对话首页、任务看板、设置中心)
修改源码或素材后:
node .\scripts\build.mjs # 重建 lib/
node .\scripts\smoke-host.mjs # 宿主冒烟(可选但推荐)
node .\scripts\smoke-client.mjs # 客户端加载冒烟(可选但推荐)
node .\scripts\e2e-live.mjs --base http://127.0.0.1:3080 # 实机验收(宿主上线后)
生效方式:客户端 bundle 由 Web 服务器按请求实时读盘,重建后浏览器硬刷新(Ctrl+F5)即可;宿主半边在进程启动时装载,改动后需要重启 dsh web。以本地 link 方式安装(package.json 依赖为 link: 路径)时开发最顺手。
当前针对 DeepSeek Harness 0.2.1-rc.2 Web GUI 验证,并向后兼容 0.2.0-rc.2 / 0.1.5-rc.1 / 0.1.2-rc.1 / 0.1.1-rc.2 / 0.1.0-rc.7(输入框透明镜像层、settling 阶段、右侧 details 列、设置卡槽位等旧版差异已做多版适配;旧版专属的兼容规则在新版为无害空选择器)。优先使用 data-pane、data-phase、data-composer-*、ARIA role/state 等稳定钩子,CSS Module 类名片段只作为兼容回退。新版 dsh web 的浏览器认证只作用于 /api,本插件 /wishadel/* 同源接口不受影响。
0.2.1 的适配要点:
0.2.1-rc.2 未引入破坏性变更:主题三个面板标记、data-composer-* 输入契约、plugins.bundle.config 配置槽、shell.overlay / conversation.input.* 等槽位全部保持,三条冒烟与浏览器端实测均通过。sidebar.workspaces.session.menu.item / session.row.action 中的 pin / unpin),与本插件「侧栏会话置顶」重复——该项此前已默认关闭(superseded.sidebarPin),无需改动。slot entry crashed in '<slot>',不再连带空白整页;本插件各安装器仍由 safeInstall 包裹,两层防护互补。panel-state 等接口多返回一个 defaults 字段(宿主侧面板默认值),本插件读 state 的行为不变。panel.enabled 默认 false):原生右侧边栏 + 原生工作台已覆盖该场景。设置里用一次性迁移标记 migrations.panelOffByDefault 只把旧存档的出厂默认值改一次,用户之后手动开启不会再被覆盖。0.2.1 新增的原生 UI(均由宿主提供,与本插件无重叠):
| 功能 | 表现 |
|---|---|
| 插件「发现」页 | 侧栏「插件」新增 发现 标签页,浏览插件市场索引、搜索/分类筛选、一键安装(需挂载 dsh-experimental-plugin-market-bundle,出厂关闭)。 |
| 快捷键参考 | 设置 → 通用 里的「编辑快捷键」+ Mod + /,可搜索全部命令、录制/清除/恢复绑定,Web 端存 localStorage: dsh.keybindings.v1。 |
| 密钥遮盖 | 已发送的用户消息里识别到的 API key/token 只明文显示前 8 位,其余以 * 绘制;仅影响显示,复制与模型输入仍是原文。 |
模型标签 1017 | 在 composer 模型选择器里给 DeepSeek-V4.1-Flash 加一个临时标记,关闭该行即恢复纯名。 |
| 会话置顶 | 会话行「…」菜单与悬停按钮里的 置顶 / 取消置顶,置顶项在分组与平铺视图都排在最前。 |
| 桌面端专属(Web 不加载) | 原生浏览器标签页、产品分析遥测。 |
| 可选实验包(出厂关闭) | 语音输入、思考过程机器翻译、自定义插件市场、开发者工具、Git 工作树、持久终端、Ralph 循环等。 |
0.2.0 的适配要点:
settings.plugin.item 槽已不存在,插件配置改为在侧栏「插件」页的 bundle 详情页里渲染(plugins.bundle.config,key = bundle 包名),并需要按 view: 'summary' | 'page' 分别给出一行摘要与完整表单。两代槽位同时注册,未声明的槽位只会静默等待,因此同一份构建在 0.1.x 与 0.2.0 都能出配置界面。current,改为「被主视图 retain 的会话」(retainedBy.mainView > 0,与官方 ui-workspace 的 mainSessionId 同一判定);工作台据此重新解析 sessionId 与 cwd,旧版回落到 current。ui-sidebar-browser 是 disabled),因此工作台的「浏览器」标签保留。dsh-workspace-changes + ui-deliverables 渲染变更文件卡;「Git 分支气泡」默认关闭,提交图谱改由工作台「Git」面板头部的「图谱」按钮进入。data-pane 属性在 0.2.0 已移除,theme-core 的面板标记改以 CSS Module 类名片段(_sidebarCol / _centerCol / _rightbarCol)为准。添加工作区 仍由本插件接管(0.2.0 依旧只发布 dsh-host-directory-picker-auto 宿主半边,浏览器半边 dsh-client-ui-directory-picker-native 未挂载),因此「工作区目录选择」保持默认开启。Ctrl+Alt+N 跟随可见标签等行为在 0.2.0 下一致。0.1.5 的适配要点:
details(ui-chat)换成原生右侧边栏 rightbar(文件树 + 文档预览)——主题皮肤规则同时覆盖两者;工作台与原生栏按上文规则自动协调。role="treeitem"。本项目是非商业性质的同人主题,与 Hypergryph/鹰角网络无隶属关系,也未获其背书。角色与《明日方舟》相关权利归各自权利人所有。详见 NOTICE。
项目代码和主题编排以 CC BY-NC-SA 4.0 发布。分发前请确保你有权重新分发替换后的背景素材。