写了个小工具,顺便把任务管理器、CodingPlan可视化也一起做了
每个写代码的人大概都经历过这样一个下午:
本地起个服务,报错 address already in use。
然后开 cmd 敲 netstat -ano | findstr 8080,拿到 PID,再 tasklist 查是哪个进程,最后 taskkill /F /PID 三连。
整个过程不算难,就是烦——尤其当你一天要来好几遍的时候。
更烦的是那些没关干净的后台进程。
用 Claude Code 或者 Codex 跑了半天,回头一看任务栏,一堆 node 进程挂在后台默默吃内存。Windows 自带的任务管理器能看到它们,但你很难一眼分辨哪个是刚才那个测试服务器、哪个是不能动的。
所以我写了 PortCheck。一开始它只是个端口查看器,后来功能越加越多,干脆做成了一个完整的任务管理器。
构建产物 9MB 左右,装完即用。
它能干什么
打开 PortCheck,五个标签页加一个用量页,覆盖了我日常排查的全部场景:
端口是核心。本机所有 TCP/UDP 连接列在一张表里:本地地址、远程地址、状态、PID,还有进程名和完整路径。搜端口、搜进程名、搜路径都行,也能按协议和状态筛选。找到占用者之后,确认一下就能结束进程,不用再切回命令行。
进程页支持按 CPU、内存排序,可以按类型筛选——Node.js、Java、Python、Go、C#,甚至专门有 AI CLI 这一类。那些 AI 编程工具留下的僵尸进程,筛一下就全出来了。列表用了虚拟滚动,一千多个进程拖着也不掉帧。
性能页是常规的 CPU、内存实时曲线,外加端口连接概览。
服务和启动项在 v2 之后也能直接操作了:停服务、启服务、禁用启动项、删启动项。危险操作都会弹确认框,关键系统服务有保护名单拦着,权限不够时才弹 UAC,不会强制你全程用管理员跑。

一个意外受欢迎的功能
v2.4 加了个原本只是自己想用的功能:Coding Plan 用量查询。
现在用 GLM、Kimi、MiniMax 这些模型写代码的人不少,订阅制的套餐都有 5 小时窗口和周限额,但各家的用量页面藏得深、刷新还不及时。PortCheck 对接了智谱 GLM(国内/国际)、Kimi For Coding、MiniMax(国内/国际)和 ZenMux 四家的用量接口,配好账号之后,当前窗口和本周用了多少百分比、什么时候重置,一目了然。
配套还有一个桌面悬浮窗:一个常驻的小圆环,用量低于 70% 是绿色,70% 往上变橙,90% 以上变红。写代码写得投入的时候,余光扫一下就知道该省着点用还是可以放心造。支持多账号,高度随账号数自适应。


为什么不用 Electron
其实没什么宏大的理由。
Go 后端 + WebView 前端,内存占用和安装体积都比 Electron 方案小一截,而且 Wails 的开发体验已经足够好。
前端是纯 CSS 加内联 SVG,没引 Tailwind,也没引任何 UI 组件库——想改样式的时候直接写就行,不用跟组件库的优先级搏斗。
性能上花了些心思。
后端用单个 ticker 每秒批量推一次事件,把进程、整机性能、端口统计打包在一起,而不是每个数据源各推各的。
前端大数组关掉了深响应,图表绘制用 RAF 节流,滚动区域不叠加毛玻璃效果。这些细节单拎出来都不起眼,堆在一起决定了工具用起来"跟手"还是"发粘"。
结束进程这件事,我做得比较保守
任务管理类工具最容易翻车的就是误杀。PortCheck 里 PID 0、PID 4 和它自己的进程是硬编码保护的,任何结束操作前都有确认框,并且刻意没做"一键批量结束"——省那一下点击不值得换来误删的风险。删除启动项同理,界面里会提示你优先用"禁用",因为删除不可恢复。
试试
去 Releases 下载就行,有 NSIS 安装包,也有解压即用的 zip。首次运行被 SmartScreen 拦的话,点「更多信息 → 仍要运行」。
项目是开源的,欢迎提 issue。要是哪天你也被一个来历不明的 8080 端口折磨,或许可以给它一个机会。

