DSH-better-sidebar
omdsh-dev
开放的侧边栏底座,支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 | Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, terminal, side chat, Git, and sub-agent pages.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:zhu1090093659/dsh-web
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
中文 | English
dsh-web 是 DeepSeek Harness(DSH)Web GUI 的开源插件集合,为 AI 编程工作台提供任务自动化、手机远程控制、SSH 终端、Git 可视化和自定义主题。既可将插件全家桶安装到 dsh web,也可下载内置运行时与插件的 macOS / Windows 桌面客户端 DSH Desktop。
DeepSeek Harness(DSH)Web 的插件聚合生态包 · 一切皆插件
创意工坊 · 任务看板 · 移动端远程 · SSH 运维 · 使用统计
任务看板、移动端远程控制、SSH 运维、使用统计、自定义模型能力、会话归档管理和右侧面板均为独立插件,可安装全家桶,也可按需选择;所有插件通过官方 profile 机制挂载到 dsh web,无需修改 DSH 源码。聚合包也集成 dsh-better-sidebar 等外部插件,安装与配置详见插件全家桶使用指南。
主题皮肤是由皮肤插件加载的资产包,包含 skin.json 清单、样式、贴图与可选特效脚本。插件负责功能,皮肤资产负责外观。Blue Fantasy 随皮肤插件内置,其他主题与宠物资产可从 DSH 创意工坊按需获取。

| 能力 | 原生 dsh web | dsh-web 全家桶 |
|---|---|---|
| Agent 预设 | 官方预设(Standard / Minimal 等) | 官方与社区预设 |
| 自定义模型能力 | 无 | 逐模型声明图片输入与推理档位,并停用 / 启用自定义供应商 |
| 任务看板 | 无 | 多列看板 + cron 定时真实执行 |
| 移动端远程 | 无 | 扫码配对、SSE 实时同步;同一链接也可配对 PC 浏览器 |
| 远程服务器运维 | 无 | SSH 面板:终端 / 传输 / 隧道 / 集群 |
| 使用统计 | 无 | token 用量、供应商余额、套餐额度与 Token 银行 |
| 文件预览与变更 | 无 | 右侧面板:资源管理器 / 编辑器 / 终端 / Git / 浏览器 |
| Git 可视化 | 无 | 分支选择器 + 提交历史图谱 |
| 会话归档 | 无 | 集中查看与筛选全部会话,批量归档 / 恢复 / 删除,含自动策略 |
| 主题皮肤 | 默认主题 | Blue Fantasy 随皮肤插件内置,其他皮肤从创意工坊按需安装 |
| 你想做什么 | 从这里开始 |
|---|---|
| 执行和定时调度 AI 智能体任务 | 任务看板与 cron 定时执行 |
| 用手机或另一台电脑访问 DSH | 手机与 PC 浏览器远程控制 |
| 通过 SSH 管理远程服务器 | SSH 终端、文件传输与隧道 |
| 自定义主题皮肤与宠物 | 浏览 DSH 创意工坊 |
| 使用 macOS 或 Windows 桌面应用 | DSH Desktop 下载与使用要求 |
| 为已有 DSH 安装插件全家桶 | 插件安装快速上手 |
DSH Desktop 把 DeepSeek Harness Web GUI 装进一个可安装的桌面应用(macOS / Windows):安装包内置独立的 Node.js 运行时(含 npm 与 pnpm)、dsh 宿主和预装好的 web profile(官方 web bundle + dsh-web 全家桶),到手双击即用,不需要预装 Node、npm 或 dsh CLI。安装包随每个 Release 的 dsh-desktop-* 资产分发(macOS dmg / zip,Windows exe / zip)。
dsh web 的 3080/3081;桌面实例与已有 dsh web 并存,各自持有独立会话。~/.dsh:与 dsh CLI 共用同一份数据目录(配置、会话、密钥);应用自己播种的 profile 带标记,内置运行时升级时自动重新播种并保留用户的 patch 层,用户自管的 profile 永不触碰。dsh plugin add/remove 转发给内置 pnpm,装插件不需要外部工具链。安装包当前未做代码签名:macOS 首次打开有 Gatekeeper 警告(右键 → 打开),Windows 有 SmartScreen 提示(更多信息 → 仍要运行)。构建步骤、配置项、安全模型与已知限制见 desktop README。
创意工坊(dsh-market.com)是 DSH 的一站式创作空间,统一分发皮肤、宠物、插件与社区预设:每类按设备点赞热度排序、前三名登上首页颁奖台;皮肤支持实时试穿预览,插件提供一键复制的安装命令。经典的 Blue Fantasy 蓝色幻想随皮肤插件内置,鲸鱼娘宠物与其他皮肤可在工坊浏览预览、查看源码并按需安装。Web GUI 里的「创意工坊」设置卡直接浏览工坊清单——皮肤与宠物一键装进 DSH 主目录,插件经插件管理器安装,装完即可在皮肤与宠物面板中使用;社区预设装进惰性库,只有启用后才会出现在「设置 → Agent 预设」并可用于新建会话。

