拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

查无此人:10个免费本地优先的开发工具,每款都能救急

查无此人:10个免费本地优先的开发工具,每款都能救急

1. 先说清楚:为什么叫"查无此人",我在筛什么

干了十来年开发,我从书签里攒下过几百个"在线工具",也装过一堆号称"效率神器"的软件,最后真正每天还在用的,反而是那些在 GitHub 上星星不算少、但在同事嘴里几乎没人提起的本地工具。标题里那句"查无此人",说的不是没人用,而是大部分人只见过名字、没真正上手,或者用了之后觉得太普通就放一边了。这篇文章里的 10 个工具,我给它们的定位是:免费、本地优先、能直接解决具体问题。覆盖面比较广,从前端调试、后端接口、数据库排查、嵌入式开发,到 Windows 系统维护,都能捞到一两个。

适合谁看?刚入行的开发可以当成一份"工具补盲清单",老油条可以对照看看有没有漏网的。我不打算写那种装完就吃灰的推荐,每个工具我都会告诉你它解决什么场景、怎么快速上手、我在实际项目里踩过哪些坑。其中一两款可能你早就用过,但大概率会有一两款是你没注意到的,那就值了。

1.1 什么样的工具才配叫"查无此人"

先说我的标准。它不能是刚发布的测试玩具,必须是已经在真实项目里跑过很久、但传播度远低于实际价值的东西。比如 PlatformIO 在嵌入式圈子里算老熟人,可很多做 Web 前端的人听都没听过;DBeaver 天天用的人觉得理所当然,可不少同事还在满网找破解版数据库客户端。这 10 个工具里,有几款是跨方向"串门"的:搞前端的不一定了解嵌入式工具链,搞后端的可能没碰过本地域名管理,但正是这种错位,才让它们成了别人口中的"查无此人"。

1.2 我筛选这 10 个工具的硬标准

我列了三条,缺一不可:

  • 完全免费,且不是"试用期+弹窗"的免费。装完之后不会隔三差五提醒你升级 Pro,也不会在导出文件时夹带水印。
  • 本地优先。数据不出自己机器,不依赖某个在线服务活着。这一点在调试生产数据相关问题时尤其重要,谁也不想把线上 JSON 或 SQL 结果粘到别人的网站上。
  • 上手成本低于半小时。装上之后,核心功能能做到"看一眼就会用",凡是需要读一小时文档才能跑通的,我基本都淘汰了。

另外还有一条隐藏项:这些工具都不需要注册账号,不猜授权文件,换电脑也不心疼。

2. 第一梯队:每天都要打开的五件套

这一组工具的使用频率最高,基本覆盖了一个普通开发者的日常:写代码前的环境准备、写代码中的调试、写代码后的数据验证。我把它们放在最前面,因为先解决高频问题,工具清单才算真正落地。

2.1 PlatformIO:嵌入式开发的隐形主力

如果你只搞 Web 开发,这一条可以跳过;但如果你碰过 Arduino、ESP8266、STM32 这类单片机,PlatformIO 很可能是你缺的那个省心工具。它本质上是一个统一的嵌入式构建系统,支持几十种框架(Arduino、STM32Cube、ESP-IDF、ESP8266 NONOS SDK、Zephyr 等)和 2000 多种开发板。我最初入坑是因为不想再折腾 Keil 的环境配置:破解麻烦、跨平台困难、命令行没法集成到自动化脚本里。PlatformIO 把工程配置全部收敛在一个platformio.ini里,换电脑复制一份配置就能恢复环境,这一点比任何 IDE 都踏实。

快速上手也很简单。在 VSCode 里安装 PlatformIO IDE 插件,新建项目时选好 Board(比如genericSTM32F103C8)和 Framework(STM32Cube),它会自动生成带默认配置的工程。你也可以手动写配置:

[env:genericSTM32F103C8] platform = ststm32 board = genericSTM32F103C8 framework = stm32cube upload_protocol = stlink monitor_speed = 115200

然后在src/main.c里写自己的逻辑,点一下右上角的编译/上传按钮就行。我第一次用的时候最大的感受是:终于不用为不同芯片记不同 IDE 的操作流程了。这里提醒一句:首次编译会下载对应芯片的编译工具链和框架库,耗时比较长,中间别手贱关窗口,下完一次之后后续就都是增量编译了。

2.2 DevToys:能离线干活的工具箱

