善意提醒

如果您打开本站很慢,布局排版混乱,并且看不到图片,那么可能是因为您还没有掌握用科学的方法上网的本领。

2026-01-30

冷暖自知

大约一年以前,公司楼下,开了一家咖啡店。
装修貌似从夏天就开始了,进度一直比较慢,磨磨蹭蹭,到 2024 年总算是正式营业了。

不过,说起来是「店」,可能更像是一个柜台。在原本的大堂里面,装修出来了一个吧台的样子,买来咖啡机,找了店员,然后就这样做起了生意来。

说实话,我们从一开始就不太看好。把柜台开在大堂里面,那么客流就比较受限。我们这栋楼又是一栋六层楼的老楼,并没有太多人。大堂也远没有园区里其它更新一些的大楼气派。然而老板招了三个员工,三个小伙子挤在吧台里,一看就知道有危险活不下去。过了一阵子,店员就只剩一个了,老是蹲在大堂门外抽烟,看来生意不太好。

刚开业的时候,推出了一波 2 元买美式的促销「活动」。同事还是很「给面子」,去薅了一杯,觉得太苦,于是往里面加了可乐。多亏了他这种勇于探索的精神,我们都知道了这样做会得到一杯酸啤酒味的东西,以后应该没有人再去尝试了。

咖啡店老板看来还是个爱折腾的人。过了一阵子,灯箱有变化,说是研发了「牛肉面」。我看到了就很疑惑,这都什么跟什么啊?

然而这老板的确是把一楼的一家倒闭掉的服装店(把服装店开在一栋老旧的写字楼里面,有生意才见鬼了)的位置给盘了一半下来,真的开了一家牛肉面馆。我后来上下楼一直闻到很香的味道,知道有面馆,但一直以为是从楼里面进去。直到最近我才知道它的正门开在旁边,通往停车场。

我会知道,因为我看见楼里面的门(其实应该是后门)上贴着东西。

通知书 - 页 1
通知书 - 页 2

老板半年多欠了 10 万的店租和水电费。难怪我有好一阵子没见到咖啡吧开业了。
这下咖啡机什么的估计要被卖掉折现了。可惜了柜台里面那一排排的原料,乳品估计都坏了,苏打水应该还能用吧。

这是另一处地方打出的广告

生意肯定是不好,但店租不能少。不过我估计前面一年半年应该是类似这样免租金的。老板可能也想好了,先干一阵子,没起色就跑,不然沉没成本也太高了。但装修钱还是砸里面了啊,说到底还是不明智。

这年头啊,还是得少创业,多苟着吧。

2026-01-26

两盆冷水敬AI

我要给 AI 泼两盆冷水。

图片由 Google Gemini 3 Pro + Nano Banana Pro 生成

第一盆是泼给 Vibe Coding 的。

很多鼓吹这个的文章,都认为它将导致大量的 Software Engineer 失业。更有甚者觉得整个软件行业被会颠覆,因为人人都能写代码。

是不是这样,我目前还不想去讨论,毕竟世界一日千里。然而,跟大家说一个常识:「AI就是世界所有知识的平均数」。

你现在觉得AI比你强,那是因为在你问的那些方面,你的知识水平还没到及格线。AI厉害的地方在于它能低成本地快速补全你欠缺的东西。但是如果你是某个方面的专家,你就会发现AI还是离你有一段距离。在真正的专家那边,这段距离不小。

通过 Vibe Coding 或许能快速获得一个「还能用」的软件。这个软件或许能快速解决用户当前的某个需求。如果这个需求很容易描述的话,这个软件也用起来也挺不错。比如写个「俄罗斯方块」游戏之类。不过一旦需求复杂起来,要描述的难度也就急剧上升,系统内部的复杂度大增,出问题的可能性也随之大增。众所周知,软件开发最麻烦的地方,其实是「八二原则」里面那些 80% 用来解决性能以及鲁棒性问题的代码。如果不在这些地方下足工夫,那这种软件,其实无法「交付」,只能自己用用。

