🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

服务重启器 hackerFish/dsh-restart

DeepSeek Harness
hackerFish77 天前有提交已提供中文文档扫描:高危

一键启动重启本地 Web 服务并排查端口占用

27.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add hackerFish/dsh-restart
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · dev
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 77 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

命令参数由运行时变量拼接读写/删除本地文件发起外部网络请求
查看扫描证据(共 13 处,展示前 11 条)
  • 执行外部命令来自配置/变量
    launch/launcher.js:50
    return execSync(cmd, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }) || '';
  • 读取本地文件
    launch/launcher.js:99
    if (!fs.existsSync(f)) continue;
  • 读取本地文件
    launch/launcher.js:100
    for (const line of fs.readFileSync(f, 'utf8').split('\n')) {
  • 读取本地文件
    launch/launcher.js:112
    for (const pid of fs.readdirSync('/proc').filter((d) => /^\d+$/.test(d))) {
  • 读取本地文件
    launch/launcher.js:114
    for (const fd of fs.readdirSync(`/proc/${pid}/fd`)) {
  • 执行外部命令运行时拼接
    launch/launcher.js:140
    try { execSync(`taskkill /PID ${pid} /T /F`, { stdio: 'ignore' }); } catch (e) {}
  • 发起网络请求
    launch/launcher.js:164
    const req = http.get({ host: '127.0.0.1', port: checkPort, path: '/', timeout: 2000 }, (res) => {
  • 读取本地文件
    launch/launcher.js:185
    try { entries = fs.readdirSync(base); } catch (e) { continue; }
  • 读取本地文件
    launch/launcher.js:188
    if (fs.existsSync(p)) candidates.push(p);
  • 执行外部命令来自配置/变量
    launch/launcher.js:268
    child = spawn(process.execPath, [dshBin, ...cmdArgs], {
  • 执行外部命令固定命令
    launch/launcher.js:276
    child = spawn('npx', ['-y', '@deepseek-ai/dsh', ...cmdArgs], {
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 启动重启本地Web服务
  • 排查端口占用
  • 跨平台零依赖启动

启动、重启并排查本地 DeepSeek Harness(dsh)Web 服务——跨平台启动器 + DSH 技能,零依赖。

README

由 DeepSeek 最新模型翻译生成
dsh-restart 启动、重启与排障本机 DeepSeek Harness(dsh)Web 服务 —— 一个工具,两个入口:对话内技能 + 系统级启动器。 CI License Platform 什么是 DeepSeek Harness(dsh)? DeepSeek Harness(dsh)是面向 DeepSeek 工作流的本地智能体运行框架。它的 web profile 在本地端口(默认 3080)提供浏览器 UI,配置与会话数据存放在 $DSH_HOME(默认 ~/.dsh)下。 dsh 是常驻本地服务,每个人迟早都会遇到同样的运维问题:"界面打不开 / 3080 端口被占 / 想重启"。dsh-restart 用两个互补的入口回答这些问题: | 入口 | 适用场景 | 使用方式 | | DSH 技能(skills/) | dsh 正在运行,对话内操作 | 说"start dsh / restart dsh"(中文"启动 dsh / 重启 dsh"亦可),模型用自己的工具执行整套流程 | | 启动器(launch/) | dsh 未运行或需要兜底引导 | 双击 launch.vbs(Windows)或运行 launch.sh / launcher.js | 本技能同时收录于兄弟项目 awesome-dsh-skills。
展开完整文档(README 剩余 1 节)
dsh-restart

启动、重启与排障本机 DeepSeek Harness(dsh)Web 服务 —— 一个工具,两个入口:对话内技能 + 系统级启动器。

CI
License
Platform

什么是 DeepSeek Harness(dsh)?

DeepSeek Harness(dsh)是面向 DeepSeek 工作流的本地智能体运行框架。它的 web profile 在本地端口(默认 3080)提供浏览器 UI,配置与会话数据存放在 $DSH_HOME(默认 ~/.dsh)下。

dsh 是常驻本地服务,每个人迟早都会遇到同样的运维问题:"界面打不开 / 3080 端口被占 / 想重启"。dsh-restart 用两个互补的入口回答这些问题:

| 入口 | 适用场景 | 使用方式 |
| DSH 技能(skills/) | dsh 正在运行,对话内操作 | 说"start dsh / restart dsh"(中文"启动 dsh / 重启 dsh"亦可),模型用自己的工具执行整套流程 |
| 启动器(launch/) | dsh 未运行或需要兜底引导 | 双击 launch.vbs(Windows)或运行 launch.sh / launcher.js |

本技能同时收录于兄弟项目 awesome-dsh-skills。

目录

- 功能特性
- 仓库结构
- 工作原理
- 前置要求
- 快速开始
- 启动器参数
- 安全模型
- 故障排查
- 开发
- 贡献
- 许可证

功能特性

- 安全重启逻辑 —— 识别占用端口的进程;未经显式 --force,绝不杀死非 node/dsh 类进程。
- 会话保全 —— 服务健康时默认不重启、只打开浏览器,对话历史不丢失。
- 跨平台 —— Windows / macOS / Linux / Android(Termux),极简 Linux 环境有 /proc 兜底探测。
- 零依赖 —— 启动器仅用 Node.js 内置模块;技能是经过校验的纯 SKILL.md。
- 格式经校验 —— 内置技能通过 tools/validate-skills.mjs,CI 在 Ubuntu 与 Windows 上每次 push / PR 自动执行。
- dsh 宕机也能用 —— 与对话内操作不同,启动器不依赖正在运行的 dsh 实例。

仓库结构

dsh-restart/
├── skills/
│ └── dsh-restart/SKILL.md # DSH 技能 —— 对话内入口 ├── launch/ │ ├── launcher.js # 跨平台核心启动器 │ ├── launch.vbs # Windows:隐藏启动 + 自动开浏览器 │ ├── launch.bat # Windows:控制台入口 │ └── launch.sh # macOS / Linux / Termux 入口 ├── tools/ │ └── validate-skills.mjs # 零依赖技能格式校验器 ├── CONTRIBUTING.md # 贡献指南 └── .github/workflows/ └── validate.yml # CI —— Ubuntu + Windows 双平台矩阵

工作原理

检查端口 3080 │ ├─ 空闲 ──────────────────────────► 启动 dsh web ──► 轮询 ──► 打开浏览器 │ └─ 占用 ──► 识别进程 │ ├─ 非 node/dsh ──► 中止(需 --force) │ └─ node/dsh ──► 探测 http://127.0.0.1:3080/ │ ├─ 健康 ──► 只开浏览器(不重启) └─ 残留 ──► 终止 ──► 等待端口释放 ──► 启动

1. 检查默认端口 3080(可用 --port 或 DSH_PORT 覆盖)。
2. 识别占用进程;除非显式传入 --force,拒绝杀死非 node/dsh 类进程。
3. 探测服务 —— 响应正常意味着"直接打开浏览器":重启会丢失当前会话。
4. 清理残留进程 —— 终止后等待端口释放,再启动 dsh web(优先本机安装,回退 npx -y @deepseek-ai/dsh)。
5. 验证 —— 轮询直到界面有响应,再打开浏览器。

前置要求

- Node.js —— 启动器与 dsh 本身都需要。
- dsh —— 启动器会通过本机安装或 npx -y @deepseek-ai/dsh 启动(首次使用需联网)。
- 无其他依赖。

快速开始

方式 A —— 安装技能(对话内使用)

git clone https://github.com/hackerFish/dsh-restart.git
mkdir -p ~/.dsh/skills
cp -r dsh-restart/skills/* ~/.dsh/skills/

技能目录在会话启动时扫描 —— 开一个新会话,然后说 "启动 dsh" 或 "重启 dsh"。

方式 B —— 使用启动器(兜底引导)

Windows
launch\launch.vbs # 双击,或在终端里:
node launch\launcher.js

macOS / Linux / Termux
./launch/launch.sh
node launch/launcher.js

可选 —— 桌面快捷方式(Windows)

为 launch\launch.vbs 创建快捷方式。双击即可隐藏启动 dsh 并自动打开浏览器。

启动器参数

| 参数 | 说明 |
| --dry-run | 只检查端口/进程状态,不启动任何东西。 |
| --force | 强制杀死占用端口的非 node/dsh 进程 —— 使用前务必确认。 |
| --port | 覆盖监听端口(默认 3080)。 |
| -- | 透传给 dsh 的其余参数,如 -- web --port 4000。 |
| DSH_PORT | 与 --port 等效的环境变量。 |

安全模型

- 启动器绝不杀死看起来不像 node/dsh/deno/bun 的进程,除非传入 --force。
- 健康运行的实例默认不重启,只打开浏览器。
- 重启 dsh 会终止当前对话所在进程;技能在执行前会明确警告用户。
- 技能除进程管理与打开界面外不产生任何副作用。

故障排查

| 症状 | 处理 |
| 3080 端口被未知进程占用 | node launch/launcher.js --dry-run 先检查;确认后再决定是否 --force。 |
| 3080 被其他应用占用 | node launch/launcher.js --port 8080。 |
| dsh 起来了但界面打不开 | dsh web --help;dsh web --port 0 让系统分配空闲端口。 |
| 对话里技能不触发 | 确认技能已放入发现根(~/.dsh/skills 或项目 .dsh/skills);需新会话生效。 |

开发

node tools/validate-skills.mjs # 校验内置技能(零依赖)
node launch/launcher.js --dry-run # 启动器自检(只检查,不启动)

CI(.github/workflows/validate.yml)在每次 push / PR 时于 Ubuntu 与 Windows 双平台运行校验器,平台相关的路径问题在合并前就会被拦截。

贡献

见 CONTRIBUTING.md。

许可证

MIT © 2026 dsh-restart contributors
预览分享卡片长什么样 ↓hackerFish/dsh-restart
分享 · DeepSeek Harness Hub
hackerFish/dsh-restart

一键启动重启本地 Web 服务并排查端口占用

这是你的仓库?认领条目

回到顶部