背景
为了方便给别人推荐和分享一些自己觉得很好用的工具,但是每个人的工作方法是不一样的,每个人都有自己的工作方式,如果直接扔一个软件名字,对方可能并不能理解我为什么会用这款软件,容易有被迫“装逼”之嫌,所以写这篇文章来尝试更好的解释这件事情。
本文只记录在工作日经常使用的软件。休息日或者而假期的时候使用场景比较摆烂就先不列。
每天都使用的软件

下面列出的是天天都用的软件,大家可能都比较熟悉了
浏览器家族
- Arc - 处于仅维护状态,最近很少有新功能,仍然保持每周五定时更新一下,刷一下存在感。喜欢的功能是
Space
能够隔离不同的使用场景,space 可以关联不同的浏览器 profile。还提供了快捷键方便切换。目前分类 5 个 space:生活、工作、投资、搞 Emacs/Screeps 等兴趣爱好、自己的小项目,有利于专注 - Chrome - 纯粹拿来做开发测试用的,建了多个 profile 做业务账户隔离,比如账户 A、账户 B 分别用两套账户密码登录。这个用法跟 Arc 的 Space 还不一样,无法相互替代。例如我可以在 Chrome 上开 10 个 Profile,但是显然不能在 Arc 上开 10 个 Space。
- Firefox - 拿来本地写博客文章的时候预览排版效果的,至于为什么要三个浏览器一起用,可能 是为了隔离不同的使用逻辑,例如 Chrome 也能多开 profile 但是是用来隔离不同的测试账号的,而 arc 浏览器多开 space 是为了区分使用场景
编程工具家族
- WebStorm - 做公司项目的时候还得是用 WebStorm 才有安全感,重构、快速操作面板、find usage 等功能都深得我心。
- 微信开发者工具 - 又卡又慢 bug 还多,但是没办法微信小程序开发只能用他。这时候硬件升级优化方法就派上用场了,果断在 2024 年升级了 64G 内存的电脑 后 再卡的开发工具都能游刃有余。
- Visual Studio Code - 日常用 WebStorm 和 Emacs 比较多,但是 VSCode 的 AI 支持还是离不开,因此日常实际上是同一个工程同时在 WebStorm、Emacs、VSCode、Cursor 上打开的
- Cursor - 同上,AI Agent 打开工具了,最近计费方式经常变
- Emacs - 属于赛博玩具,折腾配置是工作之余的乐趣之一。比如最近想整一个生成虚拟用户名的功能,可以直接写一段函数然后绑上快捷键,甚至可以直接
M-x 函数名
来执行刚写的那段函数。可定制能力比 VSCode 强多了 - Sublime Text - 如果需要一个响应快速,稳定的编辑器,非它莫属
日程/办公
- 系统 Calendar - 拿来做个人的需求排期和会议安排,周视图和月视图刚好可以看到周任务和月度项目计划
- Finder - 属于系统级别,离不开的应用,相信我工作中迟早会打开它的
- Dingtalk 钉钉 - 工作环境如此,很多人虽然讨厌钉钉,觉得属于压迫打工人的工具,不过其功能毕竟是为了职场准备的,比拿微信甚至 QQ 来办公好多了
- Slack - 个人项目使用,可以将各类通知工具接进来,缺点是需要翻墙,当然说不定这是优点呢
- Xmind - 公司内写思维导图,整理需求,写各种文档大纲,自己学习时整理一下目录提炼关键点很好用
- Shottr - 互联网时代人人都需要一款趁手的截图+标注软件。我以前用过印象笔记的
Skitch
,CleanShot X,跨平台切开源的 flameshot, 最后停在了 Shottr
生活质量
- Kitty - 今年从 iTerm2 切换到了 Kitty,原因是 iTerm2 有次更新破坏了 locale 配置,从此每次启动都要让我选一次 locale 选项,忍无可忍就换了
- DeepSeek - 自己出用 Pake 封装的桌面版本
- Anki - 强身健脑工具,防止老年痴呆。并且结合我写的
anki-mcp-server
可以一边在 vibe coding 的时候让 AI 把当前使用的知识点写成卡片随身复习 - Dash - AI 时代还是得有一个在线文档才比较安心,偶尔会用一下
- KeePassXC - 离线的密码管理器。我本来以为使用密码软件的人是杞人忧天,直到我的常用密码出现在社工库里,😭
- Draft - 手机版本的 Draft 的桌面版本,数据互通,因此可以做到在手机上写一段话,然后在 macOS 上接着编辑。这是 org-mode 没法在手机上用的一种替代方法
- 欧路词典 - 翻译工具,特色是可以加载第三方词典文件,记得当时欧路词典也非常早就接入了 LLM ,可能是 AI 对翻译的冲击比较大引起危机感
- 系统资源监控 - 现在这台电脑很少会关注资源占用量,但是一旦发现卡顿 就说明有程序在作妖,条件反射性的打开资源监控 -> CPU 使用率
常驻 macOS 状态栏的软件
很多软件我并没有直接用它的桌面窗口,而是会点击屏幕顶部的状态栏中的图标。但是默认状态下 macOS 的状态栏很容易被软件占满。尤其是在没有外接屏幕的情况下,会被各种应用的菜单占据宝贵的状态栏空间,留给需要的软件的空间只有红框框中的一点点。

