Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

weishu.me

Weishu's Notes RSS feed

Get the latest updates from Weishu's Notes directly as they happen.

Follow now 14 followers

Find similar feeds: Tech Android AI

Latest posts

Last updated 3 months ago

KernelSU 与“开挂”,规则与被构建的公平

7 months ago

【导语】很多年前,折腾 KernelSU 让我饱受“为开挂提供温床”的批评。主流观念总是一刀切地认为:只要和“破坏规则”沾边,就是可耻的。但后来我发现,无论是在技术发展的莽荒时代,还是在我们习以为常的现实社会中,创新往往源于对边界的试探;而那些被大众不假思索地捍卫的“公平”和“规则”,很多时候,只不过是系统为了维持运转而精心构建的一套控制代码。几年前,我曾提到过,KernelSU 某种程度上算是我早年折腾科技留下的副产品。那之后,我收到过不少批评,其中很多都围绕一个判断:只要和“开挂”沾边,就是可耻的,就是不正当的。现在回想起来,我探索写科技的那几年,我的人生也开挂了。这并非说我靠技术去盈利、改变了人生,而是因为我从中领悟到了一些关于技术、规则和社会运行的东西。创新雷军在《小米创业思考》中说过,“创新,是创造性地破坏”。如果你想改变什么东西,往往要先打破点什么。做漏洞挖掘的人,如果发现某些情况会导致系统重启,往往会很兴奋,因为这意味着他们已经 break something 了;而普通人遇到手机重启,只会觉得这系统怎么这么不稳定。乔布斯自传里也提到过,他人生的第一桶金,来自一个叫“蓝盒子”的东西。它利用了电信系统的漏洞,实现免费拨打长途电话。放在今天,这种行为显然会面临严重的法律后果,但在当年,它处在一个完全不同的技术和监管环境中。乔布斯确实从中获得了最早的一笔资本,也由此更早接触到了“通过技术撬动系统”的可能性。以前有个软件叫“金山游侠”,可以篡改游戏数据,本质上也是对游戏规则的绕过。而开发它的公司后来变成了今天的金山,老板是雷军。技术创新的源动力之一,恰恰来自于对边界的试探和突破。如果没有那些喜欢“不按套路出牌”的极客,就不会有今天繁荣的科技发展。当然了,对边界的突破,不等于一切行为都天然正当;但是,不假思索地批判这种行为,同样值得怀疑。规则与公平还有一种常见说法是,这样做破坏了游戏平衡,对其他玩家不公平。在多人对抗环境里,作弊确实会损害其他玩家的体验,但问题是,游戏的匹配机制本身就是绝对公平的吗?算法知道,如果你一直赢,你会觉得无聊而下线;如果你一直输,你会愤怒而卸载。所以,系统会精准计算你的“挫败阈值”。当你快要绝望退坑时,它可能故意给你匹配一局极其弱的对手(“福利局”),让你大杀四方,重新获得巨大的多巴胺分泌;当你连胜自满时,又可能把你塞进更难打的局里,让你继续留在这个循环中。游戏厂商的规则,很多时候并不只是为了维护抽象意义上的公平,而是利用人性的弱点通过算法调动你的情绪和时间,让你持续投入、欲罢不能。为什么很多人谈到“公平”时,只盯着最容易谴责的个体行为,却很少去质疑那些同样在操纵玩家、但因为写进规则里就显得理所当然的机制。他们似乎默认规则本身就是公平的,仿佛只要遵守规则,结果就天然正义。现实并没有这么简单。这个世界何时真正公平过?现实世界里,又有多少人从来没有享受过某种“开挂”般的不对称优势?风险开科技其实有两种完全不同的用法,也有两种完全不同的结局:自己用和拿去卖;造成不同结局的原因,是外部约束条件完全不同。“高风险,高回报”,“风浪越大鱼越贵”。风险,本质上是一种杠杆。绝对的风险厌恶者,不加任何杠杆,往往也很难获得非常规的回报。做法风险回报自己用违反游戏规则,被封号不一样的游戏体验拿去卖可能触犯刑法,面临严重法律后果经济报酬如果仅仅是自己用,代价通常就是游戏账号被封禁。在权衡利弊之后,这种风险对有些人来说可能是可接受的;但如果是拿去卖,那就完全是另一回事了,风险和性质都变了。然而可笑的是,很多人在面临人生中的重大选择,比如买房、结婚、生娃这些问题时,压根不认真评估风险和收益,往往是随大流、凭惯性;但对于自己开科技这种几乎不会影响现实生活走向的事,却格外谨慎,甚至还对别人进行道德审判。当然,如果你是开挂卖钱,这种违法行为毫无疑问不值得提倡;就像如果乔布斯生在现代,他大概率也不会去开发“蓝盒子”一样。教育和观念我无从考究“开挂可耻”这种观念究竟从何而来,也许它确实来自人们心中某种朴素的正义感。但也存在另一种可能:很多观念,会在规则制定者、平台方、既得利益者,以及舆论和教育的共同作用下,被不断强化,最后变成一种无需思考的本能判断。我们大多数普通人接受的教育,某种程度上是为了让我们成为社会运转中的标准件。我们按部就班地走完生命流程,从而维持整个系统的稳定。一旦某些人的思想或行为偏离轨道,就会被贴上“异类”的标签,因为这些人可能会破坏当前系统的运行逻辑,也可能损害既有利益结构。对于开科技自用这种场景来说,我们维护的那个“利益”,其中究竟包括不包括我们自己,这件事未必总是那么清楚。就像《黑客帝国》一样,你所认为的公平和规则,很多时候只是 Matrix 为了维持运转而写下的一套代码。结语如果你对本文感到不适,我深感抱歉。我也并非完全认同本文里的所有观点。当我想起这些时,我同样会对这个世界、对规则、对公平,产生很多怀疑。我想表达的并不是“开挂有理”,更不是为一切作弊行为开脱。我真正想说的是:技术上的突破往往来自对边界的试探,而人们对规则的崇拜、对公平的理解、对风险的判断,很多时候并没有自己想象得那么清醒和牢靠。顺带一提,原神的挪德卡莱剧情简直是神一般的存在,而我也早已脱离“科学家”行列了。