站点也是本仓库的产物:纯静态构建,由 scripts/market-build 从三类真值源(skin.json / pet.json / community.json)确定性生成;点赞等动态能力由 Cloudflare Workers 边缘 API 承载(D1 持久化、按设备一票),push 到 main 即自动部署。
创意工坊对标 Steam Workshop 的定位:让社区创作被发现、被试穿、被一键装回家,让作者的作品被看见、被点赞——欢迎一起来建设。
侧边栏点「任务看板」进入。任务按五列摆开:待规划、待办、进行中、已完成、已失败。点卡片上的「执行」,任务交给真实的 DSH 智能体会话去跑,跑完状态自动回写;想复盘就跳回执行会话看完整过程。
任务也支持 Host 定时跑:详情里配 cron 表达式(比如每天 23:00 自动升级 DSH、每周一 09:00 生成周报),关闭浏览器后仍会到点执行和结算。可选的空闲睡眠保护支持 Windows、macOS 和带 systemd-logind 的 Linux,允许屏幕熄灭,同时阻止整机因空闲睡眠;该设置默认关闭。
任务还可以选择复用会话:开启后,下一次执行若上一轮的会话仍在运行时列表中且空闲,Host 就在那个会话里继续跑(重新应用该任务钉住的权限与模型,保留标题与历史);会话不在列表里或正忙时照常新建会话,定时执行不会因此卡住。
| 多列看板 | 定时执行 |
|---|---|
![]() |
![]() |
侧边栏底部的手机图标打开配对面板。扫码(或复制链接)配对后,手机运行的就是官方 Web GUI 本身,竖屏下自动注入触控适配层:鲸鱼按钮展开侧边栏、左滑收起 / 右滑展开、长按会话行展开与桌面省略号相同的操作菜单、Enter 只换行、16px 输入框防聚焦缩放;面向桌面的工具面(SSH 终端、任务看板、Git 图谱等)在手机上自动隐藏——看会话、开新会话、收发消息、切模型和思考强度、调权限预设,和桌面端同一份界面、同一份状态。同一份配对链接也能配对 PC 浏览器(手机配对流扩展到桌面 Web GUI):在另一台电脑打开桌面 URL 形态的链接,完整 Web GUI 便在那台设备上运行,流量走配对门控的 /remote/api 通道——未配对设备只有横幅提示、拿不到任何数据。配对令牌一次性、限时,「停止」随时吊销所有设备;二维码默认走局域网,开 cloudflared 公网隧道后手机(和 PC)在任何网络都能配对。PC 远程桌面应优先使用插件自己的设备配对通道,安全上不建议为隧道域名设置 --trusted-host;该 flag 会让 SDK 的 /api 绕过配对门控(详见插件 README)。