以前我处理 JSON 格式化、Base64 编解码、时间戳换算、正则测试,都是打开浏览器找在线工具。后来发现两个问题:在线页面良莠不齐,带广告就算了,有的还会把粘贴内容回传到服务器;另外一断网就抓瞎,飞机上想调个数据都没辙。DevToys 是个本地开源的开发者工具箱,把这类高频操作全收进一个窗口里,目前覆盖了 JSON 格式化/压缩、Hash 计算(MD5/SHA 系列)、UUID 生成、随机密码、正则测试、Base64 编解码、时间戳转换、JWT 解码器、色彩转换等常用功能。

Windows 版的使用体验最好,安装后可以直接用系统搜索呼出,我习惯给它设一个全局快捷键。举一个实际工作的例子:后端同事扔过来一串带大量转义符的 JSON 日志,直接在 DevToys 里格式化,几秒钟就能看清字段结构;再比如调试接口签名时,需要快速算一个文件的 MD5,也不用去开 PowerShell 敲命令了。对我来说它最大的价值是"离线可用",调试敏感数据时不需要担心数据经过第三方服务。

2.3 Hoppscotch:浏览器里的 API 调试台

如果你还在用 Postman 那一套,我想提一个更轻的选择:Hoppscotch,开源、免登录,打开网页就能用,也支持 Docker 自己部署一台。它支持 REST、GraphQL、WebSocket、SSE 等多种协议。我选它的理由很实际:不需要注册账号,界面响应快,适合快速验证接口,而不是管理一个团队的接口文档体系。

举个例子,我用 Flask 写了个本地接口POST /api/v1/order,想在 Hoppscotch 里验证下参数。操作很简单:选 POST,填http://127.0.0.1:5000/api/v1/order,在 Body 里填 JSON,比如{"user_id": 1001, "sku": "A-233"},再设置Content-Type: application/json,点发送就能看到响应。它还支持把 base_url 存到环境变量里,切换本地、测试环境时只改一处。我特别想强调一个细节:本地开发经常遇到跨域问题,如果是后端没配 CORS 导致请求发不出去,先确认是不是跨域,而不是怀疑工具本身。

2.4 DBeaver CE:一个客户端管所有数据库

数据库客户端是我见过"工具认知差"最严重的领域,很多人还在用 Navicat 的破解版,其实 DBeaver Community Edition 完全免费,而且能力一点不弱。它最大的特点是:一个软件统一管理 MySQL、PostgreSQL、SQLite、MariaDB、SQL Server,甚至通过扩展支持 HBase(配合 Phoenix 驱动)等大数据组件。我以前要装三个客户端,现在开一个 DBeaver 就够了。

社区版自带绝大多数常见数据库驱动,首次连接时它会提示下载驱动,点允许即可。查询结果可以直接按列过滤、导出 Excel/CSV,还能生成简单的 ER 图。排查慢查询时特别好用:连接 PostgreSQL 后,直接在查询窗口执行EXPLAIN ANALYZE SELECT ...,看执行计划比在命令行里贴日志舒服得多。唯一要留意的是 Oracle 这类数据库的驱动需要手动放 jar,但那是少数情况,常规开发用不到。

2.5 Tabby:终端这块的省心之选

终端模拟器我换过好几个,从 Cmder 到 Windows Terminal,最后常驻的是 Tabby。它跨平台,开箱即有标签页、主题、Vim 模式,还内置了 SSH 客户端和 SFTP 文件管理。很多开发者会忽略一点:做后端部署时,日常一半操作是连服务器看日志、传文件,如果终端和 SFTP 分开两个工具,效率其实是打折的。Tabby 把这两件事合在了一起,连接信息可以分组保存,双击就连;文件传输直接在侧边栏拖拽,不用再单独开一个 FileZilla。

我配合项目用得很舒服的一点是,它可以保存多个常用服务器的 SSH 会话,密码存到系统钥匙串里,既方便又不至于明文外泄。平时写本地命令、跑 git 操作、看日志,我都默认开 Tabby。有一点需要注意:保存密码虽方便,但在公用电脑上不要开启记住密码功能,这属于基本安全意识。

3. 第二梯队:平时不起眼,关键时刻很顶用

第二梯队是我私藏更狠的五款,它们不是每天都会打开,但一旦遇到对应场景,基本属于"救命"级别。这五款也最符合"查无此人"的气质,因为你在常规的"开发工具推荐"文章里很少看到它们。

3.1 RunJS:随手写随手跑的 JS 草稿纸

RunJS 是一个桌面端的 JavaScript/TypeScript 即写即跑工具。左边写代码,右边立刻显示结果,支持部分 Node 环境的 API。这个工具的定位非常纯粹:适合验证算法题、测试某个数组方法的行为、调试一段正则、跑一跑简单的数据转换脚本。我经常用它配合 AI Agent 开发调试,把模型返回的 JSON 结构拿过来,先写一小段 JS 提取字段,确认逻辑无误再贴回项目里。

对比浏览器 F12 控制台,RunJS 的优势是代码一直留在窗口里,不会因为切换标签页就清掉历史;对比新建 HTML 文件又省去开服务器这一步。平时我遇到"这个Array.prototype.map到底返回什么"这类小疑问,随手敲进去回车就有答案。官方提供了 Windows 和 macOS 版本,下载安装就能用,没有乱七八糟的授权注册。

3.2 jless:专门用来"读" JSON 的命令行工具

后端排查问题时,jq是处理 JSON 的利器,但它偏重筛选和转换。有时候我只想快速查看一个大 JSON 文件,比如几十 MB 的日志或接口返回,这时候jq打印出来仍然是乌泱泱一片。jless 是 Rust 写的一个命令行 JSON 阅读器,它的定位就是"给人读 JSON":打开文件后进入全屏交互界面,可以用方向键折叠、展开、搜索,还能按路径定位到具体字段。

用法很简单:curl http://127.0.0.1:8000/api/debug | jless或者直接jless response.json。在做 Vue3 前端项目联调时,接口返回结构嵌套很深,我经常用它把响应文件打开,按t折叠子对象,一层层找到自己要的字段。安装也不麻烦,直接下载二进制,或者用cargo install jless。第一次配置终端颜色主题时要留意:jless 依赖终端真彩色支持,老旧的配色方案会看不清内容,好在默认配置已经够用。

3.3 RapidEE:Windows 环境变量的救命稻草

Windows 自带的环境变量编辑器这么多年没什么改进,PATH 一堆路径挤在一个小输入框里,想改中间某一项,稍不留意就把整行弄乱。RapidEE 是我在配 Java、Maven、Node 环境时发现的救星。它把 PATH 之类的环境变量以列表形式展示,支持随意排序、逐条编辑、备份为 .reg 文件,操作逻辑就像在 Excel 里整理数据一样直观。

我至今记得一次教训:新装 OpenJDK 后手动改 PATH,不小心把原本的%JAVA_HOME%\bin覆盖了,导致项目构建直接报错,排查了半小时才发现是环境变量的问题。用 RapidEE 之后,这类操作基本不可能出错,因为改动前可以先导出备份,恢复也只是双击文件的事。虽然它只在 Windows 上能用,但对 Windows 开发者来说,这绝对是日程表上值得专门装一下的小工具。

3.4 Scoop:Windows 下的正经包管理器

Linux 有 apt、Homebrew,macOS 有 Homebrew,Windows 长期以来缺一个"绿色安装、不污染系统"的包管理方案。Scoop 就是答案。它把软件安装到用户目录,不写注册表,不弹右键菜单,所有可执行文件通过 shim 自动加入 PATH。我用它管理开发工具链:scoop install git nodejs-lts python openjdk一条命令装齐,以后升级也方便。

第一次安装 Scoop 需要打开 PowerShell 执行两条命令,先放开当前用户的执行策略:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser irm get.scoop.sh | iex

装完还可以添加官方维护的扩展库scoop bucket add extras,里面收录了非常多常用软件。做 Chrome 插件开发、Vue3 前端项目时,我经常靠它快速在不同 Node 版本之间切换(通过scoop install nodejs-lts和versionsbucket 实现)。相比另一个包管理器 chocolatey,Scoop 不需要管理员权限,这一点在公司的受限电脑上特别有优势。

3.5 Caddy:一条配置搞定本地多站点域名

最后压轴的是 Caddy,一个用 Go 写的轻量 Web 服务器,配置极简,最出名的是自动 HTTPS。开发场景下我最常用它的能力是:把本机多个端口统一映射到自定义域名上。日常开发经常遇到这个问题:本地同时跑着 Vue3 前端的 Vite 开发服务器(端口 5173)和 Django 后端(端口 8000),要么记端口,要么因为 Cookie 的作用域问题反复联调。Caddy 可以用一行配置解决:

web.local.test { reverse_proxy localhost:5173 } api.local.test { reverse_proxy localhost:8000 }

配合系统 hosts 文件把两个域名指向127.0.0.1,然后运行caddy run,就拥有了一套"本地域名环境"。前端代码里请求地址写http://api.local.test,后端 Cookie 也能按域名隔离。Caddy 会自动为本地域名生成本地 CA 证书,浏览器第一次访问会提示证书不受信任,把 Caddy 生成的根证书导入系统信任列表后,就会自动跳转到 HTTPS,不用自己配证书。

这个工具解决的不只是快捷方式的问题:它让"本地开发更接近线上环境",因为域名、HTTPS、同源策略这些线上要素全都有了。如果你需要把宿主机流量引到虚拟机里的服务,思路也一样,只是 hosts 里指向虚拟机 IP。整体配置非常简单,完全不需要去改复杂的 Nginx 配置。

4. 三个实战场景把工具串起来

单看工具列表容易忘,我用三个真实场景把它们串起来。这三个场景分别来自前端/后端联调、数据库排查和嵌入式开发,基本上覆盖了我日常工作的主要类型。

4.1 场景一:本机多项目多端口开发环境

背景:一台开发机,同时跑两个项目,一个 Vue3 前端(Vite 开发服务器在 5173),一个 Django 后端(8000)。以前每次联调都要在地址栏里手动敲端口,端口记错是常态,更烦的是前端如果直接请求http://127.0.0.1:8000,还会引发浏览器跨域限制,以及 Cookie 不知道挂在哪个域名下的问题。

我把方案改成了 Caddy + hosts 的本地域名环境:

  1. 用管理员权限打开C:\Windows\System32\drivers\etc\hosts,追加两行:
    127.0.0.1 web.local.test 127.0.0.1 api.local.test
  2. 在项目根目录创建一个Caddyfile,内容就是前面那段配置,分别把 5173 和 8000 引到两个域名。
  3. 运行caddy run,打开浏览器访问https://web.local.test,前端就正常加载了。
  4. 前端请求地址统一改成https://api.local.test,后端启动时把允许的 Host/Origin 配置到api.local.test即可。

这个方案最直接的好处是:不用再记端口,跨域问题因为同源少了一半,而且以后新项目只要往 Caddyfile 里加一段再刷新 hosts,就又多一个独立域名。我还在公司电脑的虚拟机里搭过类似环境:宿主机 hosts 指向虚拟机 IP,虚拟机里跑 Caddy,架构不变。踩过的坑:hosts 文件修改后不生效,多半是没清浏览器 DNS 缓存,或者 hosts 文件保存时编码不对,用记事本另存为 ANSI 或 UTF-8 都行,关键是别带 BOM。

4.2 场景二:接口联调与慢查询排查

背景:网约车这类大型 App 后端联调时,接口返回结构复杂,数据库出现慢查询,线上日志里的 JSON 又特别大。这种时候工具链协同起来效率极高。

流程是这样的:先用 Hoppscotch 把接口请求重新发一遍,拿到原始 JSON,从响应里发现某个字段格式与预期不符;然后把响应粘贴到 DevToys 里格式化,仔细看清嵌套结构;怀疑是查询慢导致的,打开 DBeaver 连接 PostgreSQL,把可疑 SQL 加EXPLAIN ANALYZE执行,定位到缺索引;线上日志里的 JSON 则直接下载后用 jless 打开,折叠筛选关键路径。如果需要验证字段处理逻辑,就在 RunJS 里写一小段脚本跑一下,确认无误再改代码。

这一套流程下来,最大的感受是"上下文不中断":以前每个环节要切换不同网站、不同工具,经常因为界面不统一找不到刚才的数据。现在统一用本地工具,数据复制来复制去也不怕泄露。特别提醒:把生产环境的 JSON 或查询结果粘贴到在线格式化工具,本身就是一种风险行为,DevToys 的存在让我彻底戒掉了这个习惯。

4.3 场景三:从零创建一个 STM32F103C8T6 工程模板

背景:需要新建一个基于标准库开发的 STM32F103C8T6 工程模板,平时用 Keil 的人可能已经熟练了,但对于新环境、新电脑,我推荐直接用 PlatformIO。步骤非常清晰:

  1. 在 VSCode 里装 PlatformIO IDE 插件。
  2. 新建项目,Board 选genericSTM32F103C8,Framework 选STM32Cube,Location 选好目录。
  3. 修改platformio.ini配置好upload_protocol = stlink,方便用 ST-Link 下载。
  4. 写点灯逻辑:
