在 Windows 上启用多个输入法时能隐藏输入法图标或输入法状态图标吗?
同时有小狼毫和日语输入法时图标: [中 小狼毫] 或 [英 小狼毫]
[あ 日本語] 或 [A 日本語]
是否能在启用多个输入法时隐藏输入法图标?
或者像 macOS 那样不显示左侧的 [中] 、 [英] 、 [あ] 、 [A] 输入法状态图标吗?
![]()
在 ROG XBOX 掌机 X 刚发布的时候,我们曾打趣地说:
任天堂 Switch 2 杀手来了!
现在体验过一段时间 ROG XBOX 掌机 X 后,我想这话至少说对了一半——也可以说,可惜只说对了一半。
![]()
从游戏机硬件的角度上看,ROG XBOX 掌机 X 在现阶段已经无可挑剔——
纸面上的参数配置已经是游戏掌机的天花板,但更重要的是 XBOX 为其定制的这套手柄,几乎是把充盈饱满且反馈感十足的 XBOX 手柄,搬到了掌机上来。这与索尼的 PlayStation Portal 串流游戏机不谋而合,都是试图在移动设备上还原主机端的操控体验——而且确实做到了。
![]()
ROG XBOX 掌机 X 的屏幕只有 7 英寸,很好控制了机身大小。尽管手柄握把硕大,实际长度却几乎跟 Switch 2 一致,只是厚度略宽。换言之,如果你的随身包能放下 Switch 2,那么稍微腾挪一下,大概率也能把 ROG XBOX 掌机 X 塞进去。
![]()
得益于良好的配重设计,这台掌机拿在手里并不会觉得沉,反倒是由于掌心有了良好的支撑,即便是玩一些高强度的动作游戏也不容易觉得酸,这点比 Switch 2 要强得多,相信这也是未来所有高性能掌机——譬如传闻中的索尼 PS6 掌机,会考虑的路线。
![]()
性能表现方面,ROG XBOX 掌机 X 的 SoC Z2 Extreme 在 3D Mark 的 Time Spy 测试中跑出了 3664 分,相较 Z1 Extreme 约有 10%-15% 左右的性能提升,尤其是在低功耗下表现更佳。插电状态下,可以打开 TDP 35W 的 TM h re w qurbo 模式,换取更强劲的性能——可以说,这台掌机的上限和下限都比前代有所提升。
![]()
![]()
更重要的是实际游戏表现——
在高性能和帧生成的加持下,ROG XBOX 掌机 X 几乎可以在中低画质下,运行所有主流的 3A 游戏,就连对配置要求较高的《黑神话 悟空》《怪物猎人 荒野》也不在话下,开启帧生成可以在中画质 1080P 稳定跑到 40 帧。而前几年的 3A 大作譬如《赛博朋克 2077》《荒野大镖客 救赎 2》等画质标杆,更是能跑出 100 帧以上的流畅帧数。
![]()
续航,是最让我惊喜的部分——ROG XBOX 掌机 X 配备了 80WHrs 的大电池,几乎是 Switch 2 的四倍,即便是在高功率下玩游戏,也能跑到 2-3 小时的续航。
至于《空洞骑士 丝之歌》《黑帝斯 2》这样的独立游戏,只需要 13W 的低功耗就能流畅运行,足足可以玩上 5-6 小时,非常安逸。
![]()
值得一提的是,ROG XBOX 掌机 X 的散热和噪声控制也达到了同类产品的高水准——高负载下没噪音,持续运行不烫手,这些基础体验,对游戏机来说也相当加分。
可以说,硬件层面,ROG XBOX 掌机 X 几乎做对了所有事,也证明了 Windows 掌机的硬件天花板,事实上已经足够高了。
![]()
如果说 XBOX 是这台掌机的长板,那么 Windows 就是它无法回避的短板。
ROG XBOX 掌机 X 运行完整版 Windows 11 系统,但支持 XBOX 全屏模式——这是微软专为游戏场景定制的新界面。
在解锁登录界面进入系统后,有一个全屏运行的 XBOX 界面,对手柄进行了专门适配,并且会自动抓取安装在主机上所有平台的游戏,打开游戏后跳转到对应平台运行。
玩家还可以通过 XBOX 键快速切换任务,并一键唤出紧凑界面的 GameBar,打开奥创中心、进行快速设置或者截图录屏等操作。
![]()
![]()
另一个好消息是,ROG XBOX 掌机 X 终于有了像样的系统电源管理(基于 Modern Standby 改进的超级待机模式),按下电源键能让主机和手柄都稳定进入休眠,再按一下就能快速启动,待机一整晚也可以马上回到游戏,非常方便。待机功耗表现也很不错,一晚上掉电不到 5%。
![]()
但除此之外,这套系统和 Windows 并无太大差别,这意味着玩家可以享受到 Windows 系统出色的兼容性,但也要容忍 Windows 带来的各种各样的冗余和 bug——大部分情况下,重启就能解决问题。
对于一台游戏机来说,需要频繁重启算不上什么好事。
运行完整版 Windows 还有一大问题,就是在游戏之外的体验上,譬如——游戏的启动响应、下载速度、操作效率等,这些无关游戏但关乎体验的地方,都达不到专用游戏主机的水准。
快捷键就是一个典型例子。
由于这台掌机没有键盘,于是很多快捷键没办法映射到键盘上,而新增的 XBOX 按键也没有在系统层面上打通快捷指令,于是就会遇到各种按键打架的情况——
譬如在 Steam 大屏幕模式下,XBOX 按键既是菜单键又能唤出 GameBar 键,结果就是按键冲突,要打开菜单只能触屏;又譬如,在 PC 运行游戏时,有好几组原生快捷键都能截图,可在 XBOX 掌机上,甚至没法在 GameBar 里设置截图快捷键,因为没有键盘。
![]()
当然,这些问题都可以通过给 Windows 系统装软件、打补丁来解决,这对 Win 掌机玩家来说已经是家常便饭。只是每当需要我耐着性子来折腾时,ROG XBOX 掌机 X 就不再是游戏机,只是一台用起来不太利索的电脑。
ROG 和 XBOX 的合作,理应通过试图完善的硬件和优化的界面,去弥补 Windows 作为游戏平台的先天不足——他们做了很多示范,但还远远不够。
作为一台 6000 元档的旗舰游戏机,ROG XBOX 掌机 X 解决了 Win 掌机能效比差、操作繁琐的问题,可仍然是上手门槛颇高的游戏硬件。
![]()
同价位产品没解决的问题,官方下场的 XBOX 掌机也没拿出让人信服的解决方案;而与 Switch 2、Steam Deck 甚至 ROG Ally 相比,不算便宜的售价将会是一道不小的门槛。
给 Win 掌机下定论,总是充满矛盾的,而这份矛盾在 ROG XBOX 掌机 X 上达到了一个峰值——
作为一个评测者,我很喜欢 XBOX 掌机在软硬件层面带来的各色解决方案,这确实给未来的高性能掌机做了示范;但作为一名玩家,XBOX 掌机距离我心目中的成熟游戏机仍有差距。
这是手感性能俱佳的游戏硬件,也是最自由最便利的游戏平台,却搭载了最臃肿最繁琐的操作系统——这是现阶段 Windows 高性能掌机的最优解,但它依然不是那台最好的游戏掌机。
说到底,PC 是通用设备,而游戏机是专业设备,游戏机的本质,是打开就能玩。
![]()
#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。
![]()
近期发现一款免费、开源的广告屏蔽软件「Zen」,和 Zen Browser 网页浏览器同名,不过是完全不一样的工具。
Zen 更像是知名软件 AdGuard 免费替代方案,两者运作方式很类似,不仅仅在浏览器屏蔽广告,任何会通过网络连接的应用程序都能经由 Zen 进行广告屏蔽,随时保护用户免于安全和隐私的侵扰。
Zen 是强大的桌面应用程序,在用户浏览网络时自动屏蔽广告、追踪器或任何隐藏的威胁,本身相当快速、轻量化、无任何干扰,不用再去寻找各种浏览器扩展,只要 Zen 就能轻松做到!
如同 AdGaurd 它也自带强大的过滤器,支持各种类型的屏蔽规则,例如广告、隐私、恶意软件、36 个地区的屏蔽列表和设置清单等,也能将自己惯用的屏蔽清单加入设置规则,Zen 具有中文在内等多国语言,设计很简单,没有太多复杂或难懂的技术性选项。
依照网站说明,Zen 来自一个小团队,尊重用户隐私,不追踪或是收集任何资料,如果你正在寻找「系统层级」的广告屏蔽工具,它就是可以考虑的选择。
网站名称:Zen
网站链接:https://zenprivacy.net/ 〔GitHub〕
进入 Zen 官方网站后往下找到「下载」链接,可以找到 Windows、macOS 和 Linux 版本,分别支持 x64、ARM64 两种不同的处理器类型。
![]()
举例来说我下载的是 Zen for macOS〔ARM64〕,下载、运行后将它拖曳到应用程序资料夹即可使用。
![]()
进入 Zen 主画面看起来像下图,点击下方「Start」按钮启动保护。
![]()
要注意的是第一次使用 Zen 会要求安装根证书〔Root Certificate〕,这是让 Zen 拦截、修改 HTTPS 请求的必须项目,证书是在本机生成,不会离开用户设备,大家熟悉的 AdGuard 也是使用相同机制。
![]()
接着先切换到「设置」页面后将语言调整为中文,有兴趣的朋友也可以去协助翻译一下。
![]()
在过滤列表可以启用、停止指定的过滤器,包含各种类型,包括通用、广告、隐私、恶意软件、地区性和设置等,没有特别的需求就直接维持默认值即可,若有需要启动或是停用过滤器必须先将 Zen 防护功能关闭〔点击下方停止〕才能继续。
![]()
想从其他广告屏蔽工具转换到 Zen 也可以将设置规则导入,非常方便。
![]()
从 Zen「主页」就能看到网络流量被屏蔽、封锁的情形,包括存取方法、网址、来源、过滤器名称和规则等,当使用上有发现任何问题时也可以从这里找到过滤器,将指定的封锁路径关掉。
![]()
虽然说 Zen 是免费、开源广告屏蔽工具,完全不用花费任何一毛钱就能使用,而且也自带不少筛选器规则,在系统端进行过滤、屏蔽的好处是不用再寻找各种广告屏蔽扩展,只要一个应用程序就能搞定!除了浏览器以外,其他软件也都能有效。

在 Pixel 设备上打开 Google app 的新闻链接,或在 Windows 设备上通过开始菜单访问网络搜索结果,这两种情况都存在一个共同点:系统会忽略你的默认浏览器设置,强行使用自家的浏览器(Chrome 或 Edge)进行访问。
对此,似乎大家并没有太大反应,正如人们对欧盟地区用户在数字生活中享有选择而感到无奈似的。
今天我们就来探讨一个问题:如何成为一名数字意义上的欧盟地区 Windows 用户。
受《数字市场法案》影响,微软在欧盟地区针对用户做出了很多让步,包括:
关于 Windows 的地区设置,你可以在「系统设置 > 时间和语言 > 语言和区域」中找到几个选项:
![]()
不过,今天的重点是一个新加入的、不可更改的选项——设备设置区域。将其更改为欧盟地区是个不错的切入点。
![]()
我最初想到的是去年推出的 Edge 重定向工具 MSEdgeRedirect,但不久后发现该模式在 2024 年 3 月后将失效,原因是微软的 UCPD 驱动3。
![]()
UCPD(用户选择守护驱动)利用内置的黑白名单机制,屏蔽非微软签名的进程,阻止第三方工具对系统的修改。这不仅影响到一些文件协议的处理,而且更难被禁用。微软还设置了一个名为 UCPD velocity 的自动化任务,每次用户登录时都会恢复被禁用的系统文件和设置。
![]()
因此,想要使用 MSEdgeRedirect 开启「欧盟模式」的用户,首先可以按照 SetUserFTA 开发者的思路摆脱微软的干预。
彻底解决方案:直接删除 UCPD 驱动。以管理员权限运行 CMD,执行命令 sc.exe delete UCPD,然后重启。需要注意的是,该驱动可能会在系统更新后复活。
温和解决方案:禁用 UCPD 驱动,以管理员权限在 CMD 下执行:
完成后,便可以正常使用 MSEdgeRedirect 修改地区设置。
![]()
成功更改设备设置区域后,不仅能享受之前提到的「权益」,更能在各类设置中拥有更多自由,成为一个选择上的欧洲人、商店里的美国人、文本习惯上的中国人——这份灵活,值得我们珍惜。
![]()
参考链接:

前几天最近随着 Claude Code 这个命令行 AI 代码工具的火爆,谷歌也耐不住寂寞推出了自己的同类产品 Gemini CLI,而且完全免费,非常顶。
![]()
下面会教你用 Gemini CLI 实现哪些能力:
首先他们是没有界面的,所有的操作都是在终端以命令行的方式展示。
然后就是也是 Agents 可以自动执行任务处理本地文件,同时内置了非常多的工具,比如谷歌搜索、阅读文件、查找文件、搜索文字、写入文件、保存记忆等,你输入 /tools 然后回车就可以让他列出目前支持的工具。
![]()
另外 Gemini CLI 也是支持 MCP 的,你可以安装其他的 MCP 工具帮助模型扩充上下文。
很多朋友说命令行是不是很复杂啊,我不会编程是不是会很难用。
其实并没有,如果你的网络环境正常,能够正常登录 Gemini CLI 的话,跟使用 Cursor 没有本质区别。
因为核心交互的时候还是主要为提示词输入框,命令行又不用你写,Gemini 写就行。
![]()
从这里开始我所有的演示都基于 Mac OS 的自带终端进行,Windows 大部分操作都是通用的,但是可能出问题概率比 Mac 复杂。
首先要做的第一步就是进入到我们的启动台,搜索终端两个字,搜到之后打开。
![]()
这时候你就看到一个空白界面里面写了些你看不懂的字,不要担心。
![]()
这里我建议我们想好要进行的任务之后,新建一个文件夹把需要的任务素材扔进去,然后按住 option 按键鼠标右键选择“将 XXXX 文件夹拷贝为路径名称”,这时候你就快速获得了这个文件夹的路径。
![]()
然后我们回到我们的终端窗口,输入 cd + 空格 + 你刚才复制的路径,接下来你终端的所有操作都只会影响这个文件夹的内容,不用担心把电脑搞坏。
![]()
到这一步我们终于开始安装 Gemini CLI 了,非常简单,你只需要输入下面的内容然后回车就行。
安装成功你就会看到这个界面,应该会先让你选择命令行的颜色主题,然后让你选择登录方式。
这里需要注意:终端的操作大部分时间需要用上下左右方向键来操作选项,选中之后按回车确认。
你只需要选择一个自己喜欢的主题之后,选择正常的谷歌账号登录,在拉起网页登录后关掉就行。
我这个这里已经登录了,所以没有这些选项,然后你就能看到提示词输入框了。
![]()
恭喜你到这里,你已经完成了 Gemini 的安装。
由于用的 NPX 的安装方式,所以你以后每次关掉终端重新使用 Gemini CLI 的时候都需要输入开始的那个命令,不过不用登录了,直接就能用。
另一种方法是输入下面这个命令,但是对于不会编程的人来说很麻烦,启动就是少输入点东西,输入 Gemini 就能启动。
最后由于命令行本身都是英文的,可能很多人会望而却步,这个时候你可以装个 Bob 这个翻译软件,支持划词翻译,看不懂的选项直接选中划词翻译就行。
![]()
装好之后我们可以来点基础用法了。
由于 Gemini 可以看到你的文件并且操作,而且它还有生成能力,本身模型还是多模态的,所以即使只用本身的工具也可以有很多用法。
首先是 Gemini CLI 本身支持谷歌搜索,你可以让他搜索指定内容给你写成文档,也可以对你本身的文档进行编辑。
当然搜索工具经常会限额,这个有点恶心,比如让他搜索歸藏的信息并且整理一个介绍文档。
![]()
你也可以让他分析你保存在本地的文章之后进行改写,生成新的文章。
比如我这里就让他把 Karpathy 的软件 3.0 文章改写成适合发布的博客文章,同时生成对应的推特发布版本,也可以对于会议总结之类的文档进行分析和处理。
![]()
记得我之前写的用 Curosr 这种 IDE 帮助分析 Obsidian ,把 Obsidian 当做本地知识库的方法吗,Gemini CLI 也可以,甚至更加强大。
你可以找到你的 Obsidian 文件夹打开之后启动 Gemini CLI,然后让 Gemini CLI 查找相关的内容。
比如我这里就让他检索我所有的剪藏文件,找到 MCP 相关的文章,然后给我生成一个带反向链接的《MCP 剪藏内容索引》文档,可以看到他完成的很好。
每个无序列表都有文件标题以及文章的总结,最后还有链接可以直达那个文章。
![]()
提到反向链接了,就不得不提 Obsidian 的一个知识图谱的功能,它可以把所有有反向链接的相关文档都链接起来,形成你自己的网状笔记网络,方便你学习和回顾。
但是反向链接需要你自己手动加,大部分人都没这个毅力,现在有了 Gemini CLI 问题解决了,可以让他帮你给你文件夹中的相关文档加反向链接。
不过这个需要的时间比较长,如果内容多的话可能得等一段时间。
由于本身 Gemini CLI 是多模态的的,所以你的图片也可以让他帮忙处理。
比如我打开了一个全是图片的文件夹,里面的图片名字乱七八糟的,这时候就可以让他分析图片内容之后根据图片内容给图片重新命名。
![]()
再重新命名之后我们也不能浪费他分析的图片内容。
我们都知道在训练图像模型或者 Lora 的时候需要对图像进行标注,大部分训练工具都是把标注放在一个跟图片命名一样的文本文件里,现在我们就可以让 Gemini CLI 来做这件事了。
可以看到他执行的非常完美,以往这些你还得找对应的工具,而且不好自定义要求,现在提示词就行。
![]()
Gemini CLI 除了可以读取文件和修改文件外也是可以控制系统设置的。
比如我们就可以写好自己日常对于软件和系统设置在不同工作时间的喜好,需要的时候一键完成所有操作的更改。
这里我就让他给我关掉浏览器,然后打开 Obsidian,降低系统音量,直接进入工作模式。
更进一步让他把操作写成脚本,之后你就可以直接双击脚本完成系统设置了。
我们肯定也有很多时候桌面或者文件没有整理乱七八糟。
这个时候就可以让 Gemini CLI 新建文件夹进行分类和整理。
但是这里得注意,不要让他整理过大的过于重要的文件夹,不然误删了就痛苦了。
这里我就让他把刚才的图像和标注文件新建了两个文件夹分别整理了。
![]()
上面都是些基本用法,你最近可能也看到了一些。
但是我发现结合一些本地软件,Gemini CLI 能实现对各种文件更加高级的处理,比如视频转 gif、youtube 视频下载、加水印、文档格式转换等。
这些就非常牛皮了,而且我们日常内容创作大部分都非常需要。
前面我们有了文档了,但是很多时候演示的时候总不能真给人看 Markdown 文档吧,能不能生成 PPT 呢?
可以的,朋友,必须可以,比如我这里就把前面我那个 MCP 索引文档的内容直接转换为 PPT 了。
这个依赖一个叫 Slidev 的项目,它可以用类似 Markdown 文档的格式将内容变成带有丰富样式的 PPT。
你不需要知道这个项目的细节,直接用我下面的提示词生成文件之后,复制文件到这个页面(https://stackblitz.com/github/slidevjs/new?file=slides.md)预览就行。
上面的 Slidev 不需要本地安装直接预览就行,接下来我们介绍一些需要本地安装的项目,这些本地的软件,非常强大,但是由于本身他们是没有界面的,阻碍的很多用户使用。
但是有了 Gemini 之后一切都解决了,提示词可以直接转换为驱动他们的命令行,也可以用提示词直接安装他们,你直接用就行。
首先先介绍一下 ffmpeg 这个项目,给予他你可以实现非常强的视频编辑能力,理论上剪映之类的视频编辑软件都是基于这个完成的。
你可以对本地的视频进行拼接、剪辑、增加文字、转换格式、转换分辨率、增加音乐,基本上你能想到的视频编辑能力他都能做到。
首先我们需要大概你需要处理视频的的文件夹,然后启动 Gemini CLI 第一个命令是让他安装 Homebrew。
![]()
然后安装完成后,让他用 Homebrew 帮你安装 ffmpeg。
![]()
看到没,跟网页哪些乱七八糟的要求都没关系,你只需要说两句话,就全部安装了。
然后我们就可以爽用了,先给我们指定的视频加个水印试试。
可以看到新的视频右上角果然有了一个水印,这种言出法随的感觉谁不喜欢,你不需要了解原理,你就只需要知道所有的视频编辑他都能帮你搞定。
![]()
然后我想要给视频配乐也可以,你只需要告诉他视频文件和音乐文件的名字就行,我甚至让他给音乐加上了淡入和淡出。
他先是获取了一下视频的时长,然后就开始操作了,然后搞定了,非常完美,严丝合缝,淡入淡出也加上了,可以看剪映界面预览的频谱。
![]()
我们很多时候需要把视频转换为序列帧,然后拿其中一帧进行处理,或者处理所有的帧,以前你是不是还得到处找这种工具,而且转换效果不一定好。
Gemini CLI 一句话就能搞定,处理的又快又好,而且节省了用网页工具上传下载的时间。
![]()
另一个常见的任务就是视频转 gif,尤其公众号有 10 个视频的限制,很多时候迫不得已得转成 gif 发布。
Gemini 捕捉到了高品质这个关键词还制作了调色板保证颜色还原度,最后处理的非常完美。
![]()
像 ffmpeg 这种宝藏项目还有很多,比如 yt-dlp 这个项目跟 ffmpeg 配合几乎可以下载你能想到的所有视频平台的视频。
我们还是可以让 Gemini CLI 帮我们安装 yt-dlp 这个项目就行。
然后直接提供视频链接他就会帮你下载,甚至可以批量下载多个视频或者一起连封面和视频一起下载,再也不需要忍受那些工具的垃圾网速了。
![]()
处理视频我们有 ffmpeg 这种项目,当然图片也有。
ImageMagick 是一个极其强大的工具集,你可以用它来转换格式、缩放、裁剪、旋转、添加滤镜、组合图片等等。
依然是老一套,先让 Gemini 帮我们安装
![]()
先来一个常见任务,我们设计师做外包经常用,在没结款之前给甲方低分辨率和带水印的图片,现在就可以直接批量完成。
这里我让他把所有图片宽边调整为 800 PX,然后统一加上带“内部资料”文字的水印。
中文的水印有些问题,后来改成英文就 OK 了,而且出错之后他自己开始用多模态能力检查修改后的图像了,发现 10% 不透明度的文字不明显,又自己重新改了一下,太聪明了。
![]()
然后再来一个常见的图像拼接需求,这种在媒体上发消息的时候经常需要,尤其是推特。
搞得不错,这几张图比例不同,所以没有对齐,可以在命令上加上统一比例这种要求就行。
![]()
文档格式转换也是常见的需求,相当多的公司工作文档还是 word,很多时候我发过去 .md 文件那边都不知道怎么办。
首先还是让 Gemini CLI 帮我们安装。
这个时候我们就可以利用 Pandoc 这个项目进行各种文档格式之间的互相转换,当然批量转换也是可以的。
可以看到转的很好,Markdown 的一些基本格式也都迁移了,不管是加粗还是无序列表有序列表。
![]()
好了教程到这里就结束了。
你可以用 Gemini CLI 控制这些已经非常成熟的命令行项目,基本上你所有的需求都能找到对应的项目。
不是只有 MCP 才能做 Agent,这些传统工具在有了 LLM 加持之后会更加强大。
看到这里,你可能会突然意识到:原来那些让我们望而却步的专业工具,其实一直都在那里等着我们。
史蒂夫·乔布斯说过的一句话:”技术应该是隐形的。” 今天的 Gemini CLI,正是让那些强大的命令行工具变得”隐形”——你不需要理解它们的工作原理,只需要说出你的需求。
更重要的是,这种改变不仅仅是效率的提升,而是创作门槛的彻底消失。
所以,如果你还在犹豫要不要试试 Gemini CLI,我想说:别让”我不会编程”成为你探索新世界的借口。 因为在这个新世界里,你需要的不是编程能力,而是想象力。
那些曾经高高在上的专业工具,现在都在静静等待着你的一句话。而你要做的,就是勇敢地说出你的需求。
因为最好的工具,是让你忘记它是工具的工具。
按:本文原作者为 Chris Wellons,最初于 2024 年 11 月 10 日发表在其个人网站 null program 上,并声明归属公有领域。我们据此制作译文,以便中文读者阅读。
本文在 Hacker News 发表后的相关讨论也非常值得一读,有兴趣的朋友可前往查阅。
过去一个月以来,我一直在研究日新月异的大语言模型(Large Language Models,下称 LLM),尝试一窥其中奥妙。如今,一台树莓派就能运行比初版 ChatGPT(2022 年 11 月版本)还聪明的 LLM,换成一台普通的台式电脑或者笔记本电脑的话,运行更聪明的 AI 也不在话下。除了方便以外,本地化运行的 LLM 隐私有保障、数据不联网、不需要注册、也没有诸多限制。大模型正以前所未有的速度发展,现有的知识可能用不了几个月就过时了。我写这篇文章是为了记录我在上手 LLM 时积累的的实用经验和心得,希望这些必备知识能够帮你少走弯路。不过归根结底我也只是一个 LLM 菜鸟,文章中未必有什么独到之处,而且有些地方我可能也没弄明白。一想到一年之后这篇文章大概率就会成为历史的注脚,激动之余我自然也会有些惶恐。
就让我这个刚入门的菜鸟带你们入个门吧:LLM 是一种基于神经网络的技术;2022 年,人们在训练 LLM 进行「聊天」式对话方面取得了突破性进展,使得用户能够与这些人工智能自然地互动。这些模型不仅可以轻松通过图灵测试,与真人对话几乎无异,还展现出令人惊叹的创造力。如果这是你第一次接触这种大模型,感受到的不安可能一连几天都挥之不去。回想一下上次你买电脑的时候,你大概没想过人可以和机器有来有回地对话吧。
这让我回想起上世纪 90 年代桌面电脑快速革新的时候,新买的电脑刚刚送到家里就感觉已经过时了。而到如今,LLM 的发展速度更是快得出奇,几乎每周都有新变化,所以对于那些一年前发布的信息我基本上看都不看。想要掌握最新的资讯的话,可以关注 Reddit 的 LocalLLaMa 板块,但是这里的帖子个个吹得天花乱坠,所以记得别轻信其中的一面之词。
正是因为曾经经历过服务关闭、变更、或者因为其他原因导致我的服务器实例被停用的情况,我才对厂商绑定格外警惕。换新的服务提供商对我来说并非无法接受,但得让我能继续用下去才行。正因如此,过去几年内我对 LLM 并未抱有太大兴趣,因为那些所谓「封闭」的模型只能作为第三方提供的一项服务而存在,几乎涉及了所有上述的锁定问题,其中就包括模型的静默劣化(silent degradation)。直到某天,我了解到可以将接近顶尖的模型运行在自己的设备上,从而彻底摆脱这些束缚,这才让我改变了对 LLM 的看法。
这篇文章讲的是 LLM 的运行,并不涉及针对模型的微调和训练。而且这篇文章也只涉及文本,并不涉及图像、声音,或者其他任何「多模态」能力,因为就我来说还用不太到这些。
具体而言,想要在你自己的设备上运行 LLM,你需要的是分别是软件和模型。
llama.cpp 令人惊叹,也是我的唯一选择。原因在于,在基本的 CPU 推理这方面,也就是使用 CPU 而不是 GPU 来产生 token 时,llama.cpp 仅需一个 C++ 工具链,不像其他大多数方案那般都需要繁琐的 Python 配置,这点让它在众多可选项中脱颖而出。在 Windows 系统上,只需要一个 5MB 大小的 llama-server.exe 文件,不需要其他运行时依赖(runtime dependency)。更重要的是,由于 EXE 和 GGUF(模型)这两个关键文件都采用内存映射方式加载,所以很有可能即便过了几十年,你也可以在未来某个版本的 Windows 上以同样的方式运行同样的 LLM,且同样不需要额外配置。
我就直说了,我喜欢它是因为官方提供的 Windows 版本编译程序用的是 w64devkit。这些人真的是有点品味的!话虽如此,如果能用 GPU 做推理的话,就别用 CPU 做推理。虽然在台式或笔记本电脑上对 10B1 左右参数的模型的效果还不错,但是速度还是会更慢。我的主要用例并不是使用 w64devkit 构建的,因为我用的是 CUDA 来推理,而这需要用到 MSVC2 工具链。为了好玩,我曾把 llama.cpp 移植到了 Windows XP 上,并且成功在一台 2008 年的笔记本电脑上运行了一个 360M 参数的模型。能够在那台老旧的笔记本上运行这项技术的感觉真的太神奇了,毕竟在那会儿,这项技术的价值恐怕得值个几十亿美元吧。
GPU 推理的瓶颈在于显示内存(VRAM,下称显存)。因为这些模型真的相当大,而为了能够使用更大的模型,处理更长的上下文窗口(context window),对内存的要求也就更高。模型越大就越智能,上下文窗口也就越长,一次性可以处理的信息也就更多。VRAM 不足 8GB 的时候,使用 GPU 推理就不划算了。如果遇到「GPU Poor」的情况,就请用 CPU 来推理,这样的好处一是更简单,二是更容易上手。
llama.cpp 中提供了很多工具,但是本文只重点讲其中的 llama-server。它本质上就是一个 HTTP 服务器(默认端口为 8080),并提供了一个聊天 UI,以及供程序(包括其他用户界面)使用的 API。一个典型的调用命令如下:
上下文大小(context size)是将输入和输出计算在内,一个 LLM 一次可以处理的最大 token 数量。上下文 token 的数量通常在 8K 到 128K 之间,具体取决于模型的 tokenizer3。普通英语文本使用 wc -w 来统计的话,每个词大约 1.6 个 token。如果模型支持较大的上下文,内存可能会先一步告急。此时应该把上下文大小调低一些,比如 --ctx-size $((1<<13))(即 8K 个 token)。
我还没完全理解 flash attention 是做什么的,也不知道为什么 --flash-attn 或者 -fa 不是默认开启的(也许是因为精度较低?),但你无论如何都应该加上它,因为启用它可以减少内存需求,即便会降低精度也值了。
如果服务器成功地启动了,可以尝试访问(http://localhost:8080/)来先试一试。虽然你还是得先有个模型才可以。
Hugging Face(下称 HF)被誉为「LLM 界的 GitHub」,这是因为它提供了卓越的模型托管服务:无论是数 GB 的「小」模型,还是动辄数百 GB 的「大」模型,HF 都免费托管,获得此殊荣可谓实至名归。此外,大多数模型无需注册即可下载(个别例外),也就是说,你随时都可以下载我接下来提到的模型,自己试试。如此慷慨的服务让我十分震撼,以至于连我这种平日精打细算的人也在几天后开通了 Pro 账号。
如果你现在去 HF 逛一逛的话,你可能想问:「这里什么都有,那我到底要选哪个呢?」我一个月也和你有同样的疑问。对于 llama.cpp 来说,搜索 GGUF 即可。虽说 GGUF 并不是模型在创建或存储时的原生格式4,但你只需要找名字里面带有「GGUF」的仓库(repository)的话就好。这些仓库通常都是由更新频繁、助人为乐的第三方「量化器」(quantizer)提供的。
(官方文档里也没有明确解释「GGUF」究竟是什么意思,习惯了就好了。这就是走在技术最前沿的感觉:无论是什么,要么需要费很大劲才能找到,要么干脆就没有。你可能会想把 LLM 运行起来之后问问它,但我很快就会告诉你这样也行不通。至少据我所知,「GGUF」目前没有官方定义(更新:「U」代表「统一」(Unified)),但其他三个字母的含义仍未确定5。)
虽然以 Meta 最强模型命名的 llama.cpp 确实表现不俗,但并非我的最爱。最新版本是 Llama 3.2,但现在6能用在 llama.cpp 上的模型只有只有约 10 亿参数的 1B 和约 30 亿参数的 3B 版本。这两个模型有点太小了,实用性较为有限,而且只要你不是在树莓派上运行,即便用的是 CPU 推理,也可以有更好的选择,比如说 Llama 3.1 8B(如果你有至少 24GB 显存的话你没准还能试试 Llama 3.1 70B)。
搜 Llama 3.1 8B 时你会发现两个版本,其中一个标注了「instruct」,而另一个没有。instruct 表示该模型经过训练,能够依据指令完成任务,也就是用来聊天的,一般来说你要的就是这个。而没有标注的版本是「基础」(base)模型,只能续写文本(从技术上讲,instruct 模型同样也只是文本补全而已,但这个我们稍后会详细讨论)。如果基础模型也能标上「base」就好了,但是因为某些路径依赖问题,通常都不会这样去标注。
在 instruct 模型的「文件」一列中你是找不到 GGUF 文件的,如果你想要下载这些模型,你需要注册一个账号然后同意社区许可。这时我们回到搜索栏,在后面加上 GGUF,找相对应的 GGUF 模型就可以了:例如 bartowski/Meta-Llama-3.1-8B-Instruct-GGUF。bartowski 更新频繁,而且名声在外,这不但是 llama.cpp 专用的格式,而且无需注册即可下载。
你现在可以在「文件」页面里看到许多 GGUF 格式的文件了,这些是同一模型的不同量化版本。原始模型使用的是 bfloat16 张量,但如果只是为了把模型跑起来,我们可以舍弃大部分精度,同时将损失控制在最小。模型确实会变笨一点,懂得少一点;但是这样做可以大幅减少其所需资源。推荐的最多的是用 Q4_K_M 这种 4 位量化的版本,从我个人体验来看,这确实是个不错的选择。一般来说,一个大模型的 4 位量化比一个小模型的 8 位量化效果更好。一旦你把基本概念搞清楚了,就可以尝试不同的量化方式,看看哪种最适合你!
不同的模型在训练时有不同的权衡,所以没有哪个模型是最优的,在 GPU 性能不足时更是如此。我的电脑装了一块 8GB 显存的 RTX 3050 Ti,所以这方面的限制也影响了我对模型的选择。对于大约 10B 参数的模型,运行起来相对轻松;而若是想测试有着 30B 参数的模型的能力的话则稍显力不从心;运行 70B 参数的模型时我就会用第三方托管的方式了。以下我列出的「t/s」数据都是在这个系统上运行 4 位量化模型得到的。
表中省略了模型名字中的 instruct 字样,除非另有说明,否则这些列出的都是 instruct 模型。部分模型,至少在 LLM 能开源的范围内,是真正的开源项目,我已在后面标明了它们的许可证。其余的模型则对使用和分发都有限制。
这是 Mistral AI 和英伟达合作的模型(代号 Nemo),是我用过的最为均衡的 10B 模型,同时也是我的首选。其推理速度从 30 t/s 起步,令人十分舒适。它的强项在于写作和校对,并且在代码审查方面几乎能与 70B 的模型相媲美。虽然该模型训练的上下文长度为 128K,但是根据我的实际使用经验,其有效的上下文长度更接近 16K。
模型名称中「2407」表示它的发布日期是 2024 年 7 月,我个人很支持将日期写入版本号的这种命名方式,这样一来,你就知道这个模型的知识更新日期和技术水平,找起来也方便。如果不是这样做,版本管理就是一团糟。AI 公司搞不懂版本管理,就像开源项目不会起名字一样。
这是由阿里云推出的 Qwen 模型,其在不同规模的表现都超出了我的预期。14B 模型的推理速度从 11 t/s 起步,能力与 Mistral Nemo 相当。如果我的硬件跑得动 72B 模型的话,我可能就会选这个了,但目前我都是通过 Hugging Face 的推理 API 来试用这个模型。Qwen 同样提供了一个 32B 的版本,但是因为我的硬件跑不动,所以我也没花太多时间研究它。
谷歌推出的模型很受欢迎,大概是因为它有趣的特性吧。对我来说,2B 模型很适合快速翻译。和谷歌翻译相比,尽管 LLM 更耗费资源,并且如果遇到了它觉得冒犯的文本就罢工,像是科幻电影一样——但是在 LLM 面前,谷歌翻译就像是老古董了,更不必提 LLM 还可以离线运行。在我的翻译脚本中,我给它一段带有 HTML 标记的文本,并且要求 Gemma 保留标记,它执行得简直完美!9B 模型效果更好但会慢一些,我会选择用它来翻译自己的消息。
微软的特色是使用合成数据训练。而结果是,该模型在测试中表现不错,但在实际应用中效果不如预期。对我来说,它的强项是文档评估。因为它是一个 4B 模型,我曾加载过最多 40K token 的文档,并成功地获取到了准确的摘要和数据列表。
Hugging Face 可不仅仅是托管模型这么简单,就同等体量的模型而言,他们自家的 360M 模型同样异常出色。我那台赛扬处理器、1GB 内存、32 位系统的 2008 年的笔记本电脑也能用,在一些旧款树莓派上也可以跑起来。这个模型有创意、速度快、能沟通、会写诗,适合在资源有限的环境中使用,算是一个有趣的玩具。
这是另外一个 Mistral AI 模型,但其表现稍逊一筹。48B 听起来相当大,但这是一个 Mixture of Experts(MoE)模型,进行推理时只会用到 13B 的参数。这使得它非常适合在至少有 32G 内存的配置上进行 CPU 推理。该模型更像一个数据库,保留了更多的训练输入数据,但它在应用中可能不如预期,其中缘由我们很快就会说明。
又是两个我没法在自己的电脑上运行的模型,所以我会通过远程托管的方式来使用这两个。后者名字里的 Nemotron 代表这个模型经过英伟达的微调。如果我能跑得动 70B 模型的话,可能 Nemotron 就是我的首选了。我还是要花更多时间把它和 Qwen2.5-72B 做对比评估。
这些模型大多数都有特殊编辑过(abliterated)的「去审查」版本,消除操作可以减少模型的拒绝行为,但是也会以模型的性能下降作为代价。拒绝行为是很讨厌的,比如说 Gemma 就不愿意翻译它不喜欢的文字。可能是因为我比较无聊吧,我遇到的拒绝的次数不多,所以我还没必要做出这样的取舍。另外,似乎上下文的长度增长之后,拒绝行为就会变少,感觉有点「既然开始了,那就做到底」的意思。
接下来的一组是专为编程而训练过的「写码用」模型。具体来讲,他们进行了中间填充(fill-in-the-middle,FIM)训练,使得模型可以在现有程序内部插入代码——我稍后会解释这是什么意思。但是依我看来,这些模型不论是在代码审查还是其他指令导向的任务上都没有更出色,实际情况正好相反:FIM 训练是在基础模型上进行的,指令训练是在此基础上进行的,因此指令训练反而与 FIM 不兼容!换句话说,基础模型的 FIM 输出要明显更好,尽管你无法与这些模型进行对话。
我会在后文进行更详细的评估,但在此我想先提一点:即便是目前最顶尖的 LLM 生成的代码,其质量也相当一般。以下排名是基于与其他模型的对比,并不是它们在整体能力上的排名。
这是 DeepSeek 自己命名并推出的模型。推理时它只使用 2B 参数,所以它既和 Gemma 2 的 2B 版本一样快,又像 Mistral Nemo 一样智能,堪称一个完美的平衡。尤其是在代码生成方面,它的表现超越了 30B 的模型,如果我想要鼓捣 FIM 的话,这就是我的首选了。
Qwen Coder 的排名紧随其后。论输出结果的话和 DeepSeek 不分伯仲,但是因为并不是 MoE 模型,所以速度会稍慢些。如果你的内存是瓶颈,那么它就是比 DeepSeek 更好的选择。在写这篇文章的时候,阿里云发布了新的 Qwen2.5-Coder-7B,但是令人迷惑的是,其版本号并没有更新。社区里已经在用 Qwen2.5.1 来称呼这个版本了。刚才我还在说 AI 公司搞不懂版本管理来着……(更新:在发布一天后,14B 和 32B 的 Coder 模型也发布了,我两个都试了,但是都不如 DeepSeek-Coder-V2-Lite,所以我的排名没有变。)
IBM 推出的系列模型名为 Granite。总体来说,Granite 无法令人满意,唯独在 FIM 中表现异常优秀。以我的体验来说,它和 Qwen2.5 7B 并列第二。
我同样也测试了 CodeLlama、CodeGemma、Codestral、StarCoder 这四个模型。这些模型在 FIM 任务上的表现非常差,几乎毫无价值,我想不到任何使用这些模型的理由。指令训练所导致的负面效果在 CodeLlama 上最为明显。
我在前文提过,llama.cpp 是自带 UI 的,其他 LLM 中的 UI 我也用过,我感觉都大差不差。但是我本来就不喜欢 UI,尤其是在生产力环境下,所以我为我自己量身定制了 Illume。这是一个命令行程序,它能将标准输出转换成 API 查询,并在查询过后将响应转换回标准输出。把它集成到任何一个支持拓展的文本编辑器中应该都不成问题,但是我只需要它支持 Vim 就够了。因为 Vimscript 太烂了,估计在我接触过的最烂的编程语言里能排上第二,所以我的目标是尽量少写代码。
创建 Illume 的初衷是为了解决我自己的痛点,为了让我更好地探索 LLM 的世界。我总是会把东西搞崩,然后再去添加新功能来补救,所以稳定性方面我没法保证(大概你还是不要尝试使用它比较好)。
以 ! 开头的行是 Illume 解释后的指令,这样写是因为正常文本中很少有这种写法。在一个缓冲区(buffer)中,!user 和 !assistant 交替进行对话。
这些仍然在文本缓冲区之内,所以在继续对话之前,我可以编辑 assistant 的回复,也可以修改我的原始请求。如果我想要它来创作小说的话,我可以要求它补全(completion)一段文本(而这并不需要指令训练就可以完成):
我可以打断它的回复,进行修改或添加一段自己写的内容,然后让它继续生成;这方面我还得多练练。LLM 也会识别出你添加的注释语法,这样你就可以用注释来引导 LLM 写你想要的内容。
虽然 Illume 主要是为 llama.cpp 设计的,但我也会使用不同 LLM 软件实现的 API 进行查询,且由于各个 API 之间存在不兼容性(例如一个 API 所需的参数被另一个 API 禁止),所以 Illume 的指令需要足够灵活和强大,因此指令可以设置任意的 HTTP 和 JSON 参数。Illume 并不会试图将 API 抽象化,而是会直接呈现出其较低层级的设置,所以要对远程 API 有所了解才能有效地使用它。比如说,与 llama.cpp 进行通信的「配置文件」(Profile)是长这样的:
其中 cache_prompt 是一个 llama.cpp 所特有的 JSON 参数( !: )。大多数情况下启用提示缓存(prompt cache)会更好,但可能是因为某些原因,它默认是没有启用的。其他 API 会拒绝带有此参数的请求,所以我需要将其删除或禁用。Hugging Face 的「配置文件」是这个样子的:
为了兼容 HF,Illume 允许将 JSON 参数插入到 URL 中。因为 HF API 会过于频繁地进行缓存,所以我提供了一个 HTTP 参数( !> )来将其关闭。
llama.cpp 独有一个用于 FIM 的 /infill 端点(endpoint)。该端点需要一个拥有更多元数据并进行过特定训练的模型,但是这种情况比较少见。因此,尽管 Illume 支持使用 /infill ,我还是添加了 FIM 配置,这样在读过该模型的文档,把 Illume 为该模型的行为配置好之后,我可以在任何为 FIM 训练的模型上通过正常补全 API 实现 FIM 补全,甚至是在非 llama.cpp 的 API 上也是如此。
该是讨论 FIM 的时候了。为了彻底弄懂什么是 FIM,我就必须追溯到知识的源头,也就是最原始的讨论 FIM 的论文:Efficient Training of Language Models to Fill in the Middle。这篇论文帮助我理解了这些模型是如何针对 FIM 训练的,至少足够让我也将这种训练方法应用到实际中。即便如此,在模型的文档中关于 FIM 的说明通常也很少,因为它们更希望你去直接运行他们的代码。
从根本上讲,LLM 只能预测下一个 token。所以 FIM 的方法是在大型训练语料库(corpus)中选取一些会在输入中出现的特殊 token,用它们来区隔前缀(prefix)、后缀(suffix),和中段(middle)部分(三者合称 PSM,有时也称「后缀-前缀-中段」,即 SPM)。在之后的推理中,我们可以用这些 token 来提供前缀和后缀,并让模型「推测」出中段内容。听起来很离谱,但这真的很有效!
比如在填补 dist = sqrt(x*x + y*y) 中括号里的内容时:
为了让 LLM 填补括号中的内容,我们在 <MID> 停下,并且让 LLM 从这里开始预测。注意到 <SUF> 起到的效果就好比一个光标。顺带一提,指令训练的方法差不多也是这样,但是在指令训练中,使用特殊标记分隔的是「指令(instructions)」和「对话(conversation)」,而并非前缀和后缀。
有些 LLM 开发者严格按照论文所写,直接使用 <PRE> 等作为 FIM 标记,并不在乎这些标记和模型的其他标记看起来完全是两个样子。更用心的训练者则会使用类似 <|fim_prefix|> 的标记。Illume 支持 FIM 模板,我也为常见的模型编写了相应的模板,例如针对 Qwen (PSM) 的模板如下:
Mistral AI 的习惯则是使用方括号、SPM 格式,并且省略「中段」token:
有了这些模板,我就可以在不被 llama.cpp 的 /infill API 支持的模型中进行 FIM 训练了。
我在使用 FIM 时遇到的第一大问题是无法生成正确的内容,而第二大问题就是 LLM 不知道什么时候该停下。比如在我要求模型填充以下函数时(如给 r 赋值):
(补充一点:静态类型(static types)提示(包括这里的)可以帮助 LLM 更好地生成代码,起到防护栏的作用。)得到这样的结果并不奇怪:
原本的 return r 变成了 norm4 函数的返回值。得到这样的结果固然没问题,但显然这不是我想要的内容。所以当结果开始跑偏的时候,最好做好狂按停止按钮的准备。我推荐的三个 coder 模型较少出现这种情况,而更保险的做法是将其与一个能够理解代码语义的非 LLM 系统结合,这样在 LLM 开始生成超出范围的代码时可以自动停止。这种做法可以让更多 coder 模型变得更实用,但这就不是我折腾的范围了。
对于 FIM 的摸索和实践让我意识到 FIM 仍处在其早期阶段,也几乎没有人用 FIM 来生成代码。或许大家还是在用普通的补全方法?
LLM 好玩归好玩,但是它们能为提高生产力提供什么帮助呢?过去的一个月以来我一直在思考这个问题,但始终没有找到一个令我满意的答案。我们不如先划清一些界限,明确一下有哪些事情是 LLM 无能为力的。
首先,如果结果的准确性无法被轻易验证,那么使用 LLM 就毫无意义。LLM 会产生幻觉(hallucination),这也让它们变得并非绝对可靠。很多时候,如果你能够验证 LLM 的输出是否正确的话,你其实也就没必要用它了。这也就解释了为什么 Mixtral 如此庞大的「数据库」反而没什么用。同时这也说明,把 LLM 输出的结果投放到搜索结果里有多么的危险且不负责任,说难听点就是不道德。
然而即便是那些对 LLM 了如指掌的爱好者们也还是会踩这个坑,并且去传播这些虚构的内容。这使得针对 LLM 的讨论更为不可信,看 LLM 给我提供的信息的时候我得多留几个心眼。举例说:还记得我说过 GGUF 没有一个官方定义吗?你去搜一下就能搜得到一个明显是幻觉的结果,结果它还进了 IBM 的官方文档。我在这儿就不再提了,免得问题变得更严重。
其次,LLM 都是金鱼脑,「过目就忘」。也就是说,较短的上下文长度限制了它们的发挥。虽然有些模型使用了更大的上下文长度来训练,但是其有效上下文长度通常小的多。实际上,一个 LLM 一次只能在它的「大脑」中记住相当于一本书里几章的内容,如果是代码的话则是 2000 到 3000 行(因为代码的 token 密集度更高),一次性能够处理的也就这么多了,这和人类相比简直微不足道。当然也可以通过微调或者使用检索增强生成这类的工具来尝试改善,但是只能说……收效甚微。
第三,LLM 写代码的能力很差。往好了说,它们的写码能力也只不过是一个读过大量文档的本科生的水平。这话听起来还行,但实际上,很多毕业生在进入职场时几乎对软件工程一无所知,第一天上班才是他们的真正学习的开始。从这个角度看,现在的 LLM 甚至还没开始「学习」这一步呢。
但是说实话,LLM 写代码能有如今的水准已经很不错了!即便是把带有我强烈个人风格的代码丢给它,LLM 也能顺利理解并使用其中的自定义接口(但是需要说明的是:我自己的的代码和写作也是大部分 LLM 的训练数据中的一部分)。因此,只要是不超出有效上下文长度的限制,上下文长度越大越好。问题在于训练 LLM 写代码似乎并不比我自己写更省时间。
其实,单纯去写新的代码都算简单的了。困难的地方在于维护代码,以及在考虑到维护代码的同时再去写新的代码。即便 LLM 确实能写出可以运行的代码,也考虑不到维护问题,或者说,它根本没办法去思考这些问题。生成代码的可靠性与代码长度通常成反比平方关系,一次生成十几行代码就已经很不靠谱了。无论我怎么试,LLM 输出的能让我觉得还凑合的代码根本就超不过三行。
代码质量在很大程度上受到编程语言的影响。LLM 在 Python 上表现好过 C 语言;C 语言的表现又好过汇编语言。我觉得这多半取决于语言难度和输入质量:给大模型做训练的 C 语言素材多半都很烂,毕竟烂资源网上一抓一大把;而大模型对汇编语言的唯一了解就是糟糕的新手教程。当要求大模型使用 SDL2 时,它也不出所料地犯了常见的错误,毕竟它就是这样训练出来的嘛。
那训练大模型去写标准化代码(boilerplate)7呢?大概 LLM 在这方面会犯更少的错误,可能还有一定的价值,但处理标准化代码最快的方式其实就是——避免编写它。去简化问题,不去依赖标准化代码就是了。
不必只轻信我一家之言,看看大模型在赚钱方面怎么样就明白了:如果 AI 公司真的能够实现他们所宣传的生产力提升,他们就不会出售 AI 技术,反而会独自利用其技术去吞并整个软件行业。你也可以看看位于 AI 科技最前沿的公司的软件产品,和其他公司的产品一样,是同样的老旧、同样的臃肿、同样的垃圾。(而浏览这些糟糕的网站也是研究 LLM 的环节之一,一想到这里我就感觉很不爽。)
在生成代码时,「幻觉」造成的影响会小一些。因为你在提出需求时就知道自己想要什么,因此可以检查生成结果,同时还有编辑器来帮你检查你漏掉的问题(比如调用了虚构的方法)。然而,有限的上下文和不佳的代码生成仍然是障碍,我至今尚未能有效地解决这些问题。
那么,我可以用 LLM 做什么呢?我们列个表吧,毕竟 LLM 最喜欢列表了:
尽管有用的应用场景不多,但是这已经是近些年来我对新技术最兴奋的一次啦!
Everything 的长期测试版本 Everything 1.5a 发布新版本 1.5.0.1385a,推出全新的 Everything SDK3 平台,开发者可以将 Everything 的搜索功能集成到自己的应用程序中。并且进行了性能优化、稳定性增强,以及一些小的 bug 修复。针对拼音搜索,目前已经支持全拼、首字母两种方式,推荐更新。
No Description
虽然目前可以同时安装两个版本的 Everything(1.4 和 1.5a),但推荐直接使用 1.5a,因为有全文搜索。以及喜闻乐见的深色模式,也只有 1.5a 拥有。
![]()
根据上图设置。
Everything 1.5a 的拼音搜索有两种方式:
目前只能二选一:
![]()
具体方式:
![]()
Stirling PDF 是一站式的 PDF 编辑工具,让用户能对 PDF 文件进行各种编辑操作,包括分割、合并、转换、重新组合、新增影像、旋转、压缩等等,特色是免费、开源〔GitHub〕,过程中文件只会存在用户的设备上,若在处理时有暂存于服务器的内容在下载后会即时从服务器删除,不会记录保存或追踪任何资料,相较于在线工具来说是更安全、隐私的解决方案。
1 Locally hosted web application that allows you to perform various operations on PDF files – Stirling-Tools/Stirling-PDF
Stirling PDF 提供多元的 PDF 编辑功能,涵盖文件组织、格式转换、安全性、检视与编辑等工具,满足各类文件处理需求,用户无需额外下载、安装软件,只要通过浏览器即可进行操作,Stirling PDF 有中文在内等多国语言界面〔在我写这篇文章时中文字串翻译率已达 93%〕,进入网站、找到对应的功能后就能直接进行编辑。
这项服务目前可以做到的功能包括:
1. 文件组织
2. 格式转换
3. 签名与安全性
4. 检视与编辑
5. 进阶功能
顺带一提,Stirling PDF 还有提供 Windows 版本,可以在没有连上网络的情况下使用,如果有兴趣的朋友可以在 GitHub 找到下载链接,原则上两者功能差不多,无论在线版或 Windows 应用程序都不用付费、也无广告干扰。
Stirling PDF
进入 Stirling PDF 网站后先从右上角语言选择「中文」。
![]()
接着从上方「工具」就能看到完整功能,依照类型分为:组织、转换为 PDF、从 PDF 转换、签名与安全性、检视与编辑和进阶工具,也可以直接从首页输入功能名称列出相关工具。
![]()
有一个 PDF 万用工具是整合旋转、裁切、分割、移除、新增图片等功能,进入后先点击左下角新增要编辑的 PDF 文件。
![]()
加入后 PDF 页面预览就会显示于下方,每一页都可单独旋转、删除或调整页数,将光标移动到页面中间时还会出现其他编辑选项,例如裁切或是加入图片,其实操作上很直觉,稍微摸索一下就会。
![]()
另一个压缩 PDF 也是很常在在线工具看到的功能,选择文件、设置压缩比或是自动模式〔自动调整质量以使 PDF 达到指定大小〕,就能快速压缩 PDF 以获得更小的文件容量。
![]()
点击压缩后就会开始处理,完成后自动跳出下载提示,我以大约 9 MB 的 PDF 文件、手动模式 3 级测试后获取一个约 2.5 MB 的新文件,压缩成效相当好,而且图片并没有失真或模糊等情形。
![]()
另一个也很常用到的功能是「分割 PDF」,可以将 PDF 指定页面删除、或只是留下需要的页面,使用方法也很简单就不多加赘述,Stirling PDF 会有预先设置的示例提示,用户照着格式稍作修改后就能完成相关编辑任务。
![]()
如果要说 Stirling PDF 有没有比较特殊、少见的功能,有一个「自动涂黑」工具很有用,用户只要输入要涂黑的文字,选择 PDF 后就会自动将识别到的文字涂黑,确保隐私和安全性,同时也省去手动编辑文件的时间,操作上更有效率哦!
![]()
下图就是使用自动涂黑工具识别、涂黑的 PDF 文件示例,指定文字就会被涂黑处理。
![]()
copyparty 是一款功能非常丰富的多功能文件服务器,主要用来分享你电脑、服务器、设备里的文件,并通过浏览器、WebDAV、FTP 等方式访问,还支持播放音乐、上传文件、权限设置等功能。
几乎可以在任何有 Python 环境的地方运行,还支持 Docker 托管,以及 windows 系统下的单可执行程序,甚至可以在 android 中运行。虽然运行很容易,但我不敢说它简单易用。
Portable file server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps – 9001/copyparty
copyparty 给自己的定位是「便携式文件服务器,具有断点续传、重复数据删除、WebDAV、FTP、TFTP、零配置网络、媒体索引器、缩略图++,全部集成在一个文件中,无依赖。」
所有的功能集中在一个 .py 文件中,718 KB,直接运行就可以了。Windows 系统有编译好的 .exe 单可执行文件,双击也即开机用。其他平台直接 python copyparty-sfx.py 就行了。
就是文档太啰嗦了…看不下去。
直接运行就可以在浏览器访问 http://127.0.0.1 了,默认会使用 80/443 端口,打开就是这样的:
可以上传、下载、播放视频、听歌、看图片…非常纯粹的文件分享工具。有一种 Alist 的感觉,不过它不支持网盘。
只需要在启动的时候添加一个用户,就能设置权限了,包括只读、文件夹限制等等:
这一行的意思是创建了三个用户:u1/u2/u3,为它们挂载文件夹 music,对 u1/u2 两个用户只读,u3 用户可以写。
但注意有参数后,访问端口就变化了(3923)。
copyparty 默认开启了 WebDAV,只需要在你的 WebDAV 客户端里直接连 http://ip:3923 就行了。
甚至,你可以通过 WebDAV 把这个文件夹映射为 Windows 的网络磁盘,不过 Windows 默认需要 https,改一下注册表就好了。
而 FTP 则需要在启动的时候添加 --ftp 21 参数,用户名密码和上面的设置相同,不设置就支持匿名访问。
![]()
6 月 1 日,Firefox 89 进入稳定版推送通道,带来了自 2017 年 Firefox Quantum 问世以来最大的界面改动,以及众多细节改进。Mozilla 在博客中写道,设计师们权衡并简化了 Firefox 的交互体验,使其更易于在每台设备上使用,帮助用户提高效率、减少干扰。[1]
这一版本究竟带来了哪些新功能,有何亮点与不足?我们不妨在这篇文章中一探究竟。
注意:本文撰写于 6 月 1 日前,基于 Firefox Nightly 测试版本介绍。
2017 年发布的 Firefox Quantum 采用了被 Mozilla 称为 Photon 的设计语言,Firefox 89 的界面设计则被命名为仅一字之差的 Proton。这可能与新版的重构思路有关,Firefox 设计团队调研了广大用户的日常使用习惯,绘制了如下图所示的交互热力图[2],希望在一次大版本更新中重新设计 UI 组件,并解决长期遗留的问题。因此,Firefox 产品高级总监 Mikal Lewis 表示,这次改版更像是在原版的基础上,由数不清的细节改进构成的整体。而最终呈现的效果,却大不相同。
![]()
从上图中,我们不难发现,在原版设计中,地址栏右侧的几个按钮利用率极低,更不用说二级菜单中的项目了。因此,Mozilla 已经在 Firefox 88 中将「截图」操作转移至右键菜单,89 则更进一步,移除了整个「页面动作」菜单。别担心,里面的老朋友都还在,右键单击标签页,选择发送到其它设备,也是更符合直觉的方法。Mozilla 力推的稍后阅读工具 Pocket 优先级再度提升,于主工具栏上占据一席之地。
![]()
当然,不使用 Pocket 的同学大可点击「定制工具栏」,将 Firefox 改造为自己理想中的模样。图标重绘之外,这一功能与以前没多大差别,标题栏、工具栏与书签栏均支持高度自定义。「选项」、「附加组件」更名为更常见的「设置」、「扩展和主题」,从上个版本开始,截图也能添加到工具栏了。将视线转向底部,依然是熟悉的工具栏选项和主题管理。然而,点开密度菜单,问题就来了:我那么大一个紧凑布局呢?
![]()
年初开始测试的 Proton 早期版本中,Mozilla 本打算完全移除 Firefox 的紧凑布局,原因你大概也能猜到:切换入口过深,难以被用户发现。[3]为了确保新版的默认配置适合大多数人,Mozilla 决定将其与普通布局合并,但仍为触屏设备用户保留触控布局。不用说,这一决策激起了社区的强烈抗议,妥协结果是只对新用户隐藏相关选项,并且可以自行配置显示。
如果你全新安装了 Firefox,想试试紧凑布局,只需在地址栏键入 about:config,选择接受风险并继续,然后搜索 browser.compactmode.show,将值切换为 true,即可在「定制工具栏」界面自由切换布局。但这并不代表万事大吉,Proton 的界面元素间距比旧版更宽,紧凑布局也只是略窄于原来的普通布局,对显示面积就是生产力的网页浏览器来说,着实有些倒退。
![]()
![]()
抛开些许不快,让我们来看看 Proton 设计语言的整体效果吧。简化工具栏布局、去除分隔线、收窄图标线条等措施多管齐下,Firefox 89 给我留下了更加清爽的印象,设计的一致性也更强。尽管在其它地方竭力减少 UI 层级,塑造扁平化体验,活动标签页却采用了浮动设计,与背景区分,直观明了。此外,后台标签的音频控件已合并至网站图标,不会多占一个位置了。
![]()
菜单也得到了重新梳理,工具栏最右侧的应用程序菜单中,选项前的图标已不见踪迹,排序也有所变化。「我的足迹」被拆分为书签、历史、下载三项;编辑控制成为了工具栏中的独立按钮;定制工具栏等不常用功能统一收纳进「更多工具」;所有按钮均依照用途组织分类。在 Windows 平台,右键菜单由系统样式改为更美观的 Proton 风格;macOS 恰好相反,从带有 Firefox 特色的自定义样式换成了不加修饰的原生风格。
![]()
除了桌面客户端,Firefox 移动版应用也迎来同步更新,为全平台换上 Proton 界面设计。Android 客户端将「受同步的标签页」从菜单栏调整至标签管理界面,新增手动同步按钮,使用更方便。Mozilla 还与 WebCompat 合作,允许用户报告无法正常渲染的网页,由志愿者请求网站所有者修复。iOS 客户端同样改进了标签页逻辑,并提升搜索体验,在地址栏添加搜索引擎图标,打开新标签页时自动弹出键盘。比较可惜的是,Android 版 Firefox 重构至今,仍未针对平板设备优化,希望 Mozilla 能在日后带来接近 iPadOS 的体验。
![]()
一望即知的设计革新之外,Firefox 89 还提供了例行的问题修复及功能改进,我们不妨在本节发掘这些潜藏于水面下的改动。
作为 Firefox 的主打卖点之一,Mozilla 一直在实践个人隐私保护领域的前沿技术。在 Firefox 89 中,隐私浏览模式会强制启用 Total Cookie Protection 特性,阻止所有跨网站 Cookie,包括但不限于跟踪性内容。你也可以在「隐私与安全」设置中启用增强型跟踪保护的严格模式,将它应用到所有窗口。Firefox 89 还带来了第二代 SmartBlock 功能,使用本地组件替换第三方脚本,拦截在线跟踪器的同时,保证网站正常运作。
![]()
Firefox 89 解决了 macOS 客户端的诸多历史问题,在广色域显示器上,网页颜色将不再过饱和;未标记的图像将被视为 sRGB,标记为 sRGB 的图像颜色将与 CSS 匹配;全屏浏览时,将鼠标指针移动至屏幕顶部不会导致标签栏被系统菜单栏遮挡,并提供隐藏工具栏的选项。更振奋人心的是,滑动至页面底端将触发弹性滚动效果,在触控板上两指双击还能缩放聚焦的内容。
![]()
Firefox 89 介绍了一种 Web 表单控件的非本机实现,提供全新的现代设计,改善了网页加载性能。在开发者方面,Firefox 89 已支持 Event Timing API 和 CSS 强制颜色查询,前者允许页面测量从用户首次交互到浏览器实际处理事件的延迟,后者将在操作系统启用高对比度等特殊配色方案时激活,确保更好的无障碍兼容性。
近些年来,Firefox 的几乎每次界面改版,都会招致社区的巨大争议。虽然我同样对 Proton 砍掉紧凑布局感到不满,但 Mozilla 的不断探索却不应被否定。在微软「叛逃」Chromium 阵营后,独立的 Firefox 的存在更显得弥足珍贵,我也由衷希望为自由而生的 Firefox 能越来越好。
Firefox 89 正式版已于 6 月 1 日面向全球用户推送,如果正使用其它浏览器的你也跃跃欲试,可以前往 Firefox 官方网站 下载使用。
![]()
随着 Windows 10 的普及,越来越多的设备制造商开始将自家驱动、专用软件等放到 Microsoft Store 上,便于集中管理和更新。为了避免兼容性问题,这些应用通常仅限特定品牌的设备安装,但有时,我们或许想在自己的电脑上试试,而本文介绍的技巧就能帮到你。
让我们以三星笔记为例,作为众多 Android 手机和平板的预装应用,它提供了完善的 S Pen 支持、PDF 批注和录音回放等高级功能,然而,仅支持移动端却让人难以放心使用。其实,三星还为自家电脑开发了笔记应用的全功能 UWP 版本,兼容大部分 Windows 设备,只是限制了其它品牌安装。
![]()
现在,让我们打开 网页版 Microsoft Store,登录自己的账户,搜索并切换至 Samsung Notes 的页面。你应当会发现「兑换代码」按钮变成了「获取」,点击它右侧的三点省略号,选择「添加到购物车」。
![]()
之后的步骤想必无需多言,打开购物车,遵照页面指示下单,将应用添加至自己的软件库中。需要注意的是,如果显示语言为简体中文,在结账时可能出现白屏等状况,将地址栏中的 zh-cn 改为 en-us 即可。
![]()
订单完成后,让我们回到应用商店,之前的「兑换代码」已经变成了灰色的「安装」。再次点击右侧的三点省略号,选择「在我的设备上安装」,然后在弹窗中选择安装位置。
![]()
![]()
稍憩片刻,你的下载会自动开始,安装完成后,就可以在自己的设备上使用了。这一技巧同样适用于其它限定型号的应用,如 Dell Mobile Connect 和 Nebo for LG 等,祝你使用愉快。
![]()
![]()
![]()
提示:此次活动已结束。
如果你曾读过我此前写的大促推荐文章,对 BundleHunt 这个名字想必不会感到陌生。作为最知名的 macOS 应用促销网站之一,它总能说服几款大牌应用,开出让你无法拒绝的价格。本月中旬,BundleHunt 也推出了其最新 Bundle,包含 46 款 App,优惠幅度可达 90%。
与以往不同的是,本 Bundle 取消了祖传的 5 美元解锁费用,挑选的 App 总价格是多少,结账时就支付多少,而且每款 App 依然可以添加最多 3 份授权,相当良心。此外,BundleHunt 还首次涉足 Windows 应用,没有 Mac 的同学也可以放心选购。
![]()
话不多说,接下来,就让我们一起来了解一下部分值得购买的应用吧。
💰一年订阅价格:$49.92 → $7.00, 86% Off
作为一款键盘效率利器,TextExpander 曾被少数派多次推荐,并被誉为 macOS 深度用户必备生产力工具之一。TextExpander 最基础的功能是文本替换,如果你日常生活中经常需要输入重复内容或特殊字符,就可以借此节省时间,如输入 @@ 自动替换为邮箱地址、输入 tm 自动替换为 ™ 商标符号等。在此基础上,TextExpander 的自动化能力还允许我们制作带变量模板、一键填充表格、转换 Markdown 格式等,输入快人一步。
![]()
关联阅读:
💰价格:$11.99 → $6.00, 50% Off
iStatMenus 6 同样是一款被少数派多次推荐的工具应用,它可以将 macOS 的菜单栏变为系统监测中心,除了 CPU、电池、网速、硬盘和内存状态等标配功能外,你还可以用它来查看天气、日程安排和世界时间等,功能和界面样式都相当丰富。此外,iStatMenus 6 的可定制项目也诚意满满,可以自由组合多种传感器数据,合并为一种工具,随时获知系统状态变化。
![]()
关联阅读:
💰价格:$39.95 → $5.00, 87% Off
即使对死忠果粉来说,iTunes 的移动设备管理体验也难以称得上优秀,macOS Catalina 拆分到访达后也不甚圆满。Waltr 2 则致力于解决跨设备文件传输这一吐槽重灾区,它将用 Mac 向 iPhone 传输文件的过程简化为三步:打开 Waltr 2,将文件拖进去,然后在手机上查看。除了傻瓜式的操作体验外,Waltr 2 还支持上百种音视频格式,智能选择接收应用,并自动转换 iOS 不支持的文件,小白也能轻松上手。
![]()
关联阅读:
💰价格:$19.95 → $3.00, 85% Off
尽管名字里带着 YouTube,但 SYC 2 支持的网站可远不止这一家,只需直接粘贴链接,你就可以一键下载 Vimeo、Instagram 和 YouTube Music 等超过 60 个流媒体网站的音视频文件。由于与 Waltr 2 师出同门,SYC 2 还允许你直接保存至 iPhone 和 iPad 中,流程也和 Waltr 2 一样省心,下载传输一气呵成。需要提醒大家的是,SYC 2 并未适配 B 站和爱奇艺等国内主流平台,请明确自己的需求后购买。
![]()
关联阅读:
💰价格:$29.99 → $6.00, 80% Off
作为 macOS 的默认文件管理器,访达界面简洁、操作友好、易于上手。但对深度用户来说,访达着实有些简陋,只有搭配第三方工具才能勉强使用这样子。Commander One PRO 则是一款相当强大的访达替代品,它支持双栏视图和全键盘操作,所有快捷键支持自定义,还拥有强大的搜索和替换功能,支持多种压缩格式及文件预览方式。你还可以建立 FTP、WebDAV、Google Drive 和 OneDrive 等远程连接,并在应用内管理系统进程,是一位全能型选手。
![]()
💰价格:$99.99 → $7.00, 93% Off
没有编程基础,又想搭建一个网站?试试界面友好、易于上手的 Flux 7.0 吧。它利用所见即所得的可视化设计,让你无需关注代码,就能通过拖拽等操作搭建页面,配合预设的精美模板,是初学者的佳选。Flux 原生支持 Bootstrap 和 Skeleton 等主流前端框架,可以通过 FTP 和 SFTP 管理远程项目,还提供强大的调试工具,帮助你轻松创建响应式网页。
![]()
💰价格:$5.99 → $2.99, 50% Off
电子设备一多,如何管理就成了难事,稍不注意,就可能出现七八个设备电量不足,充电线却只有一根的尴尬情况。而 Batteries 这款小工具就可以在控制中心、菜单栏或 Touch Bar 上展示所有设备的剩余电量,并在电量不足时通知提醒,避免需要用时电池只剩 2%。Batteries 支持 iPhone、iPad、AirPods 及所有连接到 Mac 的蓝牙设备,在后台保障你的工作进度不受影响。
![]()
💰价格:$5.00 → $2.00, 60% Off
作为公认的真无线耳机标杆,AirPods 的工业设计和硬件配置都首屈一指,与之配套的软件体验也出类拔萃,弹窗动画让人总想多看几遍,无缝切换的过渡也十分自然。然而,如果你正在使用 Mac,就只能点击菜单栏上的音频图标手动切换,还可能出现图书馆外放的尴尬。而 AirBuddy 不仅为 macOS 带来了与 iOS 相仿的动画效果,还能帮助你快速切换输出设备,并在控制中心查看已连接设备的电量,值得一试。
![]()
按照惯例,详细介绍以上 8 款 App 后,我会推荐本 Bundle 中其它值得购买的应用。但今天我准备反过来,说说我认为本 Bundle 中不太划算的应用:
以上,就是本文的全部内容了。你可以 点击这里 前往 BundleHunt 官网,如果愿意支持我继续创作,也欢迎你点击此 返利链接 购买,我会得到你支付金额的 25% 作为回报,在此诚表谢意。
![]()
如果你还在使用 64 GB 的手机,可能会时常面临存储空间不足的窘境。这时,除了忍痛清理相册和聊天记录外,还可以试试用系统自带的 App 代替部分第三方应用,节省空间的同时享受原生的丝滑体验。
在本文中,我就为大家整理了 14 款各系统平台的优秀自带 App 和使用技巧,希望你也能有新发现。
许多 iOS 用户的主屏幕角落都会有一个名为「删不掉」的文件夹,专门用来安置蒙尘的系统自带 App 们。如果你也曾这样做过,不妨再给它们一次机会,试试本章提到的使用技巧吧。
近几年来,每次 iOS 大版本更新都会为备忘录添加新特性,也让它从纯粹的便签工具逐渐演变为了现在的全功能笔记应用。就像苹果官方介绍的那样,备忘录可以「轻松添加几乎任何内容」,无论是图片、文字、链接,还是表格、清单、手绘,它都来者不拒,还能直接扫描文稿,并自动裁边。
![]()
备忘录的一大优势,就是与 iOS 系统的深度整合。除了 iCloud 多端同步外,你还可以从主屏幕 3D Touch 菜单、通知中心小组件、控制中心快捷方式等位置快速创建新笔记,或者直接召唤 Siri 帮忙,这也是第三方笔记 App 难以做到的。
![]()
在即将正式推送的 iOS 13 中,苹果还大幅强化了备忘录的搜索功能,并进一步加入了 OCR 文字识别功能。简单来说,你可以直接搜索图片附件及手绘中的文字,准确率也相当高,甚至成功匹配了带连笔的潦草字符,可谓课堂笔记整理利器。
![]()
关联阅读:
在 iOS 13 中,提醒事项也得到了有史以来最重大的更新,加入了智能列表、自然语言识别诸多新特性。在本文中,我也将以 iOS 13 为基础介绍提醒事项的优势,帮助你在正式版发布后快速上手。
让我们从智能列表说起,iOS 13 的提醒事项加入了今天、计划、全部和旗标四个任务筛选维度,将任务按提醒日期、重要程度等分类。此外,提醒事项还支持创建子列表和子任务,通过简单的拖拽手势即可高效归纳日程。
![]()
iOS 13 的提醒事项还在键盘上方为我们安置了快捷工具栏,可以一键设置提醒日期、位置、旗标和图片附件等,不用手动点选或跳转至其它 App。此外,iOS 13 的提醒事项还支持简单的自然语言识别,如「明天上午 9 点」等,可以通过键盘选字栏填充。
![]()
使用提醒事项安排任务还有一项好处,那就是关联手机联系人,并获得智能提醒。你可以在任务详细信息设置页添加指定联系人,并在与 TA 通过短信或 iMessage 联系时收到通知提醒,不再遗忘任务。
![]()
关联阅读:
随着时代的变迁,听播客这一小众的习惯也逐步走向大众视野。如果你还不确定要买 Pocket Casts 还是 Castro,不妨先试试 iOS 自带的播客 App。它支持调整播放速度、插播、待播、新单集提醒等功能,设计语言与 iOS 高度一致,简洁易用。
![]()
依托 iTunes 商店、品类齐全的内容资源是 iOS 原生播客 App 的另一长处。它不仅汇聚了全球优秀播客资源,还支持按听众人数、出品方等分类查询,并在详情页面底部提供了相似播客推荐,寻觅新欢更容易。
![]()
关联阅读:
尽管 iOS 无法设置默认浏览器,打开链接时始终使用 Safari,但许多用户还是会选择安装一个第三方浏览器备用。其实,掌握一定技巧后,Safari 浏览器已经能满足我们的绝大部分需求。
Safari 技巧之一,是「长按」。出于简洁考虑,Safari 将不少功能选项都藏了起来,需要通过长按来唤醒。举例来说,长按多标签页界面下方的「加号」,可以查看最近关闭的标签页;长按网页浏览工具栏上的「前进」或「后退」按钮,可以查看操作历史记录;长按「书签」按钮,可以批量添加收藏、加入阅读列表;长按「多任务」按钮,则可以关闭全部标签页或新建无痕浏览标签页。
![]()
Safari 技巧之二,是「重按」,即 3D Touch。你可以在支持阅读模式的网页中重按地址栏左侧按钮,快速进入和退出阅读模式;也可以重按任意链接,进行预览和添加至阅读列表等操作;还可以重按 Safari 浏览器的桌面图标,执行快捷操作。
![]()
Safari 技巧之三,是「分享」,这也可以说是解决 Safari 痛点的不二法门。你可以将网页分享为 PDF 以添加标注;也可以分享给第三方 App 实现长截图、翻译等功能,最大限度地弥补原生功能的不足。
![]()
关联阅读:
与被苹果直辖的 iOS 系统相比,开放的 Android 各 ROM 之间差异相当大,系统自带的 App 也各不相同。在本章中,我将介绍 4 款打着 Google 标的 App,希望它们的表现能胜过 MIUI 自带的竞争对手。(笑
由于众所周知的原因,Gboard 在云词库方面远逊于国内竞品,但我仍将其作为心目中的最佳 Android 输入法。究其原因,首先是支持数百种输入方式,包括你或许根本没听说过的阿斯图里亚斯语、巴塔克曼特宁语等当地人都不一定常用的语言;也包括全拼、九键、手写、笔画等中文模式,还提供了 6 种主流双拼方案。如果你需要多语言混合输入,Gboard 很可能是唯一选择。
![]()
Gboard 的另一优势,是与 Google 的深度整合。你可以点击键盘左上角的 Google 图标,直接搜索网页,并在键盘内获知结果,无须跳转至其它 App。同样的,你也可以在网络中搜索表情包、GIF 动图等,并一键分享至聊天工具的输入框中,发送给好友。
![]()
此外,Gboard 还提供了不少实用功能,如剪贴板管理、文本编辑工具、悬浮键盘、单手模式、Google 翻译等。你还可以在 Gboard设置中更换键盘的主题背景,让它更适合你。
![]()
关联阅读:
iOS 有备忘录,Android 当然要用 Google Keep。作为一款轻量级的笔记工具,它可以添加文字、图片、绘图、录音、清单和提醒,并支持语音自动转文字。与备忘录不同的是,在 Keep 中添加的图片会统一安置在笔记正文上方,不支持图文混排,但更加醒目。
![]()
除了标签外,Keep 还支持自定义笔记的背景颜色,不同类别的笔记间互不干扰,一眼扫过就能找到想要的笔记。如果你已经参考完毕,还可以通过滑动手势将其归档,或者发送至 Google 文档进行下一步处理。
![]()
关联阅读:
与其使用课程格子、超级课程表等第三方 App 记录上课时间,我更偏向于使用日历来管理一切。在 Android 上,Google 日历可能是最佳选择之一。它采用了标准 Material Design 设计,还会为不同月份和特殊节日展示精美插画,别有一番趣味。
![]()
新建事件时,Google 日历支持活动、提醒和目标 3 种类型,分别对应日程安排、待办事项和习惯养成,均支持多设备同步。其中,在设定目标时,Google 日历会智能建议频率、持续时间等信息,并通过提问一步步引导完成设置。
![]()
不论从哪个角度来看,Google 相册都称得上同类应用中的翘楚。除了基础的本地相册管理外,它还提供了高画质照片无限容量上传、(已取消)强大的照片后期编辑、影集在线分享等功能。其中,照片后期编辑允许你添加滤镜、调整曝光、对比度、饱和度、色温等,还能在应用内调用其它修图工具。
![]()
得益于 Google 雄厚的 AI 技术积累,Google 相册可以智能识别照片中的面孔、事物、地点等,个人体验准确率高于 iOS 和 Windows 10 的自动分类功能。此外,Google 相册还会智能建议你归档屏幕截图、旋转照片方向、回顾往年今日等,甚至可以自动优化带瑕疵照片。
![]()
如果你想留住回忆,不妨利用 Google 相册的内建功能创建影集、影片、动画和拼贴,上传至云端,以供随时观看。Google 相册的影集功能支持添加文字说明和地点标记,用来记日记也毫无违和感;动画和影片功能支持将多张照片组合为动图或短视频;拼贴功能则是发朋友圈或微博的好帮手。
![]()
关联阅读:
如果你经常浏览少数派,或许对 macOS 上的知名效率工具都如数家珍。其实,不少 macOS 自带应用都传承着苹果优良传统,设计精美、功能够用,我们不妨在本章认识一下其中几位。
预览可能是最被低估的 macOS 原生应用之一,你或许只把它当作鸡肋的图片查看器,却忽视了其强大的编辑功能。以图片为例,预览提供了画笔、形状、文本、签名等标注工具和调整颜色曲线、曝光、对比度、饱和度等后期处理工具;如果你正在阅读 PDF,预览还允许你添加高亮、下划线、删除线等,足以应付日常所需。
![]()
预览的另一项技能,是压缩、转换和合并图片及 PDF。你可以方便地调整图片尺寸、格式,达到压缩体积的目的。借助预览,你还可以轻松拼接合并多张图片,首先用预览打开想要添加上去的图片,随后按下 ⌘Command-C 复制,接着打开背景图片,按下 ⌘Command-V 即可,还能自由调整大小、位置等。
![]()
此外,你还可以用预览编辑 GIF 动图。打开 GIF 后,其包含的帧会依序展示在左侧边栏中,可以拖拽移动顺序、删除指定帧等。同样,如果你想给 GIF 添加图片,只需要直接把它拖进来进行了,预览会自动保存更改。
![]()
关联阅读:
在 macOS 上查询单词释义,最简单的方式莫过于三指轻点触控板,召唤自带的词典应用。但由于词库较少、入口较隐蔽,许多人还是会选择安装欧路词典、有道词典等第三方应用。
![]()
其实,经过一番调教,macOS 原生词典 App 也可以很好用。比如饱受诟病的词库,就可以通过安装网络上的第三方词典文件来解决。以使用最广泛的 MDX 格式为例,你可以通过 GitHub 上的 PyGlossary 项目来转换为 macOS 格式;StarDict 文件则可以使用 DictUnifier 转换。完成后,将得到的词典文件移动至 /Library/Dictionaries 即可正常使用。
![]()
除了三指点击触控板外,你还可以在设置中将触发手势更改为单指用力点按,或者选中单词后右键查询,也可以通过聚焦搜索直接查询生词。当然,更直观的方法是打开词典 App,在上方的搜索框内输入单词或短语。
![]()
关联阅读:
iOS 上有快捷指令(Shortcuts)这一自动化效率利器,macOS 上则有自动操作(Automator)发挥相似的功效。它可以帮助我们创建应用程序、工作流程、工具插件、听写命令等,通过简单的拖拽即可设计出完整的自动化流程,并保存以供日后使用。
![]()
选定要创建的脚本类型后, 你应该会看到下图所示的界面。其中,左侧是操作库,表示自动操作可以执行的命令种类;右侧是编辑区域,可以将左侧的操作拖拽组合进去,与快捷指令操作方法类似。自动操作支持包括 Shell、JavaScript、AppleScript 脚本等在内的近百种操作,还能够与第三方 App 集成。
![]()
活用自动操作,你就可以实现图床上传、解压缩、自动整理文件夹、批量重命名、提取 PDF 中文字、合并 PDF、转换图片格式、拼接截图等进阶玩法,不妨前往 少数派 Automator 标签 下了解更多。
关联阅读:
曾经,Windows 的自带系统应用还是被人嫌弃、被各修改版精简的存在。但在 Windows 10 发布后,基于UWP 架构的全新系统应用走入了我们的视线,其中也不乏精品,比如本章将介绍的 3 款应用。
从 Outlook 到 畅邮 折腾一圈后,我最终还是用回了 Windows 10 的原生邮件应用。要问原因,首先是颜值过关,半磨砂的流畅设计语言、可随心定制的主题颜色和布局、精美的背景图片选择等都令它从一众竞品中脱颖而出。
![]()
颜值之下,Windows 10 邮件应用的功能也令我满意。智能分类重要邮件、优雅高效的滑动手势、多账户聚合管理、与日历、人脉、待办集成,都让它成为了不输 Outlook 的邮件客户端。如果你的邮箱地址较多,还可以将主账户单独固定在「开始」菜单,即时获知新动态。
![]()
今年三月,微软宣布将 Windows 10 自带计算器开源,并将代码完整上传至了 GitHub,一时间吸引了各路开发者目光。这一项目不仅收获了近 1.8 万 star,还被移植到了 iOS、Android 等平台上,从侧面可以看出其质量之高。
![]()
那么,Windows 10 计算器究竟高在何处?除了流畅设计和精致的交互效果外,它还支持全键盘操作、科学模式、进制转换、日期推算等,并提供了货币、体积、长度、重量、温度、能量、面积、速度、时间、功率、数据、压力和角度等十余种进制转换工具。如果发布在 App Store 中,至少可以收费 30 元了。(逃
![]()
经过数次迭代与重构,在 Windows 10 五月版更新中,系统自带的截图功能已经成为了可与第三方应用一较高下的存在。除了基础的全屏截图、窗口截图外,Windows 10 原生截图还允许你绘制任意形状的截图区域,并占用 PrtSc 键,使用更友好。
![]()
截图完成后,自然要标注。点击截图成功的通知后,你就能够进入草图绘制窗口。微软为你准备了铅笔、记号笔、荧光笔和直尺等工具选择,虽然缺失了我们常用的形状、马赛克等工具,但应急使用还是绰绰有余的。
![]()
经常上少数派的用户容易养成这样一种习惯:遇到需求,先搜索有没有合适的第三方 App,并愿意为之付费。其实,在很多情况下,系统自带的 App 已经提供了针对性的功能,而且占用内存更低、使用门槛也更简单。下次遇到这种问题,不妨试试给原生应用一次机会,让系统功能物尽其用。
![]()
快速搜索和效率启动,是大多数用户的刚需,为此也诞生了一大波启动器应用,如 macOS 平台的 Alfred、LaunchBar,Windows 平台的 Wox、Listary 等。其实,随着 Windows 10 系统更新,时常被忽略的原生搜索功能也得到了逐步完善,不逊色于第三方工具。
在本文中,我将为大家介绍一些 Windows 10 原生搜索功能的技巧,将它打造为快速启动利器。
要想使用 Windows 10 的搜索功能,最直观的方式,当然是点击任务栏上的「放大镜」图标,随后在搜索框中键入文字。其实,除此之外,微软还准备了数种更方便的唤醒方式,供我们随心挑选。
举例来说,如果你正在使用具有精确式触控板的笔记本电脑,可以使用三根手指点击触控板,搜索窗口便会应声而出。想了解更多关于触控板的小技巧,可以参阅我此前的 这篇文章。
![]()
如果你是键盘党,可以按下 Win-S 快捷键,等效于按下任务栏上的搜索按钮。懒得动两根手指按快捷键?直接按 Win 键召唤「开始」菜单,然后输入想要搜索的内容,再使用方向键和回车键选定结果即可。
![]()
与大多数通用搜索引擎相似,Windows 10 的原生搜索功能也支持使用语法来缩小结果范围,或实现更多功能。举例来说,你可以直接在 Windows 10 搜索框内输入数学表达式,并利用必应搜索直接获得运算结果。
![]()
如果你想搜索特定类别的项目,可以使用如下语法:docs: 匹配文档、folders: 匹配文件夹、email: 匹配电子邮件、photos: 匹配照片、music: 匹配音乐、videos: 匹配视频、web: 搜索网络、apps: 搜索本地应用等。
![]()
总是搜索不到想要的结果?这或许是因为 Windows 并未索引相应文件。让我们打开「设置-搜索」,在「搜索 Windows」板块中,将索引范围由「经典」改为「增强」,再等待 Windows 自动更新索引列表即可。如果你在索引期间使用过电脑,索引速度会减慢,推荐夜间挂机完成操作。
![]()
为了进一步提高索引准确性,不妨点击「在此自定义搜索位置」,打开索引选项窗口。你可以使用勾选框选定要索引的本地文件夹,并在高级设置中选择是否索引加密文件、文件属性和内容。
![]()
![]()
如果你的硬盘中有一些不想为人所知的文件夹,可以在「设置-搜索-搜索 Windows」中添加要排除的文件夹,Windows 索引时便会自动跳过这些项目,保护自己的隐私安全。
![]()
如果你认为自己已经不再是个宝宝,可以在「设置-搜索-权限和历史记录」中关闭「安全搜索」功能。这样,在使用 Windows 10 搜索在线网页时,部分少儿不宜的内容也会出现在结果中。(虽然必应一般也搜不出来这种东西)
![]()
Windows 10 搜索的另一大特性,则是与云端联动。举例来说,打开「Windows 云搜索」选项后,你就可以直接搜索 OneDrive 文件夹和 OneNote 笔记中的内容等,即使未同步至本地也可。此外,你也可以将本地历史记录同步至所有设备中,让搜索结果更懂你。
![]()
如果你尝试了上述技巧后,还是无法正常搜索到本地硬盘中的文件,本节提供的几种方法或许会有帮助。最简单的方式,是重启电脑检查 Windows 搜索服务状态。让我们从「开始」菜单中找到并打开服务管理器,定位到 Windows Search 服务,右键选择「重新启动」即可。
![]()
若启动搜索服务后仍不正常,你可以试试重建 Windows 索引。让我们打开「控制面板-索引选项」,点击下方「高级」按钮,再选择「删除和重建索引」。由于重新索引需要耗费大量时间,建议在空闲时段操作。
![]()
![]()
要问 MacBook 哪方面体验优于 Windows 笔记本,触控板绝对名列前茅,不论是系统本身优化还是硬件综合体验,MacBook 都足以干趴一大波 Windows 厂商。为了弥补这一不足,微软也进行了许多尝试,如果你只用触控板来移动光标,不妨试试本文介绍的手势,或许会有新发现。
优秀的交互设计应该符合用户的直觉,方便大多数初学者快速上手,触控板也不例外。单指轻扫移动光标、单指点击选择项目(等效于鼠标左键)、双指点击显示更多选项(等效于鼠标右键)、双指滑动滚动页面、双指捏合收缩和拉伸等,都是从鼠标时代就有的习惯延续,在 Windows 和 macOS 上通用,无须多言。
![]()
同时打开了一堆窗口,如何才能高效管理?答案依然是神奇的触控板手势。你可以通过三指向外轻扫查看所有打开的窗口(等效于 Win-↹Tab),并向里轻扫以回到桌面(等效于 Win-D)。如果你想在打开的窗口间切换,可以使用三指向右或向左轻扫,等效于 Alt-↹Tab。
![]()
在 Windows 10 中,微软还为我们带来了原生的虚拟桌面功能,便于将工作和生活应用分区,提高使用效率。尽管我们无法使用触控板快速创建新的虚拟桌面,但可以通过四指向右或向左轻扫切换已打开的虚拟桌面,等效于 Win-Ctrl-→/← 快捷键。
![]()
除了以上触控板手势外,多指点击也被微软赋予了不同功能。你可以用三指点击快速唤起搜索(等效于 Win-S),并通过四指点击打开操作中心(等效于 Win-A),至于五根手指一起上,微软似乎还没考虑过。
![]()
如果你的笔记本无法使用上文提到的部分手势,可能是不支持精确式触控板所致。这一概念由微软联合英特尔、Elan 和 Synaptics 三家主流供应商提出,在系统而非第三方驱动层面进行控制,支持多点触控和多种自定义选项,带来近似 macOS 的体验。
![]()
Cygwin 是一个 Windows 下的 Linux POSIX 模拟器,通过它我们可以直接运行一个 Linux 终端,非常好用。
网络上关于如何添加一个 “在当前目录打开 Cygwin” 的右键菜单的教程有很多,但是这些方法都有一个问题,那就是不能在中文目录下正常工作,于是研究了一番,修复了这个问题。

既然英文路径可以但中文不行,我最先想到的是使用 Cygwin 自带的 base64 命令,将 encode(path) 后的非中文字符串传给 Cygwin 之后,再 decode 得到包含中文的路径。然而不行,正确的 base64 传递到 Cygwin 之后 decode 却是乱码。
问题的原因很容易想到,那就是编码的问题。经过几次输出中间变量后验证了这个猜想:Windows 采用的是 GB2312 编码,而 Cygwin 采用的是 UTF-8. Windows 将当前路径作为参数传递给 Cygwin 主程序时,Cygwin 不能正确读取路径。
修改 Windows 或者 Cygwin 的默认编码肯定是下下之策。解决该问题最终还是绕不开编码转换。我最终的思路为:
我的 Cygwin 安装目录为 C:\cygwin64,Shell 为 ZSH,如果你使用的是 Bash,有的地方与我的不同。具体步骤如下:
导入注册表文件 cygwin.reg:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin64_bash] @="打开 Cygwin 终端" "icon"="C:\cygwin64\Cygwin.ico" [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin64_bash\command] @="C:\cygwin64\run_by_right_click.bat \"%V\""
我们的入口程序 C:\cygwin64\run_by_right_click.bat
@echo off SET dir=%1 REM 双引号删除 SET dir=%dir:"=% C: chdir C:\cygwin64 rem del /Q chere.path set /p="%dir%">chere.path bin\zsh.exe -li
bat 代码是真的难写。。。写这段代码我便踩了无数的坑。
在 Cygwin 内编写 ~/.zshrc,在末尾添加目录跳转命令:
if [ -e /chere.path ];then
/usr/bin/enca -L zh_CN -x utf-8 /chere.path
CPWD=/usr/bin/cat /chere.path
rm /chere.path
cd /bin/cygpath "$CPWD"
fi
这里用到了 enca 用于自动编码转换,所以需要在 Cygwin 包管理器中安装这个软件。
over!
现在便可以在中文文件夹中右键打开 Cygwin 了。
最后最后。你可能会说,为啥都新世纪了,你还在用 Cygwin 这种… 模拟器?原生 Linux/ 虚拟机 不好用嘛?WSL 不香吗?甚至 Powershell 不也不错?
那我还真觉得 Cygwin 秒杀上述所有的方案。首先,我只是想在 Windows 上安装一个代替 cmd 的 Shell 环境用于日常操作,并不需要高性能什么的,所以原生 Linux 系统、虚拟机、Docker 就不是解决同一个问题的东西。
至于 Powershell,虽说是比 cmd 好多了,但毕竟是另一套语法和体系,我不想学它也对它不感兴趣。Bash+GNU tools 那才是世界通用法则。ZSH 作为日常使用的终端也确实美观好用!
而 WSL 这东西确实很吸引人,性能比 Cygwin 强太多,几乎就是原生系统。然而!WSL 运行于内核态,与 Windows 平级,就算有文件系统的映射,WSL 也并不能直接当作 Windows 的 Shell 来使用的。看下面的图你就知道我在说啥了。

图中,npm 和 git 是我在 Windows 中安装的 exe 包,而 ssh、tail、md5sum 是 Cygwin 中提供的 Linux 命令,直接相互调用无压力,这才是 Windows 中我想要的 Shell 的样子。可是 WSL 是不能这么做的,两个系统是隔开的。
Windows虽名叫“窗子”。
可它默认的“窗口分屏”功能却简陋到了异常:
——Windows也因此完全没法实现一步“上下二分屏”。
——而三分屏乃至各种花式分屏,属于想都别想。
——因为就连基本的四分屏,都必须借助 Win+方向键 的快捷键才能实现。
![]()
在小屏幕+横屏下使用尚能凑合。
可对于带鱼屏/大屏用户,乃至竖了一块24寸屏幕当作副屏的我而言——
仅仅是在竖屏下进行一次“上下分屏”,都需要整整四步+两次快捷键+一次手动调整窗口尺寸的“曲线救国”:
win+←快捷键将窗口分为半屏;win+↑将窗口进一步分为1/4屏;![]()
——这已经完全没法用了。
既然系统自带不给力,那就得靠万能的第三方想想办法。
——子曰:“你已经是个成年人了,该学会自己装软件了。”
在试用了一大堆分屏软件后,我最终选择了PowerToys,原因无他:
——是的,你没看错。
点进软件的Gayhub主页,开发者的名字竟神TM写着“Microsoft”。
![]()
来自巨硬带着爱。
——这是一款由微软亲自部署,亲自开发的”合集“性质软件,作用是扩展自家系统的高级功能。
且扩展的功能远不止一个“分屏”,堪称丰富:
“WTF????”
合着巨硬也TND知道自己那破“窗子”功能残缺,甚至自己做了个合集工具来补全。
还开源在了Gayhub——
——而不是通过Windows更新,直接把这些功能整合进系统??
![]()
——成年人如我,面对如此风骚操作,也不得不一脸懵逼。
正文开始之前必须提醒:
如果你对软件的其他功能感兴趣,又看不懂鸟语,请参考/对照这篇文章提供的UI翻译,摸索使用。
在项目页面下载并安装PowerToys。
打开软件的第一页,这里有每一项扩展功能的总开关。
如果你只需要分屏功能(FancyZones ),那最好将Available PowerToys下不需要的功能全部关闭。
![]()
往下滚动会看到General项,翻译如图:
![]()
推荐照图配置,完成配置后点击右上角的Save保存。
完成基础设置后,点击左侧列表的FancyZones,进入分屏功能的相关设置。
FancyZones的重点功能翻译如图:
![]()
![]()
![]()
推荐照图配置(全部关闭),完成配置后点击右上角的Save保存。
部分功能请根据自身习惯,酌情开启。
完成以上设置后,回到这一页的顶部。
点击Edit zones,打开“分屏区块编辑器”窗口配置你的分屏方式,翻译如下:
![]()
注意:
Edit zones,这样才能为每块屏幕进行分别的设置。软件默认提供了五种窗口排列模式。
根据你的自身需求选择,点击Apply保存即可开始使用。
效果如图:
![]()
而PowerToys为每一块屏幕都提供了最多40个的分屏区块:
即是说——
——只要你的屏幕够大,你甚至可以分屏数框框:
![]()
哪怕你对自带的窗口排列方案不满意。
也可以进入“分屏区块编辑器”,点击左下角的Edit selected lgyout进行自定义布局。
就像这样:
![]()
可以自由调整每个区块的大小,以及添加/删除区块。
保存即可开始使用。
这里就请各位按照需求,自由发挥了。
PowerToys的分屏教程至此结束。
以我个人为例,需求如下:
所以我在32寸的主显示器上,进行了如下配置:
![]()
这样在32寸的主屏上拖拽窗口,将不会调用PowerToys分屏,而是windows默认。
至于24寸的副屏,则直接以默认的“Rows”排列方式建立了“上下三分屏”。
![]()
最终效果如图:
![]()
拖动窗口进目标屏幕即可触发分屏。
而这个“上下三分屏”,实际也并不是单纯的分三个屏幕——
——当你将窗口拖到两个分屏区块之间时,会合并两个区块形成一个2/3屏的大窗口,变成一大一小的上下二分屏。
而当进行多窗口的细碎任务时,自然也能进行三分屏。
这个意料之外的功能不仅令人惊喜,更实用到了异常。
——而触发这一切,只需要简单的动动鼠标,一气呵成!
这一刻,我不由得湿了,
眼眶。
——谁能想到,最终完美解决Windows下竖屏“上下分屏”难题的,居然是Microsoft自身。
只有魔法才能击败魔法。
——也只有巨硬才能完善巨硬本身。
而PowerToys项目附带的功能,早已包括但不限于“分屏”。
引用wiki,项目的定义如下:
Microsoft PowerToys是一组免费的系统工具软件,由微软为Windows操作系统上的高级用户设计。
这些程序为了使生产力达到最高,加入或变更了一些功能,或加入更多自定义选项。
希望未来某天。
PowerToys项目里的实用功能稳定完善,并最终内置进bug10。
毕竟比起印度咖喱翻来覆去为了KPI瞎几把魔改UI,这些真正提高工作效率和使用体验的东西,才是Windows迫切需要的“更新”。
倒杯凉水,坐和放宽。
近期完成了桌面硬件升级的我,现在终于完成了软件上的进化。
——完美解决双屏下分屏难的痛点。
![]()
看着屏幕里纸片美少女几乎“等身大”1:1的紧致大腿与丰满胸部。
——不由得嘴角上扬。
“啊!爽到!”
关于桌面硬件”升级“的东西,近期会单独写几篇东西骂街。