Skip to content

[1.5.2 Patch] 端口管理进阶特色增强:软件识别库、智能快捷操作、项目联动与证据评分体系 #71

Description

@weidonglang

背景

当前已经有 #66 端口检测全面增强,主要聚焦识别准确性、详情解释、风险分级、历史记录和项目端口联动收口。

但用户进一步希望端口管理不只是“能扫描端口”,而是成为 DevEnv Manager 的特色功能之一:

  • 能自动识别更多类型的软件和开发服务端口。
  • 准确性不能差,不能靠端口号乱猜。
  • 能提供更多快捷操作。
  • 能结合项目、进程、服务、命令行、历史记录给出实用建议。
  • 仍然不要新增抓包、防火墙、网络监控等新方向。

本 issue 是 #66 的进阶补充,用于把端口管理做得更有特色、更实用、更可信。

总目标

端口管理应升级为:

本机开发端口识别与安全处理面板

核心体验:

我看到一个端口被占用 → 软件告诉我它大概率是什么 → 为什么这么判断 → 是否会影响我的项目 → 我能安全做哪些操作

不做什么

本任务仍然不做:

  • 抓包。
  • 网络流量监控。
  • 防火墙管理。
  • 入侵检测。
  • 端口扫描远程主机。
  • 自动结束进程。
  • 自动修改系统网络设置。
  • 自动修改项目端口。
  • 上传端口数据。

只增强现有本机端口管理。


一、建立端口软件识别库

1. 识别库设计

新增或统一一个轻量端口识别规则库,例如:

PortAppSignature {
    id: String,
    category: String,
    display_name: String,
    process_names: Vec<String>,
    path_keywords: Vec<String>,
    command_keywords: Vec<String>,
    service_keywords: Vec<String>,
    common_ports: Vec<u16>,
    risk_hint: String,
    safe_actions: Vec<String>,
}

识别时不能只看端口号,必须计算证据得分。

2. 必须覆盖的软件 / 服务类型

Java / 后端开发

  • Spring Boot
  • Tomcat
  • Jetty,如可识别
  • Netty,如可识别
  • Maven 启动的 Java 服务
  • Gradle bootRun
  • Nacos
  • Sentinel Dashboard
  • Seata
  • Jenkins
  • Nexus
  • SonarQube

Node / 前端开发

  • Vite
  • Webpack Dev Server
  • Next.js
  • Nuxt
  • React Scripts
  • Astro
  • Vue CLI
  • npm / pnpm / yarn dev server

Python Web / AI / 脚本服务

  • Flask
  • Django
  • FastAPI
  • Uvicorn
  • Gunicorn,如 Windows 下可识别
  • Jupyter Notebook / JupyterLab
  • Streamlit
  • Gradio
  • ComfyUI
  • Stable Diffusion WebUI
  • Ollama
  • LM Studio,如可识别

Go / Rust / .NET 开发服务

  • Go 本地 HTTP 服务,如 commandLine/path 有项目证据
  • Rust actix / axum / tauri dev,如可识别
  • ASP.NET Core / dotnet run

数据库与中间件

  • MySQL
  • PostgreSQL
  • Redis
  • MongoDB
  • Elasticsearch
  • RabbitMQ
  • Kafka,如可识别
  • MinIO
  • Consul
  • Etcd

Web 服务器 / 反向代理

  • Nginx
  • Apache HTTPD
  • Caddy

桌面应用 / WebView / 常见误判对象

必须优先正确识别,避免误判为开发服务:

  • Steam / steamwebhelper.exe
  • QQ
  • WeChat
  • Chrome
  • Edge
  • Firefox
  • VS Code
  • Discord
  • Telegram
  • OneDrive
  • 百度网盘
  • 其他 Electron / WebView 应用,如只能低置信度识别则不要强判

Docker / WSL / 虚拟化相关

  • Docker Desktop 代理或后端进程
  • WSL 相关代理进程
  • Hyper-V / WSL 网络相关进程,如可安全识别

要求:识别不了时宁可显示 unknown / low confidence,不要乱标。


二、证据评分与置信度体系

1. 证据来源

识别一个端口时,至少考虑:

进程名
进程路径
命令行
父进程
Windows 服务名
本地端口
连接状态
当前已分析项目配置
最近历史记录
是否在 DevEnv Manager 受管目录或项目目录内

2. 得分规则

建议:

进程名强命中:+40
命令行强命中:+35
服务名强命中:+30
路径关键词命中:+20
项目配置端口命中:+25
端口号命中:+5 到 +10
仅端口号命中:最高只能 low confidence
桌面应用进程命中:优先覆盖开发端口推断

3. 置信度

high:多个强证据一致,例如进程名 + commandLine。
medium:一个强证据或多个弱证据。
low:只有端口号或模糊路径。
unknown:证据不足。
conflict:证据冲突,例如端口像 Spring,但进程名是 Steam。

4. UI 展示

端口详情必须显示:

识别结果:Spring Boot / Steam WebView / Unknown
置信度:high / medium / low / conflict
证据:java.exe + commandLine 包含 spring-boot
反证:无
建议:可以打开浏览器访问 / 不建议结束 / 建议检查项目端口

三、智能快捷操作增强

快捷操作必须安全、可解释,不能危险自动化。

1. 通用快捷操作

每条端口记录应提供:

  • 复制端口号。
  • 复制 PID。
  • 复制进程路径。
  • 复制命令行摘要。
  • 打开进程所在目录。
  • 查看端口详情。
  • 刷新该端口。
  • 复制诊断摘要。

2. HTTP 服务快捷操作

如果端口是 HTTP 类服务或疑似 HTTP 服务,提供:

  • 打开 http://127.0.0.1:<port>
  • 打开 http://localhost:<port>
  • 复制 curl 命令。
  • 检测 HTTP 响应状态,如现有能力允许,只做轻量 HEAD/GET,不新增监控。

注意:如果无法确认是 HTTP,按钮显示为“尝试打开浏览器”,并说明可能失败。

3. 开发服务快捷操作

对 Spring Boot / Vite / Node / Python Web 等:

  • 打开本地地址。
  • 复制启动/检查建议。
  • 跳转项目端口配置分析,如已选择项目。
  • 查看是否与当前项目端口冲突。

4. 数据库 / 中间件快捷操作

对 MySQL / Redis / PostgreSQL 等:

  • 复制连接命令示例。
  • 打开服务详情。
  • 跳转本地服务检查。
  • 不直接停止服务,除非经过高风险确认。

示例:

MySQL 3306:复制 mysql -h 127.0.0.1 -P 3306 -u root -p
Redis 6379:复制 redis-cli -h 127.0.0.1 -p 6379

5. 桌面应用快捷操作

对 Steam / QQ / WeChat / 浏览器 / 网盘:

  • 打开进程目录。
  • 复制进程信息。
  • 标记“普通桌面应用,不建议仅因端口号结束”。
  • 不显示开发服务建议。

6. 结束进程按钮规则

结束进程按钮必须更保守:

  • 开发服务:可显示,但仍需确认。
  • 数据库 / 本地服务:默认谨慎,强提示。
  • 桌面应用:默认不推荐结束。
  • 系统服务 / 权限不足 / 安全软件:阻止或隐藏。

四、端口冲突处理建议

如果某端口与常见开发端口冲突,应给出可选建议:

方案 A:确认占用进程是否可关闭
方案 B:修改当前项目端口
方案 C:停止对应开发服务
方案 D:换用其他端口

但不自动执行。

对当前已分析项目,显示:

你的项目配置端口:8080
当前占用进程:steamwebhelper.exe
判断:不是当前项目进程,可能造成启动冲突
建议:不要结束 Steam 前先确认;也可以把项目端口改为 8081,并先备份配置文件

五、常见端口知识库

可内置轻量说明,不联网:

3000:常见前端开发端口,但也可能被其他应用占用。
5173:Vite 默认端口,但必须结合 node.exe / vite 命令行判断。
8080:常见 Java Web / Tomcat / Spring Boot,但也常被 Steam/QQ/WebView 占用。
3306:常见 MySQL,但必须结合 mysqld.exe 或服务名判断。
6379:常见 Redis,但必须结合 redis-server.exe 判断。

