AI生成大量代码带来的问题

最近王自如也开始带着超绝气泡音直播vibe coding,程序除了跑不起来,一切都很好,OK哥被KO,说不好哪一天把罗永浩招来,罗永浩也来vibe coding,发动行业冥灯因果律武器。
软件模块要想健康长远发展,不是要提升软件的产生速度,而是要减缓软件的产生速度(用六分之一的时间写代码,用二分之一的时间做测试,用三分之一的时间写需求文档和技术文档)这样产生的软件才是能被多个系统复用的,能卖出好价钱的,不然全都是快消品,无法被未来的模块继承,也无法作为模块被其它作为扩展,运行一遍就被抛弃。
市场追求构建速度,工程师疲于写提示词,无法认真检查AI生成的代码,生成的代码大量嵌套,甚至超出了程序员的理解能力,软件的质量变差,软件的价值被低估,程序被压成白菜价,劣币驱逐良币,大量的计算机程序充满bug,生产事故来的猝不及防,使用稳定的软件成为一种奢侈。
我认为对Vibe coding代码的可维护性评测,会成为一门新的学科,代码不只是正确率测试,还有可维护性的指标,比如用JS写的项目就不如用TS写的更容易维护,项目有良好的CLAUDE.md 和 AGETNG.md 才是一个合格的vibe coding项目。
本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-12-28-16-17-52-vibe-coding/
莫比乌斯环

困难的环境造就坚韧的人,
坚韧的人创造优越的环境。
优越的环境养育迷茫的人,
迷茫的人造成困难的环境。
困难的环境源于人只谈不做,这些人信奉的是,只要你什么都不做,就没人知道你的真实水平。越是不做,谈的话就越发空洞,而且这种空谈还必须有个谈话对象,不仅自己不做事,也拉着别人无法做事,时光流逝,生存环境变得异常困难。
当环境困难到一定地步,空谈的人也到了退出岗位的阶段,给了新人成长的空间与做事的时间,环境又会逐渐变好。
本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-12-28-15-30-23-mobius/
对合理性的期待是痛苦的根源

程序员在草台班子里最顶级的自洽,就是彻底放弃对合理性的期待。
你感到心力交瘁,是因为你太想把事情做成,太试图讲道理了,总想用专业的标准去矫正一个随意的环境,试图在混乱的流程中建立严密的逻辑,这正是程序员痛苦的根源。
人们不知道你在做什么,就不知道你做错了什么,程序员朋友们要多做一些难以被量化的事,难以量化则难以被考核。
本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-12-22-11-59-11-test-image-local/
如何用软件工程的思路维护个人博客?以WordPress加github action为例
随着博客越写越多,简单优雅地维护博客成了一个不得不考虑的问题,最近在读一些软件工程的经典书,发现软件工程的思想非常适合用来改造自己的博客系统。
文本是最稳定的,应该多使用
Markdown是纯文本的,如果你使用markdown编写内容,你可以在任何时候,通过vim或记事本,对内容进行修改和维护;如果你用word或ppt这种非纯文本格式的文件编写内容,修改的门槛就变高了。
软件应减少依赖,博客文章也是
写博客需要插入一些图片,这些图片如果是存储到在线图床,那么一旦离线,这篇博客就无法完整阅读了,最好的方式是本地存储,就像typora的方案,在你的博客文件旁边建立一个同名的文件夹,帮你存储图片,博客文件也使用相对位置引用图片,这个图片文件夹和博客文件可以可以被一起打包,通过各种途径分发,如果你不考虑网络分发优化,甚至可以把图片转成字符串直接插入到markdown博客文档。

简单就是好
我曾经也很痴迷各种markdown编辑器,它们提供了很多有趣的功能,让码字这件事变得很酷;
我也曾沉迷各种博客美化主题,只要肯花时间,可以让网页变得的非常的文艺小清新;
但是,时间流逝,热情褪去,能让人有动力写博客的,其实就是空闲的时间,以及降低开始写博客的成本,打开手机能用iPhone的备忘录来写,mac可以直接同步接着写,最后直接导出markdown发布,搞定!(没错,看下面这张图,Apple备忘录是支持Markdown导出的!)

