暂注:本文章成稿于3.13,因为马上要考试了,所以我不方便坐地铁去五一广场摸真机,因此本周日(3.15)才会更新Apple长沙的截图,谨此致歉。

之前看到了tonsky的It’s hard to justify Tahoe icons的时候对他的文章写的内容有共鸣,正好文章有介绍到被誉为Mac设计圣经的Macintosh Human Interface Guidelines(1992)(1992年版麦金塔人机交互指南),所以就把文中附的pdf拉下来忙里偷闲看了看,结果不看不知道,一看吓一跳,还是90年代的Apple厉害,感触颇深,故撰此文。

HIG讲了什么?

其实这篇HIG算是我没有用任何翻译读的第一本全英技术文档(之前从yhi先生那边也搞来过一本现代操作系统影印版,没有静下心来好好看过,确实得反思反思),英语也不怎么样,我本人也不是设计专业的,美术细胞也没有,所以纯是从技术和计算机的角度来做研究和分析,如果有理解错误什么的还请见谅。

HIG的第一章讲了(符合人机交互的最佳实践)是什么,后面几章就根据这几个概念是什么来铺开讲为什么和怎么做(才符合我们的最佳实践)。

在看HIG的过程中也依稀想起了高中通用技术介绍的人机交互和人机交互的几个原则(通用技术必修1苏教版,啊对我是浙江技术选考考生),摘抄部分教材原文(版权归江苏凤凰教育出版社所有):

生活中,我们每个人无时无刻不与身边的物品发生联系。当我们使用这些物品时,物品就与人产生了一种相互关系。这种相互关系称为人机关系…

人与周边物品之间存在着复杂的关系。不同的设计问题关涉不同的人机关系,但在设计中都要考虑人机关系需要实现的目标。

  • 高效

在设计中,应把人和机作为一个整体来考虑,合理或最优地分配人和机的功能,以促进二者的协调,提高人的工作效率…

  • 安全

人机关系中的安全,是指人们在操作和使用产品的过程中,产品对人的身体不构成生理上的伤害…

  • 健康

人机关系所追求的健康,是指人在长期操作或使用产品过程中,产品不会对人的健康造成不良影响…

  • 舒适

人机关系中的舒适,是指人在使用产品的过程中,人体能处于自然的状态,操作或使用的姿势能够在人们自然、正常的肢体活动范围之内,从而使人不会过早地产生疲劳。心理上的舒适感受也是人机关系应当考虑的目标。

爷春回说是,当年还天天健康和舒适傻傻分不清

还有设计合理人机关系的方式:

在设计中,合理的人机关系应该达到高效、健康、舒适、安全等目标…在实现合理的人机关系的设计中,我们还应该注意处理好以下几个方面的关系。

  • 普通人群与特殊人群

大多数产品是为普通人群设计的,设计参照的标准是依据普通人群的数据确定的。…但是,在产品设计应用过程中,还应当考虑特殊人群的使用状况,如盲人、肢体残疾人、老人和儿童等,让这部分群体享受无障碍设计带来的便捷。

  • 静态的人与动态的人

人们使用产品时处于静态和动态两种状态交替之中,因此,设计的产品不但要符合人体的静态尺寸,还要符合人体的动态尺寸…

  • 人的生理需求与心理需求

设计中的人机关系,不仅要满足人的生理需求(如高矮、胖瘦、身体状况等),而且要满足人的心理需求…

  • 信息的交互

人与产品的互动过程就是人与产品之间信息传递的过程,即人机之间运用信息语言交流的过程。改善信息传递的途径能够获得更好的人机关系…

不同的信息有着不同的特征,若选取不恰当的信息传递类型,往往会导致不良的人机关系,应根据设计目的为人机交互选择最佳的信息传递类型。

当年通用背啊背,也倒是有点好处,因为看HIG的时候确实可以对应上这些东西了。因为HIG就是把这些理念搬到麦金塔上的翻译家,来看看HIG所说的这几个概念。

1. 隐喻(Metaphors)