实时消息与隧道:移动端靠 SSE(Server-Sent Events)收实时消息。Cloudflare quick tunnel(trycloudflare.com)和 Tailscale Serve 不透传 SSE,普通 HTTP 正常、实时推送到不了;这种网络下插件自动降级轮询,收发消息正常,只是新消息可能晚几秒。要即时推送就用支持 SSE 的隧道(Cloudflare named tunnel、自定义 TCP 端口转发等)。
| 移动端主页(鲸鱼入口) | 会话列表 |
|---|---|
![]() |
![]() |
| 聊天(思考与工具调用) | 模型选择(底部弹层) |
![]() |
![]() |
侧边栏「SSH」入口打开远程运维面板。主机支持密钥 / 密码认证,可从 ~/.ssh/config 一键导入;配置都在 ~/.dsh/dsh-ssh.json。对已配置主机可执行真实操作:
在「设置 > 使用统计」集中查看 token 消耗、供应商余额和编程套餐额度,支持自动更新与手动刷新。
统计自插件首次启用起计,不回填历史会话;鲸元券仅覆盖台账保留窗口内的 DeepSeek 官方用量。支持的供应商、配置与限制见 dsh-usage README。

自定义供应商的逐模型能力声明就在「设置 > 模型」页完成。官方 pi-ai 设置命名空间一直带着图片输入与推理档位字段,这个插件补上官方卡片有意省略的编辑器:每张自定义供应商卡片多出一个可折叠的「模型能力」区——逐模型勾选是否声明图片输入(["text","image"] 或 ["text"],未声明即继承,界面会显示而不是隐藏),并用三态编辑器声明推理档位:不声明(继承)、声明为非推理模型(模型选择器不再提供思考档位),或显式给出档位字典,每个档位还能单独写请求实际发送的线值。保存走官方同一条写入路径(一次整数组替换该供应商的 models),未编辑的字段原样保留,改完即时生效、无需重启;每次保存都带上读取时的 revision,别处改过就重新加载并提示重试,不会覆盖新配置。
供应商的停用与启用也在同一张卡片上:停用先把该供应商的 profile 归档进插件自己的设置命名空间,再经官方 Remove-provider 接缝把路由摘下来,模型选择器与子代理选择立刻看不到它(无需重启),API 密钥存在凭据服务里、全程不动;被停用的供应商列在模型页底部,一键恢复原配置。注意这些字段是「声明」而非「探测」:模型声称支持图片但网关不认,会在请求时失败——它们之所以存在,正是因为没有任何东西能替你推断出来。详见 dsh-model-capabilities README。
右侧面板由外部插件 dsh-better-sidebar 提供(聚合包已集成并默认启用),支持其内置功能与第三方插件注册,详见其 README。注:DSH 0.1.2-alpha.2 起官方移除了 @deepseek-ai/dsh-client-runtime 面,better-sidebar 曾暂被排除,现已回归聚合,当前钉在 0.19.0(2026-09-10 发布的正式版,peer 对齐 0.1.5-rc.1 cohort)。

输入框上方有分支选择器,可以切分支、翻提交历史;Git 图谱把分支泳道和提交历史画出来,仓库再大也能顺着时间线找到变更。
还支持 git worktree 并行会话:弹层里「在 worktree 中开始新会话」会在 $DSH_HOME/worktrees/ 下建一个隔离检出(携带新分支 wt/<名称>,基线分支可选),注册为工作区后直接在其中开新会话,主检出全程不动;「管理 worktree」面板列出全部托管检出并可删除(有未提交改动先拦一次再强制,wt/ 分支默认保留)。设置里还有两个默认关闭的开关:「自动隔离」让 git 工作区的每个新会话自动落进独立 worktree(基线可选当前分支或远程默认分支),「Agent 工具」把 git_worktree 交给智能体自己创建隔离环境。


