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
DeepSeek Harness(DSH)Web 的插件聚合生态包 · 一切皆插件
性能引擎 · 创意工坊 · 任务看板 · 移动端远程 · SSH 运维 · 图像理解
dsh-web 是 DeepSeek Harness(DSH)Web GUI 的插件聚合生态包(DSH Web plugin ecosystem),也是「一切皆开发、一切皆插件」理念在 Web 端最完整的落地:任务看板(task board)、移动端远程控制(mobile remote)、SSH 运维终端、图像理解(image understanding)、梁神模式 agent 预设、救助模式(rescue mode)与右侧面板,每一样都是独立成包的插件,可插拔、可替换、可再开发——一次装齐便是完整的 AI 开发工作台,只挑一两个也能安静融入原生界面。所有插件都经官方 profile 机制挂载到 dsh web,不改 DSH 源码;聚合包还能把外部插件(如 dsh-better-sidebar)拼进全家桶,其他皮肤与宠物资产统一从创意工坊获取,详见 dsh-web-all README。
皮肤同样长在插件体系里:v2 皮肤不是独立产品,而是「皮肤」插件的纯资产包(skin.json 清单 + 样式、贴图与可选特效脚本),由该插件这一唯一加载器即时加载,与官方彻底解耦——官方升级不再牵动皮肤,新增皮肤也只需落一个目录,无需发布、无需安装。插件负责逻辑,皮肤资产负责外观;Blue Fantasy 随插件内置,其他皮肤与宠物资产统一走 创意工坊(dsh-market.com)。

| 能力 | 原生 dsh web | dsh-web 全家桶 |
|---|---|---|
| 性能观测与治理 | 无 | HUD 检测面板 + 事件/事件循环/内存指标 + 写批频控 + 渲染降载 + 三档告警 |
| Agent 预设 | 官方预设(Standard / Minimal 等) | 官方与社区预设 |
| 任务看板 | 无 | 多列看板 + cron 定时真实执行 |
| 移动端远程 | 无 | 扫码配对、SSE 实时同步;同一链接也可配对 PC 浏览器 |
| 远程服务器运维 | 无 | SSH 面板:终端 / 传输 / 隧道 / 集群 |
| 图像理解 | 无 | describe_image 视觉工具 |
| 文件预览与变更 | 无 | 右侧面板:资源管理器 / 编辑器 / 终端 / Git / 浏览器 |
| Git 可视化 | 无 | 分支选择器 + 提交历史图谱 |
| 主题皮肤 | 默认主题 | Blue Fantasy 随皮肤插件内置,其他皮肤从创意工坊按需安装 |
创意工坊(dsh-market.com)是 DSH 的一站式创作空间,统一分发皮肤、宠物与插件:每类按设备点赞热度排序、前三名登上首页颁奖台;皮肤支持实时试穿预览,插件提供一键复制的安装命令。经典的 Blue Fantasy 蓝色幻想随皮肤插件内置,鲸鱼娘宠物与其他皮肤可在工坊浏览预览、查看源码并按需安装。Web GUI 里的「创意工坊」设置卡直接浏览工坊清单——皮肤与宠物一键装进 DSH 主目录,插件经插件管理器安装,装完即可在皮肤与宠物面板中使用。

站点也是本仓库的产物:纯静态构建,由 scripts/market-build 从三类真值源(skin.json / pet.json / community.json)确定性生成;点赞等动态能力由 Cloudflare Workers 边缘 API 承载(D1 持久化、按设备一票),push 到 main 即自动部署。
创意工坊对标 Steam Workshop 的定位:让社区创作被发现、被试穿、被一键装回家,让作者的作品被看见、被点赞——欢迎一起来建设。
面向流式和多会话场景的性能观测与治理插件。右下角的 HUD 检测面板默认关闭,在插件设置里打开后,会实时显示每个会话的事件速率、事件循环 p99 延迟、前端 FPS / Longtask、内存与写批延迟;活跃会话数超过阈值(轻 / 标准 / 严格三档)时面板亮警。治理侧做三件事:写批延迟调谐,流式期降低 fsync 频率;消息渲染降载,超重的助手消息折叠、代码高亮延后,开窗和回合结束时的代码高亮尖峰就是这么消掉的;还有 agent 空闲徽标和 CSS 渲染降载。
所有配置都在这张「Web 插件 → 性能引擎」设置卡里:总开关(全栈联动)、观测档位 off / balanced / aggressive、告警阈值预设、HUD 面板和渲染降载,模式与采样间隔在 host 端改动后即时生效,不用重启。观测拿到的只有聚合指标(事件速率、延迟分布、内存),不碰会话内容;API 有 loopback 守卫,只接受本机同源的请求。详见 packages/dsh-perf/README.zh.md。
侧边栏点「任务看板」进入。任务按五列摆开:待规划、待办、进行中、已完成、已失败。点卡片上的「执行」,任务交给真实的 DSH 智能体会话去跑,跑完状态自动回写;想复盘就跳回执行会话看完整过程。
任务也支持 Host 定时跑:详情里配 cron 表达式(比如每天 23:00 自动升级 DSH、每周一 09:00 生成周报),关闭浏览器后仍会到点执行和结算。可选的空闲睡眠保护支持 Windows、macOS 和带 systemd-logind 的 Linux,允许屏幕熄灭,同时阻止整机因空闲睡眠;该设置默认关闭。
| 多列看板 | 定时执行 |
|---|---|
![]() |
![]() |
侧边栏底部的手机图标打开配对面板。扫码(或复制链接)配对后,手机进独立移动端界面,远程操作当前的 dsh web 工作区:看会话、开新会话、收发消息、切模型和思考强度、调权限预设,都和桌面端同步。同一份配对链接也能配对 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。对已配置主机可执行真实操作:
给纯文本模型补上视觉:对话里提到图片(本地路径、http(s) URL、会话附件)时,describe_image 把图片发给配置好的 OpenAI 兼容视觉端点(Qwen-VL、GLM-4V、GPT-4o、本地 Ollama 都行)回答,进会话的只有返回的文本,图片本身不进会话记录。纯文本模型输入框没有图片入口,插件在输入框加了个图片按钮:选图后生成附件引用插进草稿,模型就能用 describe_image 分析;工具还支持 prompt 参数传自定义指令(OCR、UI 诊断、翻译),比默认描述准。端点、模型、密钥、默认指令在「设置 > 插件配置 > Image understanding」里配,即时生效。
右侧面板由外部插件 dsh-better-sidebar 提供(聚合包已集成并默认启用),支持其内置功能与第三方插件注册,详见其 README。

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


