DeepSeek Harness 插件 · fnOS

飞牛上的 DSH,
一个侧栏搞定重启。

在左侧栏加一个入口:刷新页面等于原来的 F5,重启 DSH Web走飞牛网关—— 停掉托管进程、按原参数拉起、等健康检查通过,再自动带你回到页面。

DSH ≥ 0.2.1-rc.2 Node ≥ 20 MIT 许可 无外部依赖
Capabilities

两个动作,各归各位

刷新只是重新加载页面;重启才动进程——而且交给真正该负责的那个家伙。

刷新页面

等价于飞牛 App 的 F5 / Ctrl+R:location.reload(),进程不动、会话不断,适合改了前端或想重新拉取状态的时候。

重启 DSH Web

两步确认后请求飞牛网关重启:网关停掉托管的 dsh web、按原参数拉起、等端口健康检查通过,然后页面轮询到恢复自动刷新。

状态一眼看全

当前 PID、监听端口、origin、启动参数、网关 socket 可达性、网关记录的 PID、检测到的 supervisor——排查时不用再去翻 /proc。

兜底但不越权

没有飞牛网关时用 detached helper 自重启;检测到 systemd 单元或调试器就明确拒绝,并告诉你原因,而不是把进程搞丢。

Mechanism

为什么不自己重启自己

飞牛应用把 dsh web 托管在网关下面。进程没法替换自己——只能停下,再由别人在端口释放后拉起它。

01点击重启

面板二次确认,发送一个带控制头的 POST。

02交给网关

Host 半通过 unix socket 调用 /__fnos-gateway/control/web/restart。

03停 → 等 → 起

网关停掉子进程,按原参数拉起,等端口健康检查通过。

04带你回来

轮询 /status 直到 running,自动刷新页面。

网关路径(推荐)

网关是 supervisor:它持有 PID 文件、启动令牌和健康检查握手。由它重启,这些状态全部保持一致。

helper 兜底

没有飞牛 socket 时,Host 半拉起一个 detached helper,等端口安静后用原始 argv 复现启动;systemd 下拒绝执行。

Download

滑到底,才下载

插件包一个文件就够。向右滑满整条才算数——放手里随便一点不会误触发下载。

dsh-fnos-control-0.1.0.tgz
30.5 KB · SHA-256 ebd31664…d7fb2a
GitHub Release · DeepSeek Harness ≥ 0.2.1-rc.2 · MIT
滑动解锁下载

使用键盘也可:聚焦滑条后按 → 或 Enter。
下载得到的文件与仓库内构建产物一致,可先跑 node package/scripts/smoke.mjs 自检。

  1. 下载:滑满滑条,浏览器会通过作者的云盘直链取包。
  2. 解包:tar -xzf dsh-fnos-control-0.1.0.tgz,得到 package/ 目录。
  3. 安装:dsh plugin --profile web add ./package,bundle 自动登记。
  4. 重启 DSH Web,刷新页面,左侧栏出现「服务控制」即完成。

直链由 GitHub Releases 提供,版本固定不会过期;也可以从源码目录自行构建。

Install

三步装进全新 DSH

不需要构建、不需要依赖安装,解包即可用。

bash
# 1. 解包
tar -xzf dsh-fnos-control-0.1.0.tgz

# 2. 装进 profile(自动登记 bundle)
dsh plugin --profile web add ./package

# 3. 重启 DSH Web,然后刷新页面
#    左侧栏出现「服务控制」即可用

# 自检(可选)
node ./package/scripts/smoke.mjs
  • 自动登记:dsh plugin add 会把包名写进 dsh.profile.bundles,不用手改配置。
  • 零依赖:Host、Client、语言包、图标全在包里,纯 ESM。
  • 双语言:中文「服务控制」/ English「Service Control」,跟随界面语言。
  • 可退回:移除 bundle 即恢复原样,插件不写磁盘。

注:别在 profile 的 cordis.patch.yml 里再插同名行——一行一挂载,重复会启动失败。

Safety

能重启,但不能乱重启

重启是危险动作,所以每一层都设了闸门。

闸门行为
两步确认点「重启」后按钮变成「确认重启?」,5 秒内不确认自动退回。
POST + 专用头重启路由只收 POST,必须带 x-dsh-control: 1,跨站表单和图片都发不出来。
仅回环只应答 127.0.0.1 / ::1 的请求,远端的浏览器打不到这个口。
systemd 检测检测到 systemd 单元时禁止 helper 自重启(会被 cgroup 连带杀掉),如实返回原因。
调试器检测进程带 --inspect 之类参数时不重启,避免把调试会话一起带走。
并发保护一次只允许一个重启请求,重复请求返回 409。