Agent 时代的 X-Y Problem

3 months ago

最近这几个月,我一直在高强度折腾 Vibe Coding,我发现了一个特别反直觉的现象:当你面对越来越强大的 Agent 时,你给出的提示词越详细、规定的步骤越精确,它最后交付的结果反而越差。然后我突然意识到,这其实是软件工程里臭名昭著的 X-Y Problem,正在 AI 时代以一种全新的形态大规模重演。什么是 X-Y 问题?很多非技术童鞋可能对这个概念比较陌生,我举个例子:你周末坐在卧室打游戏,网络卡得走不动道。你花了一上午查资料,然后跑去数码论坛发帖求助:“请问怎么硬改路由器的天线,并刷入第三方固件来锁定特定的信道频段?”论坛里的大神们围着这个问题讨论了半天,给你丢了一堆复杂的电焊教程和底层编译代码,结果你折腾到半夜,路由器直接变砖了。直到有个老鸟多问了一句:“你费这么大劲,到底想干嘛?”你回答:“我就是坐在卧室打游戏老掉线,想让网速稳一点。”老鸟无语了:“那你直接花 20...

AI 时代,何以自处?

10 months ago

最近这一个月,我深度使用 Coding Agent 完成了好几个项目:KernelSU 的 metamodule 功能一个内核文件系统 (ksufs?)公司的全栈项目除了第二个项目我写了 MVP 原型外,其余项目我几乎没有动一行代码,全程指挥 AI 完成。从需求规划、架构讨论,到具体代码执行,以及后续的迭代重构,AI...

关于用爱发电这回事

over 2 years ago

自 2018 年我发布 VirtualXposed 以来,这 6 年里我做了不少开源或者免费的产品,用过我 App 的用户,没有千万也有百万;然而,所有这些东西都是完全免费的,我没有任何直接的经济收益,「用爱发电」说的大概就是这了。几天前我把小狐狸钱包的助记词搞丢了,当时我很着急,因为多年以前我就把这个钱包的地址放在我的很多捐赠页面,心想里面没准有一笔巨款呢;结果我去 etherscan 上去一查,没有任何交易记录,资产是零,总算有惊无险。这听起来似乎很滑稽,但却是绝大多数“用爱发电”项目的现状,靠用户自发捐赠,可能连一顿饭钱都挣不回来,更别提养家糊口了。不挣钱倒是没啥,毕竟我们都是手艺人,那两把刷子养活自己还是没啥问题的。更让人难受的是,我们还经常被各种网络喷子问候,那些无端的谩骂、诋毁甚至毁谤,会让人产生自我怀疑:“我到底是在图个啥?”。如果你喝了一杯奶茶,那种甜味只能维持几分钟;而如果你喝一杯咖啡或者吃一片柠檬,那种苦涩会在脑海里回荡很久。人就是这样一种奇怪的生物,那些友善用户支持和赞美的话语,可能转眼就被抛诸脑后,但那些恶意的言论却会让人久久无法释怀。这些年里,我经历过若干次停更,也有很多人因为立场或者意见不合诋毁甚至毁谤我,而由于软件 Bug...

写好代码容易,创造价值很难

about 2 years ago

最近,一款名为 Cursor 的 AI 编程工具火遍了编程圈。自从 ChatGPT 发布以来,AI 正以肉眼可见的速度进化,从最初的翻译和总结,到现在的语音、视觉和思考能力,极大地方便了我们的工作和生活。许多人担心,未来 AI 会不会取代人类?作为一个程序员,我的大部分工作都与代码打交道。在编程领域,AI 也展现了强大的能力。例如,Github Copilot...

