dsh-port-guard
by pangyiming
DSH plugin: triage port conflicts (reuse / switch / precise kill) — 端口占用处置
安装
dsh plugin --profile web add github:pangyiming/dsh-port-guardGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
目录
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
- 先判断该不该杀——EADDRINUSE 不等于该杀(复用 > 重启)。
- 绝不
killall node/pkill -f node——精确 PID,不误伤其他正常服务。 - PID < 100 绝不杀——系统进程。
- 别人的进程不杀——换端口绕开。
- 命令行看不懂 / 不确定是什么——停下报告用户,不擅自杀。
安装 Install
# 发布到 npm 后
dsh plugin --profile demo add dsh-port-guard
# 或从 GitHub 安装
dsh plugin --profile demo add github:PangYiMing/dsh-port-guard
许可证 License
原始 README: https://github.com/PangYiMing/dsh-port-guard/blob/main/README.md ↗
同类插件
查看全部 →
dsh-anchored-standard
两阶段 DeepSeek Harness 预设:先 Minimal 对齐的 bootstrap,再切完整 Standard 工具(Project2 98/99)

PicGo-Core
极致的图片上传引擎,CLI 与 API 双支持

awesome-deepseek-harness
DeepSeek Harness(DSH)及其优秀社区插件的精选指南。

awesome-deepseek-harness
DeepSeek Harness (DSH)生态系统:来自dsh-external/hub和公共dsh-plugin主题的精选插件、工具和基础设施。

AI-Novel-Writer
本地优先 AI 小说创作工作台,提供 Windows/macOS 桌面版与 DeepSeek Harness 插件开发预览,支持角色、大纲、章节蓝图、审稿修稿和本地模型。

mcp-for-stata
MCP-for-Stata:把 Stata 集成进你的 agent