数据层与表现层应分离
我们写markdown,图片的格式是一个相对路径,但是发布到Wordpress这种标准化网站,却需要一个图片的绝对路径;我们本地文件是数据层,而wordpress展示的是表现层,如果要满足Wordpress的要求,我们应该写一个中间层,这个中间层用来把相对路径转换为绝对路径,这个中间层程序应该在发布文章时运行。
以前的我做的就很不好,我以前的博客方案都是在插入图片时,直接通过图床程序把图片转换为url,这样造成了几个问题,一是离线无法查看,而且图片上传过程中不够丝滑,打断思路;二是图床如果出了问题连文章都写不了,三是图床本身的备份成本也是个问题。
如果开始做好数据与表现层的分离,以上三个问题都能自然解决。
好的设计本身就可以规避很多问题,如果我们在开发软件过程中,遇到了前人没遇到的问题,我们可以思考一下,是不是设计本身有问题。
要抑制分层的贪念
对于绝大多数个人博客而言,为文章加标签就足够管理内容了,如果搞很多的子目录,子目录套子目录,不断分层,那后期维护起来就是一场灾难。
在软件设计过程中,也有抽象层的概念,AI写代码最大的问题之一就是过度分层,看着也无大碍,但是维护起来很困难,出了小问题,要一层层改,甚至要人类程序员手动去删除不必要的抽象层,真的是要命。
要把自己当懒人来设计系统
写博客是一种创作,而疲惫的人是无法创作出好作品的,我们不能把博客系统设计的复杂,复杂的系统会让人更快的疲惫。
设计博客系统时,一定要把自己当个懒狗,只管写,未来的维护和迁移都很简单,可以抵御平台政策的干扰,稳定输出,就像写一本小说一样,愉悦自己,帮助他人。
我的最终方案
Markdown文章以及关联的图片直接更新到github仓库,github action自动上传到Wordpress网站: https://github.com/zhaoolee/WordPressXMLRPCTOOLS

图片文件夹和文章关联,上传到github仓库后,可以触发github action将图片上传到自己的图床https://github.com/zhaoolee/EasyTypora 获取图片链接后,将新的图片链接更新到wordpress,后续可以支持云服务商的图床,满足各种自定义需求

以上方案能享受wordpress优秀的博客生态,获得好的SEO,又能白嫖github的存储空间做备份管理,白嫖github action做内容更新,还能让保存和分享markdown变得容易。

在Github仓库的readme自动排序生成的文章链接,还能为网站做SEO引流。
本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-12-21-13-46-18-more-safe/
工程师通常是在一个不利于高质量编码的环境中尽力而为
在软件开发行业,规模大的开发团队,整体代码质量并不高。
最近我在做一个Browser use相关的控制系统,大概思路是通过docker创建一系列自带chrome的Linux虚拟机集群,然后通过CDP调试工具,控制虚拟机里面的浏览器,完成一系列工作。
开发完成简单跑通用例后,除了负责编码的工程师,大家都很乐观,认为这东西可以上线了,原本负责开发的人被委派搞新的需求,新加入的工程师,负责为这个系统增加新功能。
这个系统的代码质量一直不算高,原因如下:
其一:早期为了快速验证可行性,用了LLM生成了大量的模版化代码,有些代码可以精简,但对主功能没有影响,大家就懒得删(能跑就别乱改,这是软件开发的常态)
其二:很有经验的软件工程师,切换到自己不熟悉的领域,就会变成相对的初学者,初学者的代码质量不会太好。
其三:公司很少致力于培养特定专业的长期人才,一些“老手”往往在项目变动后,重新变成“相对的新手”
其四:“老手”适合做代码审查,但“老手程序员”往往工作非常繁忙,他往往没有时间安静专心的审查每一次提交,或者积极参与每一个技术评审。
其五:“代码审查”和“开发任务”是并行的,“开发任务”是很容易量化的,而“代码审查”并不容易量化,“代码审查”甚至会拖慢开发进度,在工期很赶的情况下,根本没有条件去进行严格的“代码审查”,开发团队往往无法扛住产品侧的排期压力,只能放弃一些代码质量。
工程师通常是在一个不利于高质量编码的环境中尽力而为,在日常的工作中,往往是一位相对初学者接手了一个他几乎不熟悉的代码库中一个恼人 bug的工单。他花了几天时间研究,最终想出了解决方案,但依然遇到了问题。他会找老手帮忙排查问题,"老手"会抽时间排查问题,提出了一个稍微好一点、至少能用的方案。初级工程师尽力实现了这个方案,经过简单的审查后发布,所有相关人员立即转而处理下一个高优先级的工作。

