1869 字
9 分钟
Why Cipher Tools?(Cipher Tools 的一些 QA)

前言#

挖坑数月 Cipher Tools,是时候跟大伙聊聊 Cipher Tools 的一些事情了!

开了个新分类叫开发之路,毕竟未来不仅使用 Qt,也许也转 Rust 了呢!😄

Cipher Tools 的前世今生#

Cipher Tools,是我在今年的 10 月跟我聊天朋友突然想到的一个项目,当时我朋友使用易语言开发了一个成熟且简单的业余网络工具 ── NetInfoChecker 网络综合查询器,最初我并没有想着重构它,毕竟我觉得功能很全,而且我当时也用的是 Windows,而我突然转向 Linux 过后,想用它的软件,结果发现问题还是有点多了,故直接戏谑的跟他说:

我干脆用 Qt 给你重构罢了,跨平台是趋势,也是优势。

然而他也觉得是个好事,跨平台什么的也无妨,而且新的技术栈对未来的支持也会更好,而且做起来了可以一起贡献,所以我就直接以 Yumeyo's Army Knife(他的昵称,和这个软件的一个“功能”) 名义开了 GitHub、CNB 项目。而它还有另外一个名字:

NetInfoChecker 网络综合查询器 Qt
取自他的软件原名,开发技术栈

然后觉得名字太长了,故简写成 Army Knife。这也是用到去年年末的名字。

而改名叫 Cipher Tools,则是在年末的时候,我朋友已经打算用 dotNET4 WinForm C# 开发新版的 NetInfoChecker X,而这时候开始,我将该软件的一些宣发简化成灵感取自于此软件。而和原项目 NetInfoChecker 分道扬镳了。

