背景
当前已经有 #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 服务器 / 反向代理
桌面应用 / 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 记录该端口管理特色增强。
背景
当前已经有 #66 端口检测全面增强,主要聚焦识别准确性、详情解释、风险分级、历史记录和项目端口联动收口。
但用户进一步希望端口管理不只是“能扫描端口”,而是成为 DevEnv Manager 的特色功能之一:
本 issue 是 #66 的进阶补充,用于把端口管理做得更有特色、更实用、更可信。
总目标
端口管理应升级为:
核心体验:
不做什么
本任务仍然不做:
只增强现有本机端口管理。
一、建立端口软件识别库
1. 识别库设计
新增或统一一个轻量端口识别规则库,例如:
识别时不能只看端口号,必须计算证据得分。
2. 必须覆盖的软件 / 服务类型
Java / 后端开发
Node / 前端开发
Python Web / AI / 脚本服务
Go / Rust / .NET 开发服务
数据库与中间件
Web 服务器 / 反向代理
桌面应用 / WebView / 常见误判对象
必须优先正确识别,避免误判为开发服务:
Docker / WSL / 虚拟化相关
要求:识别不了时宁可显示 unknown / low confidence,不要乱标。
二、证据评分与置信度体系
1. 证据来源
识别一个端口时,至少考虑:
2. 得分规则
建议:
3. 置信度
4. UI 展示
端口详情必须显示:
三、智能快捷操作增强
快捷操作必须安全、可解释,不能危险自动化。
1. 通用快捷操作
每条端口记录应提供:
2. HTTP 服务快捷操作
如果端口是 HTTP 类服务或疑似 HTTP 服务,提供:
http://127.0.0.1:<port>。http://localhost:<port>。注意:如果无法确认是 HTTP,按钮显示为“尝试打开浏览器”,并说明可能失败。
3. 开发服务快捷操作
对 Spring Boot / Vite / Node / Python Web 等:
4. 数据库 / 中间件快捷操作
对 MySQL / Redis / PostgreSQL 等:
示例:
5. 桌面应用快捷操作
对 Steam / QQ / WeChat / 浏览器 / 网盘:
6. 结束进程按钮规则
结束进程按钮必须更保守:
四、端口冲突处理建议
如果某端口与常见开发端口冲突,应给出可选建议:
但不自动执行。
对当前已分析项目,显示:
五、常见端口知识库
可内置轻量说明,不联网:
UI 中应明确:
六、端口历史和常用占用画像
增强最近 7 天历史:
示例:
注意隐私:历史不保存敏感 commandLine 全量内容,必要时脱敏用户目录、token、密码参数。
七、项目联动进一步增强
如果用户在项目启动向导里分析过项目,端口管理应能显示:
修改项目端口必须:
八、UI 体验要求
建议新增或优化:
1. 顶部端口状态摘要
2. 快捷筛选
保留现有筛选并增强:
3. 详情卡片
端口详情不只显示文本,要结构化:
九、准确性要求
必须遵守:
十、测试要求
新增测试 fixture,至少覆盖:
十一、文档更新
更新:
docs/user-guide.mddocs/troubleshooting.mddocs/release-v1.5.2.mddocs/issues-57-71.md文档说明:
十二、验收标准
cargo test --all-targets通过。npm run build通过。