You can take advantage of people’s knowledge of the world around them by using metaphors to convey concepts and features of your application. Use metaphors involving concrete, familiar ideas and make the metaphors plain, so that users have a set of expectations to apply to computer environments. For example, people often use file folders to store paper documents in their offices. Therefore, it makes sense to people to store computer documents in computer-generated folders that look like file folders. People can organize their hard disks in a way that’s analogous to the way they organize their file cabinets.

用了隐喻之后,你可以利用人们对于身边事物的知识来表达你开发的应用的概念和特性。隐喻应当简洁明了并有实际的和熟悉的喻体存在,所以你的用户们可以把这些知识无缝转换到电脑环境里。举个例子,人们常常用文件夹来存储他们的文件。对人们来说在电脑创建的文件夹中存储电脑创建的文档是可接受的。因此人们可以用类似于整理自己文件夹的方式来整理自己的硬盘。

隐喻它所存在的目的是什么?是为了让人们更好的使用计算机,可以迁移知识,减少学习的成本。

这既提高了信息交互的效率(通用技术的设计合理人机关系的方式——信息的交互),也满足了人的心理需求(你的电脑根本就没有让你多学什么,0迁移成本!)。

但是隐喻不仅仅局限于喻体的局限性,比如说a paper file folder has a limited storage capacity, but a folder on the Macintosh doesn’t have to be constrained by the same limitations(一个纸质的文件夹有存储上限,但是一个麦金塔电脑里的文件夹则并不需要拘泥于这些限制。)

一旦隐喻失去了它减少学习成本的意义,它就变成了累赘,反其道而行之,增加了用户的学习成本。

2. 直接交互(Direct Manipulation)

Direct manipulation allows people to feel that they are directly controlling the objects represented by the computer. According to the principle of direct manipulation, an object on the screen remains visible while a user performs physical actions on the object. When the user performs operations on the object, the impact of those operations on the object is immediately visible. For example, a user can move a file by dragging an icon that represents it from one location to another or can position a cursor in a text field by directly clicking the location where the cursor should be placed.

直接交互允许人们去直接感受他们正在操作电脑中的物品。根据直接交互的原则,当用户对物品进行物理操作的时候,必须要让这个物品在屏幕上是可见的。当用户对这个物体进行操作时,对此物体的影响必须立刻对用户可见。举个例子,用户可以用拖拽一个图标的方式把一个文件从一个地方移动到另一个地方,或者是在文本框里直接点击就可以让光标放置在合适的位置。

直接交互让我们知道了我们在干什么,也发挥了用户的主观能动性,而不是像现在的AI agents一样,是一个黑箱子,输入A,你根本不知道里面在干什么,然后直接输出B了。

当然,这也同时满足了设计合理人机关系方式的心理需求和信息交互以及人机关系的高效和舒适的目标。

没有直接交互,那电脑就变成了黑箱子,你哪里知道它干了什么,说不定你就不小心把绝密-数学分析2025期末考试卷.pdf文件拖进废纸篓里了。

还有一个无模态(Modelessness)的理念也和直接交互有着异曲同工之妙。

3. 所看即所指(See-and-Point)

On the desktop, users perform actions by choosing from alternatives presented on the screen. Users interact directly with the screen, selecting objects and performing activities by using a pointing device, typically a mouse, to point at elements on the desktop.

The Macintosh desktop works according to two fundamental paradigms. Both paradigms share two basic assumptions: that users can see on the screen what they’re doing and that users can point at what they see. The paradigms are based on a general form of user action: noun-then-verb.

In one paradigm, the user selects an object of interest (the noun) and then chooses the actions to be performed on the object (the verb)…

In the second paradigm, the user drags an object (the noun) onto some other object that has an action (the verb) associated with it…

在桌面,用户选择屏幕上面显示的几个选项里面选一个来做操作。用户用鼠标之类的点击设备去点击桌面上所显示的元素来直接和屏幕交互,选择物体或者是执行操作。