在我看来,AI其实蛮适合解决这类问题的,因为AI「不嫌麻烦」。前提是人也要不嫌麻烦,不厌其烦地提要求,从各种角度假设,让AI检查再检查。如果能有这种意识,已经是一个超出平均水准相当多的「产品」兼「测试」人员了。如果说要被淘汰的 Software Engineer 就是这类既不具备产品意识也缺乏质量意识的人,那我只能说句「活该」。但话说回来,既然是如此的人才,计算机语言真的那么难学,非得绕着走吗?

总之,普通人的不可能三角——高质量、低门槛、易获得——在这里依然起作用。AI 确实缩短了三角形的边长,让平庸的代码产出变得廉价,但它并没有改变三角形的定律:真正的顶级质量,永远不可能通过「一键生成」这种低门槛的方式获得。

第二盆要泼给 AI 写作。

周末看了一些号称完全由AI生成的文章。用到了多个Agent,互相协作,的确蔚为壮观。
然而,看了以后,给我的感觉就是:没有灵魂。

AI讲逻辑是很厉害的,说起话来头头是道。我认为,一些科普、分析、说明性质的文章,换句话说,议论文和应用文,是行家里手。略加提示与输入,文笔也不是好不起来,模仿一些文学大家或许都绰绰有余。

但是,它不能给我新的东西。

我不太知道如何形容这种所谓「新的东西」。AI写的文章,肯定有让我眼前一亮的部分。但是,我想看到的,来自人类自身的体验和感悟,一些鲜活的事例,个人的见闻,没有。如果有,那也是人喂进去的,不算AI自己的东西。

我也知道,AI目前还只能加工,无法去「采风」。这不算它的错,只是它目前的局限之所在。我很期待有一天,它能够有自己的东西,但至少目前还没有。

所以,目前我只能看着这些一篇篇滴水不漏的文章,完全没有阅读的欲望。或许我喜欢的不是这类文章吧,我可能更喜欢随笔一些。「讲道理」没关系,但更要有故事。

我想起了《奇点天空》里面的「节日」,近乎贪婪地索求「故事」,不惜以「丰饶之角」来交换。或许,这就是人类存在的意义吧。

2026-01-15

逻辑的奴隶?这次我把AI领进了死胡同

最近有同事问我:为什么公司旧版软件在执行某个特定操作时,屏幕上的一部分 UI 就不动了?

说实话,这套旧代码现在成了公司里的「考古遗迹」。唯一深谙此道的同事已经财务自由,移民香港了。我对这个细节也并不非常清楚,只能去看代码。相关代码错综复杂,看得我眼花缭乱却毫无头绪。

想到最近 Google Gemini 3 Pro 的强劲表现,我索性把代码全扔给了它,开启 Pro 模式进行深度分析。

为了「提高效率」,我在 Prompt 中加入了自己的判断:「我认为是相关的 Windows 消息被过滤了。」在我看来,这再自然不过——既然界面停下了,那逻辑上一定是忽略了导致绘图的消息。我只是找不到过滤逻辑的标志位而已,而这事正适合让 AI 靠「蛮力」深挖。

从逻辑上讲,AI 显然非常「同意」我的判断。它一头扎进了我给出的代码里面,然后得出了一些似是而非的结论。我核对后发现,有些结论可以直接排除,有些则根本不符合事实。这意味着,顺着我的思路走下去,连 AI 也找不到真正的原因。

对话进入了死胡同。而 AI 在这种情况下似乎不知道「退出来」,只是机械地一次又一次给出「可能是……原因」的无效推测。最后我不得不靠调试来自行解决问题。

真正的原因,是那位同事在软件界面上遮挡了一个不进行重绘的透明窗口。

图片由 Google Gemini 3 Pro + Nano Banana Pro 生成

事后复盘:我在这里犯了一个典型的错误——我不该在一开始就说出我目前为止的判断。

我反思,如果当初少说一点,让它自行研究,结果会不会更好?我们一贯以来对于 AI 的使用方法,基本上都是「让它知道得越多越好」。我甚至曾这样建议别人:『别隐瞒,把你知道的东西事无巨细都告诉它,哪怕你认为没用的也要告诉它。』

这个原则本身没错,但前提是:你告诉它的是「事实」,而不是「错误的观点」。

很多人类尚且无法区分「事实」与「观点」,AI 可能就更不知道了。在我看来,我的提问还有改进的空间:

  1. 明确标注信息属性: 在 Prompt 中清晰指出哪些是明确的事实,哪些是模糊的现状,哪些仅代表个人的观点和推测。
  2. 允许 AI 「退后一步」: 对于 AI 而言,这只是在做题。Prompt 越具体,求解范围就越窄。我们不能只是把 AI 领到迷宫门口,然后让它进行探索,却不允许它「爬墙头」。

人类会犯错,然后学到东西。AI 也会。如果 AI 能「对抗」人类的意志,我不知道这是好还是坏?

总之,共同进步吧。

2026-01-13

Internet好像也没有那么危险嘛

图片由 Google Gemini 3 Pro + Nano Banana Pro 生成

周日晚上,突然接到公司同事的电话,说我手上有一台服务器「被人攻击」,所以机房要把外网IP给黑洞24小时。

挂了电话之后,想想不对,那台服务器并非生产环境,平时都是内部自己用,要被攻击也轮不到它。

这台服务器,主要都是运维同事在用,我自己了解不多。去年年中,运维同事辞职,我更是早已不负责相关业务。这台服务器有点「三不管」的感觉:登记簿上还挂在我名下,最近没什么空去推进蛮复杂的交接工作,所以还没轮到它;实际管理者没什么能力进行管理,主观意愿上也不想去管;它暂时也没什么多大用处,几乎算是「闲置」状态。

然而,我总觉得自己对它还有「责任」,于是走跳板机从内网连上去又看了看。这一看就让我冒冷汗了。上面居然有个squid,而且貌似是「向全世界开放」的状态。让Google Gemini帮忙统计了一下access.log,发现晚上出事前一分钟就产生了3GB的流量,峰值可能确实把机房设定的阈值给顶破了。所以这应该就是直接原因了。

可是,我不记得自己有在这台机器上搭过squid,也不记得运维同事搭过。他是个谨慎的人,应该不至于干出这种事情。那是谁干的?

再仔细看,简直大汗淋漓了。还有一个未能投入工作的OpenVPN,以及一个名叫proxy的账号,gid是0。完了。什么时候被黑的?!

这个proxy账号看起来是2021年创建的。日志已经灭失了一大半。我只能根据仅有的一点线索,去拼凑还原当时的情况。

「黑客」看来轻车熟路,一上来就登录了root账号,随后创建proxy,设置sudo,然后就去安装squid。

但接下来的情况让我迷惑不解。他光是开防火墙3128端口就折腾了半天,安装squid时也一时输错成了apt-get(这台服务器是CentOS)。装完squid设了allowed_ips,但conf中却大手一挥设成allow all就走了,OpenVPN也是安装了一半就放弃了。前面半截太过顺利,后面半截却画风一转,这不对劲。

我们用的密码都是64位随机字符串,SSH端口也开在非标准端口上。如果这台服务器这么容易被攻破,那么我们剩下的服务器也是凶多吉少。剩下的时间,我都在审查和反省所有可能的入侵路径。还是想不明白,当时到底什么情况?最后凌晨两点钟,实在熬不住,洗澡睡觉去了。


第二天到了公司,我按计划去翻邮件,看看有没有可能出事前是弱密码,后来才改成的强密码。结果这一翻,就发现了「真凶」,也算是一场乌龙。

2021年的时候,当时老板找我要了一台服务器的root权限,说是他儿子要用。
他儿子当时参与了我们的一些项目,也算是「实习」吧,后来去英国读书去了。要这台服务器,是说方便参与维护,当时公司里面还真没人来维护那些东西,所以我也就把这台不太重要的服务器给他了。看起来,当天他儿子拿到root密码,接着就动手了。

大学生嘛,做事情没顾那么多,也是可以理解的。谁还不知道自己大一的时候是个什么样子呢?估计他当时折腾完以后用过一阵子,然后就把这事给忘了。现在他早已毕业,无论是在当地工作或回国发展,总之应该也用不上这个东西了。这代理就这样一直开放在Internet上,不知道有没有人发现,估计没有。虽然日志有限,但看起来2025年一整年都没人用过,直到这个周日。大概总算被什么人给扫描到了吧。

这事说起来就是个内部管理问题。这种事情,就算放在现在,我感觉也没法拒绝。老板自己也大概把这事给忘了。只能是吃一堑长一智吧,以后「出借」的东西要加强审计。以及不要认为别人都会好好善后。哪怕他真的会,但有时候也会偷懒啊。

话说回来,貌似Internet好像也没有那么危险嘛?一个完全开放的HTTP代理,3128端口也是知名端口,居然存在了快五年才被人第一次发现。或许现在ProxyHunter已经没人用了,但是我国政府的扫描器不是一直在巡天么?GFW果真对外不对内?所以啊,世界还真的是一个大草台班子吗?

2026-01-08

关于明尼苏达ICE枪击案的个人评论

看了BBC上关于明尼苏达ICE枪击案的视频。不同的媒体释出的版本,各位也可以都去YouTube上搜一下看看。

https://www.bbc.com/news/videos/cx2ypz4zjvxo

首先说一下个人感觉:纯粹就是谋杀。当然,非要说误杀也行,毕竟动机无法揣测。但肯定是「杀」,不是「自卫」。

被枪击的车辆一开始挡在皮卡前面,然后ICE的人走过去要拉车门,已经拉了一两下了。没拉开,显然司机锁了车门。但驾驶位的窗是开着的,我估计双方也是在对骂。从皮卡司机位下车的那个ICE显然更激动,虽然副驾驶位的同事有做手势让他Calm down,但他把手都伸到车窗里了,看最后那一下的动作,感觉要去从内侧开车门。

没人愿意这样被人拉下车,而且此时也没人拿枪指着司机。司机看起来是想要离开,至少是想要摆脱眼前这种局面。如果换成是我的话,被不怀好意的人包围,并且有人开始拉车门,估计也不会愿意呆在原地。

从轮胎的动作看,是一个类似三角调头的操作,往左后方倒车,然后挂D挡往右前方前进。右边的车的驾驶侧车门是开着的,司机为了避让,不可能一开始就把方向盘往右打死,这也是很正常的事情。并且,换档的时候,打方向盘只有一只手,操作速度没有那么快。因此方向盘一开始看似只是回正了,但随后也就朝右了。而且总之在开枪者决定开枪的那个时刻,车辆向右拐,避开他的趋势,已经很明显了。

开枪者一开始并未持枪,并且明显可以躲开。但他的选择是拔枪,然后跟着车辆的移动方向去前凑瞄准,随后在即将失去射击角度的那一刹那开枪射击驾驶员。正常人要是为了保命的话,应该是连滚带爬地向后退,至少上身会是向后闪避的状态,双手伸出试图阻挡车辆,而不是想着去掏枪。

开枪的一瞬间,可以看到开枪人的两条腿的站姿

掏枪干什么呢?在那个时候,即使他打死了司机,一枪爆头,如果车辆真的是正对着他撞过去,在那个距离上,他也无法避免被撞。但司机只是在向右转弯,并没有去撞他的企图。开枪者此时甚至已经错开一个身位了。事实上,开完枪后,他也很简单地就躲开了失去控制的车辆。故此,很难让人相信他开枪的目的是为了「自卫」,特别是作为一个「有经验」的Agent。

我个人感觉他就是想阻止司机离开,本意可能是想击伤司机,没想到一枪毙命。当然也可能是PTSD之下发P疯了。这些都是可以「辩解」的点。但这改变不了事实:他就是想通过开枪达到自己的某个目的,而那个目的绝对不是「保护自己的生命安全」。

中国大陆在2007年也发生过「储户被押钞员一枪爆头」的事件,当时我还写过一篇Blog。过了这么多年,事情是在越来越好,还是越变越糟,各位心中自有评断。无论如何,这些都是不应该发生的悲剧。牺牲究竟能不能换来一点什么,从前的我,希望有,现在的我,但愿有吧。