UI 中应明确:

端口号只是弱证据。

六、端口历史和常用占用画像

增强最近 7 天历史:

  • 端口最近被哪些进程占用。
  • 哪个进程最常占用。
  • 是否经常是桌面应用占用。
  • 是否经常与当前项目冲突。
  • 最后出现时间。

示例:

8080 最近 7 天出现 12 次,其中 9 次为 steamwebhelper.exe,2 次为 java.exe,1 次为 unknown。
判断:该端口在本机经常被 Steam 占用,启动 Java 项目前建议先检查。

注意隐私:历史不保存敏感 commandLine 全量内容,必要时脱敏用户目录、token、密码参数。


七、项目联动进一步增强

如果用户在项目启动向导里分析过项目,端口管理应能显示:

  • 当前项目声明的端口。
  • 当前端口是否被占用。
  • 占用进程是否属于当前项目。
  • 如果不是,展示冲突原因。
  • 提供“跳转项目端口配置”或“生成端口修改预览”。

修改项目端口必须:

  • 先备份。
  • 预览 diff。
  • 用户确认。
  • 不自动覆盖未知配置。

八、UI 体验要求

建议新增或优化:

1. 顶部端口状态摘要

监听端口:x 个
开发服务:x 个
数据库/中间件:x 个
桌面应用:x 个
高风险/系统服务:x 个
低置信度:x 个

2. 快捷筛选

保留现有筛选并增强:

全部
开发服务
前端
Java
Python
数据库
中间件
桌面应用
系统/高风险
低置信度
当前项目冲突

3. 详情卡片

端口详情不只显示文本,要结构化:

基本信息
进程信息
识别证据
风险与建议
快捷操作
历史记录
项目联动

九、准确性要求

必须遵守:

  • 证据不足时不要强结论。
  • 端口号不能单独决定软件类型。
  • 桌面应用强证据优先于开发端口弱证据。
  • 识别结论必须可解释。
  • 每个规则要能测试。
  • 不为追求“看起来智能”而乱猜。

十、测试要求

新增测试 fixture,至少覆盖:

steamwebhelper.exe + 8080 → Steam WebView,高置信度,不是 Spring
QQ.exe + 8082 → QQ 客户端,高置信度,不是 Spring
java.exe + spring-boot commandLine + 8080 → Spring Boot,高置信度
java.exe + catalina + 8080 → Tomcat,高置信度
node.exe + vite + 5173 → Vite,高置信度
node.exe + next dev + 3000 → Next.js,高置信度
python.exe + uvicorn + 8000 → FastAPI/Uvicorn,高置信度
python.exe + flask + 5000 → Flask,中高置信度
python.exe + jupyter + 8888 → Jupyter,高置信度
mysqld.exe + 3306 → MySQL,高置信度
redis-server.exe + 6379 → Redis,高置信度
postgres.exe + 5432 → PostgreSQL,高置信度
nginx.exe + 80/443 → Nginx,高置信度
unknown.exe + 8080 → unknown/low,不强判 Spring
ESTABLISHED 状态 → 不当作本地监听服务
权限不足 commandLine 缺失 → UI 不崩溃,显示证据不足

十一、文档更新

更新:

  • docs/user-guide.md
  • docs/troubleshooting.md
  • docs/release-v1.5.2.md
  • docs/issues-57-71.md

文档说明:

  • 端口识别为什么不能只看端口号。
  • 如何理解置信度。
  • 如何判断能不能结束进程。
  • 常见端口可能对应的软件。
  • 如何处理项目端口冲突。

十二、验收标准

  • 端口管理能识别更多开发服务、数据库、中间件、桌面应用。
  • 识别准确性明显提升,不再靠端口号乱猜。
  • 每条识别结果都有证据和置信度。
  • 提供更多安全快捷操作。
  • 项目端口冲突说明更清晰。
  • 历史记录能帮助判断常见占用。
  • 结束进程仍然保守、安全、可确认。
  • 不新增抓包、防火墙、网络监控等方向。
  • cargo test --all-targets 通过。
  • npm run build 通过。
  • release notes 记录该端口管理特色增强。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions