diff options
Diffstat (limited to 'content/article')
| -rw-r--r-- | content/article/no-ai-for-my-joy.md | 91 |
1 files changed, 82 insertions, 9 deletions
diff --git a/content/article/no-ai-for-my-joy.md b/content/article/no-ai-for-my-joy.md index 0bd78399..53015104 100644 --- a/content/article/no-ai-for-my-joy.md +++ b/content/article/no-ai-for-my-joy.md @@ -9,17 +9,17 @@ draft = true toc = true +++ -标题之所以没有使用 LLM 这个在如今大多数情况下更准确的词,是因为我想讨论的是更宽泛的技术。帮人做事的不只是大语言模型,对于个别人来说,还有可能是文生图模型等等。所以我使用了 AI 这个词。 +标题之所以没有使用 LLM 这个在如今大多数情况下更准确的词,是因为我想讨论更宽泛的技术。帮人做事的不只是大语言模型,对于个别人来说,还有可能是文生图模型、图像视觉模型等等。所以我使用了 AI 这个词。 如果你读过本博客其他有关 AI 的文章,你会发现我大部分时候都没什么好话说。我为什么不喜欢这门*不少人都相信即将翻天覆地地改变世界*的技术呢?我就从我最熟悉的领域说起吧。编程,也正是如今受 LLM 影响最大的技能之一,是我从小学五年级就开始做的事情。我喜欢编程,一开始是因为我喜欢创造的感觉,我还记得我写第一个易语言程序的时候(很不幸,这的确是我的启蒙编程语言),我把 UI 拼成自己喜欢的样子时有多高兴。后来,我意识到自己代码能力太弱,那时的我连分支和循环结构都不知道是什么。<!--more--> -尽管我仍然喜欢创造,但我很快迷上了另一项可以称作是智识锻炼的活动——写代码本身。我喜欢研究如何写出漂亮的代码,我喜欢思考编程语言和自然语言的关系,我总是在思考什么样的代码是好的代码。可如今,当我放下 Bob 大叔写的《代码整洁之道》时,我叹息。函数体里的代码应该位于同一抽象层上,函数应该简短,一个文件的长度不应该超过一个屏幕的大小…… 这些东西还有人在乎吗? +我仍然喜欢创造,但我很快迷上了另一项可以称作是智识锻炼的活动——写代码本身。我喜欢研究如何写出漂亮的代码,我喜欢思考编程语言和自然语言的关系,我总是在思考什么样的代码是好的代码。可如今,当我放下 Bob 大叔写的《代码整洁之道》时,我叹息。函数体里的代码应该位于同一抽象层上,函数应该简短,一个文件的长度不应该超过一个屏幕的大小…… 这些东西还有人在乎吗? 我从今年开始学 Lisp,准确来说是 Clojure 和最近初探索的 Guile Scheme。在感受函数式编程的震撼之时,我也被另一种焦虑缠绕着:没人在乎你的代码漂不漂亮,没人在乎架构是否合理,没人在乎你用的什么编程语言,人们只想让程序运行起来,把事情办好,而且越快越好。当然,有人会像要求设计师必须用 PhotoShop(否则显得不专业)一样要求程序员必须用*丑陋的* Java 和 Spring Boot 做开发,但如果可以,他们真的想要完全把代码消除掉,甚至[把软件工程师也弄走](https://jrswab.com/blog/why-do-they-want-to-get-rid-of-software-engineers/)。讽刺的是,他们既无法理解写代码本身的乐趣,又觉得写程序就只是写代码,觉得软件工程里的工程二字没有实义。 我逐渐把握了我对生成式人工智能的矛盾态度,其实一点也不矛盾:==和所有技术进步一样,我想让技术解放我,让我不必做我不想做的事情;但我不想让技术限制我,让我没法享受我想做的事情。== -我逐渐意识到,编程智能体(Coding Agents)之所以发展迅猛,很大程度上是因为行业里充满了**不喜欢写代码的程序员**。很不幸,我属于喜欢写代码的那一类。 +我逐渐意识到,编程智能体(Coding Agents)之所以发展迅猛,很大程度上是因为世界上到处都是**不喜欢写代码的程序员**和觉得创造软件就是写代码的普通人。 ## 叛徒 @@ -45,13 +45,15 @@ _*“请你帮我……”_ ## 脑腐 -LLM 在很多层面都和短视频十分相似。首先,它们都有类似老虎机的交互逻辑,再往下一刷就能看到更有趣、更新鲜、更吸引人的内容,再写一条提示词、再听一句「You're absolutely right!」,问题就会引人而解。尽管总是事与愿违,但我们似乎不愿意停下,*就像无法进行更高级的反思的动物一样*。如果给老鼠一个按钮,按下之后它就会经历性高潮,那么它就会一直按这个按钮,直到死亡。 +LLM 在很多层面都和短视频十分相似。首先,它们都有类似老虎机的交互逻辑,再往下一刷就能看到更有趣、更新鲜、更吸引人的内容,再写一条提示词、再听一句「You're absolutely right!」,问题似乎就会迎刃而解。尽管总是事与愿违,但我们似乎不愿意停下,*就像无法进行更高级的反思的动物一样*。如果给老鼠一个按钮,按下之后它就会经历性高潮,那么它就会一直按这个按钮,直到死亡。 + +在哲学意义上,人与动物的区别并不是会使用工具,而是能够进行反思。过度地刺激动物性的部分,貌似会让人短暂地失去这个能力。 除了[成瘾性](https://jkap.io/token-anxiety-or-a-slot-machine-by-any-other-name/),LLM 对大脑的影响还有很多。短视频的恶性影响在诞生十年后才得到广泛关注,而即便是这样它的热度也只增不减,谁知道 LLM 会对大众造成什么样的影响? 我有实感的另一个 LLM 对认知的影响是,它加剧了确认偏误(confirmation bias)的发生。什么是确认偏误?某个醉汉在路灯下找东西,路过的警察问他是不是有东西丢在灯下了,他说不是,他在这找仅仅是因为这里有光。 -就在写文章的今天,我经历了让我感到非常羞耻的事件。我在联邦宇宙上用英文和别人讨论 Git 新特性 `git history reword`,其中我们谈到了给 commit 签名的问题,对方好奇 `reword` 会不会影响签名。我记得我能够给 SSH Key 签名的 commit 执行 `reword`,但 GPG Key 签名的却不行。 +就在最近,我经历了让我感到非常羞耻的事件。我在联邦宇宙上用英文和别人讨论 Git 新特性 `git history reword`,其中我们谈到了给 commit 签名的问题,对方好奇 `reword` 会不会影响签名。我记得我能够给 SSH Key 签名的 commit 执行 `reword`,但 GPG Key 签名的却不行。 这是完全错误的,我被 LazyGit 的快捷键误导了。LG 有 `reword` 快捷键,但这在 `git history reword` 发布之前就有了,它实际上使用的是 `git rebase -i`。由于 LG 的限制,它不能和 GPG 一起使用 `git rebase -i`,所以就有了 GPG 签名的 commit 不能 `reword`(实际上是 `rebase`)但 SSH Key 签名的 commit 可以的情况。当时的我没有搞清楚,于是认定这是事实,所以开始思考:为什么 GPG 签名的 commit 可以 `reword`,但 SSH Key 不行呢?两者是不是在原理上有所差异,比如 SSH Key 仅仅对 commit 内容签名,而 GPG 还签名 commit 的 parent hash,所以历史的变更不会影响 SSH 签名? @@ -81,11 +83,49 @@ LLM 是个冰冷的确认偏误制造机。 惰性和急躁——这是我目前的解释。某种程度上,高强度使用生成式人工智能还加剧了这两种特质,造成了恶性循环。 -…… +这两种特质不是刻在性格里的东西,而是短期内被影响的。短视频这一媒体形式已经被基本证实会影响分析能力[^2]和前瞻性记忆[^3],与内容无关,哪怕是在*摄入*大量看起来很有用的知识,也会让人变笨、变得更难集中注意力,而且短期就能造成影响(研究中,刷十分钟短视频再进行认知测试,成绩就会有明显地下降)。所以,使用某种技术是有可能造成认知能力下降的,而且这种下降可能与使用技术的目的无关,只和形式与技术本身有关。技术本身就是有倾向的,Neil Postman 的《[娱乐至死](/library/2024/娱乐至死/)》预见了这一点。 + +尽管没有研究证实,但我们凭什么相信 LLM 以及其他的 AI 技术不具有这种天然的降智特性呢?而且它更狡猾,它让人以为自己在思考,因为有半主动的交互过程发生(不过有多少人在和 LLM 对话时仅仅只是在回应它抛出的「要不要我帮你……?」)。只能等待有相关的学术研究出现了。 + +惰性源自于对痛苦耐受程度的降低,未知是痛苦的,所以人不得不思考、探索、求助来消除未知,如今这个痛苦可以被 LLM 快速地消除,所以人们不再思考。对 LLM 的依赖可能并非源自于求知欲,而是源自与对情绪的逃避。我在《[不做信息的消费者,从写周刊开始](/essays/why-blog-weekly/)》中是这样定义和批评消费的。 + +> 消费是短见的应付当下情绪的行为,这些情绪往往会带来某种不适,而人们用触手可及的消费行为缓解这种不适。比如,人们通过发明短视频消解了「无聊」这一不适,通过进出商场或使用网购软件消除了「空虚」这一不适,甚至,在我看来,美国人滥用止痛药的行为也是一种消费,用于消除疼痛带来的不适。 +> +> 然而,无聊、空虚和疼痛,任何形式的不适,都是一种「负反馈」,用于修正行为,提醒大脑:下次要更好地安排时间和任务,这样就不会感到无事可做;我必须直面自己的情感需求,找到空虚的源头,才能避免这种深不见底的痛苦;我以后可不能这么冒失了,必须保养好自己的身体,我太怕疼了。==拒绝将自己暴露在有益的负反馈下就是在任由自己变蠢。== + +要说 LLM 真的帮普通人做成了什么,那就是创造了以前所未有的速度消费信息的媒介。知识本身真的重要吗?事实真的重要吗?似乎只要思绪中的未知消失就好。 + +Ursula K. Le Guin 在她的小说《[黑暗的左手](/library/2025/黑暗的左手/)》里这样写道: + +> 知道错误问题的答案是毫无用处的。 + +这句话出自书中隐者村的一位老者,他们的聚落举行占卜仪式,就是为了向世人展示这个道理。我写过一篇文章,论述[为什么请教 LLM 和占卜算命极其相似](/essays/为什么请教AI和占卜算命极其相似?/)。 + +## 幻觉 + +我在大量依赖编程智能体之前,其实有阅读[软件架构相关的书](/library/2026/clean-architecture/),也因此我不至于写出漏洞百出,让人无法理解的 Slopware[^4],而且,我在使用智能体的时候,有尽力清晰地描述需求、做出深思熟虑的系统设计决策、做架构决策、在恰当的时机停下来进行重构,我在费力地思考。这样的过程并不是被动的,那 LLM 的负面影响会被减轻吗? + +可以确定的是,我的确会在几个小时内一行代码都没写的情况下感到劳累和…… 某种程度的满足感。这种满足感并不是发自内心的「我亲手做成了某件事」带来的,而是「我好像真的创造了某个东西」。如果是我自己写代码,我会同时感受到两种满足。 + +劳累的原因一方面是消耗了大量的认知资源,另一方面,使用智能体编程本质上是把软件开发的抽象层提升到了需求描述、系统设计和架构设计的层面,而不再关心底层的实现思路。这好像是令人激动的发现,因为这意味着软件开发过程中需求开发和系统设计占了更多的比重,而写代码则不那么重要了,而且前者是一定要交给人来做的,需求开发在获取阶段就要和客户紧密沟通,系统设计则需要有经验的工程师做出审慎的决策,还有测试和编写文档也很重要。如果从写代码中*解放*出来,人们似乎有更多的精力关注更重要的事情。 + +代码本身就不是软件开发的全部,这是肯定的。代码没那么重要?真的吗? + +代码不仅是软件行为产生的地方,也是造成软件架构的基础。早在 LLM 编程之前,不严肃对待架构的开发者就吃了很多苦头。由于源代码之间的依赖关系不合理,耦合紧密,导致需求变更时做出更改非常困难。开发的前期代码飞速增长,中后期则举步维艰。尽管用自然语言编程能够在宏观上把控架构(前提是使用者真的有设计灵活的架构的能力),但无法精细到代码之间的依赖关系。如果完全不读代码,致命的耦合就会悄无声息地发生。 + +代码也是安全漏洞发生的地方,这是无法通过系统设计消除的。如果不关注代码,就不知道机器具体做了什么,在哪一步会出问题。LLM 产出有安全漏洞的代码并不罕见,而且有些漏洞并不出现在一段代码中,而是出现在组件之间。 + +代码也是软件开发中最令人愉悦的过程。架构设计固然重要,但做高层决策十分消耗精力,而且没有实感。需求开发、系统设计等过程,都需要和很多人协商沟通,不断地讨论和修订文档,而写代码是程序员真正意义上独处的时刻。如果让这个独处时间,也变成和另一个实体的交互过程,至少对我来说,会比自己写代码更累。 + +让我感到最讨厌的,是某些人抱有的玄学心态。我某天做家务的时候在听一期讲 AI 的播客,他们没有一个人是相关领域的专家,其中有个男人讲的话非常讨厌,语气和内容都是,我听到这句话之后就立刻关掉了播客。他们本来在讨论和 ChatGPT 聊天时遇到的问题,结果这个男的没头没脑地冒出来一句:「你给 ChatGPT 充钱了吗?」对方回答没有,男的就换了个强调说:「哎!难——怪——啊——」。 + +不少人把具体的工作变成了与聊天机器人交互的过程,这就诞生了不少毫无根据的玄学,比如提示词神话,比如订阅什么价位的方案,比如在没有数据支撑的情况下根据自身局限的经验判断模型之间的优劣并十分笃定,以及任何类似于「必须要这样和 AI 聊天才能获得好的结果!」的说辞。 + +代码本身是确定的,是冰冷的,是无聊的,是可证伪的。如果我们在讨论代码层面的事情,那么我们非常容易相互理解,因为我们都清楚代码的执行路径、依赖关系、数据流等等,也就更容易讨论得到解决方案。倘若我们抛弃代码,去讨论模糊的自然语言,讨论怎么和智能体进行交互,那只会诞生出越来越多的玄学迷思,因为 LLM 本身就不是决定论(deterministic)[^5]的。完全抛弃代码,全面使用 LLM 编程,会把技术问题变成模糊且不可控的儿戏。 ## 反思 -前文的所有论述都建立在一个尚未被证实的假设上:AI 真的能代替人。 +人们似乎都相信一个尚未被证实的假设上:AI 真的能代替人。 几乎所有人都在夸大这项技术的影响,实际上,就和所有计算机程序一样,没有输入就没有输出。银行有非常健壮的自动化软件系统,但仍然需要柜员和人工服务。比一般的软件系统更危险的是,至少对于语言模型来说,AI 的数据不是*决定论*(deterministic)的。这个翻译可能不准确,我解释一下就好。 @@ -97,11 +137,44 @@ LLM 是个冰冷的确认偏误制造机。 ## 幕后的受害者 -https://notabug.org/ +前文我讨论了我不想让 AI 帮我做事的心理原因,依赖 AI 技术可能造成的认知能力下降,将技术细节提升为高层决策带来的模糊性和不可预测性,以及大模型本身的非决定论特质。接下来我要讨论更棘手的问题——道德。 + +在 2026 年浏览万维网,除了能够发现更多设计现代化、功能更强大的网页应用之外,还能发现更多无法直接访问的小网站。 + +免费代码托管平台 [NotABug.org](https://notabug.org/) 被迫停止 Web 访问,现在用户只能通过 SSH 访问已有的 Git 仓库,原因是: + +> Due to relentless AI scrapers notabug.org is currently down. <br/> +> 由于没完没了的 AI 爬虫,notabug.org 目前无法访问。 +> +> We are attempting to come up with a solution to this problem.<br/> +> 我们正在试图找到问题的解决方案。 + +稍微大一点的网站,比如 Wikipedia,去年也深受其扰。他们在去年四月发布的[文章](https://diff.wikimedia.org/2025/04/01/how-crawlers-impact-the-operations-of-the-wikimedia-projects/)中表示,昂贵的流量中有 65% 都来自机器人。 + +我平时是关闭 JavaScript 的,只对信任的网站打开,而不少网站的反爬虫策略利用了 JavaScript 和 Cookie(爬虫不执行 JS 代码,也不储存 Cookie),我也会被错误拦截。 + +访问 [Debian 的包目录](https://packages.debian.org/),会显示: + +> AI scrapers break the web, to use this page you'll need JavaScript enabled.<br/> +> AI 爬虫毁了 Web,要使用这个页面你需要启用 JavaScript。 + +大大小小的代码托管网站都使用了类似的反爬手段,比如 [Codeberg](https://codeberg.org/),我自己的 [Forgejo 实例](https://src.eltr.ac/) 也一样。这些平台本身是开放且尊重用户的,不需要使用 JavaScript 和 Cookies 也能正常访问,但 AI 爬虫的猖獗让他们无法正常提供服务,必须采取限制手段,否则要么服务器被打趴下,要么任由肮脏的机器人给自己留下昂贵的账单。 + +所以,这显然是个道德问题。科技公司是吸血鬼,他们利用开放的万维网内容训练 AI 模型,从画师在社交媒体上发布的图片,再到各大代码托管平台上的开源代码。 + +使用 AI 绘图、编程、写文档、做任何事情,不都是在变相吸这些受害者的血吗? + -https://www.debian.org/distrib/packages ## Footnotes [^1]: Ghostty 的分屏快捷键,分屏后打开新的终端窗口 +[^2]: 参见:[Swiping more, thinking less: Using TikTok hinders analytic thinking](https://cyberpsychology.eu/article/view/33099) + +[^3]: 参见:[Short-Form Videos Degrade Our Capacity to Retain Intentions: Effect of Context Switching On Prospective Memory](https://dl.acm.org/doi/epdf/10.1145/3544548.3580778) + +[^4]: AI 生成的废料被称作 Slop,而 Slopware 和 Slop 和 Software 的缩合词。 + +[^5]: 如果你不了解这个词的具体含义,我会在后文展开。 + |
