144 lines
53 KiB
JSON
144 lines
53 KiB
JSON
{
|
||
"candidate_id": "cand:sha256:0d315d9489010cfd470a8d479e4e4443722fffdc34ecc1245c1b92458ace5093",
|
||
"item": {
|
||
"item_id": "sha256:0d315d9489010cfd470a8d479e4e4443722fffdc34ecc1245c1b92458ace5093",
|
||
"source_id": "freshrss:66c2d55d7563e741",
|
||
"external_id": "tag:google.com,2005:reader/item/00064dc1a1f5c0db",
|
||
"title": "科技爱好者周刊(第 388 期):测试是新的护城河",
|
||
"url": "http://www.ruanyifeng.com/blog/2026/03/weekly-issue-388.html",
|
||
"author": "阮一峰",
|
||
"published_at": "2026-03-12T23:59:16Z",
|
||
"discovered_at": "2026-03-25T08:40:22.917124Z",
|
||
"content_kind": "article",
|
||
"language": null,
|
||
"raw_summary": "<p>这里记录每周值得分享的科技内容,周五发布。</p>\n\n <p>本杂志<a href=\"https://github.com/ruanyf/weekly\">开源</a>,欢迎<a href=\"https://github.com/ruanyf/weekly/issues\">投稿</a>。另有<a href=\"https://github.com/ruanyf/weekly/issues/9088\">《谁在招人》</a>服务,发布程序员招聘信息。合作请<a href=\"mailto:yifeng.ruan@gmail.com\">邮件联系</a>(yifeng.ruan@gmail.com)。</p>\n\n<h2>封面图</h2>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030804.webp\" alt=\"\" title=\"\"></p>\n\n<p>重庆涪陵某景区架设了世界首座\"巨石索桥\",桥面就是一块块巨石,一不小心就会踏空。(<a href=\"https://www.cbg.cn/a/77561/20260214/7b37135efeb74f0fbbaf272a9b7f6ae0.html\">via</a>)</p>\n\n<h2>测试是新的护城河</h2>\n\n<p><a href=\"https://nextjs.org/\">Next.js</a> 是目前排名第一的 JS 框架。平时遇到的 JS 全栈应用,我估计,一半用它开发。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202602/bg2026022808.webp\" alt=\"\" title=\"\"></p>\n\n<p>两周前,这个框架被一则新闻颠覆了。</p>\n\n<p>一个 Cloudflare 工程师<a href=\"https://blog.cloudflare.com/vinext/\">宣布</a>,<strong>他只用一个星期就用 AI 重新实现了 Next.js</strong>,起名为 <a href=\"https://vinext.io/\">vinext</a>。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202602/bg2026022809.webp\" alt=\"\" title=\"\"></p>\n\n<p>事实上,一天就生成产品原型了,后面几天只是在完善。</p>\n\n<blockquote>\n <p>\"真正动手是2月13日,当天晚上,基本功能已经实现。第二天下午,11个路由器做好了10个。第三天,已经部署到我们的服务器,实现了完整的客户端水合。</p>\n\n<p>接下来的几天,主要进行安全加固:修复极端情况,扩展测试套件,提升 API 覆盖率至 94%。\"</p>\n</blockquote>\n\n<p>这个新的实现,比原版 Next.js 性能更好。</p>\n\n<blockquote>\n <p>\"早期基准测试中,构建速度提升了4倍,客户端软件包的体积缩小了57%,生产环境的 Next.js 应用已经直接跑在上面了。\" </p>\n</blockquote>\n\n<p>这个 vinext 的<a href=\"https://github.com/cloudflare/vinext\">代码</a>已经放出来了。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202602/bg2026022810.webp\" alt=\"\" title=\"\"></p>\n\n<p>我觉得,<strong>这件事对 Next.js 的打击非常大</strong>。</p>\n\n<p>Next.js 是 Vercel 公司的产品,背后有一个大型开发团队,每年都是巨额投入,已经整整做了10年。虽然是开源软件,但是企业版、云服务、插件、皮肤都要收费,去年的年收入达到2亿美元。</p>\n\n<p><strong>这种看似难以逾越的护城河,在 AI 面前不堪一击</strong>。一个工程师用了一个星期,就复刻了大团队十年的工作成果,现有的网页应用不改一行代码,放上去就能跑,原版的每个功能都支持。</p>\n\n<p>你知道花了多少钱?Token 费用仅仅为 1100 美元!</p>\n\n<p>这叫 Vercel 怎么再向 Next.js 的开发投钱,客户又怎么愿意再为某个功能付出高昂的使用费。</p>\n\n<p>推而广之,所有的商业软件都受到了重创。<strong>代码的护城河不存在了,只要投入一小笔金钱,AI 就能复刻出大型软件。</strong></p>\n\n<p>那么,为了保护自己,软件公司下一步肯定要防止 AI 复刻。</p>\n\n<p>怎么防呢?<strong>关键就是测试用例</strong>。</p>\n\n<p>Cloudflare 工程师这一次能够复刻成功,主要原因是 Next.js 有完备的文档、庞大的社区文章、以及完整的测试用例。AI 模拟的每一个 API,只要能够通过原有的接口测试,就能确认百分百兼容。</p>\n\n<p>如果拿不到测试用例,谁知道代码行为是否一致,谁敢放到生产环境运行。</p>\n\n<p>可以想象,为了防止复刻,大型软件项目一定会保护自己的测试用例。<strong>测试才是新的护城河。</strong></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030601.webp\" alt=\"\" title=\"\"></p>\n\n<p>世界最流行的数据库 <a href=\"https://sqlite.org/\">SQLite</a>,本身代码15.6万行,但是测试用例<a href=\"https://sqlite.org/testing.html\">9205万行</a>,足足大了590倍!</p>\n\n<p>其中,最核心的测试套件 <a href=\"https://sqlite.org/th3.html\">TH3</a> 是闭源的,不公开,主要测试航空、医疗等关键行业的极端情况和边缘案例,属于核心技术资产。正是这些保密用例,才让 SQLite 难以复刻。</p>\n\n<p>无独有偶,就在前两天,另一个开源项目 <a href=\"https://github.com/tldraw/tldraw/issues/8082\">tldraw</a> 也准备将测试用例闭源。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202602/bg2026022811.webp\" alt=\"\" title=\"\"></p>\n\n<p>说实话,保密的测试用例肯定不利于开源项目的发展,但是开发者需要保护自己的利益。在日益强大的 AI 面前,越来越多的软件可能会选择这样做。</p>\n\n<h2>AI 复刻的版权问题</h2>\n\n<p>AI 复刻软件还有一个版权问题,也引起了<a href=\"https://tuananh.net/2026/03/05/relicensing-with-ai-assisted-rewrite/\">很大争议</a>。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030602.webp\" alt=\"\" title=\"\"></p>\n\n<p>Next.js 是最宽松的 MIT 许可证,所以复刻没有版权问题。但是,有人复刻了一个叫做 <a href=\"https://github.com/chardet/chardet\">chardet</a> 的项目,就争议巨大。</p>\n\n<p>chardet 本来采用的许可证,是限制较多的 LGPL,复刻以后改成了 MIT 许可证,引发了原始作者的抗议。</p>\n\n<p>网上的意见也分成了两派。</p>\n\n<p>支持者说,AI 只复刻了功能和接口,代码完全不一样,当然可以更改许可证。</p>\n\n<p>反对者说,GPL 规定了,所有衍生作品都不能更改许可证,AI 复刻就属于衍生。</p>\n\n<p>更麻烦的是,美国法律规定,AI 生成产物无版权,属于公共领域。这意味着,<strong>AI 复刻的软件不能设置许可证,设置了无效。</strong></p>\n\n<p>按照这条法律,软件许可证就意义不大了。管你是什么许可证,任何人 AI 复刻一下就能规避,AI 实现的版本一律没有版权。</p>\n\n<h2>科技动态</h2>\n\n<p>1、<a href=\"https://decrypt.co/360183/roblox-using-ai-rewrite-chat-swears-slurs-real-time\">AI 改写脏话</a></p>\n\n<p>游戏平台 Roblox <a href=\"https://ir.roblox.com/news/news-details/2026/Roblox-Launches-Real-Time-Chat-Rephrasing-to-Maintain-Civility-and-Gameplay-Flow/default.aspx\">宣布</a>,将用 AI 实时修改玩家的对话,让其变得更文明。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030701.webp\" alt=\"\" title=\"\"></p>\n\n<p>以前,如果玩家在游戏里面骂脏话,系统只会将其过滤,显示为 <code>####</code>,你还是知道他在骂人。</p>\n\n<p>现在,AI 将重新修改整个句子,让表达变得更礼貌、更文明,你就察觉不到对方在骂人。</p>\n\n<p>虽然这样未免有点虚假,但确实有必要。网络论坛也应该跟进,不要让人身攻击毁掉交流氛围。</p>\n\n<p>2、<a href=\"https://www.esa.int/Applications/Connectivity_and_Secure_Communications/World-first_gigabit-per-second_laser_link_between_aircraft_and_geostationary_satellite\">飞机的激光上网</a></p>\n\n<p>欧洲航天局成功进行了飞机的\"激光上网\"实验,通过激光将一架飞机与一颗卫星连接,实现了高速通信。 </p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030704.webp\" alt=\"\" title=\"\"></p>\n\n<p>飞机上网现在都通过无线电波,比如星链就通过无线电,让飞机连接卫星。本次实验则是通过激光连接卫星。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030705.webp\" alt=\"\" title=\"\"></p>\n\n<p>上图就是安装在飞机舷窗上的激光终端。</p>\n\n<p>激光通信的优点是带宽大,不受无线频谱的限制,这次实验的上网速度达到了 2.6Gbps,是星链的8到10倍。</p>\n\n<p>缺点是激光与卫星之间必须保持直线,不能有云层和大气的障碍物。所以采用这种方式,大概只有飞到高空时才能上网。</p>\n\n<p>3、<a href=\"https://www.theverge.com/ai-artificial-intelligence/890921/grammarly-ai-expert-reviews\">Grammarly 的专家意见</a></p>\n\n<p>Grammarly 是一个写作服务,提供一个收费功能\"专家意见\",让专家点评你的文章。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031002.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个国外用户使用该功能时,震惊地发现,点评专家里面有他的前老板(下图),但是他知道老板已经去世了。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031003.webp\" alt=\"\" title=\"\"></p>\n\n<p>原来这不是真人点评,而是 AI 为每个专家建了一个分身,用他们各自的文章进行训练,然后让分身点评你的文章。</p>\n\n<p>这引起了争议,我们是否有权搭建别人的\"数字分身\",然后冠以原始人物的名义(比如\"孔子分身\"或者\"爱因斯坦分身\")?</p>\n\n<p>4、<a href=\"https://www.bbc.com/news/articles/cgln72rgrero\">太阳能邮筒</a></p>\n\n<p>网络通信普及以后,传统的邮筒怎么办?</p>\n\n<p>英国皇家邮政想出一个办法,将英国各地3500个邮筒,变为\"太阳能邮筒\"。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202511/bg2025110505.webp\" alt=\"\" title=\"\"></p>\n\n<p>邮筒顶部加装了太阳能光伏片,功能也从寄信,变成了收寄小包裹。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202511/bg2025110506.webp\" alt=\"\" title=\"\"></p>\n\n<p>这样既保存了传统的红色邮筒,成为街道的景观,又为人们邮寄包裹提供了方便。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202511/bg2025110507.webp\" alt=\"\" title=\"\"></p>\n\n<h2>文章</h2>\n\n<p>1、<a href=\"https://grith.ai/blog/clinejection-when-your-ai-tool-installs-another\">GitHub Issue 标题的注入攻击</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030703.webp\" alt=\"\" title=\"\"></p>\n\n<p>这可能是第一起 AI 模型注入的真实攻击。Cline 项目使用 AI 对 GitHub Issue 进行分类,有人就在标题插入恶意提示词,从而成功拿到 npm 令牌,发布了一个恶意版本。本文告诉你这是怎么做到的。</p>\n\n<p>2、<a href=\"https://www.infoq.com/news/2026/03/agents-context-file-value-review/\">重新评估 AGENTS.md</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030901.webp\" alt=\"\" title=\"\"></p>\n\n<p>最近的一项研究提出,跟推荐做法相反,AGENTS.md 文件对 AI 编码不是促进,而是阻碍。</p>\n\n<p>它只是让模型\"思考\"得更多(成本上升),生成结果却没有更好(性能下降)。</p>\n\n<p>3、<a href=\"https://bloomberg.github.io/js-blog/post/temporal/\">Temporal API 的九年历程</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031205.webp\" alt=\"\" title=\"\"></p>\n\n<p>本周,Temporal API 正式通过了第四阶段。这意味着,它进入了 ES2026 标准,成为了 JavaScript 语法的一部分。本文是这个标准的起草者对九年推进历程的回顾。</p>\n\n<p>4、<a href=\"https://decrypt.co/360596/benchmark-test-measures-ai-bullshit-most-models-fail\">AI 的胡说测试</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031206.webp\" alt=\"\" title=\"\"></p>\n\n<p>国外有一个 <a href=\"https://petergpt.github.io/bullshit-benchmark/viewer/index.v2.html\">BuillshitBench</a>,专门问 AI 一些胡说八道的问题,看 AI 能不能分辨这是胡说,还是一本正经地回答。</p>\n\n<p>5、<a href=\"https://www.zolkos.com/2025/12/03/vanilla-css-is-all-you-need\">原生 CSS 就足够了</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202512/bg2025120704.webp\" alt=\"\" title=\"\"></p>\n\n<p>本文展示了 37Signals 公司的 CSS 代码,表明不使用任何框架(比如 Tailwind)和构建工具(比如 Sass),只用原生 CSS 代码完全可以。</p>\n\n<p>6、<a href=\"https://theconversation.com/physics-of-poo-why-it-takes-you-and-an-elephant-the-same-amount-of-time-76696\">粪便物理学</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030802.webp\" alt=\"\" title=\"\"></p>\n\n<p>一篇很另类的科普文章,解释为什么动物不管大小,排便时间都在5~19秒之间,平均12秒。</p>\n\n<h2>工具</h2>\n\n<p>1、<a href=\"https://github.com/c0m4r/kula\">KULA</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030706.webp\" alt=\"\" title=\"\"></p>\n\n<p>Linux 服务器的监控工具,只有一个二进制文件。</p>\n\n<p>2、<a href=\"https://github.com/lardissone/ansi-saver\">AnsiSaver</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030803.webp\" alt=\"\" title=\"\"></p>\n\n<p>mac 电脑的屏保程序,用彩色的 Ansi 字符画作为屏保图案。</p>\n\n<p>3、<a href=\"https://github.com/eliasdorneles/upiano\">upiano</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202308/bg2023081012.webp\" alt=\"\" title=\"\"></p>\n\n<p>在命令行下模拟钢琴弹奏。</p>\n\n<p>4、<a href=\"https://github.com/bostrot/wsl2-distro-manager\">WSL Distro Manager</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031207.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个开源 Windows 应用,通过图形界面管理 Windows Subsystem for Linux(WSL)发行版。</p>\n\n<p>5、<a href=\"https://github.com/tw93/Mole\">Mole</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031213.webp\" alt=\"\" title=\"\"></p>\n\n<p>开源的 Mac 电脑清理和优化工具。</p>\n\n<p>6、<a href=\"https://github.com/janbjorge/pipegate\">PipeGate</a></p>\n\n<p>一个将内网服务映射到外网的隧道工具,特点是比较简单,就是几个 Python 脚本,并且可以设置 UUID 客户端认证。</p>\n\n<p>7、<a href=\"https://www.hooklistener.com/\">HookListener</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202412/bg2024121804.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个管理、测试 Webhook 的在线工具,个人可以免费使用。</p>\n\n<p>8、<a href=\"https://github.com/suzuran0y/CCTV-Smartphone-AI-Monitoring\">Sentinel</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031201.webp\" alt=\"\" title=\"\"></p>\n\n<p>将安卓手机转化为网络摄像头,实现实时监控和图像采集。(<a href=\"https://github.com/ruanyf/weekly/issues/9201\">@suzuran0</a> 投稿)</p>\n\n<p>9、<a href=\"https://github.com/chentao1006/FluxMonitor\">Flux Monitor</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031203.webp\" alt=\"\" title=\"\"></p>\n\n<p>Mac 电脑的系统监控、管理面板。(<a href=\"https://github.com/ruanyf/weekly/issues/9207\">@chentao1006</a> 投稿)</p>\n\n<h2>AI 相关</h2>\n\n<p>1、<a href=\"https://github.com/MrQianjinsi/agentic-metric\">Agentic Metric</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030603.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个 Python 命令行工具,监控本地各种 coding agent(比如 Claude Code、Codex、OpenCode)的使用量。(<a href=\"https://github.com/ruanyf/weekly/issues/9165\">@MrQianjinsi</a> 投稿)</p>\n\n<p>2、<a href=\"https://github.com/chenhg5/cc-connect\">cc-connect</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031202.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个开源的连接器,将各种 AI 编程工具与手机聊天软件相连。(<a href=\"https://github.com/ruanyf/weekly/issues/9202\">@chenhg5</a> 投稿)</p>\n\n<p>3、<a href=\"https://github.com/alibaba/page-agent\">Page Agent</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030702.webp\" alt=\"\" title=\"\"></p>\n\n<p>只要在网页插入这个 JS 库,就可以使用自然语言操作页面,比如\"点击导航栏的文档链接,总结其内容\"。</p>\n\n<p>4、<a href=\"https://github.com/eugene1g/agent-safehouse\">Agent Safehouse</a></p>\n\n<p>一个 macOS 沙箱工具,用来在沙箱里运行 AI 编程工具。</p>\n\n<p>5、<a href=\"https://github.com/qwibitai/nanoclaw/tree/main/repo-tokens\">Repo Tokens</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202602/bg2026022801.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个 GitHub Action,为你的仓库添加一个图形标签(上图),显示该仓库相当于多少 Token,用来大模型的计算量。</p>\n\n<h2>资源</h2>\n\n<p>1、<a href=\"https://www.worldmonitor.app/\">世界监控</a>(World Monitor)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026030801.webp\" alt=\"\" title=\"\"></p>\n\n<p>世界局势的一个实时看板,把各种消息源都放在一个网页里。</p>\n\n<p>2、<a href=\"https://fuelingcuriosity.com/game.html\">炼油厂探索</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031204.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个动画互动网站,展示炼油厂怎样将石油变成汽柴油。</p>\n\n<p>3、<a href=\"https://mechanical-pencil.com/\">Mechanical Pencil</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031001.webp\" alt=\"\" title=\"\"></p>\n\n<p>弹簧笔、打火机等生活小物品的机械装置动画。</p>\n\n<h2>图片</h2>\n\n<p>1、<a href=\"https://tesseral.com/blog/i-designed-some-more-user-friendly-methods-for-multi-factor-authentication\">密码的替代方法</a></p>\n\n<p>一位程序员发明了一种新的密码方法,你觉得可行吗?</p>\n\n<p>系统向用户展示一副扑克牌,让其从52张牌中依次挑出5张,作为密码。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202507/bg2025073110.webp\" alt=\"\" title=\"\"></p>\n\n<p>下次登录时,用户必须按同样顺序挑出同样的5张牌。</p>\n\n<h2>文摘</h2>\n\n<p>1、<a href=\"https://news.ycombinator.com/item?id=31670526\">复杂社会的崩溃</a></p>\n\n<p>我们都知道,一个软件的复杂度不断上升,超过某个极限后,就会难以维护,最后往往被放弃。</p>\n\n<p>美国历史学家约瑟夫·坦特(Joseph Tainter)认为,人类社会也是如此。如果社会的复杂度超过极限,这个社会最终也会崩溃。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031214.webp\" alt=\"\" title=\"\"></p>\n\n<p>1988年,他出版了一本名为《复杂社会的崩溃》的书,描述了罗马人、玛雅人和查科人等伟大文明的兴衰,试图回答几个世纪以来一直困扰着思想家的一个问题:<strong>为什么强大的社会会崩溃?</strong></p>\n\n<p>他认为,原因是这些社会有一个敌人----复杂性。</p>\n\n<p>随着文明的发展,社会增加了越来越多的复杂性:更多的等级制度、更多的官僚机构、更深层次的社会结构。</p>\n\n<p>一开始,新的等级、官僚、组织都是有用的,比如可以增加经济产出、税收等。但到了某个时刻,收益递减规律开始出现,每增加一点复杂度带来的回报越来越少,直至变成零甚至负数。</p>\n\n<p>(1)法律条文和官僚越多,政府开销也就随之上升,长期很可能令社会无法负担。</p>\n\n<p>(2)复杂度变大,会增加社会的不平等,因为能理解所有规则的人就越少,你就越离不开律师。懂规则的人会比其他人占优势。</p>\n\n<p>(3)规则越多,维护和执行这些规则的机构也就越多,不利于社会提高效率。</p>\n\n<p>(4)复杂性最终导致社会各阶层的差距变大,对立也随之而来。</p>\n\n<p>以上因素的共同作用,导致历史上很多强大的社会最终崩溃。</p>\n\n<h2>言论</h2>\n\n<p>1、</p>\n\n<p>2021年,我感觉做一名优秀的软件工程师棒极了。软件行业蓬勃发展,机会很多,我热爱这份工作,觉得可以永远做下去。</p>\n\n<p>2026年,我已经不确定软件行业十年后会怎样,即使还存在,必定与现在极不相同。我也许能找到出路,也许不得不离开这个行业。无论如何,我热爱的软件工作即将消失。</p>\n\n<p>-- <a href=\"https://www.seangoedecke.com/will-my-job-still-exist/\">《我不知道十年后我的工作是否还存在》</a></p>\n\n<p>2、</p>\n\n<p>与强大的 AI 对抗会是什么感觉?</p>\n\n<p>你会感觉自己莫名其妙地弱了不少,AI 做的每件事都超出你的预期。</p>\n\n<p>这就好像你和一位实力强劲的玩家玩一款随机性很强的游戏,你会感觉这位高手总是运气爆棚。</p>\n\n<p>-- <a href=\"https://probablydance.com/2026/03/07/im-getting-a-whiff-of-iain-banks-culture/\">probablydance.com</a></p>\n\n<p>3、</p>\n\n<p>阅读商战书籍是浪费时间。它们将简单的故事变成通用的建议,将偶然的成功转化为普遍的策略,并用激励人心的口号取代复杂的市场。</p>\n\n<p>这些书的成功并不是因为内容正确,而是因为易于阅读并且让读者感觉良好。</p>\n\n<p>-- <a href=\"https://antemedian.substack.com/p/why-reading-business-books-is-a-waste\">《阅读商战书籍是浪费时间》</a></p>\n\n<p>4、</p>\n\n<p>我想让 AI 告诉我怎么使用一种全新的、AI 也不会用的工具,就会提示 AI \"执行 xxx-tool --help 来了解该工具\"(假定工具名字是 xxx-tool),然后 AI 就学会用了。</p>\n\n<p>-- <a href=\"https://simonwillison.net/2026/Mar/9/not-so-boring/\">Simon Willison</a>,著名开发者</p>\n\n<p>5、</p>\n\n<p>时间是唯一不可再生的资源。AI 大模型是目前我所知的最便宜的赚取额外时间的方式。</p>\n\n<p>-- <a href=\"https://steipete.me/posts/2025/stop-overthinking-ai-subscriptions\">《不要太看重 AI 大模型的订阅费》</a></p>\n\n<h2>往年回顾</h2>\n\n<p><a href=\"https://www.ruanyifeng.com/blog/2025/03/weekly-issue-341.html\">低代码编程,恐怕不会成功</a>(#341)</p>\n\n<p><a href=\"http://www.ruanyifeng.com/blog/2024/03/weekly-issue-291.html\">AI 没有护城河</a>(#291)</p>\n\n<p><a href=\"http://www.ruanyifeng.com/blog/2023/02/weekly-issue-241.html\">中国的增长动力在内陆</a>(#241)</p>\n\n<p><a href=\"http://www.ruanyifeng.com/blog/2022/01/weekly-issue-191.html\">一个程序员的财务独立之路</a>(#191)</p>\n\n<p>(完)</p>\n\n <div><h3>文档信息</h3>\n<ul>\n<li>版权声明:自由转载-非商用-非衍生-保持署名(<a href=\"https://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh\">创意共享3.0许可证</a>)</li>\n<li>发表日期: <abbr title=\"2026-03-13T07:59:16+08:00\" data-sanitized-class=\"published\">2026年3月13日</abbr></li>\n\n</ul></div> \n <div></div>",
|
||
"raw_content": null,
|
||
"metadata": {
|
||
"upstream": "freshrss",
|
||
"origin": {
|
||
"streamId": "feed/2",
|
||
"htmlUrl": "http://www.ruanyifeng.com/blog/",
|
||
"title": "阮一峰的网络日志"
|
||
},
|
||
"categories": [
|
||
"rss",
|
||
"user/-/state/org.freshrss/main",
|
||
"Weekly"
|
||
],
|
||
"crawled_at": "2026-03-24T09:18:21.528000Z",
|
||
"published_epoch": 1773359956
|
||
},
|
||
"fetch_state": "pending"
|
||
},
|
||
"article": {
|
||
"extract_id": "sha256:fdc9230d42ec24f867f94f3198960e8104f633fb8ab532645b384baf1df6b369",
|
||
"item_id": "sha256:0d315d9489010cfd470a8d479e4e4443722fffdc34ecc1245c1b92458ace5093",
|
||
"source_id": "freshrss:66c2d55d7563e741",
|
||
"url": "http://www.ruanyifeng.com/blog/2026/03/weekly-issue-388.html",
|
||
"title": "科技爱好者周刊(第 388 期):测试是新的护城河",
|
||
"author": "阮一峰",
|
||
"published_at": "2026-03-12T23:59:16Z",
|
||
"language": null,
|
||
"content_kind": "article",
|
||
"plain_text": "这里记录每周值得分享的科技内容,周五发布。\n本杂志开源,欢迎投稿。另有《谁在招人》服务,发布程序员招聘信息。合作请邮件联系([email protected])。\n封面图\n重庆涪陵某景区架设了世界首座\"巨石索桥\",桥面就是一块块巨石,一不小心就会踏空。(via)\n测试是新的护城河\nNext.js 是目前排名第一的 JS 框架。平时遇到的 JS 全栈应用,我估计,一半用它开发。\n两周前,这个框架被一则新闻颠覆了。\n一个 Cloudflare 工程师宣布,他只用一个星期就用 AI 重新实现了 Next.js,起名为 vinext。\n事实上,一天就生成产品原型了,后面几天只是在完善。\n\"真正动手是2月13日,当天晚上,基本功能已经实现。第二天下午,11个路由器做好了10个。第三天,已经部署到我们的服务器,实现了完整的客户端水合。\n接下来的几天,主要进行安全加固:修复极端情况,扩展测试套件,提升 API 覆盖率至 94%。\"\n这个新的实现,比原版 Next.js 性能更好。\n\"早期基准测试中,构建速度提升了4倍,客户端软件包的体积缩小了57%,生产环境的 Next.js 应用已经直接跑在上面了。\"\n这个 vinext 的代码已经放出来了。\n我觉得,这件事对 Next.js 的打击非常大。\nNext.js 是 Vercel 公司的产品,背后有一个大型开发团队,每年都是巨额投入,已经整整做了10年。虽然是开源软件,但是企业版、云服务、插件、皮肤都要收费,去年的年收入达到2亿美元。\n这种看似难以逾越的护城河,在 AI 面前不堪一击。一个工程师用了一个星期,就复刻了大团队十年的工作成果,现有的网页应用不改一行代码,放上去就能跑,原版的每个功能都支持。\n你知道花了多少钱?Token 费用仅仅为 1100 美元!\n这叫 Vercel 怎么再向 Next.js 的开发投钱,客户又怎么愿意再为某个功能付出高昂的使用费。\n推而广之,所有的商业软件都受到了重创。代码的护城河不存在了,只要投入一小笔金钱,AI 就能复刻出大型软件。\n那么,为了保护自己,软件公司下一步肯定要防止 AI 复刻。\n怎么防呢?关键就是测试用例。\nCloudflare 工程师这一次能够复刻成功,主要原因是 Next.js 有完备的文档、庞大的社区文章、以及完整的测试用例。AI 模拟的每一个 API,只要能够通过原有的接口测试,就能确认百分百兼容。\n如果拿不到测试用例,谁知道代码行为是否一致,谁敢放到生产环境运行。\n可以想象,为了防止复刻,大型软件项目一定会保护自己的测试用例。测试才是新的护城河。\n世界最流行的数据库 SQLite,本身代码15.6万行,但是测试用例9205万行,足足大了590倍!\n其中,最核心的测试套件 TH3 是闭源的,不公开,主要测试航空、医疗等关键行业的极端情况和边缘案例,属于核心技术资产。正是这些保密用例,才让 SQLite 难以复刻。\n无独有偶,就在前两天,另一个开源项目 tldraw 也准备将测试用例闭源。\n说实话,保密的测试用例肯定不利于开源项目的发展,但是开发者需要保护自己的利益。在日益强大的 AI 面前,越来越多的软件可能会选择这样做。\nAI 复刻的版权问题\nAI 复刻软件还有一个版权问题,也引起了很大争议。\nNext.js 是最宽松的 MIT 许可证,所以复刻没有版权问题。但是,有人复刻了一个叫做 chardet 的项目,就争议巨大。\nchardet 本来采用的许可证,是限制较多的 LGPL,复刻以后改成了 MIT 许可证,引发了原始作者的抗议。\n网上的意见也分成了两派。\n支持者说,AI 只复刻了功能和接口,代码完全不一样,当然可以更改许可证。\n反对者说,GPL 规定了,所有衍生作品都不能更改许可证,AI 复刻就属于衍生。\n更麻烦的是,美国法律规定,AI 生成产物无版权,属于公共领域。这意味着,AI 复刻的软件不能设置许可证,设置了无效。\n按照这条法律,软件许可证就意义不大了。管你是什么许可证,任何人 AI 复刻一下就能规避,AI 实现的版本一律没有版权。\n科技动态\n1、AI 改写脏话\n游戏平台 Roblox 宣布,将用 AI 实时修改玩家的对话,让其变得更文明。\n以前,如果玩家在游戏里面骂脏话,系统只会将其过滤,显示为 ####\n,你还是知道他在骂人。\n现在,AI 将重新修改整个句子,让表达变得更礼貌、更文明,你就察觉不到对方在骂人。\n虽然这样未免有点虚假,但确实有必要。网络论坛也应该跟进,不要让人身攻击毁掉交流氛围。\n2、飞机的激光上网\n欧洲航天局成功进行了飞机的\"激光上网\"实验,通过激光将一架飞机与一颗卫星连接,实现了高速通信。\n飞机上网现在都通过无线电波,比如星链就通过无线电,让飞机连接卫星。本次实验则是通过激光连接卫星。\n上图就是安装在飞机舷窗上的激光终端。\n激光通信的优点是带宽大,不受无线频谱的限制,这次实验的上网速度达到了 2.6Gbps,是星链的8到10倍。\n缺点是激光与卫星之间必须保持直线,不能有云层和大气的障碍物。所以采用这种方式,大概只有飞到高空时才能上网。\nGrammarly 是一个写作服务,提供一个收费功能\"专家意见\",让专家点评你的文章。\n一个国外用户使用该功能时,震惊地发现,点评专家里面有他的前老板(下图),但是他知道老板已经去世了。\n原来这不是真人点评,而是 AI 为每个专家建了一个分身,用他们各自的文章进行训练,然后让分身点评你的文章。\n这引起了争议,我们是否有权搭建别人的\"数字分身\",然后冠以原始人物的名义(比如\"孔子分身\"或者\"爱因斯坦分身\")?\n4、太阳能邮筒\n网络通信普及以后,传统的邮筒怎么办?\n英国皇家邮政想出一个办法,将英国各地3500个邮筒,变为\"太阳能邮筒\"。\n邮筒顶部加装了太阳能光伏片,功能也从寄信,变成了收寄小包裹。\n这样既保存了传统的红色邮筒,成为街道的景观,又为人们邮寄包裹提供了方便。\n文章\n1、GitHub Issue 标题的注入攻击(英文)\n这可能是第一起 AI 模型注入的真实攻击。Cline 项目使用 AI 对 GitHub Issue 进行分类,有人就在标题插入恶意提示词,从而成功拿到 npm 令牌,发布了一个恶意版本。本文告诉你这是怎么做到的。\n2、重新评估 AGENTS.md(英文)\n最近的一项研究提出,跟推荐做法相反,AGENTS.md 文件对 AI 编码不是促进,而是阻碍。\n它只是让模型\"思考\"得更多(成本上升),生成结果却没有更好(性能下降)。\n3、Temporal API 的九年历程(英文)\n本周,Temporal API 正式通过了第四阶段。这意味着,它进入了 ES2026 标准,成为了 JavaScript 语法的一部分。本文是这个标准的起草者对九年推进历程的回顾。\n4、AI 的胡说测试(英文)\n国外有一个 BuillshitBench,专门问 AI 一些胡说八道的问题,看 AI 能不能分辨这是胡说,还是一本正经地回答。\n5、原生 CSS 就足够了(英文)\n本文展示了 37Signals 公司的 CSS 代码,表明不使用任何框架(比如 Tailwind)和构建工具(比如 Sass),只用原生 CSS 代码完全可以。\n6、粪便物理学(英文)\n一篇很另类的科普文章,解释为什么动物不管大小,排便时间都在5~19秒之间,平均12秒。\n工具\n1、KULA\nLinux 服务器的监控工具,只有一个二进制文件。\nmac 电脑的屏保程序,用彩色的 Ansi 字符画作为屏保图案。\n3、upiano\n在命令行下模拟钢琴弹奏。\n一个开源 Windows 应用,通过图形界面管理 Windows Subsystem for Linux(WSL)发行版。\n5、Mole\n开源的 Mac 电脑清理和优化工具。\n6、PipeGate\n一个将内网服务映射到外网的隧道工具,特点是比较简单,就是几个 Python 脚本,并且可以设置 UUID 客户端认证。\n一个管理、测试 Webhook 的在线工具,个人可以免费使用。\n8、Sentinel\n将安卓手机转化为网络摄像头,实现实时监控和图像采集。(@suzuran0 投稿)\nMac 电脑的系统监控、管理面板。(@chentao1006 投稿)\nAI 相关\n一个 Python 命令行工具,监控本地各种 coding agent(比如 Claude Code、Codex、OpenCode)的使用量。(@MrQianjinsi 投稿)\n一个开源的连接器,将各种 AI 编程工具与手机聊天软件相连。(@chenhg5 投稿)\n只要在网页插入这个 JS 库,就可以使用自然语言操作页面,比如\"点击导航栏的文档链接,总结其内容\"。\n一个 macOS 沙箱工具,用来在沙箱里运行 AI 编程工具。\n一个 GitHub Action,为你的仓库添加一个图形标签(上图),显示该仓库相当于多少 Token,用来大模型的计算量。\n资源\n1、世界监控(World Monitor)\n世界局势的一个实时看板,把各种消息源都放在一个网页里。\n2、炼油厂探索\n一个动画互动网站,展示炼油厂怎样将石油变成汽柴油。\n弹簧笔、打火机等生活小物品的机械装置动画。\n图片\n1、密码的替代方法\n一位程序员发明了一种新的密码方法,你觉得可行吗?\n系统向用户展示一副扑克牌,让其从52张牌中依次挑出5张,作为密码。\n下次登录时,用户必须按同样顺序挑出同样的5张牌。\n文摘\n1、复杂社会的崩溃\n我们都知道,一个软件的复杂度不断上升,超过某个极限后,就会难以维护,最后往往被放弃。\n美国历史学家约瑟夫·坦特(Joseph Tainter)认为,人类社会也是如此。如果社会的复杂度超过极限,这个社会最终也会崩溃。\n1988年,他出版了一本名为《复杂社会的崩溃》的书,描述了罗马人、玛雅人和查科人等伟大文明的兴衰,试图回答几个世纪以来一直困扰着思想家的一个问题:为什么强大的社会会崩溃?\n他认为,原因是这些社会有一个敌人----复杂性。\n随着文明的发展,社会增加了越来越多的复杂性:更多的等级制度、更多的官僚机构、更深层次的社会结构。\n一开始,新的等级、官僚、组织都是有用的,比如可以增加经济产出、税收等。但到了某个时刻,收益递减规律开始出现,每增加一点复杂度带来的回报越来越少,直至变成零甚至负数。\n(1)法律条文和官僚越多,政府开销也就随之上升,长期很可能令社会无法负担。\n(2)复杂度变大,会增加社会的不平等,因为能理解所有规则的人就越少,你就越离不开律师。懂规则的人会比其他人占优势。\n(3)规则越多,维护和执行这些规则的机构也就越多,不利于社会提高效率。\n(4)复杂性最终导致社会各阶层的差距变大,对立也随之而来。\n以上因素的共同作用,导致历史上很多强大的社会最终崩溃。\n言论\n1、\n2021年,我感觉做一名优秀的软件工程师棒极了。软件行业蓬勃发展,机会很多,我热爱这份工作,觉得可以永远做下去。\n2026年,我已经不确定软件行业十年后会怎样,即使还存在,必定与现在极不相同。我也许能找到出路,也许不得不离开这个行业。无论如何,我热爱的软件工作即将消失。\n2、\n与强大的 AI 对抗会是什么感觉?\n你会感觉自己莫名其妙地弱了不少,AI 做的每件事都超出你的预期。\n这就好像你和一位实力强劲的玩家玩一款随机性很强的游戏,你会感觉这位高手总是运气爆棚。\n3、\n阅读商战书籍是浪费时间。它们将简单的故事变成通用的建议,将偶然的成功转化为普遍的策略,并用激励人心的口号取代复杂的市场。\n这些书的成功并不是因为内容正确,而是因为易于阅读并且让读者感觉良好。\n4、\n我想让 AI 告诉我怎么使用一种全新的、AI 也不会用的工具,就会提示 AI \"执行 xxx-tool --help 来了解该工具\"(假定工具名字是 xxx-tool),然后 AI 就学会用了。\n-- Simon Willison,著名开发者\n5、\n时间是唯一不可再生的资源。AI 大模型是目前我所知的最便宜的赚取额外时间的方式。\n往年回顾\n低代码编程,恐怕不会成功(#341)\nAI 没有护城河(#291)\n中国的增长动力在内陆(#241)\n一个程序员的财务独立之路(#191)\n(完)\n一剑飘红 说:\n密码的替代方法?往期周刊好像提到有人开发过一种图像密码,就是点击图片中的某几个位置来作为密码的\n2026年3月13日 09:11 | # | 引用\ndong 说:\n我fork了一个next.js仓库,算是重新生成了一个next.js的替代品吗?\n有大公司会用AI生成的吗?\n保证没有bug吗?\n以后的升级、维护,以及支持,有人管吗?\n2026年3月13日 09:12 | # | 引用\nqiba 说:\n关于那个原生css就够了。所有的框架和构建工具最终都还是要转成原生css的,并没有在原生之外使用什么新的技术,所以不存在原生css就够了这个问题。框架和构建工具只不过是为了方便开发者,减轻部分重复的工作量\n2026年3月13日 09:18 | # | 引用\n北石 说:\n昨天公司也裁员了,现在AI的大力推广对于普通程序员来说并不是一件好事,可替代性太强\n2026年3月13日 09:52 | # | 引用\nAmaF 说:\n扑克牌密码我觉得非常不可行,5个数字好说,5个花色的顺序好难记\n2026年3月13日 10:34 | # | 引用\nF^[email protected] 说:\n在未来,AI会被政府所完全掌控,包括所有的能用到的AI领域与边界。由政府来分配AI资源。因为AI的产生与使用本身就是集整个社会资源与一体的东西。所以,这样的东西不应被任何资本或个人滥用。就像WIFI-水-电-油-粮这样的基础设施。\n只有这样,才能维持稳定的人口结构与避免陷入全球内卷的陷阱。\n当然,这时候的世界,已经很像《我们》与《美丽新世界》了。\n当我前段时间想到这样的未来时,我豁然开朗,不再焦虑。\n2026年3月13日 10:44 | # | 引用\n4cos90 说:\n重新实现? ❌\n照着开源代码优化了一版 √\n没有原版的产品原型和代码 AI 能用这么少token实现吗,光整理需求输入都费劲吧。\n2026年3月13日 11:03 | # | 引用\njiangnanboy 说:\nai的发展是码农的终结者,一声叹息\n2026年3月13日 11:09 | # | 引用\napp 说:\n为什么不能用ai生成测试用例\n2026年3月13日 11:37 | # | 引用\nid17 说:\nClinejection 那个攻击一顿操作猛如虎,最后是装 openclaw。最近付费装 openclaw 的可以装个 cline 解决一下哈哈。这是真的安装免费,付费删除了\n2026年3月13日 12:03 | # | 引用\nanny 说:\n我觉得裁员和ai没有必然的关系,无论有没有都会拆员,AI的出现会提高程序员效率是显而易见的,就像不断有新的技术和框架出现一样,你如果停滞不前被淘汰是早晚的问题。和技术没关系。\n2026年3月13日 12:49 | # | 引用\nLeo 说:\n8、Sentinel\n实际仓库名是 CCTV-Smartphone-AI-Monitoring。\n2026年3月13日 13:12 | # | 引用\nNoOne 说:\n涉及复杂的专业业务场景,这些是不公开的。\n2026年3月13日 13:52 | # | 引用\nlio 说:\nAI对于各个代码第三方包。并不进行校验,而是依赖于文字描述\nai的知识库中并没有对于人类和ai进行合作的知识。所以ai的回答并不是最优解。人类社会甚至还没发明出成熟的 “AI协作方法论”\n上下文腐烂问题。聊的越久,可能反应的越差\n自动化的程序越高,需要人力参与的进度越多,Automation Paradox(自动化悖论)自动化越高,人类越关键。并不是解决了问题,而是将问题进行转移了。\n当 AI 模型不知道某件事时,它并不总会说“I don't know.” 相反,它会基于见过的模式生成看起来最可能的内容。这几条是我整理出来的对于ai的一些心得。不知道大家是什么看法\n2026年3月13日 13:55 | # | 引用\nXZY 说:\n就像唱片普及了之后,去听音乐会的人就少了。现场听的确沉浸感更强,但是大多数人能够忍受这样的品质下降的了。\n没有test case保证的AI生成的代码,也会有那些只要短时间能上而不是那么在意品质的人喜欢用的。毕竟大部分软件都没有办法活到类似sqlite的高度的。\n2026年3月13日 14:00 | # | 引用\nBFlower 说:\nwindows 锁屏可以设这种图片密码诶\n2026年3月13日 14:03 | # | 引用\nmirakyux 说:\nwindows之前的登录方式里就有个这样的图片密码\n2026年3月13日 14:05 | # | 引用\n老牛 说:\n大概率都是:黑红梅方 LOL\n2026年3月13日 14:11 | # | 引用\nrz 说:\n我建议可以搞一个“爱泼斯坦”分身,谁赞成?谁同意?\n2026年3月13日 14:12 | # | 引用\n秋风于渭水 说:\n即使chardet 7.0开发者只给 AI 提供 chardet 的 API 文档、功能描述和测试用例,完全不给 AI 看 chardet 的底层源码。看上去 AI 真的是凭空写出了一套能通过所有测试的代码。\n但像 GPT-4、Claude、Gemini 这样的超大模型,其训练数据中极大概率已经包含了开源的 chardet 源码。当chardet 7.0的开发者要求 AI “写一个类似 chardet 的工具”时,AI 实际上可能是从它的权重记忆中“回想”并“拼凑”出了原版 LGPL 代码的逻辑或片段,而不是真正从零开始推导。如果生成的代码中带有原始 chardet 的“代码指纹”或特有的非标准逻辑,并不是真正意义上的从0开始写的,我感觉在法律上依然会被判定为衍生作品。\n2026年3月13日 14:35 | # | 引用\nxsng 说:\n不就是以前的卡密吗?\n2026年3月13日 15:00 | # | 引用\nDangGwanHOu 说:\n扑克牌密码的复杂度应该是(A_52)^5,即排列组合的A、52下标、5上标,存在52 * 51 * 50 * 49 * 48 = 311_875_200种可能,即3.11亿种。如果网站没有设置锁IP等防暴力破解的安全措施,理论上很容易被破解\n2026年3月13日 15:13 | # | 引用\nbaochuquan 说:\nAI发展至今,一切始于代码开源,程序员最终把自己的命革掉了\n2026年3月13日 15:44 | # | 引用\ntietouwa 说:\n人类成功从cmd发展出UI,现在又回到了cmd,以后人手一个AI,是不是就不需要UI了\n2026年3月13日 16:17 | # | 引用\n草梅友仁 说:\n扑克牌密码从本质上讲是52个字符选5个到排列数,甚至不能重复,粗略算了下一共就3亿多种可能性。\n字符数量其实跟只使用英文字符大小写是一样的,而通常安全的密码还会要求添加数字、特殊字符等来扩大字符范围,也会要求更长的密码来增加破解时间。\n故扑克牌密码作为一个秘密是不怎么安全的,只是看上去花哨。\n2026年3月13日 16:35 | # | 引用\nzheng 说:\n数字芯片设计,不仅RTL代码不开源,工具链还支持代码加密,可以商业IP买卖,验证代码一样,各种协议的验证代码,测试用例,都有商业化,比如synopsis。想AI化?连训练素材都拿不到,只有使用文档,有问题就人工技术支持\n2026年3月13日 16:38 | # | 引用\n云闲 说:\n“早晚”的问题对于程序员来事就是最大的问题。多工作一年多赚一年,AI的快速进步使得问题变得更严峻。虽然未来很美好,可惜现阶段人们需要工作来赚钱养家糊口。\n2026年3月13日 17:18 | # | 引用\nLance 说:\n问题是,走向这一最终图景(且是积极的结局,而非cyberpunk)的过程是很痛苦黑暗动荡的\n2026年3月13日 17:25 | # | 引用\nKsir 说:\n代码正在变得廉价,而“解决问题的逻辑”正在变得昂贵。 测试中包含了解决什么问题的细节和验证\n2026年3月13日 19:24 | # | 引用\n老鱼 说:\n你错了。你们公司并不是因为 AI 才裁员的。而是因为现在经济很不好,巨头们拿走了大多数利益并且掌控了互联网上面的多数变现渠道。你们公司因为利润过低亏损而开始裁员。AI 当然提升了效率,增加了需求和岗位,但是这些岗位又被集中到大厂去,因为只有大厂才有资源训练 AI 以及对应用场景进行试错。并且现在的大厂似乎并不愿意把生态让出来给中小厂,而是自己亲自动手做应用。因此,这次的 AI 狂潮,对于国内,几乎只是大厂们自己的狂欢。\n另外,有可能你们公司已经亏损很久了,所以用 AI 这个借口开始裁员而已。\n这就是一句名言所说的“雪崩时,没有一片雪花是无辜的。”国内经济不好时,只要身处这个环境就不可能独善其身。\n2026年3月13日 19:54 | # | 引用\n老鱼 说:\n这基本上就是做梦。这种许愿发生的可能性很低。AI 必然会被资本控制。普通人,还是准备好迎接时代大山压来吧。几乎每次工业革命都会带来战争,第一次、第二次都是。第三次信息革命带来了冷战。很快就要热战了。大家不打几仗是打不成共识的。\n2026年3月13日 19:59 | # | 引用\n明知故犯 说:\n人类目前的排便时间应该会超过这个平均数字,如果是拿着手机,时间会更久一些\n2026年3月13日 21:01 | # | 引用\nRedNax 说:\n略扯。\n先不说第一次第二次工业革命是不是“带来”了战争,第三次信息革命发生的时候都苏联解体冷战结束了,哪来战争?海湾战争也要按到信息革命上去吗?\n2026年3月14日 04:50 | # | 引用\ndg1245 说:\n过去记录密码是:脑子想一组数字字符,注册账号输入密码,然后用纸笔记录密码;\n现在是:从一副扑克牌里随机抽取几张牌,注册账号选择扑克牌作为密码,然后把抽取的扑克牌按顺序塞到信封里放到抽屉里;\n好处是:抽牌比脑子想更随机,不用费劲写字,实物存储密码比网络存储安全;\n缺点很多,不一一列举。\n2026年3月14日 12:49 | # | 引用\ndatou 说:\n《复杂社会的崩溃》-复杂性边际收益递减,我觉得AI有机会解决这个问题,类似规则太多和需要律师的事,需要使用AI工具打破,包括阶级也是。现在有些医疗种类,明目张胆地结团牟利,感觉已经形成了利益阶层,没有重大变故,难以打破。需要AI工具支持下的平权冲击。\n2026年3月14日 21:20 | # | 引用\nc0m4r 说:\n感谢您提到我的监控工具 - KULA。我邀请所有中国朋友来尝试一下!如果您有任何问题或想要提出更改建议,请在 Github 上写一个问题 - 可能会用您的语言!谢谢。\n2026年3月15日 09:13 | # | 引用\nmat 说:\n很多测试用例都是根据实际问题衍生的,这种测试用例AI没法生成\n2026年3月15日 13:31 | # | 引用\nplaster 说:\n不同的是,速度太快了。\n原来新的技术、新的框架出来,到真正大规模应用都有一个比较长的过程,在这个过程中会产生更多的需求,因此效率提高了但对人的需求不会显著降低。\n现在AI替代编程的这个速度,直接把人的岗位的替代了,而新岗位还没有产生\n2026年3月16日 12:03 | # | 引用\n光 说:\n不但不需要ui,我看高级语言也不需要,直接二进制。反正AI写的一定大概率会比人写的好,而且只要通过测试,管它代码怎么写的呢?参考AlphaGo下围棋人类看不懂之案例。\n2026年3月16日 21:42 | # | 引用\ndodo 说:\n这不就是安卓的锁屏密码嘛\n2026年3月17日 11:35 | # | 引用\nshen 说:\n1. 巨石悬索桥是怎么保证游客安全的?\n2. 英国红色邮筒,太阳能板和寄包裹有啥关系呢?\n2026年3月18日 17:52 | # | 引用\nshen 说:\n说明不相信AI\n2026年3月18日 18:03 | # | 引用\nKit Yeung 说:\n虽然测试用例可以用于复刻开源产品,但是生态还是无法复刻的。而且从用户的角度来看,其实这是好事,谁的点子多,功能好,就可以取代你,相应的会促进当前产品开发的居安思危,才能把产品做得更好,否则随时被取代。\n不然想A\\一样,面对opencode和openclaw的行为,只会增加公众对他的厌恶\n2026年3月20日 15:27 | # | 引用\n阿债 说:\n大树杜鹃那个原文,“0.25平方米内发现了40多株”,西双版纳植物所的研究员,都不看自己的稿子了,对吗?\n2026年3月20日 17:29 | # | 引用",
|
||
"quality_flags": {
|
||
"is_paywalled": true,
|
||
"is_truncated": false,
|
||
"is_low_content": false
|
||
},
|
||
"metadata": {
|
||
"content_source": "fetched_html",
|
||
"extractor": "trafilatura",
|
||
"char_count": 10296
|
||
},
|
||
"pipeline_state": "extracted"
|
||
},
|
||
"summary": {
|
||
"title": "科技爱好者周刊(第 388 期):测试是新的护城河",
|
||
"url": "http://www.ruanyifeng.com/blog/2026/03/weekly-issue-388.html",
|
||
"summary": "本文以 Cloudflare 工程师用 AI 在一周内复刻 Next.js 框架为例,指出 AI 使得代码的护城河不复存在。作者认为,软件公司未来将依赖保密的测试用例来防止 AI 复刻,测试成为新的竞争壁垒。",
|
||
"highlights": [
|
||
"Cloudflare 工程师仅用一周时间和 1100 美元 Token 费用,通过 AI 成功复刻了 Next.js 框架,性能优于原版。",
|
||
"AI 能够复刻软件的关键在于开源项目提供了完备的文档、社区文章和测试用例,使得 API 兼容性得以验证。",
|
||
"为防止 AI 复刻,大型软件项目可能选择将核心测试用例闭源,如 SQLite 的 TH3 测试套件和 tldraw 的计划。",
|
||
"AI 复刻软件引发了版权争议,例如 chardet 项目的许可证更改,且美国法律认定 AI 生成物无版权,冲击现有许可证体系。",
|
||
"文章还讨论了 AI 对软件行业的多方面影响,包括提高效率、替代岗位以及可能引发的社会复杂性崩溃问题。"
|
||
],
|
||
"keywords": [
|
||
"Next.js",
|
||
"AI 复刻",
|
||
"测试用例",
|
||
"SQLite",
|
||
"MIT 许可证",
|
||
"Cloudflare",
|
||
"vinext",
|
||
"护城河"
|
||
],
|
||
"topics": [
|
||
"人工智能",
|
||
"软件开发",
|
||
"开源协议",
|
||
"技术趋势",
|
||
"行业影响"
|
||
],
|
||
"category": "观点评论",
|
||
"worth_keeping": true,
|
||
"reason": "文章深入探讨了 AI 对软件行业护城河的颠覆性影响,并提出了测试用例作为新壁垒的见解,具有前瞻性和讨论价值。"
|
||
},
|
||
"filter_result": {
|
||
"decision": "review",
|
||
"matched_rules": [
|
||
"review-paywalled-content",
|
||
"review-worth-keeping-other"
|
||
],
|
||
"reasons": [
|
||
"Article may be behind a paywall.",
|
||
"Worth-keeping signal is positive but no stronger keep rule matched."
|
||
],
|
||
"labels": [
|
||
"needs-review",
|
||
"paywall",
|
||
"quality",
|
||
"summary"
|
||
],
|
||
"priority": 95,
|
||
"matches": [
|
||
{
|
||
"rule_id": "review-paywalled-content",
|
||
"decision": "review",
|
||
"reason": "Article may be behind a paywall.",
|
||
"labels": [
|
||
"quality",
|
||
"paywall"
|
||
],
|
||
"priority": 95
|
||
},
|
||
{
|
||
"rule_id": "review-worth-keeping-other",
|
||
"decision": "review",
|
||
"reason": "Worth-keeping signal is positive but no stronger keep rule matched.",
|
||
"labels": [
|
||
"summary",
|
||
"needs-review"
|
||
],
|
||
"priority": 60
|
||
}
|
||
]
|
||
},
|
||
"digest_section_hint": null,
|
||
"digest_rank": 95,
|
||
"review_state": "pending",
|
||
"source_refs": {
|
||
"item_path": "outputs\\freshrss\\items\\batch\\item-03.item.json",
|
||
"extracted_path": "outputs\\freshrss\\extracted\\batch\\item-03.extracted.json",
|
||
"summary_path": "outputs\\freshrss\\summary\\batch\\item-03\\result.loop.json",
|
||
"filter_path": "outputs\\freshrss\\filter\\batch\\item-03.filter.json"
|
||
},
|
||
"rendered_markdown": null,
|
||
"metadata": {
|
||
"generated_at": "2026-03-25T10:25:49.267743Z",
|
||
"pipeline_version": "v1",
|
||
"producer": "run_article_candidate.py",
|
||
"run_id": "candidate-20260325-102549"
|
||
}
|
||
} |