本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-12-06-12-54-50-good-code/
企业为什么要追求自动化与数字化
最近在做 AI 企业级Agent 相关的开发,开发需要融合多种技术,既要使用虚拟机运行传统的 RPA程序,又要调度私有化部署的 WorkFlow 应用,同时还要整合 MCP注册,以及A2A协议,完整的项目工程就是一个大杂烩。
上压力的是,这套大杂烩工程,要支持私有化离线部署到一些公司的内部。再配上运维人员经验不足,整个上线流程要按周来计算。
对于开发者人员,系统要降低耦合性,不同的模块要独立打包部署,但运维人员有自己的想法,要求开发人员把多个工程集成到一起,方便部署。开发人员没有精力天天和运维人员扯皮,就进行项目改造,整个标准化的项目,也变得扭曲了起来。
运维人员无法理解开发依赖框架的设计规则,只肯扯皮,原因很简单,扯皮要比了解新技术更容易。
企业为什么要追求数字化,因为世界是不断变化的,技术也在不断发展,在一个充分竞争的市场,企业要用新的技术提高研发效率,但一些人脑子里只有古老的技术逻辑,一个用惯 PHP的人,无法理解 React 为什么而来,改变一个程序很容易,但改变人的想法很难。
本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-09-06-13-34-44-automation/
未来的某一天,坐在⽕炉边上,去品味⼀段AI编写的深奥程序
在金融行业经常听到一句话,机器无法取代合规部门,因为机器不能代替人坐牢。
AI不能代替人类写提示词,Cursor配合Claude已经可以让程序员不写一行代码,就能完成开发任务,但完成任务的前提是,写大量的提示词!我以前每天要花4个小时写码,现在同样的需求,要花1个小时写提示词,1小时等待AI反复生成代码,1小时Review代码,1小时Debug
AI不适合做技术选型;如果要求AI做技术选型,AI总是倾向于推荐最热门的技术,而资深的工程师会更多考虑综合开发和维护成本,选型搞错了,AI会把项目改的难以维护,最后还需要人类工程师清理shi山代码。
// When I wrote this, only AI and I understood what I was doing.
// Now, AI only knows.
上面☝️这段话的原句是,当我写代码的时候,只有上帝和我知道为什么我那样做,现在只有上帝知道了🐶;我把上帝改成了AI
AI不适合评审需求的优先级,说白了,就是不适合分轻重缓急,无法甄别哪些是伪需求,哪些是真需求,资深开发团队做需求评审,总是会问需求背景,然后根据实际情况给出优先级,但AI无法理清这些细节,全盘接受,然后生成大量可能包含隐藏bug的代码,搞得人类工程师头秃🫥!
AI喜欢解决直接的问题,从不介意引入新的问题,遇到稍微复杂的问题,AI可能会粗暴的安装依赖包解决,然后依赖冲突,然后混乱🤪,然后不断Retry,陷入死循环,最后上下文超出限制。
程序员这个职业的复杂性,来自于现实世界需求的复杂性,以及需求背后逻辑拆解的复杂性,而AI编程只是让写代码变得简单。
我认为AI确实让拉低了编程的门槛,职业程序员要提升阅读代码的能力,帮AI修bug,读代码解决疑难杂症正是资深工程师最标志性的技能。
我认为未来编程的趋势是90%常规需求的编码留给AI,复杂bug的解决留给资深程序员。
[程序员的哪些工作不能被AI取代]
在金融行业经常听到一句话,机器无法取代合规部门,因为机器不能代替人坐牢。
AI不能代替人类写提示词,Cursor配合Claude已经可以让程序员不写一行代码,就能完成开发任务,但完成任务的前提是,写大量的提示词!我以前每天要花4个小时写码,现在同样的需求,要花1个小时写提示词,1小时等待AI反复生成代码,1小时Review代码,1小时Debug
AI不适合做技术选型;如果要求AI做技术选型,AI总是倾向于推荐最热门的技术,而资深的工程师会更多考虑综合开发和维护成本,选型搞错了,AI会把项目改的难以维护,最后还需要人类工程师清理shi山代码。
// When I wrote this, only AI and I understood what I was doing.
// Now, AI only knows.
上面☝️这段话的原句是,当我写代码的时候,只有上帝和我知道为什么我那样做,现在只有上帝知道了🐶;我把上帝改成了AI
AI不适合评审需求的优先级,说白了,就是不适合分轻重缓急,无法甄别哪些是伪需求,哪些是真需求,资深开发团队做需求评审,总是会问需求背景,然后根据实际情况给出优先级,但AI无法理清这些细节,全盘接受,然后生成大量可能包含隐藏bug的代码,搞得人类工程师头秃🫥!
AI喜欢解决直接的问题,从不介意引入新的问题,遇到稍微复杂的问题,AI可能会粗暴的安装依赖包解决,然后依赖冲突,然后混乱🤪,然后不断Retry,陷入死循环,最后上下文超出限制。
程序员这个职业的复杂性,来自于现实世界需求的复杂性,以及需求背后逻辑拆解的复杂性,而AI编程只是让写代码变得简单。
我认为AI确实让拉低了编程的门槛,职业程序员要提升阅读代码的能力,帮AI修bug,读代码解决疑难杂症正是资深工程师最标志性的技能。
我认为未来编程的趋势是90%常规需求的编码留给AI,复杂bug的解决留给资深程序员;
未来的某天,你应该可以坐在⽕炉边上,品⼀杯⽩兰地或抽⼀支上好的雪茄, 边上坐着你⼼爱的猎⽝,去品味⼀段AI编写的深奥的程序

