TINKER:半年开发 100+ 插件的桌面工具箱
前言
从 2023 年开始,我陆续基于 Electron 开发了不少桌面应用,包括 VIVY、AYA、ECHO、REM 等。几年下来,我一直有很多小工具的想法想要实现,但它们每一个都不适合做成独立的 Electron 应用:体积实在太大了,一个简单的小工具打包出来动辄上百兆。
于是我意识到最优解是把所有小工具打包到一个应用里:只需承担一次 Electron 的体积开销,就能容纳无数个工具,而且集中在一起也更容易发布和维护。这就是 TINKER 的由来。

AI 辅助开发
2025 年 AI 辅助编程开始普及,我也在日常开发中用了起来,但主要局限于搜索问题和代码补全。小工具类的开发天然适合 AI:功能边界清晰、逻辑独立、上下文不复杂。所以从 TINKER 项目一开始,我就决定加大 AI 辅助的力度,尽量少手写代码。
当然也不是完全抛开人力。所有 AI 生成的代码都会进行架构 review,所有外部依赖都由人工亲自选型,同时我为项目制定了统一的技术规范和约束,保证了插件间的一致性,也让 AI 在明确边界内发挥最大效率。
需要强调的是,AI 在这里更像是一个高效的编码助手,而不是最终交付者。每个插件都经过我反复打磨,在日常使用中持续改进,代码整洁可维护,随时可以进行人工接手。所有内置插件遵循统一的视觉风格,支持暗黑与浅色模式,也做了中英双语适配。
得益于插件化架构和 AI 辅助,每个插件的实际开发时间通常只需要几个小时。半年下来,利用空闲时间就积累了 100+ 个插件。
插件体系
架构设计
常用的依赖如 React 由应用内置共享,每个插件本身只包含业务逻辑代码,占据的空间非常小,这也是能做到 60+ 插件而安装包体积仍然控制在 100 多兆的关键。同时,一些常用的功能(如文件对话框、主题切换、右键菜单等)封装成统一的接口供外部插件调用。
外部插件通过 npm 进行管理,任何人都可以发布自己的插件,不进行任何审核,当然也不会内置到应用内或做推荐。这样既降低了生态的门槛,也避免了维护审核流程的负担。
用 npm 写插件的体验跟写普通 Web 页面一样,甚至更简单:不需要部署到线上,本地开发完成后直接发布到 npm 即可,升级也跟正常发布 npm 包一样。TINKER 会自动扫描全局安装的以 tinker- 开头的 npm 包并尝试加载,包括 @xxx/tinker- 这样的 scoped 包也同样支持。
插件分类
插件整体分为三类:
一、内置插件
随应用一起打包发布,开箱即用,目前有 60+ 个,涵盖开发、设计、办公等多个场景,如 JSON 编辑器、正则表达式测试、代码格式化、图片压缩、Markdown 编辑器、终端、剪贴板管理、番茄时钟等。






二、官方插件
官方插件库中维护了 20+ 个插件,主要是体积较大或需要联网才能使用的工具,如翻译、OCR、天气、地图、GBA 模拟器等。


安装方式:
npm i -g tinker-translate三、第三方封装插件
对优秀的开源 Web 应用进行封装,让它们可以在 TINKER 中离线使用,如 Draw.io、Excalidraw、Hoppscotch、Blockbench 等。

安装方式:
npm i -g tinker-drawio完整的插件列表可以查看官方文档。
日常使用
我自己已经是 TINKER 的重度用户了,待办事项、Hosts 切换、进程清理、磁盘空间清理这些是我每天都会用到的插件。日常使用中,可以通过快捷键唤起搜索框,输入关键词后回车即可快速打开插件,也可以通过命令行指定插件名直接启动,非常高效。
因为是自己写的工具,使用过程中遇到任何不顺手的地方都可以直接修正改进,这也是自己造轮子最大的好处:每个插件都在日常使用中不断打磨,越用越顺手。另一个意外收获是,电脑上那些零散的小应用和只为某个功能安装的大型软件,现在都可以卸掉了,腾出了不少磁盘空间。
结语
TINKER 是一个开源免费的工具箱应用,目前仍在持续开发中,支持 Windows、macOS、Linux 三端,未来会不断新增和改进插件。如果你也经常需要使用各种小工具,不妨下载试试,说不定能成为你日常工作中的得力助手。