#include "main.h" GPIO_InitTypeDef GPIO_InitStruct = {0}; int main(void) { HAL_Init(); __HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); while (1) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); HAL_Delay(200); } }
  1. 点编译,然后点上传,ST-Link 接好 SWD 四根线(SWDIO、SWCLK、GND、3V3)即可。

用 PlatformIO 创建工程模板的另一重价值在于:它把"工程配置"变成了可复制的文本,而不是存在某个 IDE 的隐藏配置里。以后团队里任何人接手,拉代码、装插件、编译,几分钟就能跑起来,不需要再手把手教"Keil 里怎么选芯片型号"。

5. 常见问题与避坑实录

工具好用,但装和用的过程总有意外。我把这几年实际遇到的问题整理成一份清单,方便大家排查。

5.1 安装阶段最容易踩的坑

先说 Scoop。执行irm get.scoop.sh | iex前,务必先确认 PowerShell 版本不低于 5.1,并设置好执行策略,否则会报错。另外,Scoop 默认安装源偶尔下载慢,不要同时开一堆下载任务抢带宽,多试几次即可;装完工具后要重启终端,shim 才会刷新 PATH。

再说 PlatformIO。首次编译下载工具链慢是最常见的劝退点,遇到这种情况请检查网络,并保持 VSCode 窗口不要关闭。如果下载中断,重试一次通常能续上。还有一点,ST-Link 驱动没装好时,点击上传会一直卡在 "Waiting for the device" 状态,先检查设备管理器里有没有识别到 ST-Link,再检查接线。

DBeaver 连接数据库时如果提示下载驱动失败,大多数是网络问题,多试几次;个别老版本驱动可能要从厂商官网下载 jar 放入客户端的drivers目录。Caddy 这边,本地 HTTPS 证书不受信任是新手最容易慌的问题,处理方式就是导入根证书,别跳过警告硬访问,否则后续请求全被浏览器拦截。

5.2 使用阶段的真实教训

Hoppscotch 这类浏览器工具,最典型的坑是本地接口跨域。你的 Flask 或 Django 接口如果没配 CORS,前端调试无论换什么工具都发不出去。建议本地后端统一允许来自本机开发域名的请求,或者直接在开发配置里开放 CORS,但上线前记得关掉。

Tabby 的坑更多来自习惯:保存了服务器密码之后,一定要留意日志输出里会不会把密码打到屏幕上。有些命令会把环境变量里的敏感信息打印出来,这不怪工具,但会带来不必要的风险。RunJS 这边,虽然它支持部分 Node API,但毕竟不是完整 Node 环境,遇到依赖第三方包的功能,还是要在终端跑真实项目验证。

DevToys 的某些功能在 macOS 上阉割得比较厉害,比如截图 OCR 在 Windows 上有、Mac 上没有,装之前可以先查一下平台支持列表。jless 的交互模式对鼠标党不太友好,但它本来就是给键盘流设计的,方向键加一个f就能完成大部分浏览操作。

5.3 关于免费工具的安全提醒

免费工具最危险的地方不在工具本身,而在下载渠道。我强烈建议只从 GitHub Releases、官网或系统自带的包管理器安装,不要从第三方下载站搜"破解版""绿色版",那才是被投毒的重灾区。Scoop 之所以值得用,很大程度正因为它的软件包都从官方源拉取,能有效避开这类坑。

另外,"免费"不等于"可以随便用"。比如 DBeaver CE 虽然免费,但它是基于 GPL 协议的,做商用二次分发时要小心协议约束;PlatformIO 社区版同样有自己的开放核心授权边界。个人开发使用基本没有顾虑,但如果你在公司内部做工具链的二次开发,建议先读一遍对应工具的 License 再动手。

5.4 我的工具管理习惯

最后分享一个长期维持的习惯:我每季度会花半天时间整理一次开发工具链,把不用的书签清掉,把新发现的小工具做个记录。这个清单不是固定不变的,工具会迭代,需求也会变。但我保留了两个原则:能用本地工具解决的不放浏览器,能用命令行解决的不装图形界面软件。这两个原则帮我省掉了无数"切换窗口找工具"的时间。

说实话,工具这东西不在多,在于"你在关键节点想得起它"。这 10 个工具里,我最舍不得换掉的反而是 DevToys 和 jless,因为它们平时低调、关键时刻真能救命。希望这份清单能给你带来哪怕一个省时间的瞬间,那就值了。

返回列表