Skip to content
dsh.fish
Bundle

dsh-stop-service

A stop-service button for DeepSeek Harness Web: one confirmed click gracefully terminates the running dsh host (SIGTERM) — no orphaned background processes

Source
KhaosGx
stars
1 stars
License
MIT
Updated
Updated yesterday

Readme

# dsh-stop-service

[English](README.en.md) | 中文

> DeepSeek Harness (DSH) Web 设置页的「服务控制」分区:实时服务信息 + 带确认的优雅终止按钮,告别后台孤儿进程。

## 功能

- **实时服务信息**:进程 PID、启动时间、运行时长、活跃会话数(不含子代理,运行中任务单独标注)、内存占用、CPU 占用、Node / DSH 宿主 / 插件版本、平台——每 5 秒自动刷新;内存/CPU 趋势迷你图支持 3 分钟 / 15 分钟 / 1 小时窗口,样本经 localStorage 持久化(约 1 小时容量,刷新页面不丢);CPU ≥ 80% 或内存 ≥ 1024 MB 时对应行高亮警示;底部可折叠的已加载插件清单(含安装版本,link 安装有标记)
- **更新提醒**:面板顶部对比 npm registry 最新版,DSH 宿主或插件有新版时提示,可一键复制升级命令、跳转 npm 页面 / GitHub Releases(浏览器端直查 registry,宿主不外联)
- **复制诊断信息**:一键复制版本与运行状态摘要,提 issue 时直接粘贴
- **连接状态提示**:宿主失联时面板顶部显示数据快照年龄警示(本页发起的停止不误报),不再静默显示过期数据
- 带**确认弹窗**的「终止服务」按钮:有任务运行时确认框升级为中断警告,否则显示将断开的活跃会话数;宿主进程收到 SIGTERM 优雅退出——会话落盘、端口释放,效果与在终端执行 `kill <pid>` 完全一致
- **排空式停止**:「任务结束后停止」等待所有运行中任务结束后自动终止服务(纯客户端观察,宿主不留定时器,需保持设置页打开)
- **设置页头部快捷停止**:任意设置页可一键发起同样的确认停止;多标签页经 BroadcastChannel 同步停止状态,互相不再悬挂在过期数据上
- **服务回归自动刷新**:停止后持续探测,终端里重启完成时页面自动刷新接回
- 界面适配 `--dsw-*` 主题变量,跟随皮肤切换

## 兼容性

- DeepSeek Harness `>= 0.1.2-rc.1`(在 0.1.2-rc.1 实测)
- Web profile(`platform: web`)

## 安装

方式一(推荐)—— npm 直装:

```sh
dsh plugin --profile web add dsh-stop-service
```

方式二 —— GitHub 直装:

```sh
dsh plugin --profile web add github:KhaosGx/dsh-stop-service
```

方式三 —— 克隆后本地 link(适合参与开发):

```sh
git clone https://github.com/KhaosGx/dsh-stop-service.git
cd dsh-stop-service
dsh plugin --profile web add link:$(pwd)
```

安装后重启 `dsh web`,面板位于 **设置 → 服务控制**。

## 工作原理

| 文件 | 职责 |
|---|---|
| `lib/index.js` | 宿主侧:注册三个仅限 loopback 的路由——`GET /health`(存活探测)、`GET /info`(服务与 profile 信息)、`POST /stop`(应答后 300ms 自发 SIGTERM) |
| `lib/client.js` | 浏览器侧:通过官方 `settings.section` 槽位注册设置分区与 React 组件;轮询 `/info` 渲染信息面板与趋势图,直查 npm dist-tags 显示更新横幅 |
| `cordis.patch.yml` | bundle 层自登记(`dsh.bundle.patch`) |

## 安全模型

- 路由仅接受**本机 loopback** 请求:socket 环回地址 + 环回 Host 头 + 浏览器同源标记三者齐备才放行;`X-Forwarded-For` 永不信任,其余一律 `403 forbidden: loopback-only`
- `stop` 仅接受 POST;动作等价于终端 `kill`,无额外能力,不做持久化;宿主进程不对外发起网络请求(更新检查由浏览器完成)

## 致谢

loopback 请求围栏的实现参考并改编自 [zhu1090093659/dsh-web](https://github.com/zhu1090093659/dsh-web) 的 `dsh-client-ui-skill-explorer`(BSD 3-Clause, © 2026 zhu1090093659),其版权与许可声明保留于 [LICENSE](LICENSE) 的第三方声明部分。

## 许可

[MIT](LICENSE) © 2026 KhaosGx

Install

dsh plugin --profile web add github:KhaosGx/dsh-stop-service

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source