梁神模式(dsh-liangshen)是两阶段锚定的 agent preset,随全家桶一键安装:新建会话时在预设选择器中选「梁神模式」即可。首轮模型请求只看到官方 Minimal 的精确双工具(持久 bash 与 str_replace_editor)和一行 persona,没有运行时上下文与指令注入;首次工具调用后,晋升等到首个 minimal-like 推理块出现,随后 wire 切换为 PTC Mode(单个 run_code 经生成 SDK 调起完整工具注册表),并恢复全部 prompt section 与常规注入。它把「首轮轨迹选择」与「后续完整工具能力」拆开——社区评测里 Standard / PTC 为 91/92 分、Minimal 达 99/96 分,而两阶段方案在 Windows 原生实测均值 98.5,不牺牲完整工具能力;阶段从持久化 session events 推导,resume 不丢状态,已支持 plan mode。原理与稳定化控制详见 dsh-liangshen README。
救助模式(dsh-doctor)是 DSH profile 的事务式救援体系,默认开启:用户级 Doctor Supervisor 后台服务与透明的 Doctor Launcher 维持一份隔离救援胶囊,检测启动失败、进程崩溃、心跳丢失、Web 故障与浏览器白屏。每次修复都是一个事务:快照当前 profile,在候选环境应用确定性规则,经隔离的 dump-config 与 Web 健康门禁后原子提升,失败按字节回滚——profile 只经官方 dsh plugin 命令修改,不安装未验证的 latest。Web 控制台(设置 → 插件配置 → Web 插件的 Doctor 卡片)展示故障事件,提供诊断、修复与回滚动作;「发送给 Harness」把最近一次故障的摘要与错误堆栈组合成排障提示词投回当前会话,让 agent 就地诊断。Supervisor 只监听本地 socket(0600 token),Web API 仅限 loopback;安全模型与 dsh-doctor CLI 详见 dsh-doctor README。
dsh-client-ui-skill-explorer):按来源浏览已加载的 skill,支持启停、创建与删除。dsh-client-ui-plugin-manager):经官方 host 通道从 npm / git 安装插件,管理启停与配置。dsh-desktop-launcher):双击桌面图标启动 dsh web 并打开 Web GUI,悬浮电源按钮优雅退出宿主进程。经典的 Blue Fantasy 蓝色幻想是随皮肤插件提供的默认皮肤:鲸鱼插画垫在半透明面板下面,靛蓝色调贯穿全局,暗色主题下更明显。其他皮肤与 Wallpaper Engine 壁纸由皮肤插件管理,并统一在创意工坊浏览、试穿与按需安装。

dsh web 可正常启动。dsh plugin --profile web add @linxin666/dsh-web-all@latestdsh web,侧边栏出现全部插件入口dsh plugin --profile desktop add @linxin666/dsh-web-all@latestdsh --profile desktop --dump-config只要皮肤就装
@linxin666/dsh-client-ui-skin-center。若装到了旧版本(pnpm 11 的发布年龄门禁),见下方「安装排障」。
插件包已在 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,不需要手动先删旧包再装新包。启用 Doctor 后,Doctor Launcher 会在启动 DSH 前检测该旧聚合包并自动执行事务迁移:先安装 @linxin666/dsh-web-all,再移除旧包,保留原有 web-ui-* 行和 bundle 顺序,并通过 --dump-config 预检后才继续启动。用户通过 dsh-doctor launch 或 Doctor 服务启动即可;裸 dsh web 不经过该 preflight。
不想装全家桶时,可单独安装任意插件(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-tool-describe-image@latest # 图像理解工具
dsh plugin --profile web add @linxin666/dsh-pet@latest # 鲸鱼娘宠物
dsh plugin --profile web add @linxin666/dsh-liangshen@latest # 梁神模式(两阶段锚定 preset,新建会话选择)
dsh plugin --profile web add @linxin666/dsh-doctor@latest # 救助模式(默认开启,可在 Doctor 卡片关闭)
dsh plugin --profile web add dsh-better-sidebar@latest # 右侧面板(推荐;资源管理器/编辑器/终端/Git/浏览器)
dsh plugin --profile web add @linxin666/dsh-client-ui-aionui-panel@latest # 旧右侧面板(aionui-panel,已停止支持,仅过渡保留)
所有插件都以 @linxin666/dsh-* scope 发布在 npm,可直接查看与安装:
装好重启 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-describe-image),与独立包自己的 id(如 describe-image)不冲突,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。