本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-06-25-09-18-39-cursor-experience/
每月30刀的Midjourney值不值?
今天是2025年5月,Midjourney在AI产图美学方面的造诣,依然是独树一帜,尤其是v7版本,生图越来越有艺术感。
别比比,好不好看?直接上图










还有一些桌面摆件的配饰
龙龟



文昌塔


放到实际项目中的效果



Midjourney最近的一些进步和存在的问题
Midjourney可以用国内支付宝直接支付了,我订阅了一个月,30刀买了15小时的快速生图,平均每天可以玩半个小时,适合在刷剧的时候,生图抽奖,快乐加倍。

Midjourney 的Web版很好用,即使没有Discord也可以玩好Midjourney, 目前支持了中文提示词,可以直接聊天生图,甚至可以直接中文语音控制生图,
Midjourney 无法直接输出PNG, 小摆件图片需要手动抠除背景图才有好的展示效果,我的方案是配合 photopea.com 在线工具,使用魔棒工具工具自动抠图。
Midjourney到了v7版本,无法支持中文字符,英文字符如果很长,就会出现丢字母的情况,在合成人物方面,人物的手指依然会有一些问题 ↓

小结
对于平面设计师而言,Midjourney 代表的AI生图工具成了一门必修课,Midjourney或许做不出100分的作品,但70分的作品,可以通过调优的提示词,批量快速产出。
对于小公司而言,前期创建的小项目,可以用ChatGPT写提示词,然后让Midjourney生图,真的是性价比超高。量大管饱,且没有版权问题。
本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-05-11-16-18-43-mj/
玄乎儿分光镜,赛博玄修趋吉避凶!
人类总是喜欢在不确定中,找寻确定性,与其求仙问卜,不如自己做主,统计学是谦卑的世界观测者,想了解世界的变化趋势,真正值得信任的往往是统计学。
《玄乎儿分光镜》使用AI大模型技术,实时计算每日的运势。并根据运势计算出,适合在桌面摆放的虚拟吉祥物,实现趋吉避凶的效果。

使用方法很简单,在这个页面录入必要的信息 http://fangyuanxiaozhan.com:4000/register , 提交后,会跳转到一个url, 这个url是你专属的页面,类似百度网盘资源的分享链接,每天打开这个链接,就根据你的个性化信息测算今日运势,八字,塔罗,今天去哪里玩,今天吃什么,各类问题一并测算,最后会输出一个适合在桌面摆放的吉祥物,并给出今日tips小建议。

点击「开始玄修」按钮,整个页会被吉祥物占据,并轮播tips,如果有旧手机,可以放到桌面上显示这个页面,实现趋吉避凶的效果。

为了让这个玄修模式更有趣,后面会添加一个挂机小游戏(目前只做了签到,后续签到把换算成经验值),实现赛博玄修!

本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-05-03-16-00-04-xuanhu/
乐观劲上来了,总感觉自己刀枪不入,而市场最爱惩罚自以为是的人
财务的宽裕是个套,有了可以支配的财富,有些人就忍不住挥霍,买个包,换个车,投个风险项目,消费的快感像毒品,让人上瘾。
花钱买来的快乐转瞬即逝,真正的财富是能让人睡得安稳的资产,可惜人们眼里只有当下,忘了黑夜总会来。
有些所谓的创业者,拿了投资人的钱,建立一家公司,为了让投资人感受到自己的专业,疯狂采购各类昂贵又不实用的资源,而公司的战略目标完全不清晰,左右摇摆,今天想做A, 明天要做B, 对市场毫不了解,总想着把开源的产品包装一波,就能有客户买单。最后钱花了,毫无成果,拍拍屁股走人,继续坑害下一家。
可支配的财富,会让一些人高估自己的掌控力,以为资源是无穷的。直到某天,现金流断裂,帐单堆积,财务状况亮红灯,才意识到,原来充裕只是个借来的面具,摘下来面具,只剩手忙脚乱的扭曲。
财富充裕时,很多人的心态会悄悄变味,风险感变淡,乐观劲儿无比充盈,觉得自己刀枪不入,可这种富足心态恰恰是最大的敌人。日子好过时,谁会想着黑天鹅?人们喜欢欺骗自己,假设明天和今天一样晴朗,当风暴来袭,手里连把伞都没有。
钱多时,觉得自己是市场的宠儿,投个项目敢ALL IN;太阳下山时,觉得自己总能赶上末班车。而市场最爱惩罚自以为是的人。充裕让人们忘了谦卑,结果摔得更狠,求锤得锤。
本文永久更新地址:
https://fangyuanxiaozhan.com/p/2025-04-19-13-19-39-scarcity/