但是在大屏幕上,如果把全部的图标都放出来,又显得很杂乱,日常很多不需要经常关注的 App 图标跟经常要用的 App 混杂在一起。
我使用 Bartender 来隐藏大部分不需要一直显示出来的图标。这是整理过后的结果:

持续显示在状态栏上的图标是我需要日常关注的
- 欧路词典 - 截图取词,鼠标取词。不过最近更多使用 Alfred 作为入口来调用欧路词典
- Surge - 用快速切换网络
- Keyboard Maestro - 快捷启动一些工具
- Just Focus - 功能恰到好处的番茄钟软件,可以自定义番茄时长,并且番茄结束时是全屏提示,而不仅仅是在标题栏小声叫唤,有效打断继续工作的欲望。当然如果你说被打断了影响工作效率怎么办,如果你觉得一个番茄时间太短,说明你得任务规划太粗了,或者可以把默认的 25 分钟工作 5 分钟休息的番茄调整成 45 分钟工作 15 分钟休息
- Bartender - 体验最好的状态栏图标管理工具。不得不说苹果的简陋让这类第三方 App 有了大展拳脚的机会
- 系统电量 - 因为我有电量焦虑,必须要能快速看到电量才觉得安心。而且也担心苹果孱弱的电池长期插着电源会鼓包,因此用 battery 软件限制了 80%的充电上限
- 系统 Wi-Fi 状态 - 有时候需要快速切换 Wi-Fi,或者在咖啡馆里工作时需要连接上自己的热点,就需要能看到 Wi-Fi 入口
- 输入法状态提示 - 最近给 squirrel 输入法添加了语言模型,增强长句造词能力,但是也可能导致稳定性不佳,切换输入法时灵时不灵的,故此必须将输入法状态显示出来,方便点鼠须管的重新部署按钮
- 系统时间日期 - 这个是必须的,而且隐藏调或者该显示格式会影响一些软件的工作
显示在 Bartender 菜单里的软件:
- KeePassXC
- Karabiner-Elements
- Hammerspoon - 给应用窗口分配快捷键,方便一键切换到指定应用,不需要一直按
⌘ + Tab
来切换应用了,根据 Wifi 来帮我自动将 Mac 静音或者调整音量到 60%,以及每天从 Bing 拉取一张好看的壁纸。 - Alfred
- PopClip
- 系统自带的天气 App
- Dropbox
- 亮度控制软件
- Ollama
- Finicky
- 系统电池电量
- KeepingYouAwake
- Draft
- Shottr
- 系统音量
- 微信
偶尔使用但是比较重要的
- balenaetcher - 镜像烧录 拿来制作系统安装盘挺好用的。属于平常很久不用,想用的时候还想不起名字,没了他又不行的软件. 比如在处理 Miyoo Mini Plus 黑屏时需要刷机
想尝试一番但是久久没有用上的
想玩 3D 打印,但是要自己会建模才有意思。收罗了几个软件想要试试看:
Shapr3D
商业建模软件,有 iPad 和 macOS 版本,免费版有工程数量限制。
优点是可视化操作界面,可以在平板上用 Apple Pencil 来建模。
FreeCAD
开源免费的跨平台 3D 建模软件,代码在 GitHub 上并且更新频繁,不过操作界面比较复杂。
相比其他软件的优点是免费没有功能限制,并且维护频率比较高,非常有活力

OpenSCAD
使用代码来进行 3D 建模,不过软件有两年没更新了,没有适配 Apple silicon 芯片。
这款软件的特点是可以通过编写代码来进行建模,缺点是这软件是单线程软件,如果电脑性能不够强或者建模比较复杂的话,在生成预览的时候会比较慢。
以下是一个使用代码生成金字塔的示例
for (y=[0:2:20]) {
translate([0,0,y+1])
cube([30-2*y,30-2*y,2], true);
}