会话归档管理(dsh-session-archive)是内置的会话管理入口,随全家桶安装:集中查看全部会话(活跃 / 已归档 / 空白 / 子代理 / 无工作区 / 元数据缺失的历史会话),支持按状态、工作区、标题或 ID 搜索筛选与多维排序,跨完整筛选结果集的多选,以及批量归档、批量恢复与物理删除。物理删除走级联语义(父会话连同全部后代),展示直接选中数、级联数、最终总数、预计释放空间与将被跳过的受保护会话,大批量删除需额外知情确认;运行中、当前正在查看、有运行中后代的会话始终受保护。两个默认关闭的自动策略可按"最后活动时间"自动归档、按"归档时间"自动清理超期归档(归档时间未知的历史会话永不自动删除),支持启用前预览与立即执行。删除不可恢复;全部路由仅限本机回环访问。详见 dsh-session-archive README。
dsh-client-ui-skill-explorer):按来源浏览已加载的 skill,搜索框按名称或描述即时筛选并与工作区选择器叠用(多工作区各自呈现),支持启停、创建与删除。dsh-client-ui-plugin-manager):经官方 host 通道从 npm / git 安装插件,管理启停与配置。经典的 Blue Fantasy 蓝色幻想是随皮肤插件提供的默认皮肤:鲸鱼插画垫在半透明面板下面,靛蓝色调贯穿全局,暗色主题下更明显。其他皮肤与 Wallpaper Engine 壁纸由皮肤插件管理,并统一在创意工坊浏览、试穿与按需安装。