在 Android 中使用 eBPF:开篇

over 4 years ago

若干年前,我还在做 Android 客户端性能优化的时候,读到了 OpenResty 作者章亦春老师的文章:动态追踪技术漫谈,当时被深深地震撼到了,原来通过使用各种高级的调试技术,解决问题竟然可以做到如此精准而优雅。 然而当我真正要解决 Android 系统上应用程序的性能问题时,才发现理想很丰满现实很骨感——手头趁手的工具几乎没有。文章中提到的内核态追踪技术 SystemTap / DTrace 在...

回乡二三事

over 4 years ago

去年春节之前,妈妈打电话给我说,我们老家那边有疫情,听说高速路口都封锁了;今年你在外面过年,一定要好好搞点吃的,过个好年。 我听完之后一时间有点恍惚:长这么大,我还没有在外面过年过;每年春节,无论我身处何地,无论回家要转多少趟车,我都会回家陪爸妈过节。电话完之后我赶紧又给老家那边的疾控中心打电话确认了一遍,被告知疫情是隔壁县的,可以放心回家,心里一块石头落了地。终于,我在腊月廿七那一天踏上了回乡的旅途。 偷渡长江那一天我早早地起了床,在经过大半天的转车之后,终于在下午五点左右下了高速出口;结果出人意料的事情发生了:路上的一座大桥被人为堵住,回家的路被彻底堵死了;我辗转千里,却在离家不到两公里的地方被拒之门外。 这座桥大约有四层楼房那么高,其实按照障碍物的高度我是可以从侧边翻过去的,不过万一掉下去我可能就凉了;从上面翻的话,没有着力点,而且对面的就是社区的管理人员,看到你爬越就过来推你。常规方法这条路行不通。 我也尝试过跟工作人员沟通,说我们(很多人都被堵住)大老远回家过年,也不知道路会封,行行好让大家回家团个圆;它的话让我印象深刻:我不管你回来干啥的,这条路就是不让过。 后来实在没有办法,我们选择了直接从河里渡过去;就这样,在室外温度 3℃ 的条件下,我们徒步渡过了 30m 宽的河,美其名曰:大冬天偷渡长江(支流)。 当天晚上我非常气愤,打算直接去举报,并且还准备在公众号发文揭露一下;深思熟虑之后还是作罢了。社区工作人员都是村里人,我的亲人们不可能像我一样常年旅居在外,举报之后难免被穿小鞋;唉,成年人的生活就是这么无奈。 智能手机到家之后我惊奇地发现,老妈竟然换成了智能手机;我爸妈都是...

开始学习和使用 Rust

about 5 years ago

你如今的气质里,藏着你走过的路、读过的书、爱过的人,以及学习过的编程语言。 如果把编程类比作武侠或者修仙里面的打怪升级,那我在入行的头几年,一直在痴迷于各种各样的招式;那时候我学习和体验了各种各样的语言:C/C++/Java/Javascript/Kotlin/Python/Ruby/Scala/Clojure/Scheme/Erlang/Haskell,不过自从我学习了 Haskell 之后,这份列表就基本停止增长了;虽然后来也对 Elixer、Go 也有过简单的了解,但是也仅限于了解了。 一方面随着从业时间的增长,要解决的问题逐渐变成了系统问题或者业务问题;另一方面也是体会到,语言只是工具,招式再花里胡哨也是徒劳,修炼内功才是王道。 不过,在一次机缘巧合之下,我再一次接触到了 Rust。 那是在某大型 5V5 手游上个赛季更新的时候,我制作的游戏体验增强工具就用不了。当时我就想,与其用一些第三方工具找基址,不如直接自己整一个?如果再配合上我自制的内核...

当我们谈论解锁 BootLoader 时,我们在谈论什么?

about 5 years ago

有过刷机经验或者曾经尝试过刷机的童鞋,一定听说过「解锁」这个词。这里的「解锁」全称应该是「解锁 BootLoader」或者简称为「解 BL 锁」。与通过人脸识别或者指纹、数字图案解锁手机屏幕的那种「屏幕解锁」不同,这里的「解锁」完全是另外一个概念。直观来说,解 BL 锁是刷机的前提条件。通常情况下,一旦某个设备无法解锁 BL,基本上就无法在这个设备进行刷机了。 那么,一定会有童鞋关心,解锁 BootLoader 到底意味着什么?为什么它会有限制?我们能绕过限制强制解锁吗?今天,我就尝试来回答一下这几个问题。 在搞清楚解锁 BootLoader...

何为 root?

about 5 years ago

对于搞机党或者开发人员来说,root 一定是一个不陌生的名词。在 [当我们谈论解锁 BootLoader 时,我们在谈论什么?] 一文中我们了解到,解锁 Bootloader 实际上能做到的是让手机可以运行第三方的操作系统,而通常来说,我们给手机解锁 Bootloader 就是为了获取 Root 权限。那么,何为...