其他建模软件
TinkerCAD
网页版本的建模软件,支持 3D 设计、电路模拟
Tinkercad 是一款面向三维设计、电子电路和编码的免费 Web 应用程序,深受全球 7500 多万用户的信赖。

这是一张示例图片
浅谈我的软件选择原则
使用单一软件的特定功能,并加以组合
不同的软件往往会有有自己的设计风格和使用方式,即使是同一个用途的应用的设计逻辑也并不相同,比如 Cursor 和 Cline 的设计原则就截然不同。
但是我们是为了专注于能够为自己带来回报的事情,一种可行的方法是在合适的场景里使用合适的工具,并将他们组合起来完成工作。
正如我综合使用多个浏览器的原因是他们能够恰好契合我的需求,并且开箱即用。
我需要将属于公司的工作和属于我个人的事情分割开来,因此我在 ARC 浏览器中创建了生活 Space 和工作 Space:
工作 Space

只放只属于公司的业务和项目,例如各种内部系统、工具、业务需求等等
生活 Space

因为经常打开很多 Tab,为了给 Tab 留出空间,特意减少了一级收藏夹的数量。
并且默认将链接用生活 Space 打开。这样当我想要忙公司项目的时候就只需要按 ~⌘ + 2 ~ 切换到工作 Space,当前所有我跟进的项目将都在侧边栏罗列出来了,涉及到的文档、需求、工具都根据项目放到一起
封装变化频繁的部分
很多事项需要自定义脚本才能完成,当需求来临时再去找工具容易陷入浏览网站的时间黑洞。
例如注册某个网站时需要生成一个用户名,这时候简单写一个脚本即可完成,也可以去搜一个在线名称搜索工具。但是也有可能在线工具并不满足需求。
好在 AI 帮了大忙,可以直接让 AI 写一段脚本。问题是这段代码存到哪里呢?放在哪里运行呢?这段代码如何跟系统的其他部分结合使用呢?
我的选择是将这些需要自定义,经常变化的部分放到 Emacs 里。
例如上面说的生成用户名的小工具函数:
(defvar fake-data--first-names
'("alex" "brian" "chris" "david" "eric" "frank" "george" "henry" "ian" "jack"
"kate" "lisa" "mary" "nancy" "olivia" "pam" "quincy" "rose" "sarah" "tina")
"List of common English first names.")
(defvar fake-data--last-names
'("adams" "brown" "clark" "davis" "evans" "foster" "green" "harris" "irwin"
"johnson" "king" "lee" "miller" "nelson" "owen" "parker" "quinn" "roberts"
"smith" "taylor")
"List of common English last names.")
(defun fake-data-username (&optional with-numbers with-underscore)
"Generate a random username combining first and last names.
When WITH-NUMBERS is non-nil, append random 1-3 digits.
When WITH-UNDERSCORE is non-nil, separate names with underscore."
(let* ((first (seq-random-elt fake-data--first-names))
(last (seq-random-elt fake-data--last-names))
(separator (if with-underscore "_" ""))
(numbers (if with-numbers (number-to-string (random 999)) "")))
(concat first separator last numbers)))
(defun fake-data-username-copy (&optional with-numbers with-underscore)
"Generate a username and copy it to kill-ring.
Accepts same arguments as `fake-data-username'."
(interactive)
(let ((username (fake-data-username with-numbers with-underscore)))
(kill-new username)
(message "Copied username: %s" username)))
这段代码中,函数 fake-data-username-copy
执行流程如下:
- 从预置的姓、名列表各自随机提取一个单词
- 然后根据设置决定是否要使用下划线连接,是否要在末尾加上随机数字
- 将结果存到粘贴板里
使用方法:
既可以在 Scratch 里直接执行以下函数
;; 生成随机用户名
(fake-data-username t t)
;; 生成随即用户名并且存到粘贴板上
(fake-data-username-copy t t)
也可以在任意 buffer 里执行 M+x fake-data-username-copy
即将一个随机生成的用户名放到粘贴板里,可以说是一处声明,到处使用。
此时 Emacs 在这里是一种将多种工具集成到一个体系里的载体。不管什么工具,只要整合到了 Emacs 中,就可以通过 emacs-lisp 来调用,进而绑定到快捷键,甚至组合成一个 major-mode 或者 minor-mode,最后可以封装成 package 分享给别人。
最后。根据我的经验来看,定期去维护一下工具箱,得到稳定的配置后就可以去做学习、工作等重要的事情了,来来回回折腾和尝试新工具可能会导致工作流程不稳定,得不偿失。
不过只要变更一下记账方法,把攒 Emacs 配置当作一项娱乐活动,立马就觉得时间投入非常划算了🤣