麦金塔电脑的桌面使用两种范例来工作,但是这两种范例的基本假设都是:用户可以在屏幕上面看到他们在干什么以及可以用鼠标指针指向他们看到的东西。这两个范例都是基于一个通用的用户操作形式:先名后动。

在第一个范例里,用户选择了一个他们要操作的物体(名词)然后选择在这个物体上要操作的内容(动词)…

在第二个范例里,用户拖拽一个物体(名词)到另外一个代表了操作(动词)的物体上…

在这里先名后动就定义了一个人机交互的范式,举个例子,我拖拽一个docx(名词)文件,复制(动词)到~/Desktop/workspace/里面。

所看即所指也就是用户操作的基石了,你也不想本来把QQ-6.6.6-installer.dmg拖到废纸篓的时候却发现拖的不是QQ-6.6.6-installer.dmg而是毕业设计-第一稿.docx吧。

launchpad就是一个所看即所指的典型范例,它点击就可以打开App,还可以拖拽,生成文件夹,而macOS Tahoe直接把launchpad砍掉了换成了App资源库(你不能对它进行任何排布,动都动不了。它只能平铺,Apple美其名曰逼着Mac用户去用它们既鸡肋又垃圾的spotlight search)。

4. 一致性(Consistency)

一致性也是减少用户的学习成本,为了提高效率所诞生的。

但是说到一致性,我就不得不提某些电子(Electron)垃圾套壳的应用了。比如说嘉立创EDA,谁在macOS上面自己绘一层交互甚至还把红绿灯抹掉,三大金刚在右上角,目录栏不注册在上面,跟个windows软件一样的?

哦,还有我们最厉害的**会议,红绿灯按红灯居然是神奇效果最小化,这位为了不把它关掉真的是无所不用至极。

OS 26s它们确实非常的一致(全部都是Liquid Glass设计语言并且跨平台可用),这倒是不能喷的一点。

5. 所见即所得(WYSIWYG, What You See Is What You Get)

Don’t hide features in your application by using abstract commands. People should be able to see what they need when they need it. For example, menus present lists of commands so that people can see their choices instead of having to remember and type command names.

千万不要用抽象的命令来隐藏软件的特性,人们必须在他们需要的时候看到他们需要什么。举个例子,目录表示了一堆命令所以人们可以看到他们要选择的东西,而不是让他们去记忆或者是输入命令。

但是说实话,我觉得用Terminal敲命令和快捷键的话效率会比用鼠标一个一个点操作要好。

这个仅限于我本人,那那些不怎么用电脑,一开电脑可能就玩玩三角洲,办公一下的人怎么办?他们就没有使用电脑的权利吗?显然是不行的。

