dshbase

插件目录 / Developer / dsh-port-guard

dsh-port-guard

已验证 · 实测可装 PangYiMing

✓ 持续维护

查看 GitHub ↗ ← 返回插件目录

1Stars
0Forks
0未关闭 issue
Shell语言
2026-08-15最近推送
跨平台平台

功能简介

dsh-port-guard — DSH 插件(工具)

✅
我们的评价
可用 — 实测通过,早期项目

dsh-port-guard — DSH 插件(工具) 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

dsh-port-guard

DeepSeek Harness 插件 · 端口占用处置 / DSH plugin for triaging port conflicts

dev server 启动报 EADDRINUSE: address already in use——最常见的前置障碍。但不是所有 EADDRINUSE 都该 kill。

The classic blocker before any dev server starts. But not every EADDRINUSE should be killed.

核心洞察:EADDRINUSE 有三条路,不是只有"杀"

情况 占端口的是谁 正确动作
A. 自己的、还在正常服务的 dev server 上次会话遗留的同项目 dev server 复用,比重启快
B. 别人的项目 / 不该杀的进程 另一个项目 / 系统服务 换端口绕开,不抢杀
C. 确认是僵尸/残留进程 已死但端口没释放 / 重复拉起的 精确 PID kill

先判断属于哪种,再决定动作。不无脑 kill。

定位 + 取证 Identify & investigate

./scripts/port-guard.sh 8080

脚本会打印占用进程的完整身份信息:

# 定位
lsof -nP -iTCP:8080 -sTCP:LISTEN
# 身份:启动时刻/运行时长/有无控制终端
ps -o pid,ppid,lstart,etime,tty,%cpu,rss,command -p "$PID"
# 工作目录 → 属于哪个项目
lsof -a -p "$PID" -d cwd -Fn | grep '^n' | sed 's/^n//'
# 子进程(有子进程的别直接杀父,先看树)
pgrep -P "$PID"

判读组合:

观察 含义
PPID=1 父进程已退出,被 launchd 收养 —— 孤儿
tty=?? 没有控制终端,不是人在终端里跑的
fd0 → /dev/null,fd1/fd2 → 某个 .log nohup cmd > log 2>&1 & 指纹 → agent/脚本起的
tty=ttys00X 人在终端窗口起的,杀之前更该问一声
etime 好几天 + %cpu 0.0 + rss 极小 挂了很久的僵尸 watcher(可能 watch 源码目录,某天突然醒来写产物)

三种处置 Three paths

# A. 复用:确认进程还活着(kill -0 只检测不杀)
kill -0 "$PID" && echo alive

# B. 换端口绕开,不杀别人的
PORT=18080 node index.js

# C. 精确 kill(先 SIGTERM 给优雅退出机会,不行再 SIGKILL)
./scripts/port-guard.sh 8080 --kill

安全红线 Safety rules

  1. 先判断该不该杀——EADDRINUSE 不等于该杀(复用 > 重启)。
  2. 绝不 killall node / pkill -f node——精确 PID,不误伤其他正常服务。
  3. PID < 100 绝不杀——系统进程。
  4. 别人的进程不杀——换端口绕开。
  5. 命令行看不懂 / 不确定是什么——停下报告用户,不擅自杀。

安装 Install

# 发布到 npm 后
dsh plugin --profile demo add dsh-port-guard

# 或从 GitHub 安装
dsh plugin --profile demo add github:PangYiMing/dsh-port-guard

许可证 License

MIT

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-port-guard」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

Web profile:

dsh plugin --profile web add dsh-port-guard

Headless(CLI)profile:

dsh plugin --profile headless add dsh-port-guard

包信息

npm:dsh-port-guard · 版本 — · 实测环境 dsh 0.1.0-rc.6

实测报告

端到端验证通过:dsh 0.1.0-rc.6 上 L1 安装 + L2 加载 + L3 运行问答。

使用场景

扩展 agent 的编码能力面——给它一个新工具、工作流或集成,让它接手以前做不了的开发任务。

适合谁

想让 dsh 在真实代码库上像队友一样干活的开发者——能改、能跑、能验证,而不只是回答问题。

二次开发建议

工具/命令面就是缝:暴露更多 SDK 能力、加更聪明的上下文接线,或收紧改代码与验证之间的循环。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7797 个插件 →