他目前考虑的依旧是 Windows Only 且考虑 Windows 7 老爷机,而我不需要,在历史包袱上面,我并不担心,但深怕自己写成了历史包袱。(比如就在前一阵子, NJU 和 USTC 测速直接调用网页的函数叫 USTC_SPD

关于窗口(截图于昨天)

而我确实太喜欢《崩坏:星穹铁道》的 Cipher(赛飞儿)了,当然也是玩瓦的 Cipher 玩的Cipher

也确实,需要一个易懂的名字,就叫这个名字了。

至于工具箱,为什么我也要在这里面写上版本号呢?

感谢我这个猪脑,git 时不时因为变基而导致炸了,所以就这时候开始,项目分离,是我的一个想法。

名字取自于要乐奈(Rana),啊没错还是个猫系女孩,也正好对上了主程序的开发进度。目前暂时停摆,原因是还没开发工具箱依赖 Qt 的地方(如 Ping、自由查询、WOL、NAT 检测)。而测速和多出口测试,已经靠 QtWebEngine 摆烂解决了,直接并入主程序主线。

为什么使用 Qt#

很简单,我有一定的 C++ 基础,而且也在初中时期用过一阵子 Qt,这也是我立马选择 Qt 作为这个软件的技术栈原因之一。

而使用 Qt Widget 的原因是因为可视化设计,不用敲前端代码,且这个应用只需要跑在 Win/Linux/Mac 上面,而非移动端。

如果我需要跑在移动端的话,也许我现在就应该用 Flutter 或 QML 了。这俩技术栈更现代。

而不选择使用 Rust 的原因是因为 Rust GUI 前端技术栈要么是我厌恶的 GNOME Toolkit,要么是 WebView 前端。作为一个能在一个客户端内完成的事,浏览器只能作为我的负责部分懒得做,或者懒得专门做个 GUI 的地方(如测速、多出口)

为什么使用 MIT 开源许可协议#

很简单,Qt 虽然是 GNU General Public License/GNU Lesser General Public License v3 双协议开源的东西,但我对 GPLv3 这魔怔般的开源许可感到恶心。

GPLv2,用 Linus.T 的话就是“以牙还牙的协议”,而 GPLv3,对整个开源社区来说则是 RMS 和 FSF 意图将自由软件的定义锁死在自己手中。RMS 甚至将 GPLv3 开源许可协议“更政治化”。

曾经我的应用是 LGPL2.1, 然后跟随 Qt 升级到 LGPL3,因为我害怕未来可能会静态编译,结果想了想。

OK,大概率是没必要的,Windows 我只要尊重新平台,Linux 我只需要给 Qt6.5 编译一个就行了,而目前的主要贡献者有且只有我一个,所以也可以不用看贡献者社区的投票。

所以我直接换成了 MIT 协议,更为宽松,允许各位修改后闭源,我相信各位复制了我的代码一定改的比我更好,而改完后怎么样,怎么分发,是你的自由。

虽然作为个人项目来说,不排除未来会用 GPLv2 + 各种 lib 的协议作为开源协议。因为 GPLv2 再怎么烂,也比 GPLv3 好,而且万一这个项目以后的计划防白嫖呢?

当然目前最好还是保持开源+贡献上游!这是使开源社区能够长期繁荣的路径!

是否引用 NetInfoChecker 相关的代码#

答案显而易见,没有。虽然原作者曾经发过我一份 .e 文件,但是我已经删了,原因是:感觉不如从零开始写。

所以借助了 GPT、qwen-coder,我边靠它们写这个工具,边学习,但是在不久的将来,我希望是以个人的力量去写,而 AI 辅助,而不是只靠 AI ,然后我来辅助修改。

关于 VibeCoding#

诚然,我承认这个程序大多数确实是 VibeCoding 的,原因在于,我其实对 Qt 的一些库,还有面向对象的写法并不是很懂,我对 C++ 的认知停留在使用简单的函数进行简单的计算,输入输出,所以目前来说我还需要依赖 VibeCoding,不过一般来说,所有的注释都是本人写的。

我也知道 VibeCoding 会在前期带来很大的优势,而到了中后期的维护十分的困难,所以目前来说我也在学 Qt 和 QML 开发。

未来程序规划#

Cipher Tools 1.x(Stable)#

Codename Rana_Alpha -> Taki_Stable_RollingDev -> Burnice_Stable

  • 完成多 API 选择和日志功能开关(设置,计划于 Rana 的最后一个版本完成)
  • Linux 环境下,实现尊重 XDG 目录标准(计划于 Alice 分支中实现,设置可选)
  • 加入代理 IP 的 ISP + ASN 检测(计划于 Alice 分支中实现)
  • RanaToolkit 工具箱模块化(名字由 ChatGPT 而取,待定)
    • NAT 检测 (GateEye 门关之眼,计划在 Alice 分支整合进 CipherTools)
    • Ping (Echo 回音之钥,计划在 Alice 分支整合进 CipherTools)
    • Wake On Lan(Awaken 苏醒之音,计划在 Alice 分支整合进 CipherTools)
    • 自由查询(Origin 原初之印,计划在 Burnice 分支整合进 CipherTools)

Cipher Tools 2.x(Next)#

Codename:Burnice_Stable -> Tomori_QMLNext_RollingDev -> Vivian_QMLNext_Stable

  • 使软件技术栈更加现代化 ── 使用 QML 和现代的 UI 库进行美化
  • i18n 国际化(至少需要有简中、繁中、英语)
  • 工具箱新功能
    • 设备信息(DeviceEye,基于 Windows WMI 和 Linux 内置命令)
    • DNS 污染检测 (Beacon 指路之炬)
    • Traceroute 路由检测(Trace 寻径之镜)
    • 多出口 - QML (Clairvoyance)

Fin#

事已至此,大多问题都已经说完了,大伙也可以来到 Cipher Tools 的文档页 进行软件的查看,与此同时,在博客关于页面和文档页面,均有该项目的传送门。

欢迎大家贡献!!!

Ne0W0r1d
20260108

Why Cipher Tools?(Cipher Tools 的一些 QA)
https://ne0w0r1d.top/posts/why-ciphertools/
作者
Ne0W0r1d 新界
发布于
2026-01-08
许可协议
CC BY-NC-SA 4.0