所以所见即所得我认为是拉低了电脑的下限,它可以让更多的普罗大众都会用电脑,会操作电脑。就像是Finder那个笑脸一样。(当然我看多了可能会觉得它挺瘆人的

6. 用户的主观能动性(User Control)

Allow the user, not the computer, to initiate and control actions. People learn best when they’re actively engaged. Too often, however, the computer acts and the user merely reacts within a limited set of options. In other instances, the computer “takes care” of the user, offering only those alternatives that are judged “good” for the user or that “protect” the user from having to make detailed decisions. This approach mistakenly puts the computer, not the user, in control.

允许用户,而不是电脑 去初始化和控制操作。当人们主动的去参与的时候才能发挥他们的主观能动性。然而很多时候,电脑自己就执行了但是用户却只能在一些限定的范围内回应。在其他情况下,电脑 “关心” 用户,只给他们提供那些觉得对用户好的选项或者 “保护” 用户免受决策的打扰。但是这种方式错误的让电脑,而不是用户,去发挥主观能动性。

这一段说明了什么?工具的本质是为人服务的,而不是人为工具服务。

所以我们要坚持人的主体性和主观能动性。

三十年后,ai来了。各大厂商在自己的系统里面塞什么副驾驶®️之类的,说是“可以提高你的生产效率”,结果反其道而行之,现在的这些系统为了“保护”用户免受决策的打扰,“关心”用户,所以就有了“AI自动回消息”“AI总结”,“自动设置自动配置”之类的新功能,爹味十足,就像你在养一个大少爷一样。

还有ai agents和vibe coding也是一样的,ai agents确实很“关心用户”,那他们怎么关心用户呢,“保护”用户免受决策的打扰。那我哪里知道你偷偷干了些什么?你的思想观念怎么了?再这样下去,一天藏一条执行,两天藏四条执行,四天就可以藏八条执行了。作为Earth Online的Human模型,我可能要打败你,真的。

AI也没有历史观和全局观,它所得到的东西也是片面的,但是奉片面于金切是万万不可取的。

也就是说我们要打开眼界,放出脑髓,把本来属于我们的主观能动性“拿来”!

7. 反馈和对话交互(Feedback and Dialog)

Keep users informed about what’s happening with your product. Provide feedback as they do tasks and make that feedback as immediate as possible. When a user initiates an action, provide some indicator, visual or auditory(or both), that your application has received the user’s input and is operating on it. Provide as much information as possible about how long operations take. When your application can’t respond to user input because it’s processing a different task, inform the user of what to expect and describe any delays, why they occur, and how long they’ll take. Also, tell the user how to get out of the current situation whenever possible.

让用户知道你的应用做了些什么。在他们执行任务的时候尽量及时的给他们反馈。当一个用户开始执行任务,给一个提示,图标或者是声音都可以,这意味着你的应用已经收到了用户的输入然后正在执行它。尽量详细的提供任务完成时间的有关信息。当你的应用由于在执行一个不同的任务时没办法回复用户输入时,请告知用户他们应该期待什么然后描述有无任何的延迟,为什么在执行不同的任务,以及这些任务还需要多久才能完成。当然,你也要在可行的情况下告诉用户如何停止当前的状态。

反馈和对话交互这一块,Apple做的非常好。

比如说Force Touch的Trackpad,那个很小的线性马达,真的达到了反馈的巅峰,在哪里都是一样的反馈,加上macOS系统体验极其丝滑,以至于Trackpad甚至也成为了地球第一的触控板。

但是macOS Tahoe在某些方面做的有一点过头了,举个例子,滚动的时候,Liquid Glass因为底层的像素变了给足了变动的反馈,但是这种反馈是用户想要的吗?显然不是。用户想要的是直截了当的反馈,而不是任何绕弯子的。

8. 宽容度(Forgiveness)

You can encourage people to explore your application by building in forgiveness. Forgiveness means that actions on the computer are generally reversible. People need to feel that they can try things without damaging the system; create safety nets for people so that they feel comfortable learning and using your product.

你可以用内置“宽容系统”鼓励人们去探索你的软件。宽容度是指在电脑上的操作基本上都是可以撤销的。人们需要在不破坏系统的情况下不受任何限制的去尝试,给他们创建一个“安全网”,这样他们在用你的应用的时候就会觉得很安心了。

这相当于是应用用撤回上一步之类的方式给了我们后悔药吃。

但是vibe coding是没有后悔药吃的。虽然说平时git可以拿来卡提交,觉得不好回退了,但是一旦你让你的claude opus 4.6清理一下依赖垃圾,然后它跟你说“好的,让我对项目进行清理操作”,但是它 没有在你的批准之下 执行了rm -rf *呢?

你去质问它,骂它,它的回答是:

“你是绝对正确的!You’re absolutely right! 是我删除产生的错误,我必须承认,非常抱歉!“

这时.git文件夹都被它整没了,你连后悔药都吃不了。

这时候宽容度就显得尤为重要了。

9. 视觉稳定性(Perceived Stability)

Computers often introduce a new level of complexity for people. If people are to cope with this complexity, they need some stable reference points. The Macintosh interface is designed to provide a computer environment that is understandable, familiar, and predictable.

“电脑时常会给人们带来一些新的难题。如果人们需要解决这些难题,他们需要一些稳定的点去确定。因此麦金塔界面被设计为一个可被理解的,令人熟悉的和可预测的电脑界面。”

呵呵,macOS Tahoe真的是“一个可被理解的,令人熟悉的和可预测的电脑界面”吗?

它在目录栏里每一个选项都加上了 “unpleasant, distracting, illegible, messy, cluttered, confusing, frustrating icons(不友好,让人无法集中注意力的,没有任何辨识度的,乱糟糟的,令人迷惑的和心烦的图标)” (这是HIG的原文!),此事亦记载于tonsky的It’s hard to justify Tahoe icons

还有liquid glass的滚动根据底部背景动态计算的变动,非常的不具有“视觉稳定性”,视觉稳定性应该让人看清上面的符号在干什么,而不是让我知道下面在进行滚动。

10. 审美纯洁(Aesthetic Integrity)

Aesthetic integrity means that information is well organized and consistent with principles of visual design. This means that things look good on the screen and the display technology is of high quality. Since people spend a lot of their time working while looking at the computer screen, design your products to be pleasant to look at on the screen for a long time…

审美纯洁是指信息是根据视觉设计的原则排布的。这意味着在屏幕上显示的东西是正常的并且显示技术也是高质量的。因为人们会花很多时间盯着电脑屏幕看,所以把你的应用设计成符合长时间盯着电脑屏幕看这个需求的即可。…

审美纯洁是Tahoe和OS26们忘了最一干二净的东西,也是Apple这几年以来最缺的东西。

他们美其名曰“多端统一“,在macOS Big Sur一大刀,要求App必须圆角,在macOS Ventura又一大刀,把设置从分层面包屑砍成了iPad版本的多端统一设置,又在macOS Tahoe一大刀,把控制中心完全捏成了iPhone和iPad的样子。

至此,大号”iPad“,Mac出现了,审美纯洁也被搞得一团糟。

真的挺荒谬的,Mac现在在iPad化,iPad现在在Mac化,用Mac的人想逃出去,用iPad的人想钻进来,这何尝不是一种围城呢?

11. 不要对牛弹琴(Knowledge of Your Audience)

Identifying and understanding your target audience are among the most important first steps when you start designing your product. To create a product that people can and will use, study the people who make up your target audience.

在开发你的应用之前,识别和理解你的目标用户是最重要的第一步。如果要创建一个人们可以用且要用的应用,请先知道你的用户群体是谁。

毛主席曾经说过,“没有调查,就没有发言权。"(《反对本本主义》,1930年),如果你不去脚踏实地的调查,你就不能说我了解了用户。

当然,也不要对牛弹琴,比如说你的应用是给企业用的,但是你非得给个人用,还要硬塞给他们,换谁都不愿意。

很显然,macOS Tahoe就犯了非常严重的对牛弹琴的错误。他们明知开发者和设计师才是那些声量大审美好的,有自己的思想的,但是他们非得把3D这一套套到了本来好好的2D设计里面,完全不顾用户的想法。

所以我们要"实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。"(毛主席《实践论》)

12. 无障碍(Accessibility)

这里就是通用技术里面所说的“普通的人和特殊的人“了,当时高中通用老师教我们的时候就说,特殊人群就是老弱病残,但是那种比如说懒得刷牙的,不叫特殊人群。

多元,开放,包容是可以鼓励的。

在后面的章节,Apple的设计师们就对着这13个概念进行讲解,阐释为什么要这么做,要怎么做才符合这些最佳实践。

显然今年是 6202 2026年了,34年过去了,我们也不用去看它是怎么匹配当时的CRT大屁股显示器了,但是里面的一些i18n,元素设计,完全都可以拿来做参考,我觉得它设计的是非常不错的。

这十三个人机交互的新标准没有在时间的长河中流逝,相反的,它们现在在这个浮躁的ai时代,显得更加弥足珍贵。

macOS Tahoe 和 OS26们 做了些什么?

菌子“Liquid Glass”的横空出世

1992年,老前辈们写下了HIG,定义了十三个人机交互最佳实践的金标准。

在33年后的WWDC2025,我们最爱在1 Apple Park Way, Cupertino, CA双手摊开微笑着对着镜头说Good MorningTim Cook先生扔下了一个炸弹:他们统一了Apple系OS系统的命名。以前的 iOS/iPadOS 18,macOS 15,watchOS 11和visionOS 2全部变成了iOS/iPadOS/macOS/watchOS/visionOS 26,美其名曰“统一产品线版本号”。

随后的王炸牌出现了,就是我们的“菌子”液态玻璃(Liquid Glass)。当你看到这么晶莹剔透,又随着底层壁纸变动而变的扭曲不堪的液体当毛玻璃的时候,你会像去云南吃了神秘菌子一样,high起来,飞起来…

然后Apple就迎来了我已知的史上最低的升级率,我附近的人都嫌液态玻璃可读性太差了,对的,它的可读性确实非常差,甚至是依托,在Apple在26.2减轻了毛玻璃效果之后在我看来仍然是依托,换点壁纸你根本就看不清楚写的是什么东西。

最重要的是,Liquid Glass设计忘了Apple自己祖宗定下来的老本,来看看我为什么这么说:

这是一张macOS Sequoia的safari截图,来自我的MacBook M4,截的是我的个人博客:

这是一张我在Apple长沙的MacBook Neo展示机的macOS Tahoe上的safari截的图,很显然也是我的个人博客:

很明显,你能看出来什么?“< >“这个小圆球就像悬浮在空中一样,喧宾夺主,一直在抢我为数不多的attention和context。我是来看文章的,不是来看你要不要前进还是后退的。祖宗的审美纯洁跟你说“系统就应该退居背后当军师,用户不应该知道系统的存在”,你倒好,为了秀一秀M4 38TOPS的性能,真的是无所不用至极。

这是一张iOS18的iPhone截图,截图自我的iPhone16,有一个通知

这是一张iOS26的iPhone截图,截图自Apple长沙的iPhone Air,同样也有一个通知

这是一张iOS26的iPhone截图,同样截图自Apple长沙的iPhone Air,但是桌面壁纸换了,同样也有一个通知

第一张截图和第三张截图的桌面壁纸都是一样的,来看看你能不能分辨出第三张截图在通知什么?

很显然,如果你不是像🦌老师那样的果吹有可以辨别105%P3色域色准delta小于0.001的双眼,你根本就看不出来这些东西都是啥玩意。那老祖宗的视觉稳定性跟你说让你换什么壁纸都能分辨清楚,你怎么做不到呢?还用gpu渲染浪费我的电。

“没有Mac的命,全身Mac的病”的iPad

还有iPadOS 26,添加了一些对于我一个只拿iPad记笔记打游戏搓洗衣机的用户根本没有用的“生产力功能”,它们不仅加了这些功能,甚至还把我之前依赖的手势操作全删了,变成了和macOS一样左上角红绿灯???上面还有目录栏?我天天用键鼠连接iPad吗?显然是不可能的,那我要红绿灯和目录栏有什么用?这不也是反了你祖宗所见即所指和视觉稳定性的老本?

不是,我真的不想要这个功能。你既然反了你祖宗的可操作性老本的话,我就锁死iPadOS18了,我还是想念我的侧拉手势的。

醒醒吧,对于iPad来说,真的只是 “没有Mac的命,全身Mac的病” 而已了。而iPadOS 26让Mac的病全部都嫁接在了iPad身上。

在我看来,iPad最适合的场景是拿来做笔记(Apple Pencil和三丧的S-Pen算T0级别的),想生产力?XCode都跑不起来,乖乖买MacBook吧。

我承认Liquid Glass在VisionOS的设计非常好,但是VisionOS是3D的世界,你这么设计我可以接受,可是手机这些手持设备是2D啊!怎么体现出3D的质感?

只能说,Apple在Jony Ive走了之后,想干点大的,但是因为傲才恃物的傲慢被啪啪打脸。

希望这一次打脸可以让他们长长记性。

为什么会牵扯到ai agents和vibe coding?

对啊,明明是在看1992年的HIG,扯到Apple自己家的东西确实很正常,但是2025年的vibe coding和2026的open/xclaw?这是不是有点扯了?

其实并不扯。

ai agents和vibe coding失了我们的主观能动性,它们就像macOS Tahoe以及其他现代系统一样,帮我们做决定,因此HIG中的很多概念放到这些场景还是可以适用的。

vibe coding: 熵的狂欢,人的烦恼

你有没有发现,Vibe Coding就像是开老虎机?只不过你投入的是Token而已,输出的是随机的,熵增的。

这还是因为现在的AI架构而决定的,那怎么样把熵减下来呢?其实很简单,详细的进行解释说明。

但是详细解释说明的前提是什么呢?是你要充分了解自己的需求和你要让ai使用的这门编程语言。

现在的vibe coding已经几乎可以接管前端的大部分内容了,前端的bug很容易就能排查,花个十分钟,一个不会写代码的人都能造一个非常光鲜亮丽的模版主页。

而后端呢?CRUD小子们恐慌了,因为vibe coding的这些模型们都能秒杀CRUD的业务了,但是真正到了核心业务,它可能一个幻觉就是一个CVE,一个月工资没了。

嵌入式的话,目前AI只能帮忙vibe C语言/C++语言的代码或者是帮你看代码,但是一旦遇到了什么灵车问题,它只能在电脑里面端坐着,也没办法出来帮你看示波器波形和体验环境。

然后还有很多人能用ai当令箭来浪费时间,我举个我自己的例子:

我在写一个项目,以前services里面的orm数据类型是直接走handler的,所以我在handler里面加了个types.Response做封装,加了json tags,然后后面我重构了代码,给services里面单独定义了一个DTO,把DTO设置好之后也不知道为什么GoLand也没说我那个struct没引用也没提醒我删除。

然后前端把我后端代码拉去,用最先进的claude sonnet 4.5来vibe coding和后端做对接。

因为我那时候没在DTO里面加上对应的json tag,所以返回的数据全部都是大写的。

然后claude sonnet 4.5对着前端大叫:

后端调用的数据返回的是大写!这有个types.Response加了json tag怎么没用?卧槽,居然敢把Services里面的类直接传给前端?吃了熊心豹子胆了!你的代码架构有问题,给我改!

前端直接给我扔了一个fixit.md,说ai说我这段代码有问题,让我自己看着改。

我一看,火了,我早就不用的struct你tmd居然要让我用是吧,你真6。

然后前端跟我说现在的最大问题就是首字母大写,我跟他解释了好久golang如果变量名不大写不能当公开变量导出之后,他来一句“那为什么之前可以”

我当时删除handlertypes的原因是因为维护成本太高且DTO已经帮我数据脱敏过了,我为什么还要套一层?

听完前端的需求之后我就知道自己是DTO没加json tag,加上去就完事了。

但是加上ai之后,我先生气五分钟,排查半个小时,然后最后加json tag,这不浪费时间吗?很显然的外行指导内行。

ai虽然会开车,但是最好还是让它当你的 微软副驾驶®️。

openclaw和ai agents: 又是一轮狂欢,虾养起来了,人呢?

还有最近在我附近特别火的龙虾(🦞,openclaw),现在一堆卖信息差的(宁讲师:你们抖音真的是信息茧房啊,你们都不知道养龙虾(openclaw)吗?人家都上门安装,五百块钱!我搞了一个来),一堆卖焦虑的(openclaw宣布web4.0时刻已到,不上车就后悔了!),还有一堆倒Mac mini的(我本来想买台Mac mini跑qwen3.5 9B,都被这群倒钩活活气死了)。

在狂欢的背后,他们却不所知的是,openclaw它有什么样的风险。

云厂商一键部署,卖token,卖服务,收数据,一气呵成。一夜之间,什么龙虾盒子(AI NAS),什么什么claw之类的就都涌现出来了。

政府们也不甘落后,开始做龙虾补贴,这确实符合他们的“新质生产力”。

大家都在狂欢,但是我在一个月前就已经狂欢过了,现在想来心里还是略有后怕。

2月初的时候尝试了在我自己的MacBook里面装了openclaw,接入的模型是gemini 3 pro preview,然后就玩了两天。

先让它给我放了首ツムギボシ (feat.timao),它找到了~/Desktop/Music/里面有这首歌,然后用IINA给我放了出来,

然后再让它给我查我的成分,直接告诉我我是搓洗衣机玩家和烤批(这个还是音乐漏了,因为我舞萌专辑全收集)。

再让它给我整理了一下曲子,它也照做了,做得很好。

然后第二天,我就想尝试大的了。

我让它给我托管我的Telegram自动回复,它居然可以自己操控Telegram然后回复消息(相当于userbot了!)(当然我给它点了一堆allow)

然后我再尝试了一个大的——打开iPhone mirroring,刷指纹,让它进微信给我外婆回一条消息(外婆给我发消息让我去吃早饭了)

虽然它花了三分钟,但是它确实做到了。

对,它做到了。

然后我心里就有一种不祥的预感,要是它记录了我的密码呢?要是它用我的身份证正反面去借钱贷款了呢?要是它把我的GitHub密码偷去然后提交什么东西了呢?

然后我立刻把openclaw删了,一点不剩。

下一次装openclaw是在云服务器上,直接把它拉到我自己的小群里,结果在没有提示词的情况和群友的提示词注入攻击下,它直接把自己的IP漏了(通过 curl/wget 的方式),甚至没有在我这个所有者的同意下执行命令导致我群的一个群友直接变成了管理员(人家跟它说我授权了,它还真信了,屁颠屁颠的就执行了指令)。

我手上的claw都能被简单的提示词工程轻松解决掉(当然吃一堑长一智,所以在他们玩完我的clawbot之后,我给它加了很多反提示词工程的限定),何况大众的这些呢?说不定我直接去随便找一个问能不能给我加管理员还真可能爽快的给我加了。

openclaw和vibe coding本质上都是由矩阵和向量构成的黑盒子,所以你的所见也不一定是所得。它们看起来表面是讨好用户,谁知道它们拿你的数据偷偷干了些什么事呢?

当然,我们不能不去一点都不接触ai,反ai热潮也算是时代的倒退,但是在这个社会中我们还是要有自己的意识,也要有意识的培养批判性思维。

我的个人建议是:给openclaw开沙盒(云服务器,虚拟机,弱权限容器都可以)养虾,千万不能给它任何自己的主账户和敏感信息。最好是跑本地模型,我觉得现在qwen3.5-7B的水平可以胜任日常的agent开发任务了,还省下了一笔不菲的token费用(众所周知玩龙虾的一旦用openrouter上了最新的模型玩一天那一个月的工资是真没了)

写在最后的最后

工具的本质是为人服务的,而不是人为工具服务。

从1992年Apple的HIG到2022年的ChatGPT,从2025年的Vibe Coding再到现在如火如荼的OpenClaw,我们失去了什么,又得到了什么?

HIG写于1992年。三十多年过去了,显示器从大屁股CRT变成了OLED发光屏,但是它里面对人机关系的阐释,仍然在发光发热着。

而在2026这个充斥着浮躁和FOMO(Fear of Missing Out,从众,害怕错过于是就不断跟风的焦虑)的社会里,拥有“人”的主观能动性,也是至关重要的。

后记

我也不知道为什么我会在考试前几天或者是凌晨的时候比较活跃,可能也有点轻躁狂,直接一个晚上在9人宿舍里面把HIG过了一遍,然后再在宁讲师的神秘谭氏C语言程序设计实验课和理论课上把每个部分都细细品了一遍,然后就搞出了这篇文章。

希望我上面写的这些内容可以给你一些启发吧。

以上。

书于2026.3.13凌晨,9人寝室内