肇鑫的日常博客

肇鑫 / Owen Zhao

独立开发者,主要开发 iOS、watchOS、macOS 应用。

目前在维护 SleepTapRooster Time,以及 Markdown Writer 相关工具。

最新文章

程序员的困境,谈谈我对mole事件的看法

随笔

不知不觉也关注mole很久了。看着它从诞生,到收费,本来以为到了收费就已经告一段落了,没想到刚刚收费不久,就遇到所谓“抄袭”的问题。这里我要说一下,mole的作者认为是抄袭,但是新项目的作者不认为,所以我说是所谓“抄袭”。在我看来,这其实就是程序员面临的困境。在获得宣传与获得利益之间,如何平衡。

我们假设如果mole一直就是一个免费开源的项目,没有出现收费的图形界面的闭源应用。那么如果有人利用mole的命令行版,做了一个同样免费开源的图形界面的应用,并且在ReadMe里致敬mole,那mole的原作者会是什么态度?肯定是开心得不得了,会把对方的链接放在自己项目的简介吧。这不是我瞎说,因为很多只做核心框架或者命令行应用的项目,都是这么做的。

但为什么mole的原作者不仅没有感谢,反而反对对方呢?因为利益,因为他已经闭源了它的图形应用,并且收费了。当初他收费做这个的时候,我其实是有疑惑的。因为作者自己宣传他这个图形项目的时候,就说是源自mole,而且mole最大的优势就是开源之后,获得了上百个来自不同开发者的优化,所以这个开源很成功。我当时想,你收费了,那不就等于白拿上百个其他开发者的优化自己赚钱吗?不过我看到mole原作者的帖文,发现很多人都很开心地付费,并且他还向不少人免费送收费版的注册码,我觉得这个开发者也还算大气,既然用户都没说什么,也没看到有贡献者表示反对,那应该就是皆大欢喜。项目获得了发展,创始人赚到了钱,客户愿意付费,贡献者没反对,那我只是个旁观者,我又有什么资格置喙呢。甚至,同样作为一名开发者,我还挺羡慕的,觉得学到了,以后有机会我也应该像他学习,利用开源的机会扩大影响,然后利用影响力再开发闭源软件收费,这应该是一条可行的道路。

可没想到,又有事件发生了。昨天早上,我在X的推荐时间线上,不是我关注的时间线,看到了一个Burrow的应用介绍,简介说是Mole的图形版。我心里一惊,心想终于来了。因为mole的作者当初出闭源版的时候,我心里就隐隐觉得有些不妥,现在终于知道不妥在哪里了。因为你出闭源版,是因为mole的协议不反对,可既然你是闭源版,那别人也可以同样做闭源版,反正mole的协议不反对。因为如果单从法律上看,并不是只有mole的作者有权利这么做,谁都可以。而唯一束缚的,只是想不想,也许某些程序员,出于善意不会做,但是林子大了,什么鸟都有,早晚肯定会有人这么做的。而这次,不仅做了,而且不是闭源,是开源的。

所以mole的作者,只能从界面抄袭,和使用了它图形应用的名字上去反对,说人家界面抄袭,说人家用了它的应用名宣传自己,说人家在X上刻意宣传,导致它的图形界面的用户变少。但仔细想想,这些说法都站不住脚的。因为界面本身不受法律保护,Word的界面,Google Docs不是一样的吗?Photoshop的界面,Gimp一样在用。根据法庭的判例,界面,开发者可以雷同,因为这对用户有好处,不必二次学习。至于说应用对比,你看哪家AI出来之后不用同行对比?这简直就是行业惯例。至于说有了开源的,闭源的收费版会受到影响,这更上不了台面说了。本来就是会受到影响。这里面mole的原作者唯一占理的,就是开源版的作者不应该在ReadMe里说自己是它图形应用的替代。这一点开源作者在收到issue之后,也立刻删除了。

说到这里,我的立场大家想必也清楚了。法律上讲,大家谁都没错。道德上讲,大家半斤八两。一个是利用开源项目获得了影响力,也就是流量,但是这个流量是开源项目的,也就是属于大家的。的确,你可以选择闭源,但是你闭源了之后,fork版的选择开源,之前支持你的那些免费劳力,都会去新的开源版,毕竟,大家支持的是开源,而不是你的图形版。你的流量都是开源带来的,一旦选择闭源,你的项目就等于死了。所以,我认为无论如何mole的开发者是不会选择闭源的。因为那简直就是给对手送弹药。

最后,说说标题。我认为程序员这个职业,本身就具有两面性,即公益性以及赚钱的需要。作为一名程序员,想必很多人都是热爱编程的,甚至很多人都想过,如果自己吃穿不愁了,都愿意把自己的程序免费提供给大家,毕竟程序员的应用,用的人越多,越有成就感。可现实是,一旦这样,程序员自己的生活就会陷入困境。所以程序员的应用收费,面临的第一关,其实就是自己。这也是为什么好多程序员的应用,定价都特别低,不是不敢要高价,而是觉得和高价格相比,更希望自己的应用有更多的人使用。

所以,我相信mole作者一开始的开源也是真心的。他并不是一开始就策划好了要用开源吸引用户,然后利用闭源来赚钱,他只是一步步走到了那里。而另外一个开源的作者,也可能真的像他自己说的那样,是因为有额外的需求,才选择开发图形版。两个善良的程序员,之所以会产生冲突,就是因为其中一个因为生活需要赚钱。如果不是这样,他们两个原本也可以成为很好的朋友,还可能为对方的应用提交补丁呢。

静for佳音

随笔

我发现我在记忆人名的时候遇到了问题。比如演员雷佳音的名字我就记得很清楚,但是雷佳音的好友,同样是演员的郭京飞的名字,我就经常想不起来。我自己分析,首先是雷佳音外号叫大头,这我记得,其次他的名字佳音,静for佳音,是个段子。想起段子,我就想到雷佳音如果找一个配他的静,可以是,蔡文静。然后我就想,这个静for佳音有些不对啊。那里不对呢?我卡了很久,然后意识到,我脑海里的是for,只是一个发音,不是中文,原文应该是敬候佳音。突然有些大模型的思维方式了,你一旦学习了多门语言,那么思考就可能不会是单语言的思维方式了,不同的语言之间会互相干扰。

AI是水电煤?

随笔

有人说AI就是新时代的水电煤。可什么是水电煤?我们真的了解吗?水电煤,就目前大多数人来说,指的是自来水,交流电和天然气(煤气)。而在我们国家,这些都属于基础设施,是由国有企业垄断经营的。

如果,说AI就是新时代的水电煤,那么至少,再国有企业垄断经营这一点上,AI不能成立。其次,就是假设如果我们现在离开了水电煤的任何一项,我们都会觉得非常不方便。但是如果是现在离开了AI,怎么说呢?至少我觉得无所谓,离开AI我还是会古法编程,古法调试,手动翻译,手动上架应用,好像也没啥不同。所以,AI在重要性上,其实也远远不如水电煤。

结论:AI不是水电煤。

大模型其实不具备思考功能,AGI是一场精心的骗局

随笔

全世界都被骗了,AGI只是一个传说,大模型天生就不具备思考的功能,目前我们经历的是一场席卷全球的营销事件,是少数精英,通过资本,通过宣传,裹挟大众的一场巨大的泡沫。最终的结果就是一次财富的重新分配,但是最终AGI也不会到来。

为什么我说大模型其实不具备思考功能?

因为连人类自己都没有搞清楚思考是如何进行的,又如何能发明出会思考的机器呢?与思考最接近的学科是脑学科,脑学科目前只能做到定义什么是思考,并且通过仪器检测到人类在思考时大脑哪些区域处于活动状态,以及活动的强弱,至于它们之间交互的原理,目前都还不得而知。而大模型本身的思考,只是对于人类思考的部分模拟,它的本质还是文本语言推理。

什么是思考?什么是自动化?

对于普通人来说,自己给大模型下达了任务,大模型完成了,就认为大模型思考了。但是事实真的如此吗?一开始的时候,我们除了下达任务,还需要说出具体的步骤,特别是,如果你具体的步骤说得越准确,大模型给出的结果就会越好。这显然和思考不沾边吧。如果我们只是简单的说完成某项任务,用最佳的方式去处理,然后大模型就能做到和我们细致描述步骤的指令达到相同的效果,那才是大模型会思考。实际上,你所说的最佳方式,大模型并不能像你说的详细步骤的描述一样去理解,因此,大模型并没有在思考,它只是自动化。

实际上,大模型的运行是这样,对于所有的问题,它内部有一套提示模板,然后它配合你所说的问题,整合在一起,作为模板,然后进行推理,并执行。也就是说,它就说按照模版推理,这其实就是自动化。

大模型不能思考,那大模型还重要吗?

重要。虽然大模型不能思考,但是自动化也是很有用处的。同样可以节省我们的时间。但是问题就是,同样的一个大模型,它所发挥出来的性能,受限于使用的人自身的水平。因为大模型的所掌握的知识,你不去问它,它是不会开启的,这也就是为什么大模型在数学家的手里,能够解决之前未解决的数学难题。但是在你我手里,解决一些普通的题目的时候,都很费劲。因为你我缺乏描述题目所需要具备的知识。而只是泛泛地描述,大模型并不能精准的了解题目本身。连题目本身都不了解,那么想要解决就更困难了。

战术手册的重要性

这让我想起了战术手册这种东西。所谓战术手册,就是将做某件事的步骤拆解,给出最佳的步骤以及可能遇到问题的解决方案。它的好处是使用的人只需要根据目前遇到的问题,在战术手册中寻找相应的问题,找到了之后,就不必自己思考,只需要按照战术手册上的1、2、3、4进行套用,然后根据结果选择分支,就能够获得最佳结果。这些结果虽然不一定是和思考之后获取的最佳结果完全相同,但是却接近。这样,一个普通人有了战术手册,就仿佛成为了一名智者。但实际上,普通人就是普通人,智者就是智者。重要的是战术手册,和编写战术手册的智者。

这和如今的大模型很像,普通人如果拿到大模型的战术手册,也可以接近智者。但是智者就是智者,有了大模型,普通人和智者的差距并没有缩小,反而更大了。普通人最多能从网上找到一些智者发布的零散的战术手册的一部分,但不知道是不是真的有用,甚至不知道是不是已经过期了。

人类发展的方向是不是错了?

随笔

随着科技的不断进步,人类杀死人类的方式也在不断更新。这就跟炒股加杠杆,杠杆越高,市场一有风吹草动,账户可能就会清零。科技就是人类社会的杠杆。

如何才能避免?从生物学的角度看,就是增加数量,扩大范围。因此,目前只有中美在这么做。美国的是马斯克,准备殖民火星。中国,则是打算建设月球基地,据说是和俄罗斯联合。除此之外的国家,还在想办法拥有核武器呢。

从人类的角度看,只有任何一场战争都不能同时波及到全人类,这样的扩张和繁殖数量才叫足够。

谈谈思维误区

随笔

思维误区就是我们思考中常常被无意忽略的东西,也被称作思维定势。思维误区不一定是坏的,因为它是我们大脑中的一种机制,它会有意放过它认为不重要的东西,从而把精力放在重要的东西上面。它的问题是它放弃的部分不一定是不重要的,而可能只是它以为不重要的。

最近发生的两件事,让我今天想起来要提一下这个思维误区。

一个是网上看到的,说某小区的业主,发现自己的电动车新买了没多久,续航就越来越短。充满电了,也只能跑20-30公里。一开始他们以为是天气变冷的缘故。后来他们以为是电池质量不行,有的就去找当初买电动车的商家理论,有的干脆换了新电池。但是换了之后,还是不好用。最后真相大白,又问题的是充电桩。充电桩是有充电桩的厂家免费提供的,这些厂家不仅要在安装前给物业一笔钱才能进入安装,安装之后,业主使用时交的费用还要分给物业一大部分,因此,这些厂家都是使用质量最差的充电桩,还会在充电机费上做手脚。比如说充了1度电,实际上只有0.16度。而快要充满时,就故意使用涓流充电。这样计费充电时间又能多出1、2个小时。

另外一个是发生在我自己身上的。一直以来,我在Ubuntu上跑的trojan服务总是不太稳定。在排除了一些其它问题之外,我发现这个trojan本身存在内存泄漏。也就是运行一段时间之后,它的内存占用会越来越高,同时客户端与它的连接都不再可用,测速永远都是超时。我花费了很多时间在研究服务器端的配置,从SSL证书,到连接数,从nginx的配置,到DNS的缓存,全都研究了一个遍。最后确定到内存泄漏的时候,我卡住了。因为我当时认为这是因为Trojan的代码太过古老,而Ubuntu 22.04是它代码停止更新两年后才有的新系统,所以二者可能存在某种兼容的问题。我忽略掉了,客户端的访问方式,可能是因为它内存泄漏的这种可能。可能,是我之前从来没有遇到过吧。并且,客户端和服务器端是分离的,因此我询问AI的时候,AI也没有想到。

之所以,我最终会怀疑到客户端的身上。一是上面提到的第一个故事。二是经过上面的长期分析,总结,我已经完成了一套检测方式,我开始每两分钟在服务器检测一次trojan的状态,发现内存泄漏就重启服务,短时间出现多次内存泄漏,干脆就重启一次服务器。这样的话,如果内存是泄漏是随机的。我应该很少能碰到网络不通的情况了,因为大部分情况都应该在我没有使用的时候就自动解决了。因为我以为每次系统重启之后,能够好用很久。但是,事情却刚好相反。我几乎每次长时间不使用macOS之后,再次进入,都会遇到超时的问题。同时,我跑到服务器看日志,问题的出现和我的macOS的使用高度相关。并且,到了最近,问题更加严重,如果macOS开着,服务器就算重启,还是会立刻内存泄漏。

到了这个地步,问题就很明显了。我在macOS端关掉FlClash,那边就立刻不泄漏了。而我另一台使用Clash Verge客户端的却没有这个问题。于是我设置它允许局域网访问,然后我这台就不开FlClash了。手动开启代理到居于网的服务区,暂时使用共享的方式。

我同时向FlClash提交了Issue。

https://github.com/chen08209/FlClash/issues/1727

也来预测一下AI的发展趋势

随笔

2026年了,好多人都在给自己设定计划,展望未来。AI无疑还是今年的主题,但是对于AI会如何发展,每个人看到的风景是不一样的,而我,想把我这一年来使用AI的感受以及未来趋势的看法说出来。

过去一年,我开始使用AI辅助编程,一开始只是简单的代码补全,有时能补对,有时补不对。后来我开始使用Claude Sonnet 3.5,逐渐感觉到AI辅助编程的乐趣。再后来Claude Sonnet 4.0来了,但是随之而来的是GitHub Copilot for Xcode不再支持中国地区的用户使用Claude的模型。好在很快,我又有了Grok Code Fast 1可以使用。同时GitHub Copilot for Xcode又支持了OpenRouter,这样就让我尝试了使用更多的模型,包括不少国产的模型。

GitHub后知后觉地提供了Copilot CLI,我在收购了GitHub Copilot for Xcode必须前台,以及经常写错文件的bug后,开始使用Copilot CLI,后来又因为GLM出了订阅的编程套餐,又开始尝试使用Claude Code。期间我还尝试过其它别家的产品,好多都浅尝则止,没有最终留下。

目前,我使用的主要是Claude Code + GLM 4.7,Copilot + gpt-5.1-codex-max/Grok Code Fast 1, GitHub Copilot for Xcode以及qwen-code。

展望未来

展望未来之前,我们必须要先回顾一下历史。

计算机发展的历史

谈到计算机,抛开前期的算盘、手动计算尺、机械计算机器之外,大家公认的最早的计算机是美国的电子管计算机。从它开始算起,计算机经历了电子化,小型化,移动话,最终演变成了现在的无处不在的计算设备,除了传统的服务器、台式机、笔记本,还包括手机、游戏机、智能摄像头、智能网络设备、智能家电、智能宠物、智能机器人等等等等。

与之对应的,编程手段也从最初的纸带打卡器,到机器语言、汇编语言,到更高级的c语言,面向对象的C++,面向网络的javascript等等等等。

至于应用方式,早期的计算机主要用于计算,这也是它的名字计算机的由来。而随着计算机算力的增加,人们不仅仅将计算机用于计算,还用于其它更为通用的功能,比如文字处理、表格处理、数据库、游戏、音乐、视频等等。

而为了处理这些计算之外的数据,人们必须将其它的数据转换为数字,这样才能被计算机进行处理。而这个过程被称作建模。关于建模,最经典的书籍就是算法与数据结构。建模其实就等于算法+数据结构。

未来

从上面的论述,我们不难看出,计算机的发展经历了从专一功能,向通用功能的转变。使用的手段就是建模。而现如今,有了AI,建模已经可以通过提示词,让大模型自动分析数据,自主建模了。这也就是说,编程的自动化已经基本实现了。

AI目前比较擅长文本处理,而对于其它的数据,比如图片、视频、声音等的处理,相比于文字,就要差很多。

过去一年,为了补足大模型的不足,多种工具涌现。从一开始的tool_use,到后来的agent,skill,但是其实你从编程角度看,这些概念其实也非常简单。

tool_use其实就是调用函数,这是大模型和传统编程的结合。tool_use就是大模型调用一段函数,提供函数所需的参数,并且获得返回值并使用。

agent和skill其实需要一起来理解。agent是名词,skill是动词。一个相当于编程里的class,一个就是method/action。也就是一个是负责出力的主体,一个是负责具体做什么的函数/动作。而这两个其实只是大模型提示词进行的不同描述。这些都是在大模型内部进行的,已经没有传统编程了。

简单来说,就是以前,我们的应用获取资源,是通过操作系统,大部分时间每个应用都是各自为政。而现在有了大模型,我们面对的是整个世界。我们需要通过agent和skill将大模型与整个世界连接起来。这个闭环一旦形成,目前存在的硬件架构、操作系统、网络等鸿沟就不复存在,唯一区别的是你使用的模型是哪个。

机遇和挑战

从上面的论述,我们不难得出结论。随着agent和skill数量的增多,大模型的能力会越来越强大。可现在的问题是,大模型是收费的,而开发agent和skill则不赚钱。这样下去,所有的钱会都被上游,也就是拥有模型的公司赚走了。而处于下游的人,不仅要面临激烈的竞争,并且也很难获得持续性的收入。

我想这也就是为什么那些美国科技公司都拼命砸钱,想要在AI市场上争夺第一的缘故吧。因为这个市场,目前的确就是赢家通吃。

钱真的没法省出来吗?

随笔

听说过一个很玄学的说法:说是该花的钱得花,因为就算你费劲心思省了一下,也马上会通过另一种方式花出去。

这种事我也遇到过,而且就在昨天。昨天天气是中雨,雨会时不时的下。中午的时候,我从外面回家。原本想要打车,结果平时出租车蛮多的,昨天一辆没有,需要等一下。再加上当时雨没有在下,而且我骑电动车回家也仅仅需要10分钟,于是我就心存侥幸,扫了一辆电单车。

当是想的是这样就省下了10元的打车费。结果骑到三分之一就开始下了毛毛雨,骑到一半就下大了。几秒钟衣服就全透了,鞋里也全是水。我想,算了,骑到家再说吧。到了家。我把衣服都脱了,放在卫生间的洗脸池里,打算用洗衣机给洗了。然后从双肩包里拿出来手机和耳机。结果我看到耳机上粘了个东西。我还想这是从哪里吸到了个小磁铁?仔细一看,原来是耳机上的听筒因为泡水开胶了。

咨询了一下豆包,我该买个新的还是拿胶水粘上?豆包建议说还是买个新的吧。于是我跑去京东选了个颜色一样的。新的蓝牙升级到了6.0,不过对于我来说没啥区别,毕竟我也没有蓝牙6.0的设备。

换新耳机需要125元。

erji

顺便说一句,豆包P图还是挺好用的。照片上有两根头发,我让豆包去掉,结果很完美。