dsh web 可正常启动。dsh plugin --profile web add @linxin666/dsh-web-all@latestdsh web,侧边栏出现全部插件入口dsh-desktop-* 安装包(macOS dmg / zip、Windows exe / zip)只要皮肤就装
@linxin666/dsh-client-ui-skin-center。若装到了旧版本(pnpm 11 的发布年龄门禁),见下方「安装排障」。
仓库根 package.json 声明 dsh.bundle(复用聚合包的装配清单)并依赖 npm 已发布的聚合包,整个仓库因此可以直接当成一个插件安装,无需克隆与构建,插件中心 / hub 按仓库一键安装时走的就是这条路:
dsh plugin --profile web add github:zhu1090093659/dsh-web
# 等价写法:dsh plugin --profile web add git+https://github.com/zhu1090093659/dsh-web.git
插件代码来自安装时解析到的 npm 聚合包,仓库只提供装配清单;该方式与 npm 安装聚合包二选一,两者产出相同的 web-ui-* 插件行,同时安装会因重复 id 挂载失败。
插件包已在 npm 发布,仓库安装仅供开发调试(需要 Node.js >= 22 与 pnpm):
# 1. 克隆仓库
git clone https://github.com/zhu1090093659/dsh-web.git
cd dsh-web
# 2. 安装依赖并构建
pnpm install
pnpm -r build
# 3. 把全家桶链接进 web profile(推荐,先链接全部子包再注册聚合包)
node scripts/link-profile.mjs
dsh plugin --profile web add link:$(pwd)/packages/dsh-web-all
# 4. 重启 dsh web,侧边栏即可看到全部插件入口
dsh web
只想用皮肤:第 3 步只执行 link-profile 后安装
packages/skins/skin-center即可。注意:profile 目录不是 pnpm workspace,聚合包里的
workspace:*依赖会回退拉取 npm 已发布版本; 若 npm 版本滞后或损坏会出现「宿主已挂载但 UI 不显示」,此时先用node scripts/link-profile.mjs让全部子包走仓库构建产物。
已有 profile 如果仍挂在 @linxin666/dsh-web-ui-all,不需要手动先删旧包再装新包:插件管理器的更新检查会把这一行识别为迁移项(@linxin666/dsh-web-ui-all → @linxin666/dsh-web-all),点更新即完成事务迁移——先移除旧包、再安装新包,保留原有 bundle 顺序,迁移后用 --dump-config 预检,任一步失败自动回滚。迁移前会校验新聚合包声明的 DSH 版本要求,宿主版本过低时先升级 DSH。
不想装全家桶时,可单独安装任意插件(npm 已发布,直接用包名):
dsh plugin --profile web add @linxin666/dsh-client-ui-task-board@latest # 任务看板
dsh plugin --profile web add @linxin666/dsh-ssh@latest # 远程连接(SSH)
dsh plugin --profile web add @linxin666/dsh-usage@latest # 使用统计
dsh plugin --profile web add @linxin666/dsh-client-ui-model-capabilities@latest # 模型能力(图片输入与推理档位)
dsh plugin --profile web add @linxin666/dsh-pet@latest # 鲸鱼娘宠物
dsh plugin --profile web add @linxin666/dsh-session-archive@latest # 会话归档管理
dsh plugin --profile web add dsh-better-sidebar@latest # 右侧面板(推荐;资源管理器/编辑器/终端/Git/浏览器)
所有插件都以 @linxin666/dsh-* scope 发布在 npm,可直接查看与安装:
| npm 包 | 说明 |
|---|---|
| @linxin666/dsh-web-all | 全家桶聚合包:一个包装齐全部功能插件(含皮肤插件及其皮肤资产) |
| @linxin666/dsh-client-ui-task-board | 任务看板:真实会话执行 + cron 定时 |
| @linxin666/dsh-remote-web-ui | 扫码配对,移动端 / PC 远程使用 Web GUI |
| @linxin666/dsh-ssh | SSH 面板:终端 / 传输 / 隧道 / 集群 |
| @linxin666/dsh-usage | 使用统计:token 用量、余额、套餐额度与 Token 银行 |
| @linxin666/dsh-client-ui-model-capabilities | 模型能力:自定义供应商逐模型声明图片输入与推理档位,并停用 / 启用 |
| @linxin666/dsh-pet | 注册表驱动的悬浮宠物 |
| @linxin666/dsh-client-ui-git-graph | Git 分支选择器与提交历史图谱 |
| @linxin666/dsh-client-ui-skin-center | 皮肤:全部皮肤的唯一加载器,皮肤资产按需从创意工坊安装 |
| @linxin666/dsh-client-ui-market | 创意工坊商店卡:浏览 dsh-market.com 的皮肤 / 宠物 / 插件 / 预设并一键安装 |
| @linxin666/dsh-client-ui-preset-center | 社区预设:创意工坊的预设面板,安装 / 启用 / 禁用 / 卸载社区 agent 预设 |
| @linxin666/dsh-client-ui-plugin-manager | 插件管理器:从 npm / git 安装、启停与配置 |
| @linxin666/dsh-client-ui-skill-explorer | Skill 中心:浏览 / 启停 / 管理 |
| @linxin666/dsh-session-archive | 会话归档管理:集中查看、筛选与批量归档 / 恢复 / 删除 |
| @linxin666/dsh-client-ui-community-plugins | 社区插件数据源:市场插件清单由它生成 |
| @linxin666/dsh-client-ui-web-ui-settings | dsh-web 插件组设置区 |
装好重启 dsh web,侧边栏出现对应入口就是生效了;也可以用 dsh --profile web --dump-config 确认插件配置层已挂载。侧边栏没新入口,多半是装完没重启 dsh web。
卸载:dsh plugin --profile web remove @linxin666/dsh-web-all,然后重启 dsh web。
技术细节见 docs/plugins.md。
pnpm 的严格(isolated)布局只把聚合包放在 profile 顶层,patch 行引用的子包会被收进嵌套目录,
dsh web会报Cannot find package '@linxin666/dsh-...'。本包的子包已声明为 dependencies;使用严格布局时,在 profile 的pnpm-workspace.yaml加nodeLinker: hoisted(或旧式public-hoist-pattern: ['@linxin666/*']),再重新安装即可。
首次安装若提示
ERR_PNPM_IGNORED_BUILDS(pnpm 拒绝依赖的构建脚本),按提示把cloudflared/cpu-features/ssh2加入 profile 的pnpm-workspace.yamlallowBuilds后重新执行即可。
pnpm 11 发布年龄门禁:新版本发布后 24 小时内(
minimumReleaseAge内置默认值),pnpm 11 会静默装回更旧的@linxin666/*版本(如dsh-web-all@0.1.20配旧版皮肤插件),显式写@latest同样被隔离。旧版皮肤插件 Apply 皮肤时会写入独立皮肤包引用,导致dsh web启动崩溃(ERR_MODULE_NOT_FOUND ... dsh-client-ui-skin-*)。在 profile 的pnpm-workspace.yaml中排除全部@linxin666/*包后再安装或更新:minimumReleaseAgeExclude: - '@linxin666/*'
A: 先确认插件装进了 web profile(命令里的 --profile web),再用 dsh --profile web --dump-config 确认插件配置层已挂载;还不行就看上文「安装排障」。注意页面刷新不够,要重启 dsh web 进程。
A: 定时调度由 dsh web Host 完成,不要求浏览器标签页保持打开。Host 停止、系统睡眠或长暂停期间错过的触发点按「错过即跳过」处理,不排队补跑;同一任务正在运行时到点也会顺延到下一个匹配点。若需要允许息屏但阻止整机因空闲睡眠,可显式开启任务看板的电源保护设置。
A: Cloudflare quick tunnel 和 Tailscale Serve 不透传 SSE,这种网络下插件自动降级轮询,消息正常收发,只是新消息可能晚几秒。要即时推送就用支持 SSE 的隧道(Cloudflare named tunnel、自定义 TCP 端口转发等)。
A: 皮肤支持先试穿再应用:试穿即时生效、退出完全还原,没点「应用」就不落盘,随便试。
A: 只要皮肤就装 @linxin666/dsh-client-ui-skin-center;只装某一个插件就用「单独安装某个插件」里的包名,两者都走 npm 安装。
A: 可以。聚合包的行 id 统一带 web-ui- 前缀(如 web-ui-usage),与独立包自己的 id(如 usage)不冲突,dsh web 不会再报 duplicate loader entry id;同一插件双源加载时 host 半区只注册一次,浏览器半区按包名去重。两个来源并存没有额外收益,建议只保留一个。注意:profile 里按 id 写的配置行,若插件来自聚合包要用 web-ui- 前缀的 id(如 remote-web-ui 的 autoTunnel 配置行写成 web-ui-remote-web-ui);独立安装时仍用插件原 id。
~/.dsh/dsh-ssh.json(权限 0600);断线重连可能重放非幂等命令,远程输出原样返回、不脱敏,安全模型见 dsh-ssh README。社区交流群在这里,和开发者、其他用户一起聊用法、报问题、提想法。QQ 扫码加入「DSH Web UI 交流群」:
也可以加 Discord 社区,或直接到 GitHub Issues 报 Bug / 提需求。
fix(task-board): 修复 xxx),代码、文档与提交信息全程禁止 emoji。node scripts/dsh-plugin-new <name>、node scripts/dsh-skin-new。pnpm typecheck && pnpm test && pnpm docs:check;完整开发流程见 docs/development.md。本仓库以 Apache-2.0 授权。迁入第三方代码必须保留 LICENSE 与署名;活跃且有上游的第三方优先 fork 或依赖引用,不搬代码。
插件
packages/vision/tool-describe-image),Apache-2.0(zhu1090093659)皮肤(第三方作者或第三方素材)
其余皮肤(mint / whale-song / whale-mom / dragon-heir / minecraft / trading / summer-liquid-glass / wallpaper-exclusive / xp)为本仓库原创,Apache-2.0。
宠物
喜欢这个项目?点个 Star。
报告 Bug · 请求功能 · 查看 Releases
感谢每一位使用、反馈和贡献 dsh-web 的朋友。如果这个项目对你有帮助,欢迎扫码赞助,支持项目持续维护与发展:
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: dsh-web-ui。