@dongasai/dsh-setting-pro

uinpmMIT

Enlarges the DSH web settings dialog (default 1180x920, 20px steps, remembered per browser) and adds an Advanced Settings page that resizes it and hosts Host operations: restart dsh with a 3-second delay and a busy confirmation, restart once all sessions have been idle for 10s (cancellable, repeat c

下载量 / Downloads
219

Install

dsh plugin --profile web add @dongasai/dsh-setting-pro

Sandbox test

This plugin has not been tested yet. Submit a test →

README

@dongasai/dsh-setting-pro

把 DSH Web 的设置弹窗从官方写死的 800 × 800 放大(开箱 1180 × 920),并把三件 Host 运维的事

收进 「设置 → 高级设置」 这一页:重启 dsh、空闲后重启、最后启动时间,

外加 dsh 版本 / 更新提示(可选 latest / next / alpha 通道,有新版本时 logo 处出现向上箭头;

排程重启期间 logo 旁另有一个 warn 色「已排程」徽标)

与 机器名字(直接顶替左上角品牌区,并顶掉浏览器 tab 标题里的产品名),以及输入框下方那一行的「供应商 · 模型 · 思考档位」。

为什么需要它:官方设置面板的几何没有任何入口(没有槽位、没有 CSS 变量、没有 Config);

而改完 Host 半边的插件必须重启进程才生效,官方也没给界面入口,用户只能去终端敲 systemctl。

本插件补的就是这两半:一个能改尺寸的设置页 + 一个不用离开界面就能重启的入口。

(和「让 agent 帮你改」的区别:这里全是确定性操作 —— 尺寸立即生效、重启走 systemd 临时单元、

版本只提示不代劳升级,没有模型参与。)

文档分工(三份,别互相抄):

想知道 · 看

怎么用:装、用、协议、排错、验证、边界 · 本文件

为什么这么实现:取舍、一次调用的路径、为什么不能那样做 · [IMPLEMENTATION.md](IMPLEMENTATION.md)

给 agent 的约束与改动连带项 · [AGENTS.md](AGENTS.md)

项 · 值

包名 · @dongasai/dsh-setting-pro

版本 · 0.12.0(与 package.json 一致,tag 0.12)。⚠️ 老 tag 0.10 只指向首个提交,不含 2026-10-18 那个「dsh 版本读错 → 更新检查废掉」的修复;要拿到最新代码请装 #0.12

profile 行 id · setting-pro

源码 · /data/ai/dsh/dsh_setting_pro

界面入口 · 「设置 → 高级设置」(左侧导航最后一项;图标是官方给未知 id 的默认齿轮)

依赖 · 零依赖、无构建:index.js 只用 node: 内建;client.js 是手写 bundle

功能

功能 · 在哪 · 说明

设置弹窗尺寸 · 设置 → 高级设置 → 面板宽度 / 面板高度 / 恢复默认尺寸 · 20px 一档,改完立即生效;默认 1180 × 920,范围宽 640–2400、高 480–1600

重启 dsh · 同页 → Host → 重启 DSH · 延迟 3 秒发出(让这次应答先回页面);忙时二次确认;页面断连后自动重连

空闲后重启 · 同页 → Host → 空闲后重启 / 取消排程 · 所有会话空闲 10 秒后自动重启;重复点击是幂等的(不重置计时)

排程重启提示 · 左上角 logo 旁(排程期间) · warn 色「已排程」小徽标:排完程关掉设置页、刷新页面、或由 agent 排程都看得到;悬停写「已静默 N 秒 / 10 秒」或「仍有 N 个会话在运行」;取消排程即消失

最后启动时间 · 同页状态行 · 最后启动 <时刻>(已运行 …),与 bootId 一起用来确认「重启完成了」

dsh 版本 / 更新提示 · 同页 → Host → DSH 版本 · 打开页面起 5 分钟轮询 npm dist-tags(Host 侧缓存 6h);可选 auto / latest / next / alpha 等通道,按所选通道判断有没有新版,有就提示并在 logo 处显示向上箭头

机器名字 · 同页 → UI → 机器名字 · 存 Host;保存后直接顶替左上角品牌区(官方 logo 让位),清空则官方 logo 回来;同时顶掉浏览器 tab 标题的产品名:会话 — DeepSeek Harness → 会话 — 机器名

模型信息(那一行) · 输入框下方「性能与用量」行的右侧并列一格(开关在 UI 分区) · 只读显示 供应商 · 模型 · 思考档位(悬停给出内部 id 与数据来源);官方那两条 pill 原样保留,可在「高级设置」里关掉

模型侧工具 · 同页 → Agent → 开放给 agent · dsh_restart_when_idle / dsh_restart_status / dsh_restart_cancel(没有立即重启工具)。这个勾选框控制模型能不能看到它们:关掉即时注销、打开即时注册,不用重启 dsh;开关存在 Host 的状态文件里

快速开始

1. 装(三种装法,选一种)

① Web 插件页(推荐):GUI「设置 → 插件」里按本地目录安装,等价于

plugin_manager(action="install_bundle", target="/data/ai/dsh/dsh_setting_pro")。

② link: 本地路径(开发用)——本插件当前就是这种:

dsh plugin --profile web add /data/ai/dsh/dsh_setting_pro

装完 profile 里会有两处(缺第二处就不会被装配):

grep -n setting-pro ~/.dsh/profiles/web/package.json
#  "dependencies":       "@dongasai/dsh-setting-pro": "link:/data/ai/dsh/dsh_setting_pro"
#  "dsh.profile.bundles": "@dongasai/dsh-setting-pro"
ls -l ~/.dsh/profiles/web/node_modules/@dongasai/   # 应有一条软链指回源码目录

③ git 源(已发布:git@github.com:dongasai/dsh_setting_pro.git,当前 tag 0.12):URL 后加 #<tag|分支|commit> 钉版本,前缀必须是 git+ 或 github::

dsh plugin --profile web add 'github:dongasai/dsh_setting_pro#0.12'   # 当前 tag 是 0.12

坑(三条都踩过):

  • --profile <name> 必填,漏了会装到默认 profile 去;
  • git@github.com:… 这种 scp 写法会被 pnpm 当成本地路径,装出一个 link: 死链(指向不存在的目录);
  • 钉版本的 tag 必须真实存在(曾写过假 tag),发版时 package.json 的 version、git tag、

本 README 的版本行三处一起动。

2. 用起来

打开「设置」→ 左侧导航选「高级设置」(最后一项,齿轮图标)→ 顶部有三个分区

(UI / Host / Agent,选中的那个记在本浏览器里):

分区 · 放什么 · 为什么在这一栏

UI · 尺寸三行、机器名字、「输入框下方那一行」开关 · 改的都是你看到的样子(机器名的值虽然存 Host,但它改的是左上角显示)

Host · 重启 / 空闲后重启 / 取消排程、DSH 版本与更新通道 · 都是你对着这台机器做的运维动作

Agent · 开放给 agent · 管的是模型能看到什么,读者和上面那些按钮不同

3. 确认它真的在工作

# a) 装配层:应该能看到这一行(⚠️ 会写 profile 的 cordis.yml,需在宿主 shell 跑;
#    agent 沙箱里 ~/.dsh 只读,会报 EROFS)
dsh --profile web --dump-config | grep -A2 setting-pro

# b) 路由是否已注册(未带认证时:已注册 → 403 JSON;未注册 → 200 text/html 的 SPA 兜底页)
curl -s -o /dev/null -w '%{http_code} %{content_type}\n' http://127.0.0.1:3080/setting-pro/status

界面上:左侧导航多出「高级设置」,面板明显比默认大(1180 × 920),页面里有上面那五块。

界面长什么样

设置 → 高级设置
├─ [ UI ] [ Host ] [ Agent ]                ← 三个分区,选中的记在本浏览器
│
├─ UI
│   ├─ 面板宽度        [ 1180 ▲▼ ] px        改完立即生效,只记本浏览器
│   ├─ 面板高度        [  920 ▲▼ ] px
│   ├─ 恢复默认尺寸    [ 恢复默认 ]
│   ├─ 机器名字        [ 工作机      ] [保存] [清除]
│   │   └─ 说明行:左上角品牌区已换成这个名字 / 槽位占位失败,已退回 logo 下面的小字 / 还没设名字
│   └─ 输入框下方那一行
│       ├─ 显示模型信息 [✓]                  关掉后那一行只剩官方内容(只记本浏览器)
│       └─ 状态行:已挂到那一行(官方两条 pill 保留)/ 还没挂上… / 挂不上那一行:<原因>
│
├─ Host
│   ├─ 重启 DSH        [ 重启 ]              忙时先弹确认,再带 force 重发
│   ├─ 空闲后重启      [ 排程 ] / [ 已排程]   幂等:重复点不重置 10 秒计时
│   ├─ 取消排程        [ 取消 ]              只在已排程时可用
│   ├─ 状态行:当前空闲 · 最后启动 2026-10-17 00:12:34(已运行 3 小时 4 分)· 目标单元 dsh.service
│   └─ DSH 版本
│       ├─ 当前版本    0.2.0-rc.2
│       ├─ 更新通道    [ auto(所有通道取最高)▾ ]   ← latest / next / alpha …(按 registry 实际有的列)
│       └─ 最新版本    0.2.1-alpha.5 (alpha)  [检查更新]
│           ⚠ 有新版本 · 0.2.1-alpha.5 (alpha) · 当前 0.2.0-rc.2 — 重启 dsh 时由 npx 重新解析…
│
└─ Agent
    ├─ 开放给 agent    [✓]                   模型能不能看到这三个工具(即时生效)
    └─ 工具行:当前:已开放给 agent(3)/未开放(工具已注销)/⚠ 开关与实际不一致(没生效):<原因>

左上角 logo 行(排程重启期间多一个「已排程」徽标;有新版本时多一个向上箭头):

[ logo / 机器名 ]  [已排程]  ↑
                    │        └ 有新版本时的向上箭头(悬停写版本与所选通道)
                    └ 排程重启期间出现(悬停写「已静默 N 秒 / 10 秒」或「仍有 N 个会话」)

设了机器名字后,品牌区(logo 那一行)被机器名取代(20px 加粗);没设名字、或点了「清除」,官方 logo 照旧。

有新版本时,品牌区后面再跟一个向上的箭头;排程重启期间,品牌区后面还会出现 warn 色的「已排程」徽标。

侧边栏折叠成 rail 时它们与名字都不显示(官方本来也不渲染品牌名)。

浏览器 tab 的标题也会跟着机器名变(2026-11-01 加):官方按会话写 会话 — DeepSeek Harness,

设了名字就把产品名那段换成机器名(会话 — 机器名;没会话时整个 tab 标题就是机器名),清空名字后恢复官方原文。

切换会话时官方会重写标题,本插件会自动重新贴一次,不用手动刷新。没设名字时完全不动官方标题。

输入框下方那一行(官方 21 轮 521 步 · 164 tok/s 与 211M tok · 缓存命中 98% 之后):

⟨21 轮 521 步 · 164 tok/s⟩  ⟨211M tok · 缓存命中 98%⟩  ⊙ 阿里云百炼 · Qwen3 Max · 高   ⟨15%⟩
    └ 官方两条,原样不动                            └ 本插件加的这一格(只读)

悬停那一格给三行明细(值 + 内部 id,以及数据来源):

供应商:阿里云百炼(bailian)
模型:Qwe

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::2,最后更新 2026-11-02

Links

GitHub · Homepage · npm

Same category