{"zh":{"count":12,"issues":[{"title":"第274期 - 海阔天空","link":"https://weekly.tw93.fun/posts/274/","pubDate":"Mon, 20 Jul 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27453.jpg\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27453.jpg\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27453.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>封面图拍摄于深圳的一个晚上，刚下完雨，天空很清晰，这栋楼叫海阔天空雅居，甚至还能看到远方的百度。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"潮流工具\">潮流工具</h2>\n<p><strong>wong2 做了一个用来查看 Codex 额度重置的工具</strong><br>\n<a href=\"https://codex-resets.com/\">https://codex-resets.com/</a><br>\n挺有意思，Codex 的使用额度什么时候重置，主要看 @thsottiaux 什么时候发推宣布，感觉像是他手里有个开关。没有固定时间表，也没有更新日志，这个工具会帮你盯着他的推特，只要发了重置消息就告诉你，哈哈哈。话说我最近的 Codex 额度完全用不完了。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/9zFep508.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/9zFep508.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/9zFep508.png\" loading=\"lazy\" data-pswp-width=\"3164\" data-pswp-height=\"2228\" style=\"aspect-ratio: 1.4201;\" width=\"800\"></p>\n<p><strong>Trees：一个好看的文件树渲染库</strong><br>\n<a href=\"https://trees.software/\">https://trees.software/</a><br>\n这个文件树渲染得真好看，我挺喜欢这种简单又好看的东西，如果你要做编辑器的侧边栏文件树，可以参考一下。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/lEQhIy33.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/lEQhIy33.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/lEQhIy33.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>Bark：可给自己的 iPhone 推送消息的开源工具</strong><br>\n<a href=\"https://github.com/Finb/Bark\">https://github.com/Finb/Bark</a><br>\n一款开源免费的通知推送 App，基于 APNs 实现，不会额外消耗设备电量，也支持 iOS 通知的多种高级功能：推送分组、自定义图标和铃声、时效性通知、重要警告等。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/QMnaYL10.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/QMnaYL10.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/QMnaYL10.png\" loading=\"lazy\" data-pswp-width=\"2430\" data-pswp-height=\"1934\" style=\"aspect-ratio: 1.2565;\" width=\"800\"></p>\n<p><strong>WhatCable：搞清楚你的 USB-C 线能做什么</strong><br>\n<a href=\"https://www.whatcable.uk/\">https://www.whatcable.uk/</a><br>\n这个工具可以清楚告诉你一根 USB-C 线能做什么，比如线缆速度、充电限制和已连接的设备。你还可以给线缆命名，让它持续跟踪实际表现，之后就能知道为什么这根线充电慢，或为什么接不了显示器。思路挺好，不过比较小众。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/cQ7ITN19.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/cQ7ITN19.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/cQ7ITN19.png\" loading=\"lazy\" data-pswp-width=\"3022\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.2634;\" width=\"800\"></p>\n<h2 id=\"随便看看\">随便看看</h2>\n<p><strong>Phistory：看看主流 AI Coding 工具的系统提示词每次更新了啥</strong><br>\n<a href=\"https://phistory.cc/?agent=claude-code&#x26;from=2.1.141&#x26;to=2.1.215\">https://phistory.cc/?agent=claude-code&#x26;from=2.1.141&#x26;to=2.1.215</a><br>\n很适合想研究 AI Coding 迭代变化的朋友，网站用 diff 把每次改动展示得很清楚。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/pgmjjD23.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/pgmjjD23.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/pgmjjD23.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>这个网站收集了非常好看的 Mac App</strong><br>\n<a href=\"https://macapp.supply/\">https://macapp.supply/</a><br>\n网站本身也设计得不错，里面收集的 Mac App 整体质感也很可以，挺值得学习。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/5SlEcC34.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/5SlEcC34.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/5SlEcC34.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>Anthropic 如何使用 Claude Code 进行大规模代码迁移</strong><br>\n<a href=\"https://claude.com/blog/ai-code-migration\">https://claude.com/blog/ai-code-migration</a><br>\n这篇 Claude 官方博客挺值得一看，讲了 Bun 把百万行代码从 Zig 移植到 Rust 的过程，对大公司迁移老旧的大型仓库也有一些参考。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/QZiACS37.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/QZiACS37.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/QZiACS37.png\" loading=\"lazy\" data-pswp-width=\"1109\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.5415;\" width=\"800\"></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第273期 - 一堆椅子","link":"https://weekly.tw93.fun/posts/273/","pubDate":"Mon, 13 Jul 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27342.JPG\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27342.JPG\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27342.JPG\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5496\" data-pswp-height=\"3911\" style=\"aspect-ratio: 1.4053;\" width=\"800\">\n<p><small>封面图拍摄于天目里一家店的门口，放着一堆椅子，写着以物为介，拥抱传统，我相比起 AI 世界更加喜欢现实世界，也更加向往真实的感受。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"潮流工具\">潮流工具</h2>\n<p><strong>最近我非常喜欢的地铁的背景音</strong><br>\n<a href=\"https://www.yamanote.fun/\">https://www.yamanote.fun/</a><br>\n作者把山手线的车站旋律、广播、车门提示音和列车声音融合在一起，营造出这条东京人最喜爱的环线铁路的完整听觉体验，非常有意思，当做背景音乐我很喜欢，和我当时坐的时候感觉非常一样。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/mUuuQu23.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/mUuuQu23.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/mUuuQu23.png\" loading=\"lazy\" data-pswp-width=\"3106\" data-pswp-height=\"1948\" style=\"aspect-ratio: 1.5945;\" width=\"800\"></p>\n<p><strong>杀死 AI slop</strong><br>\n<a href=\"https://killaislop.com/\">https://killaislop.com/</a><br>\n哈哈，我也非常不喜欢那种 AI 做出来的丑丑的东西，发现了 yetone 做的这个网站，很有意思，把很多丑的案例帮你展示出来了，同时还给了你一个 skill 去帮你清理干净，我用这个也验证了一下我做的所有的东西，还好没有命中。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/s9fJmu55.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/s9fJmu55.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/s9fJmu55.png\" loading=\"lazy\" data-pswp-width=\"3022\" data-pswp-height=\"2200\" style=\"aspect-ratio: 1.3736;\" width=\"800\"></p>\n<p><strong>AppPorts：把你的 Mac 大的应用程序迁移到外部存储</strong><br>\n<a href=\"https://appports.shimoko.com/zh\">https://appports.shimoko.com/zh</a><br>\n这个工具适合 Mac 使用外挂硬盘的朋友，或者你可以试试这个工具。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/sdXGLY21.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/sdXGLY21.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/sdXGLY21.png\" loading=\"lazy\" data-pswp-width=\"3130\" data-pswp-height=\"2250\" style=\"aspect-ratio: 1.3911;\" width=\"800\"></p>\n<p><strong>一条命令找出你的硬件能运行哪些模型</strong><br>\n<a href=\"https://github.com/AlexsJones/llmfit\">https://github.com/AlexsJones/llmfit</a><br>\n一款终端工具，根据你系统的 RAM、CPU 和 GPU 为 LLM 模型匹配合适的规格。自动检测硬件，从质量、速度、适配度和上下文四个维度为每个模型打分，告诉你哪些模型能在你的机器上流畅运行。<br>\n<img src=\"https://cdn.tw93.fun/uPic/demo19.gif\" width=\"800\"></p>\n<p><strong>一些好看的 Loading 效果实现</strong><br>\n<a href=\"https://dotmatrix.zzzzshawn.cloud/\">https://dotmatrix.zzzzshawn.cloud/</a><br>\n虽然在 AI 时代其实这个东西有一种古法的感觉，不过其实可以多看看这种偏审美的东西，让你更知晓一些设计。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/swLiUX17.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/swLiUX17.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/swLiUX17.png\" loading=\"lazy\" data-pswp-width=\"3346\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.3988;\" width=\"800\"></p>\n<h2 id=\"随便看看\">随便看看</h2>\n<p><strong>给 Mole 的官网花了一天时间重构了一下</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\n不推荐产品，更多想和大伙聊聊我是怎么想的这个网站的风格，安静、不打扰、安全、可被信赖的感觉，然后我花了一天时间去重构，不得不说我更喜欢 Fable 5 的这种聪明的巧劲的 AI，欢迎大伙随便看看这个视频，哈哈，背景音乐放的我最喜欢的一个坂本龙一的钢琴曲《Merry Christmas, Mr. Lawrence》。<br>\n<video width=\"800px\" preload=\"metadata\" loop controls><source src=\"https://cdn.tw93.fun/uPic/new-mole12.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>读一个仓库之前可以让你的 AI 跑的 Git 命令</strong><br>\n<a href=\"https://piechowski.io/post/git-commands-before-reading-code/\">https://piechowski.io/post/git-commands-before-reading-code/</a><br>\n原文标题是 The Git Commands I Run Before Reading Any Code，里面有列举几个命令你可以试着跑跑，可以看到很多有意思的发现，不过我更推荐你可以让 AI 学习一下，然后去读你的仓库，会更有意思。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/mLwoZF15.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/mLwoZF15.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/mLwoZF15.png\" loading=\"lazy\" data-pswp-width=\"1600\" data-pswp-height=\"811\" style=\"aspect-ratio: 1.9729;\" width=\"800\"></p>\n<p><strong>Getting started with loops</strong><br>\n<a href=\"https://x.com/ClaudeDevs/status/2074208949205881033\">https://x.com/ClaudeDevs/status/2074208949205881033</a><br>\nClaudeDevs 官方 X 的一篇关于 Loop 的文章，写得很好，推荐看看，可以帮你更好了解这个 AI 里面的概念。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/c0CBq939.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/c0CBq939.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/c0CBq939.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"819\" style=\"aspect-ratio: 2.5006;\" width=\"800\"></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第272期 - 接天莲叶","link":"https://weekly.tw93.fun/posts/272/","pubDate":"Mon, 06 Jul 2026 00:00:00 GMT","description":"<p><video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/uPic/hehua54.mp4\" type=\"video/mp4\" poster=\"https://cdn.tw93.fun/uPic/27209.png\"></video></p>\n<p><small>封面图拍摄于周末去西溪湿地航拍莲花，非常好看，也很震撼，人类在自然下面看着很小，无人机帮助我看到了太多好东西了。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"潮流工具\">潮流工具</h2>\n<p><strong>特地买了一台 Brother T735DW 打印机</strong><br>\n为了测试 Kami 的打印排版，特地买了一台 Brother T735DW 打印机，机器质感很好，挺喜欢，假如你需要买打印机可以看看这个品牌。打印出来的 Kami 排版的内容也很不错，当然我特地给升级了一个版本，让他更好支持打印机，小伙伴可以用起来，PS Brother 我居然还是第一次听说，不过很多老大哥说这个牌子很有名。<br>\n<video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/uPic/kami07.MP4\" type=\"video/mp4\"></video></p>\n<p><strong>这个模拟劈柴的网站有点意思</strong><br>\n<a href=\"https://screen.toys/firewood/\">https://screen.toys/firewood/</a><br>\n有一个可视化劈柴的网站挺好玩，非常真实地让你有劈柴的感觉，当你 AICoding 累了可以玩玩看。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/8dIM0035.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/8dIM0035.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/8dIM0035.png\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"3322\" data-pswp-height=\"1988\" style=\"aspect-ratio: 1.6710;\" width=\"800\"></p>\n<p><strong>Glaze:这个构建和发布 Mac App 的新思路不错</strong><br>\n<a href=\"https://www.glaze.app/\">https://www.glaze.app/</a><br>\n相当于是让你用说话的方式 Vibe 出一个属于自己的桌面应用，来解决自己的问题，运行在你的 Mac，支持离线使用，也可以分发出去，有一点点下一代 Mac App Store 的感觉，可以去玩玩看。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/YgphuJ15.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/YgphuJ15.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/YgphuJ15.png\" loading=\"lazy\" data-pswp-width=\"3424\" data-pswp-height=\"2038\" style=\"aspect-ratio: 1.6801;\" width=\"800\"></p>\n<p><strong>sensory-ui：当你的组件库有音效会是什么感觉？</strong><br>\n<a href=\"https://www.sensory-ui.com/#showcase\">https://www.sensory-ui.com/#showcase</a><br>\n当你的组件库有音效会是什么感觉？这个好好玩，适合玩一玩，让你的 shadcn/ui 变得有音效。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/qs75CX03.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/qs75CX03.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/qs75CX03.png\" loading=\"lazy\" data-pswp-width=\"3314\" data-pswp-height=\"2290\" style=\"aspect-ratio: 1.4472;\" width=\"800\"></p>\n<p><strong>Playwrite Tanzania：很像苹果手写体</strong><br>\n<a href=\"https://fonts.google.com/specimen/Playwrite+TZ?preview.script=Latn\">https://fonts.google.com/specimen/Playwrite+TZ?preview.script=Latn</a><br>\n这个字体真的非常像苹果的那个开机 hello 的手写体，很好看，八九不离十，有需要可以玩玩看。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/6s4ew716.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/6s4ew716.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/6s4ew716.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<h2 id=\"随便看看\">随便看看</h2>\n<p><strong>这个书籍展示的效果好棒啊</strong><br>\n<a href=\"https://press.stripe.com/\">https://press.stripe.com/</a><br>\n试试 PC Web 打开，动效做的非常舒服，喜欢喜欢。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/GYgAl915.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/GYgAl915.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/GYgAl915.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<p><strong>适度介入：以用户意图调控 AI 存在感</strong><br>\n<a href=\"https://mp.weixin.qq.com/s/063MFQz-2Jkktdhpwf-jIw?scene=1\">https://mp.weixin.qq.com/s/063MFQz-2Jkktdhpwf-jIw?scene=1</a><br>\n不少 AI 产品都存在介入尺度失衡的问题：弹窗频发干扰操作，闲置时又浪费算力，如何让 AI 做到需时现身、闲置隐身？<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/4YjJGQ44.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/4YjJGQ44.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/4YjJGQ44.png\" loading=\"lazy\" data-pswp-width=\"1080\" data-pswp-height=\"789\" style=\"aspect-ratio: 1.3688;\" width=\"800\"></p>\n<p><strong>高考分数填报模拟器的可视化效果</strong><br>\n<a href=\"https://agentsfeed.org/app-demo/gaokao/index.html\">https://agentsfeed.org/app-demo/gaokao/index.html</a><br>\n这个效果非常好，感谢做出来的人，假如你的朋友需要填报志愿可以帮他一起看看，选好城市，选好大学还是很重要的。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/jR3BJV07.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/jR3BJV07.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/jR3BJV07.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<p><strong>也许你应该去学一点东西</strong><br>\n<a href=\"https://www.marginalia.nu/log/a_135_learn/\">https://www.marginalia.nu/log/a_135_learn/</a><br>\n这篇文章其实有用，对于我们大部分工程师，其实可以利用业余时间去学习一些其他领域的东西，会很有意思。</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第271期 - 精神家园","link":"https://weekly.tw93.fun/posts/271/","pubDate":"Mon, 29 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27158.jpg\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27158.jpg\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27158.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"4826\" data-pswp-height=\"3619\" style=\"aspect-ratio: 1.3335;\" width=\"800\">\n<p><small>封面图拍摄于周末去我的精神家园，王小波的书店，坐了一上午，看那本看了好几遍的《一只特立独行的猪》，顺便喝了一杯叫“白银时代“的咖啡，还是很不错的。非常感谢有小伙伴指出之前几期周刊有点水，我沉迷到 AICoding 了，接受批评，以后还是保持内容更有趣一点好，争取成为大家的精神家园。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"潮流工具\">潮流工具</h2>\n<p><strong>claude-tap：给 AI 编程 agent 用的本地代理和 trace 查看器</strong><br>\n<a href=\"https://github.com/liaohch3/claude-tap\">https://github.com/liaohch3/claude-tap</a><br>\n把 CLI 通过它启动，或监听本地 app transcript，就能看到真实 API 流量和 agent 上下文：system prompt、对话历史、工具 schema、工具调用、流式响应、token 用量和请求 diff，对于想研究的小伙伴可以试试看。<br>\n<img src=\"https://cdn.tw93.fun/uPic/demo_zh37.gif\" width=\"800\"></p>\n<p><strong>VidBee：一个不错的下载各个网站视频的工具</strong><br>\n<a href=\"https://github.com/nexmoe/VidBee\">https://github.com/nexmoe/VidBee</a><br>\n底层使用的是 yt-dlp 这个引擎，几乎可以从全球任何网站下载视频，包括 YouTube、TikTok、Instagram、Twitter 等，有需要的小伙伴可以试试，不过需要注意版权。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/S3yAup40.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/S3yAup40.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/S3yAup40.png\" loading=\"lazy\" data-pswp-width=\"3840\" data-pswp-height=\"2072\" style=\"aspect-ratio: 1.8533;\" width=\"800\"></p>\n<p><strong>Witr：帮助你看这个东西为什么在运行</strong><br>\n<a href=\"https://github.com/pranshuparmar/witr\">https://github.com/pranshuparmar/witr</a><br>\n当某个东西在你系统上运行时，无论是一个进程、一个服务，还是某个绑定到端口的东西，总有其原因。这个原因往往是间接的、不明显的，或者分散在多个层级中，很多其他的工具可以告诉你什么在运行，这个工具可以很好的告诉你“为什么运行”，很有意思。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/TPgQHi39.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/TPgQHi39.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/TPgQHi39.png\" loading=\"lazy\" data-pswp-width=\"1232\" data-pswp-height=\"693\" style=\"aspect-ratio: 1.7778;\" width=\"800\"></p>\n<p><strong>Dinky：一个 mac 上的文件压缩工具</strong><br>\n<a href=\"https://dinkyfiles.com/\">https://dinkyfiles.com/</a><br>\n做得挺精致的，把文件拖进去就好了，支持图片、视频、pdf 文件的压缩，有需要的可以去试试看。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/FFAHWB46.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/FFAHWB46.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/FFAHWB46.png\" loading=\"lazy\" data-pswp-width=\"3410\" data-pswp-height=\"2496\" style=\"aspect-ratio: 1.3662;\" width=\"800\"></p>\n<h2 id=\"随便看看\">随便看看</h2>\n<p><strong>大模型缓存率排行</strong><br>\n<a href=\"https://dirac.run/posts/cache-hit-rates-agents\">https://dirac.run/posts/cache-hit-rates-agents</a><br>\n有点意思，国产模型秉持着高性价比的一个原因，以及我国工程师的精打细算。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/KyJWeN09.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/KyJWeN09.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/KyJWeN09.png\" loading=\"lazy\" data-pswp-width=\"2114\" data-pswp-height=\"2274\" style=\"aspect-ratio: 0.9296;\" width=\"800\"></p>\n<p><strong>美团海报生成 AIGC 技术创新与实践</strong><br>\n<a href=\"https://tech.meituan.com/2026/06/18/AIGC-poster.html\">https://tech.meituan.com/2026/06/18/AIGC-poster.html</a><br>\n美团做东西其实很细的，会去沉淀一些方法论，不过我现在反而更看好用更牛逼的模型，花更少时间来解决问题。</p>\n<p><strong>一个比较有意思的记录</strong><br>\n起源于我收到的一封一个俄罗斯少年的邮件，以及来回回复的一个记录，脱敏后用 AI 生成的，俄罗斯现在挺苦，几乎国际银行卡都切断了。一直想着我的产品是全球的，没有政治因素，让所有人享受工程师工具的一些乐趣，其实挺好玩的。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/1image49.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/1image49.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/1image49.png\" loading=\"lazy\" data-pswp-width=\"1024\" data-pswp-height=\"1536\" style=\"aspect-ratio: 0.6667;\" width=\"800\"></p>\n<h2 id=\"随便写写\">随便写写</h2>\n<h3 id=\"走在前面还是被推着走\">走在前面，还是被推着走</h3>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/Group26.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/Group26.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/Group26.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\">\n<p>最近有一个感受，发现已经转型成 AI 工程师和还没有意识转型的传统大厂的传统岗位工程师，会有一种当时刚刚开始的互联网方向的软件工程师和同时期的移动联通电信方向的工程师的感觉，也很像 2011 年前后用智能手机和功能机时期的那个区别。</p>\n<p>之前只是感觉选择不一样而已，现在感觉是有一种温水煮青蛙的感觉，甚至水温其实有点儿发烫了。<br>\n工程师走在技术发展前面的会更加游刃有余，被技术方向或者组织推着走的会很难受。</p>\n<p>翻了翻我历史的一些很水的分享，比较幸运在 2019 年后基本上就不太想做传统的岗位工程师，当时想着更多去做一个解决各种问题的工程师，不局限于岗位本身，设计、产品、前后端、运行都去玩玩，更多是解决一个产品的问题。</p>\n<p>现在回过头看，好在坚持下去做了，不然到了现在这个阶段的确会相当难受。<br>\n其实当时这么干并没有那么讨喜，也看着不够聚焦，甚至只能靠自己做的事情，慢慢去带动身边工程师怎么成长，不过当时其实完全没有多想啥，只是认为解决问题比守着本职工作会有意思太多了，而且可以去探索非常多有意思的东西，也没有想着马上要有结果，水到渠成就好，没有想到，几年后 AI 来了后成为自己在这个疯狂拉扯的世界的一个小小护城河。</p>\n<p>下面文章内容本身和当前 AI 时代的高速发展很脱节了，小伙伴可以当做一个远古时期的东西去看，然后代入到那个年代，应该会比较有意思，甚至你可以结合 AI 发展的时间轴来看，刚好也可以看到我本身在技术上的一些思考和变化。</p>\n<p>2019-11-25 <a href=\"https://tw93.fun/2019-11-25/product-and-github.html\">产品和开源分享</a><br>\n2020-03-18 <a href=\"https://tw93.fun/2020-03-18/how-to-do-design.html\">运营后台的交互设计分享</a><br>\n2022-07-01 <a href=\"https://tw93.fun/2022-07-01/gou.html\">大环境不好的情况下如何苟着变强</a><br>\n2022-07-29 <a href=\"https://tw93.fun/2022-07-29/pd-code.html\">如何做一个产品工程师？</a><br>\n2022-12-09 <a href=\"https://tw93.fun/2022-12-09/talk.html\">工程师如何明白的做事情</a><br>\n2023-10-25 <a href=\"https://tw93.fun/2023-10-25/new-fe.html\">新一代前端发展的困境与破局</a><br>\n2024-01-12 <a href=\"https://tw93.fun/2024-01-12/open.html\">我的开源成长之旅</a><br>\n2024-09-09 <a href=\"https://tw93.fun/2024-09-09/future.html\">聊聊未来技术趋势</a><br>\n2025-07-17 <a href=\"https://tw93.fun/2025-07-17/money.html\">工程师如何更好投资</a><br>\n2025-08-17 <a href=\"https://tw93.fun/2025-08-17/ai-coding.html\">AI Coding 对于程序员的影响</a><br>\n2025-12-22 <a href=\"https://tw93.fun/2025-12-22/engineer.html\">新一代工程师的破局与发展</a><br>\n2026-03-30 <a href=\"https://tw93.fun/2026-03-30/kill.html\">杀死那个手工程序员</a></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第270期 - 喜欢乔村","link":"https://weekly.tw93.fun/posts/270/","pubDate":"Mon, 15 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/27034.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/27034.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/27034.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5691\" data-pswp-height=\"4268\" style=\"aspect-ratio: 1.3334;\" width=\"800\">\n<p><small>封面图拍摄于周末去乔村吃饭，随手拍的一张照片，他们家好吃的，牛油果三文鱼好好吃，假如有朋友来杭州，我一般会带着去吃这个或者张功馆。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"最新推荐\">最新推荐</h2>\n<p><strong>假如你的朋友最近需要更新简历，一定要把 Kami 推荐给他</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\n假如你的朋友最近需要更新简历，一定要把 Kami 推荐给他，我单独细致优化了一个版本，单独让 Kami 写简历变得非常好用好看清晰，让他把他的原生素材 md 准备好，然后对着 AI 说 /kami 帮我产出一个简历，然后调 1-2 下差不多就好了，不仅仅是排版，还有帮我优化整理好你的简历内容，让他从一个技术终面官的视角来看所需要的人才画像。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/9MamaP33.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/9MamaP33.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/9MamaP33.png\" loading=\"lazy\" data-pswp-width=\"1241\" data-pswp-height=\"1754\" style=\"aspect-ratio: 0.7075;\" width=\"800\"></p>\n<h2 id=\"产品发布\">产品发布</h2>\n<p><strong>Mole 的客户端 1.7.2 新版本来啦</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\n这次版本更新了非常多的东西，包括支持无障碍用户的使用，Status 和菜单栏更快更稳，Software、卸载和更新更完整，Clean 更全面，也保留审查优先，隐私检查更准也更安静更加智能，Analyze、Doctor 和 Clean Screen 也更稳了，Apple 芯片风扇控制这里也有不少优化。</p>\n<p>刚好 Mole Mac 版本发布一个月，用业余时间写，数据有点意思。一共写了 11 万行 Swift 代码，含 3.6 万行测试代码，1983 个单元测试，累计发布 8 个版本，145 项新功能，支持了 9 个语言。早鸟价最后一天，MOLEWEEKLY 还有效，欢迎有需要的小伙伴去玩玩，后续有更多惊喜给到大家。</p>\n<p><video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mole318.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Kaku 终于也更新到了 0.12 版本</strong><br>\n甚至 Kaku 都有自己的小官网了 <a href=\"https://kaku.fun/\">https://kaku.fun/</a>，小伙伴可以去看看，这次更新了不少东西，支持了重新打开窗口后会话历史恢复、也支持了 Codex 后端登录可以直接使用的 AI 功能，PDF、图片、音视频、压缩包、Office 文档现在都用系统默认 app 打开，所有面板都停在 shell 提示符时，Cmd+Q 会直接退出等等有意思功能，可以去看看 Release。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/8fKF3s43.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/8fKF3s43.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/8fKF3s43.png\" loading=\"lazy\" data-pswp-width=\"3116\" data-pswp-height=\"1540\" style=\"aspect-ratio: 2.0234;\" width=\"800\"></p>\n<p><strong>Pake 最近一些有意思的更新</strong><br>\n<a href=\"http://github.com/tw93/Pake\">http://github.com/tw93/Pake</a><br>\n一键打包网页生成轻量桌面应用，支持 macOS、Windows 和 Linux 的 Pake，最近支持了 cmd+f 内容搜索、右键支持下载东西、桌面应用名称支持点号、Linux 下面的 AppImage 构建失败提示更清晰，修复了 pnpm 11 兼容修复等等问题。<br>\n<img src=\"https://cdn.tw93.fun/blog/pic/pake128.gif\" width=\"800\"></p>\n<h2 id=\"随便聊聊\">随便聊聊</h2>\n<p><strong>我不是网红，不是自媒体，不是 KOL，那我是什么</strong><br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/jDQIRZ22.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/jDQIRZ22.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/jDQIRZ22.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1080\" style=\"aspect-ratio: 1.7778;\" width=\"800\"><br>\n我的推特收益每次只有 100 多刀，应该远少于大部分蓝 V，甚至比那个被 Tauri 伤过两次的小伙伴还要低，挺有意思的，为啥这么少呢？哈哈哈我要反思一下，顺便给大伙分享一下我的失败经验。</p>\n<p>首先我不是网红、也不是自媒体、也不是 KOL，啥也不是，就是一个普通的写点儿兴趣代码的工程师。推特对我来说，就是把我做的开源产品更新日志同步给大伙，然后分享一些生活中去哪儿玩了、吃了啥、看了啥的日常推。没有任何流量压力，也没有任何用流量来赚钱的压力，收益少就少呗，反而刚好造就了这个我现在越来越喜欢的账号。</p>\n<p>自媒体博主一般是靠接广告来赚钱，一般 AI 的给得其实挺多，平时通过分享非常多利他的产品来让更多人关注，利他的同时获得应有的收益，其实也挺好的。不过一般会有流量压力，要一直追热点、琢磨标题，发得越长久就会做到越来越好，只是我感觉这个事情太累了，自己做不来。</p>\n<p>其实我之前也接过一些广告，不过已经很久不接了。之前记得有机构联系我，说广告主不喜欢我这种账号，喜欢那种经常发 AI 热点的账号，我一听，反而很高兴，哈哈，我的账号没有变成人家眼中的高质量流量账号，那应该我保持得还行。</p>\n<p>一直在想，假如用一个词语来描述我的账号该是什么呢？想了好久，终于在今天想到了，所以出现了这篇随便文章：我的账号应该是一本长期迭代的「Tw93 工程师杂志」。</p>\n<p>这本杂志大概有这么几个栏目：产品手记，记录 Pake、Mole、Kaku 这些产品的更新迭代和有趣的思路；技术专栏，写写技术思考、对 AI 的思考、新技术领域的学习专题；好物推荐，都是我自己真在用的好工具，没有恰饭的那种；还有一个随便看看的模块，可以看到我的日常生活，吃的、玩的、看的。</p>\n<p>每一个工程师都可以随便翻翻，看到一些自己感兴趣的东西，然后深入去把玩，对于想学习的朋友也可以基于我的长文一篇一篇看下去，再去我的博客以及潮流周刊看到往期更有意思的内容。</p>\n<p>这个杂志几乎没有广告，也不会为了推广自己的产品去说一些违心的话。更新也很随意，一般每天最多发两条，太忙就只发一条，想到啥发啥。同时这本杂志也是一个持续迭代的产品，你可以基于他看到我这个人每年的变化，像一个持续陪伴你的技术好友，也可以通过私信来联系这本杂志的编辑。</p>\n<p>杂志慢慢也在发展自己的副业 Mole，能卖出去并非产品多好用，更多还是大家对这个杂志本身的信任。这事还让我体会到，流量低的内容不代表没价值，看的人是不多，但信任很足，反而能带来一些意想不到的转化，挺神奇的。只不过他经营得比较随意，但是比较持续。</p>\n<p>那么我到底在运营什么呢？应该就是 Tw93 这本杂志。我是个什么样的人，就写什么样的内容，自然就会遇到什么样的读者，不需要担心写什么。最终我最想做的事情就是让阅读这本杂志的工程师和我可以更好地相互学习、成长，但是也不焦虑的那种。</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第269期 - 天目胜景","link":"https://weekly.tw93.fun/posts/269/","pubDate":"Sun, 07 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_151828.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_151828.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_151828.JPG\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>封面图拍摄于上上周末去的临安天目山的天目胜景，很不错的一个地方，夏天非常凉快，氧气很足，山上的留椿屋非常好吃，推荐去玩玩，比九溪烟树人少好太多了。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"最新文章\">最新文章</h2>\n<p><strong>你不知道的具身智能：从小机器狗到 Optimus</strong><br>\n<a href=\"https://tw93.fun/2026-06-07/robot.html\">https://tw93.fun/2026-06-07/robot.html</a><br>\n新文章来啦，今年 4 月我组装了一台小机器狗，做的过程在推特上发过几条，大伙应该都刷到过，然后断断续续写了快 2 个月，终于写好了，是我历史写过最长的一篇文章，随便看看。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/robot145.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/robot145.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/robot145.png\" loading=\"lazy\" data-pswp-width=\"3000\" data-pswp-height=\"1200\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<h2 id=\"产品发布\">产品发布</h2>\n<p><strong>Mole 的客户端 1.6.2 新版本来啦</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\n争取尽快把 Mole 桌面端的一些好特性尽快补齐，最近发布了 1.6.2 版本，欢迎去更新，也欢迎没有购买小伙有兴趣去购买，预计 0615 后恢复正常价格。<br>\n1、Keep Screen On（新）：菜单栏可以让 Mac 保持唤醒，支持选择时长；启动恢复会安静完成，不再突然要求管理员授权。<br>\n2、隐私检查（新）：菜单栏弹窗会显示摄像头或麦克风使用状态，并发送本地通知，不打开主窗口也能看到。<br>\n3、Clean Screen 擦屏（新）：把屏幕切成纯色，方便擦拭屏幕和键盘，按 Escape 退出，也可以开启输入锁。<br>\n4、软件更新覆盖更多应用：Software 会检查 Mac App Store、Sparkle、Electron、Homebrew cask/formula、Homebrew catalog 和 GitHub Releases，进度更清楚。<br>\n5、卸载能找到更多残留：残留识别覆盖 receipts、Launch Items、Group Containers、Darwin 临时缓存和更多 App Support 痕迹。<br>\n6、Clean 更有用，也保持谨慎，Mole 会找出项目里的 build、dist、target、node_modules 等大目录，但默认留给用户审查。<br>\n7、Analyze 扫描更快：磁盘分析加入并发计算、缓存复用和子目录预热，大目录打开更快。</p>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/2QNwTk40.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/2QNwTk40.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/2QNwTk40.png\" loading=\"lazy\" data-pswp-width=\"4096\" data-pswp-height=\"2027\" style=\"aspect-ratio: 2.0207;\" width=\"800\">\n<p><strong>最近好内容值得好版面的 Kami 更新了不少东西</strong><br>\n<a href=\"http://kami.tw93.fun\">http://kami.tw93.fun</a><br>\n1、新增了网页落地页模块，比如说你看到的 Mole 的官网、Kami 自己的官网其实都是通过 kami 自举来生成的，非常适合你的产品页介绍，甚至给你想好了 Geo、Sitemap、Vercel 部署的考虑点，让你建站无忧。<br>\n2、终于支持 Marp 幻灯片模式了，又回到了那个用 Markdown 写 PPT 的时候了，一份 md 通过 marp-cli 就能导出 HTML、PDF 或 PPTX，主题内置 Kami 配色和字体，也是开箱即用，也很轻量。<br>\n3、发现居然有不少韩国用户，于是 Kami 在支持 中文、繁体、英文、日语的基础上对韩语进行了很细的支持以及多模版设计，假如你是韩国的朋友，非常欢迎试试，给我提建议。<br>\n4、现在的一页纸模块、作品集、PPT 都支持导入你的品牌 logo 以及其他调性，让 Kami 和你的品牌风格融为一体。<br>\n5、因为我们是工程师，Kami 对于代码的展示也做到了自动语法高亮，构建的时候会自动帮你着色，无需外部 css。<br>\n6、还有一个有意思的是，虽然 Kami 也是 Skill，但是其实他 70% 都是代码，而非 Markdown，假如你想学习写一个默认听话好用的 Skill，也换欢迎你去读读代码，可能有帮助 <a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a></p>\n<p><video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/blog/pic/kami04.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>给 Kaku 做了一个好看的官网</strong><br>\n<a href=\"http://kaku.fun\">http://kaku.fun</a><br>\n终于完成了，使用的是 Kami 的技能来做的，补充了不少文档的东西，支持中英文，小 Kaku 终于也有自己的官网了，欢迎去看看，此外 Kaku 0.12 版本也发布了，记得去更新～<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/Jyw4Z940.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/Jyw4Z940.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/Jyw4Z940.png\" loading=\"lazy\" data-pswp-width=\"3818\" data-pswp-height=\"2562\" style=\"aspect-ratio: 1.4902;\" width=\"800\"></p>\n<h2 id=\"随便看看\">随便看看</h2>\n<p><strong>小伙伴来看看我最新的桌面</strong><br>\n非常高兴，周末到的，之前我的显示器下垫了一本厚书加上一板麻将，高度刚刚好，但是强迫症想找一个不突兀 30×20×10 的方块放下面，找了很多显示器专业的垫高都太大了，也看过用亚克力板，也点粗糙，无解。<br>\n关键来了，pdd 不知怎么逛到了佛像底座这个东西，完美契合啊，还便宜十倍，效果非常之好！</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"38%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/HM8cAV17.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/HM8cAV17.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/HM8cAV17.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"38%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/2OEw9N23.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/2OEw9N23.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/2OEw9N23.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"24%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/nBYIfw31.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/nBYIfw31.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/nBYIfw31.png\" loading=\"lazy\" data-pswp-width=\"943\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.4604;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>我居然才去看给阿嬷的情书，很推荐</strong><br>\n周末去看了一下「给阿嬷的情书」这个电影，马上要下映了，非常好看非常感动，近两年电影院看过的最好看的电影，那几个年轻演员选的非常好，没有看过小伙伴有空非常推荐去看！<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/HgIK5M29.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/HgIK5M29.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/HgIK5M29.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"1536\" style=\"aspect-ratio: 1.3333;\" width=\"800\"></p>\n<h2 id=\"随便写写\">随便写写</h2>\n<p><strong>聊聊我做产品的一些取舍</strong><br>\nMole Mac 发布 20 多天后销量到了一个小里程碑，想和大伙聊聊我这个过程中的一些取舍，以及我为啥在前期在处理和用户的任何交流、答疑上、退款全部用手工的方式来进行，希望对正在独立研发自己作品的小伙伴有一些输入。</p>\n<p>首先说，为啥我要检查完全手工手写的处理处理用户的答疑、反馈、邮件回复、退款、重置激活码、退差价等等这些事情，虽然不足用户量的 1%，其实完全可以花半小时写一个 Agent 来帮我处理，这或许也是很多工程师做产品过程中一个很常见的看似高效但是不是很好的误区，这里有两个考虑，只有你真实的处理用户的售后问题，你才能感觉到用户真正需要的，他为啥要退款，为啥感觉不好用，他的真实的建议反馈，甚至还可以邮件交流获取到更多真实的诉求，以及这个你的处理过程中你熟练了解各种问题的最好答复和解决方案，这样等产品慢慢做大以后，再来用 Agent 提效会比一开始好很多。</p>\n<p>其次，为啥不建议一开始就建立所谓的售后系统，因为这也是产品工程师一个重要的决策技术判断，优先做好主产品功能，而非一上来就把你的周边配套都搭建起来，虽然 AI 很快，但是还是会浪费你的宝贵时间去优化产品本身，看似不花时间，其实花了你很多时间，有这个时间去优化产品，满足用户的真实诉求会好太多了。</p>\n<p>然后想和大伙交流，对于工程师转型产品独立研发过程中常见的一些坑点，首先一个好的产品和一般产品的区别是什么呢？好的产品更会决策哪些东西不做，不同的功能放到哪一个阶段做对于产品以及用户最好，哪些功能即使很好，但是不是本产品的主线也不应该放进来，不然很容易变成一个大杂烩，也不好维护。好的产品还有一个特性是脑袋里其实有这个产品半年内发展的脉络，很清晰知道每一个版本应该加哪些功能，以及哪些功能是伪需求，以及什么功能应该放到用户顺手的地方，对于普通小白不要说明书的产品才是好产品，这也是有小伙伴建议一些 mac 上的好功能想加到 mole 里面被我抱歉的原因，保持克制，以及坚信如无必要，勿增实体的产品观点。</p>\n<p>mole 的定位是 mac 的系统优化、清理、维护的安静守护者，保持这个定位，去完善他，做到全世界最好用的 mac 维护软件，要是全球有每 100 个 mac 用户就有一个使用 mole，那么 mole 就真的很好用了，也是我做产品追求的点，让更多非技术小伙伴享受到工程师产品的乐趣，最近还有视障用户在使用 mole，遇到一些无障碍问题，我抓紧修复，非常期待他们使用起来的效果和体验。</p>\n<p>或许在 AI 时代，的确让很多东西方便很多了，但是和人的交流不能用 AI 代替，不然就没有啥意思来，虽然可以提效，但是很难提升彼此感情和信任，这或许会是以后用 AICoding 出来的产品保持人味的一个很好的途径。</p>\n<p>由于第一次做付费产品，可能也有是我思考不周的地方，也很欢迎有经验的朋友帮助指出和建议。</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第268期 - 小河公园","link":"https://weekly.tw93.fun/posts/268/","pubDate":"Mon, 25 May 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/26829.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/26829.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/26829.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>封面图拍摄于上一个周末在小河公园拍到的一座有质感的建筑，刚好阳光非常好，绿树搭一起很好看。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"产品发布\">产品发布</h2>\n<p><strong>Mole 的客户端来啦</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\n终于终于 Mole 的 Mac 桌面版本来啦，CLI 也会一直免费开源下去，桌面端是为喜欢有交互产品感的小伙伴准备的，最近更新到了 1.5 版本，新增了菜单栏的各种精灵动画效果，支持了软件自启动管理、软件更新管理，以及最有趣的风扇控制等功能，还有更多内容欢迎大伙直接去看官网说明，给周刊小伙伴一个折扣码 MOLEWEEKLY 可以 8 折，当前早鸟价 9 刀。</p>\n<p>假如你之前给 Mole 贡献过代码，或者在 GitHub 上赞助过我，欢迎私聊我，我送一个 100% 折扣码给你。</p>\n<p><video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mole206.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Mole CLI 更新到了 1.39 版本</strong><br>\n<a href=\"https://github.com/tw93/Mole\">https://github.com/tw93/Mole</a><br>\n1、mo clean 大幅加固：GUI app dotdir 和 Gradle DSL 缓存不再被误清，dry-run 与实际清理判断一致不再虚报，simctl 探测加入重试修复重启后首次报错，废纸篓清理不再弹 macOS 警告对话框阻塞运行，TMPDIR 清理提速约一个数量级，新增 UTM/Lima/Arc/QQ Browser/Codex CLI/Antigravity/Gemini 缓存覆盖，VS Code 系列按 .obsolete 标记清残留扩展。<br>\n2、mo uninstall bundle ID 匹配升级为边界校验防止误命中，残留登录项会在摘要中指明清理路径。mo purge 加固超时保护和 trap 处理，任意退出都会恢复光标并清临时文件。<br>\n3、mo analyze 硬链接按 inode 去重，FCP 等托管媒体不再虚报数十倍。mo status 可用内存算法与活动监视器对齐。<br>\n4、mo touchid PAM 写入改用原子操作保持只读权限。mo optimize 移除蓝牙重置避免误踢设备。<br>\n5、全局支持 NO_COLOR=1，Trash 不可用时 fail closed 防止静默永久删除。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XjXNoU39.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XjXNoU39.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XjXNoU39.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1080\" style=\"aspect-ratio: 1.7778;\" width=\"800\"></p>\n<p><strong>Kami 支持做产品官网落地页了</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\n最近 Kami 也更新了不少东西，除去原有的 PDF 生成外，你可以告诉他你需要做一个 xxx 产品落地页，他就会帮你做成 Mole 官网那种偏安静的风格。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XdDecf51.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XdDecf51.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XdDecf51.png\" loading=\"lazy\" data-pswp-width=\"4096\" data-pswp-height=\"2201\" style=\"aspect-ratio: 1.8610;\" width=\"800\"></p>\n<p><strong>Waza 最近有不少更新</strong><br>\n<a href=\"https://github.com/tw93/Waza\">https://github.com/tw93/Waza</a><br>\nWaza (技, わざ) 工程师技能 Skills 合集最近有不少更新，发一条推同步给大伙，在用的小伙伴记得更新，我又把将近一个月开发的最佳实践沉淀进去了，特别是最近 Mole 客户端研发过程中积累的很多经验。</p>\n<p>首先 Waza 终于完全支持 codex 了，一行命令就能开启，所有能力都支持，因为我感觉最近 codex 挺好用的。</p>\n<p>最重要的是，原来的 health 技能本来只是用来检查 Claude 配置和使用是否符合最佳实践，现在升级成了整个 Agent Health。现在不少人用 AI 写代码有一个非常有趣的现象，就是开始觉得很牛逼，写久了就维护不动、也不好扩展了，这种情况下你可以试试 /health，会帮你检查代码，包括各种能力是否还 OK、是否好维护、是否要拆解、是否要删除无用文件，好比是你 AI 生成的烂代码的清道夫。</p>\n<p>然后是思考模式 /think 也有很多更新，你可以和他一起讨论这个功能是否应该做，他会从 Kill / Keep / Pivot 几个维度给你判断。其实很多时候一个产品是由”什么不该加”决定的，而不是”还能加什么”。</p>\n<p>我一直觉得给 AI 加规则需要克制，你每加一条规则对它而言就变成了上限，模型变强后你的规则反而拖后腿了。这也是我不喜欢 Superpowers 和所谓 Spec 编程的缘故，太啰嗦、规则太多。这也是写 Waza 的原因，好比把我写代码的分身装到了你的电脑里。</p>\n<h2 id=\"潮流工具\">潮流工具</h2>\n<p><strong>Lightpanda：Zig 从头写的无头浏览器</strong><br>\n<a href=\"https://github.com/lightpanda-io/browser\">https://github.com/lightpanda-io/browser</a><br>\nZig 从头写的无头浏览器，为 Agent/自动化设计，传说比 Chrome 内存 -9x，速度 +11x，兼容 CDP 协议（Playwright/Puppeteer），Agent 时代的浏览器基础设施可以试试看。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/aQKcGc14.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/aQKcGc14.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/aQKcGc14.png\" loading=\"lazy\" data-pswp-width=\"1956\" data-pswp-height=\"1124\" style=\"aspect-ratio: 1.7402;\" width=\"800\"></p>\n<p><strong>Mise：Dev tools, env vars, and tasks in one CLI</strong><br>\n<a href=\"https://github.com/jdx/mise\">https://github.com/jdx/mise</a><br>\n一个工具统一运行时版本(nvm/asdf)+环境变量(direnv)+任务(make)，一个 mise.toml 管全部。Rust 轻量二进制，有兴趣小伙伴可以试试看。<br>\n<img src=\"https://cdn.tw93.fun/blog/pic/demo34.gif\" width=\"800\"></p>\n<h2 id=\"随便看看\">随便看看</h2>\n<p><strong>推荐这个柠檬味的苏打水</strong><br>\n一定要冷藏后再喝，非常好喝，不要喝原味的，就这个柠檬味最爽！</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"50%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XcWaIV34.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XcWaIV34.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XcWaIV34.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"50%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/PVaCgF40.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/PVaCgF40.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/PVaCgF40.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>这个滴眼液我一直在用还不错</strong><br>\n假如小伙伴经常忘我地 AICoding，可以买一支海露滴眼液，再让你的手表提醒你站起来走走。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/ybMdQk09.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/ybMdQk09.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/ybMdQk09.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\"></p>\n<p><strong>买了几个不错的木质东西</strong><br>\n第一个是鞋拔子，不用弯腰穿鞋了；第二个是电脑撑高架，非常好用，带防滑；第三个是放香薰的小瓶子；第四个是做咖啡时扫咖啡渣的小刷子。</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"25%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/gv97iD44.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/gv97iD44.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/gv97iD44.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/UXoeo050.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/UXoeo050.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/UXoeo050.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/NUPl0m57.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/NUPl0m57.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/NUPl0m57.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/j7ICAj15.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/j7ICAj15.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/j7ICAj15.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>聊一聊 Mole 桌面端的发布</strong><br>\n顺着最近发布的 Mole Mac 这个事情，想给大伙分享一下我这两天经历的神奇时刻。感谢这个去年在三亚泳池边的小玩具项目，让我认识了很多海外有趣的开发者，各个国家的。</p>\n<p>Mac 客户端陆续做了两个周末。之前有不少国外用户提过，家里的父母、兄妹不会用 CLI 但很想要这个功能，问能否出一个简单好用的桌面端。当时一方面是时间不够，另一方面是觉得 Mole CLI 还没到我认为成熟的地步，所以一直拖到了现在。</p>\n<p>Mole 发布也才半年，居然超过 50K star，500 个用户提交的 issue 清理建议、300 个高质量的功能 PR、100 位全球开发者的贡献，带来了可能比现在 CleanMyMac 这类工具更强大的清理能力。甚至因为在 README 挂了 2 张我用 Vercel 加速的图片，一周跑了 60T 流量，直接欠了 Vercel 80 刀，我才意识到用的人真的很多，那桌面端就可以做了。</p>\n<p>Mole 桌面端的很多巧思都是开始做的时候才想到的。比如用行星来代表每一个功能，和我小时候喜欢看各种行星运行有关系，加上 10 年前学会前端后第一个特别想学的就是 WebGL，开始用 WebGL 来画行星，行星的特征和 Mole 做的事情可以很好呼应，所以把这个主题加了进来：</p>\n<p>清理用地球，「雨洗旧土，尘随潮去」<br>\n卸载用火星，「红尘覆旧，轻装再行」<br>\n优化用水星，「近轨疾行，小修有声」<br>\n分析用木星，「远目成图，微处可见」<br>\n状态用太阳，「光不合眼，心跳长明」</p>\n<p>好比小鼹鼠的挖掘探索从小地方到了大世界的感觉，但是依然很清静，不会打扰你。</p>\n<p>还有一个设计小巧思，各个行星的贴面图我换了不下 10 次，从 NASA 官网下载挑选了很多，找到最合适的。其实每一个行星转的方向方位、转速、完成后的飞行效果特征均有参考实际的行星运行情况，这个过程也算是 AI Coding 中很有乐趣的部分。虽然感觉这些东西和 Mole 鼹鼠好像没有那么大的联系，完全可以做一个很简单的菜单栏点啥清理啥就行，但还是想着不能这样，用 AI 产生的赛博垃圾已经太多了，我需要做一个舒服一点的东西出来，让我的 token 不浪费，也为了不污染你的时间线。</p>\n<p>当天晚上大概 10 点发布，很感谢很多朋友自发转发，也特别感谢很多用户来购买，甚至有不少小伙伴仅仅是因为 CLI 带来的好处特地来购买的。欧美用户特别多，法国、德国各种币种，真的很神奇。其实 Mac 桌面端还有很多需要补充的功能，也很感谢大家的包容，为了一个漂亮小玩具预付了 9 刀，我继续加油把功能做好才行。</p>\n<p>我做事情很喜欢水到渠成，不喜欢短时间急切追求结果。这种长期持续迭代，持续认识很多新朋友，给到我很多的输入交流讨论，才是最宝贵的财富，特别有意思。</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第267期 - 西湖拍字","link":"https://weekly.tw93.fun/posts/267/","pubDate":"Mon, 11 May 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/26722.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/26722.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/26722.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>封面图拍摄于上一个周末，为了给我的造字Luo找笔画的感觉，去西湖旁边的路上找这种石刻字，拍的图片。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"最新文字\">最新文字</h2>\n<p><strong>你不知道的 GEO：AI 可见性的原理、实践与取舍</strong><br>\n<a href=\"https://tw93.fun/2026-05-01/ai-visibility.html\">https://tw93.fun/2026-05-01/ai-visibility.html</a><br>\n这几天有好几个小伙伴@我说，我的开源工具在他们问 AI 的时候被主动推荐了，啥也没做居然可以被收录，想着要不花一个小时把内容结构化整一整，应该会更好，于是整好以后，快速发了一个速记推，但是内容结构不清晰，想着大家很感兴趣，那要不就整一个结构清晰的文章便于沉淀和查找。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/w5/ai.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/w5/ai.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/w5/ai.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<h2 id=\"潮流工具\">潮流工具</h2>\n<p><strong>好内容配好版面的 Kami 升级了</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\n最近 Kami 进行了好几个升级，包括修复 PPT 中文乱码、工程提速、文档类比扩展到 8 类、很多细节的排版打磨、内置图表能力的更新等等事情，欢迎去更新试试。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/rPlaVb01.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/rPlaVb01.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/rPlaVb01.png\" loading=\"lazy\" data-pswp-width=\"3276\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.3696;\" width=\"800\"></p>\n<p><strong>工程师 8 大技能树 Waza 更新了</strong><br>\n<a href=\"https://github.com/tw93/Waza\">https://github.com/tw93/Waza</a><br>\n1、Durable Context: 六个 skill (think, check, hunt, design, write, health) 可以消费可选 memory/preview 上下文, 安全契约: 当前状态始终优先, 默认禁读原始对话, 不允许写死机器路径。<br>\n2、Plan Execution Mode: /check 按步骤执行已批准的实现计划, 默认 review-then-ship 续行; document review 路由移交 /write。<br>\n3、Evaluation Mode: /think 新增 Kill/Keep/Pivot 输出, 判断某个东西该不该做、该不该留。<br>\n4、验证护栏: 触发词重叠检测、路由漂移检查、attribution 泄漏拦截, 防止 skill 静默冲突和个人信息意外泄露。<br>\n5、Design 和 Write 参考: 新增排印陷阱、设计 token、美学质量、中英混排规范、release-note 风格指南。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/qa/waza_repaired_v4.svg\" width=\"800\"></p>\n<p><strong>Kaku 终于更新到了 V0.10 版本</strong><br>\n<a href=\"https://github.com/tw93/kaku\">https://github.com/tw93/kaku</a><br>\n🥷 大伙久等了，Kaku 终于更新到了 V0.10 版本，这个版本憋了我好几个小版本没有发布，一直在优化调试 Kaku 一个很便捷的端内的 Agent 助手功能，是一个干净利落不啰嗦的技术伙伴的感觉，你可以用 Cmd + L 一键唤起，不会干扰你的任何现有的内容，但是他会很聪明去读你的上下文，并提供了不少我挑选的好工具来补充他的手，他的脑袋由你通过 kaku ai 去配置，这里非常推荐配置上搜索的能力，推荐 pipellm 的不错。</p>\n<p>AI 功能是我一直想做，但是不想打扰用户的功能，这里你假如更习惯纯终端使用，我也更新了非常多的功能和大伙聊聊。</p>\n<p>首先支持一个一个有意思的智能窗口判断拦截，当你没有在 kaku config 里面配置是否需要拦截窗口关闭的时候，假如你正在进行 AI 工作，他会动态拦截问你是否要真的关闭，防止你不小心关掉。</p>\n<p>终于也支持的窗口快照的能力，Kaku 自动保存多 tab、多 pane 布局，需要时按 Cmd+Option+Shift+T，或从 Shell → Restore Previous Window 来恢复，这样可以很好防止你关掉后，想重新再来的痛点。</p>\n<p>也有小伙伴给我提建议说现在浅色模式很好看，但是深色模式对比度有点强了，接收到了，现在我调了一版很柔和的深色模式，降低了高亮色饱和度，前景文字微微调暗，长时间盯屏更不刺眼。</p>\n<p>然后我对启动速度，冷启动速度很有强迫症，还是想做那个最快的终端，我通过 Lua 字节码缓存、字体与配置延迟初始化、shell 用户变量缓存等方式，让你的 Kaku 一下子就可以打开，虽然距离 Alacritty 速度还有一点点差距，我继续加油。</p>\n<p>最后修复了全屏崩溃和卡住、显示器竞态、resize 缝隙、光标 reflow、链接、选择、浅色主题可读性和 TUI 复制等等细节问题。</p>\n<p>假如你第一次听说 Kaku，也很欢迎去试试，当前还不是成熟，正在优化中，有任何建议以及发现 Bug，欢迎大伙提交 issue 给我去解决。<br>\n<video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/blog/pic/kaku14.mp4\" type=\"video/mp4\"></video></p>\n<h2 id=\"随便看看\">随便看看</h2>\n<p><strong>M5 Pro 黑色终于到了 非常漂亮 非常激动</strong><br>\n16 寸 M5 Pro / 48GB / 1TB 黑色普通玻璃我感觉这个配置非常适合想购买新电脑的小伙伴。<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mac36.MP4\" type=\"video/mp4\"></video></p>\n<p><strong>整了一个 iPhone SE3 玩玩</strong><br>\n这个小手机怎么可以这么精致，摸在手里太舒服了。</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"33%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_099853.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_099853.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_099853.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"33%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_099901.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_099901.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_099901.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"33%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_100106.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_100106.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_100106.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>我的一个不错的 UI Bug 调试的技巧</strong><br>\n给大伙分享一个很有用的 UI bug debug 的方案，就是我之前古法代码阶段经常用的录屏慢放调试的办法，AI 很难理解这个，但人很好理解，找到那一帧有问题的，然后你就大概知道问题在哪儿了，再把截图给 AI，基本上会比打日志、猜的方式排查好太多了。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/44JbuE11.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/44JbuE11.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/44JbuE11.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2314\" style=\"aspect-ratio: 1.4840;\" width=\"800\"></p>\n<p><strong>玩推特居然 4 年了，发了一个碎碎念</strong><br>\n加入 X 居然已经 4 年了，这段旅程非常有意思，也正是把我不少技术产品分享欲找到一个了一个很好的出口。</p>\n<p>刚好和新朋友聊一下我是怎么来这里的，当时还叫推特，那时候妙言刚刚写不久，想找一个地方来同步我的更新日志，对，很简单的一个事情，于是就用谷歌登录注册的推特，然后发了当时妙言的介绍，非常神奇，原来妙言在已经被很多很多粉丝多的朋友已经在推荐这个简单好用的 markdown 原生笔记应用了，过来后，好像突然有一种原来有这么多朋友在这里，终于见面那种感觉，当时推特环境真好，没有这么多广告营销搞钱，更多是分享、交流，纯粹的技术讨论，很遗憾，当时不少输出质量比我高很多的朋友慢慢发的很少了。</p>\n<p>后面我慢慢每天早上分享我看到的一些好开源产品，或者自己新产品的发布，以及自己的一些想法碎碎念，慢慢的认识了不少志同道合的朋友，他们也给我的开源开项目贡献了非常大的精力，包括台湾的很多朋友、日本的、土耳其的、欧美的，特别是 Pake 这个项目，很多小伙伴帮忙，这也是当时没有 AICoding 的时代写代码的一种纯粹。</p>\n<p>等 ChatGPT 刚出来的那天，我就立马去注册了账号玩起来了 3.5，当时的确是神奇时刻，当时还是分享那种搞笑的提示词，很有意思，在现在看起来属于远古文学了，我甚至还在 2022-12-04 写过一篇《普通人如何不被 OpenAI 取代》，哈哈，可见我当时有多浅，甚至深入问的第一个问题是 给我一些学习 Rust 的在线文档，现在 AI 发展起来也不可同日而语了。</p>\n<p>也正是这个时候，我差不多觉得 all in ai 了，在公司侧把主职的业务支持技术全部下放给到下面的一级管理者，自己给团队找更大的天花板 AI，甚至当时用我自己的国际信用卡去自费买 gpt 的官方 api 给团队使用，了解最新的东西，把业务中大量一直让业务管理者头疼的事情能用 AI 解决的都解决了，顺便我擅长画稿子整产品解决方案，也把 AI 应用研发平台、B 端数字员工解决方案、业务效率工具和 AI 的深入融合，如今发展到现在 3 年多，很多都非常产品化以及效率大幅提升。</p>\n<p>由于在实践中，效果非常明显，我在 23 年初，把我所有中概股以及公司归属的股票全部 all in 到了 AI 方向，虽然非常廉价的给卖了，但是买到了很多现在看起来是宝贝的股票，比如我非常喜欢的 130 多的特斯拉，90 多的英伟达，160 多的 SMH 等，这个阶段我开始有意识的去学习投资，分析一个公司的水平，以及本身的价值如何，也看了很多书来提升自己的思想，但是对于实操效果不大，因为很多书是 AI 没来前几十年写的，不过思想很有用，此外投资 AI 也不能和以前思路不一样，也让我找到了编程之外的一个兴趣，很有意思，以后看能否做一个和投资相关的 AI 产品。</p>\n<p>再到后面，其实慢慢就到了大家熟悉的去年国庆在三亚度假泳池游泳休息过程中写的 Mole，Mole 让我认识了非常多的海外开发者，我的海外粉丝大幅增加也是由于这个产品被全球各地的开发者几乎每天都有人在帮忙主动宣传，非常感谢！然后就到了今年过年写的 Kaku，还有最近给我提效的 Waza、Kami，还有新电脑到了以后想整的 Luo 落文这个字体，旅途非常美好，很期待后续的旅途，也非常欢迎新朋友的加入。</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第266期 - 口罩雕塑","link":"https://weekly.tw93.fun/posts/266/","pubDate":"Mon, 27 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"2800\" data-pswp-height=\"2100\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>封面图用于周末去拱墅这边办事看到的一个带着口罩的雕塑小孩，一转眼疫情居然过去了这么久了，但是又感觉弹指一挥间，还是需要记住那几年的。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"介绍一下-tw93-开源小家庭\">介绍一下 Tw93 开源小家庭</h2>\n<p><a href=\"https://github.com/tw93\">https://github.com/tw93</a><br>\n<img src=\"https://gw.alipayobjects.com/zos/k/sa/family.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/sa/family.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/sa/family.png\" loading=\"lazy\" data-pswp-width=\"1586\" data-pswp-height=\"992\" style=\"aspect-ratio: 1.5988;\" width=\"800\"></p>\n<p>在写完 Kami 的时候，我突然想 Kaku、Waza、Kami 非常像一个小家庭，然后继续琢磨，其实 Pake、MiaoYan、Mole 也一直在这个家庭默默存在，甚至比其他成员在没有 AI 的时候就出来干活了，今天给大伙介绍一下我们这个温馨幸福的家庭。</p>\n<p>Kaku 是 爸爸，主要在写代码、终端、构建，在 AI 时代非常可靠能干，把家庭支撑得好好的。</p>\n<p>Pake 是妈妈，一直在默默无闻的打包、整理、交付成 App，非常温和且利落，家里几个孩子最喜欢的就是妈妈。</p>\n<p>MiaoYan 是哥哥，比较懂事沉稳，喜欢写作、Markdown、沉淀思考，一个安静的小伙子，会思考，有自己的主见，会输出自己的观点，不追风不随波逐流。</p>\n<p>Waza 是姐姐，和妈妈的性格很像，很干练的姐姐形象，小时候还去学过跆拳道，非常爱学习，通过不够的练习总结让自己技能越来越好，练到本能。</p>\n<p>Kami 是妹妹，家里最年轻的小可爱，拿着我女儿的照片形象生成的，轻快，非常爱笑，非常明亮的小女孩，在家里有一种秩序检察的感觉，喜欢整齐，喜欢画漂亮的画画，虽然小，但是很能够给人温暖。</p>\n<p>Mole 是家里的小宠物鼹鼠，某年在三亚泳池边游泳带回家的，一只圆滚滚的小鼹鼠，带着小头灯拿着小铲子，非常喜欢翻箱倒柜钻角落，找到不需要的东西帮忙扔掉，很喜欢干净，一看到垃圾还没有等你反应过来就被他扔掉了，一直陪伴着。</p>\n<p>话说，你是先和 Tw93 Open Source Family 哪一个成员认识的，我把他的其他家庭成员介绍给你认识认识，希望给你的生活来带来一点美好的东西，当然也很欢迎你把成员推荐给你的好朋友认识。</p>\n<h2 id=\"产品发布\">产品发布</h2>\n<p><strong>Kami：一个 AI 时代舒爽的排版设计系统</strong><br>\n<a href=\"https://github.com/tw93/kami\">https://github.com/tw93/kami</a><br>\n上上周末在整一个新的 Skill 叫做 Kami (紙, かみ)，大伙可以把他当做 Waza (技, わざ) 的妹妹，Kaku(書く) 的女儿，主打用于 Paper 排版的场景，上周一完成了开源发布，欢迎去使用。</p>\n<p>比如说你需要产出一页纸的报告，你需要写一个白皮书、需要产出一个精致的 PPT、需要弄一个作品集的 PDF 发给别人等等，也就是任何排版的打印场景都可以使用，自动生成精致 PDF，里面还具备自动绘制清晰图的能力。</p>\n<p>然后最近还有很多更新，首先最好玩的是，我支持了 12 种内联的 SVG 图表，比如说你的股票投资各种图、你要画的架构图，配色也和 Kami 一致，会在帮你产出版面的时候自动判断是否需要用图表能力，帮你把事情讲得更明白。</p>\n<p>然后我也花了一些时间去支持英文、日文版本的场景，精挑细选了下对应的我觉得在排版上不错的字体、字间距、行高、文字大小等，假如你有英文、日文的场景可以试试。</p>\n<p>最后支持的生产物里面也支持图片、PPT 的导出，包括 HTML 的展示，当然最好的排版物我推荐 PDF，这样他人阅读起来也非常舒服。</p>\n<img src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png\" loading=\"lazy\" data-pswp-width=\"2992\" data-pswp-height=\"2308\" style=\"aspect-ratio: 1.2964;\" width=\"800\">\n<p><strong>Mole 也有更新啦，还有一个好消息桌面端有进展了</strong><br>\n<a href=\"https://github.com/tw93/Mole\">https://github.com/tw93/Mole</a><br>\n1、mo uninstall: 卸载后会清理残留的 LaunchAgent/LaunchDaemon plist；新增对 /usr/local、/opt 等非标准路径下 pkg 安装应用的识别；嵌套 helper app 不再阻塞登录项清理；调用 brew 前会丢弃 sudo，避免 cask 卸载因 “running as root” 中断；Homebrew bottle 在路径含空格的前缀（如 Applite）下也能正常运行。<br>\n2、mo clean: Chrome / Arc / Brave / Vivaldi / VS Code / Cursor 正在运行时不再清理 Service Worker ScriptCache，MV3 扩展不会再被清理掉；TCC 受保护的 Group Containers 被跳过，避免反复弹隐私授权；<br>\n3、Cloud &#x26; Office 段加入超时与 SIGINT 处理，不再卡住；Microsoft Office helpers 与科研软件 bundle 不再被误判为孤儿（兼容 macOS 自带 bash 3.2）；新增 Yarn v1 全局缓存清理。<br>\n4、mo clean: AI 编程助手老版本清理新增 GitHub Copilot CLI（~/.copilot/pkg/universal/<version>/），与 Claude Code、Cursor Agent 一起处理。<br>\n5、mo analyze: 工作池上限再次下调，防止 Steam 类目录扇出场景下耗尽系统线程；删除文件时使用增量缓存失效，无需整体重扫；bundle 解析在 mdfind 超时后保留文件系统兜底。<br>\n6、mo optimize: macOS 26+ 上底层工具不存在的 periodic maintenance 改为优雅跳过；新增 mo optimise 别名和补全。</version></p>\n<h2 id=\"随便写写\">随便写写</h2>\n<p><strong>你不知道的 AI Coding：非技术人的上手、场景与实战</strong><br>\n<a href=\"https://tw93.fun/2026-04-26/ai-coding.html\">https://tw93.fun/2026-04-26/ai-coding.html</a><br>\n上个月在公司里给产品和业务的小伙伴分享了下如何上手 AI Coding，加上最近又发了条推特，聊到不少同学因为订阅门槛没机会用上一线 AI Coding 工具，方法和习惯不花钱就能先学，索性把上手这部分整理出来。然后为了让内容给大伙更好理解，文章中绘制了不少简单插画，这样看起来应该更会直接。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/z1/00.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/z1/00.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/z1/00.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<p><strong>视频分享版的《你不知道的 Agent：原理、架构与工程实践》</strong><br>\n<a href=\"https://www.youtube.com/watch?v=Z5If1L3eFtw\">https://www.youtube.com/watch?v=Z5If1L3eFtw</a><br>\n终于传到 Youtube 去了，上次看文章的小伙伴假如没有看太懂的，或者想更加了解的，欢迎看视频，Youtuber 视频小白欢迎大家一键三连加关注，以后我尽量把分享都录屏分享给大伙在这里看看。</p>\n<img src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg\" loading=\"lazy\" data-pswp-width=\"3288\" data-pswp-height=\"1876\" style=\"aspect-ratio: 1.7527;\" width=\"800\">\n<p>这个<a href=\"https://tw93.fun/files/share/agent.html\">分享文稿</a>也非常有意思，是 Kami 的前身。Kami 最开始是我在 CC 里面的一个投资报告生成小玩意，然后刚好有一个分享要讲你不知道的 Agent，很懒感觉写一个这么长的 PPT 多费时间啊，然后就直接把原来能力边生成边调试几个版本到满意状态，然后 Kami 就出生了，欢迎阅读。</p>\n<p><strong>幸福瞬间</strong><br>\n周日慵懒的午后在书房敲代码<br>\n没有什么杂事要处理<br>\n用不完的 Claude Code<br>\n代码一把过的惊喜<br>\n一抬头看到了夕阳透过窗户<br>\n一种非常简单的幸福<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"500\"></p>\n<p><strong>一些感悟发出后，又有变化了</strong><br>\n最近校招面试了不少 985 实习生，一个很强烈的感受是：AI 工具正在把学生之间的资源差距快速放大。</p>\n<p>从我这段时间的感受看，差距真的可能到 5 倍。那些明显领先很多的同学，无一例外都比较早接触了 Claude Code、Codex 这类最好的 AI Coding 工具，也愿意自己花钱订阅。他们不只是会用工具，而是已经把它们变成了日常学习和开发的一部分。聊模型、工程、Agent、代码实践，可以很自然地聊一个小时，很多地方甚至比我理解得更深。</p>\n<p>但也有不少同学，学习成绩很好，计算机基础也扎实，只是因为家庭条件或预算有限，平时只能用国内中转站或更便宜的国产模型套餐，这个差距非常现实。现在最好的国产模型和国外一线模型，在 模型综合能力上大概还有半年左右的时间差。以前没有 AI 的时候，资源差距最多只是效率差一点，现在会直接影响视野、实践深度和自信心。</p>\n<p>这件事我最近一直在琢磨，对一些本来很有潜力的学生来说，只是因为每个月几十美元的门槛，就少接触了很多东西，我觉得挺可惜。想起我当时读大学的时候其实也经常囊中羞涩，好在大二认识了不少大牛学长带着我开始做商业项目养好了自己，挺感谢当时很耐心教我技术的各种朋友。</p>\n<p>所以我想做一个很小的尝试：拿一部分 X 发推收益，资助几位学习成绩不错、喜欢计算机、但家庭条件不太宽裕的同学，给他们提供几个月 Claude Code 或类似 AI Coding 工具的订阅，让他们真正体验一下目前比较好的模型和开发方式。</p>\n<p>不过我自己平时也比较忙，不太可能一个人长期处理申请、筛选、核验和跟进。所以也想顺便邀请一些对此有想法的朋友一起做。比如高校老师、学生负责人、开源社区成员，或者本身就在做教育、公益、开发者社区的朋友，可以一起帮忙想一个更靠谱的机制。</p>\n<p><del>这件事我暂时不想做大，也不想做成很复杂。先从小规模实验开始，比如每期 5 到 6 个同学，每人 3 到 4 个月，甚至也可以每周来找我视频问一些问题。想着优先看推荐、作品、学习记录和真实使用反馈，尽量避免变成单纯发钱或者拼谁会写申请，当然现在能上 X 的大学生应该不缺这个钱，所以还是需要看有没有更好的渠道。</del></p>\n<p>如果你有靠谱渠道，或者愿意一起参与规则设计、推荐、审核、跟进，欢迎私信我。能把这件事做得更可信一点，也许真的能帮到几个本来就很有潜力的同学。</p>\n<p><strong>回复更新></strong>：</p>\n<p>消息发出后，收到不少朋友的建议和提醒，我也认真看了。</p>\n<p>这件事确实不能只靠热情直接推进。一方面涉及工具使用边界和合规风险，另一方面学生群体的真实需求、筛选方式、后续反馈，也都需要更稳妥的机制。也有朋友提到，之前做类似事情踩过很大的坑，最后甚至被反咬一口，这个提醒我觉得很有价值。</p>\n<p>所以我准备先接下来先收集一些实际情况，比如大学生现在使用 AI Coding 工具的痛点、预算限制、学习场景和真实需求，再整理一个更清晰的方案。</p>\n<p>后面会优先考虑和国内大模型厂商、开发者社区、高校老师一起，看能不能用更正规、更可持续的方式，把这件事往前推一小步。</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第265期 - 西溪窗外","link":"https://weekly.tw93.fun/posts/265/","pubDate":"Mon, 20 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"2400\" data-pswp-height=\"1800\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>封面图用于周内中午去西溪湿地月芽吃了个午饭，好久没有去了，环境真好，刚好那天太阳穿短袖刚刚好舒服的那种状态，拍了一个窗外，春天真快。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"聊聊-waza-的设计思路\">聊聊 Waza 的设计思路</h2>\n<p>我想陆续用几条内容来介绍 Waza 里面一些有趣技能的实现参考，上周每天早上写了一条，记录给大伙看看。<br>\n<a href=\"https://github.com/tw93/waza\">https://github.com/tw93/waza</a></p>\n<img src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png\" loading=\"lazy\" data-pswp-width=\"1200\" data-pswp-height=\"775\" style=\"aspect-ratio: 1.5484;\" width=\"800\">\n<h3 id=\"介绍-design-技能\">介绍 /design 技能</h3>\n<p>首先我非常讨厌 AI 生成的那种千篇一律甚至还带 emoji，蓝紫色渐变的网站，觉得非常丑，只能说能用。</p>\n<p>于是我把我最近做的所有的带 UI 的网站让 Claude Code 去学习我的调教记录，会生成一份基础的我觉得最佳实践和不应该有的反模式，这个基础上会有一个雏形，然后我把 claude frontend design skill 里面有用的学习过来，基本就有一个模式了。</p>\n<p>考虑到一些具体规则，我从 pbakaus/impeccable 学习了一些，他给我贡献了大量具体的规则，比如说禁用的字体清单、色彩系统、主题风格、css 模式的禁止项、动画的规范等，用于让 AI 具备一定的审美知识了。</p>\n<p>然后从 getdesign 的能力中，获取到设计的一个来源于 Google Stitch 的九段式脚手架的结构，在简化能力基础上汇集到 /design 里面，这里他就有一个知识面体系了。</p>\n<p>最后我会在让你用这个技能的时候，先回答几个问题，谁用、美学方向选择、页面想让用户记住的、你最不喜欢的、网页特色微交互是怎么样的，这样 Claude Code 再基于这个重要的上下文以及 /design 去工作 往往会得到事倍功半的效果。</p>\n<h3 id=\"如何设计-check-这个代码-review-技能的\">如何设计 /check 这个代码 Review 技能的</h3>\n<p>首先我们需要知道模型本身告诉你他做完了，不一定是做完了，很有可能会留下一些不存在或者有问题的东西，经常会藏些问题，在 Agent 设计中我的工程经验是会给模型一个 checklist 用来校验是否真的做完了，这样往往会比你让他去检查效果好太多了。</p>\n<p>/check 最开始做的时候设计就不是一个大而全的 reviewer，而是一个编排分工能力系统，其中 SKILLmd 是主审，负责审查的分级和流程控制，agents/ 下有独立的安全审查员和架构审查员，各管各的，互不干扰，什么时候拉谁进来，会由一份激活规则来判断决定，而非传统大家用的关键词匹配。</p>\n<p>分级逻辑也比较有意思，对于 100 行以下的代码快速 review，100-500 行的按需加专家，500 行以上的全拉满，然后再加一轮对抗性测试，对抗性测试会从这四个角度来找漏洞，包括违反假设条件、组合失败下的问题可能、上下级串联错误的问题、滥用的场景等等</p>\n<p>然后发现的问题也分 4 级来处理，能安全修复的直接去修复了，大概了对的会打包出来让你手动再确定一次是否 ok，需要判断的会问你，仅供参考的部分也会高数你，但是不会每一个小问题都来问你一遍，也不会越权帮你改行为逻辑。</p>\n<p>还有一个硬要求，验证没有跑完就不算完成，会自带一个探测的脚本，能识别 Cargo、TypeScript、Python 等项目类型去跑测试，探测不到就直接报错，不会假装通过。</p>\n<p>这样就更像一个很经验的技术专家，在面对不同情况的问题 review 的一些经验，刚好我把这些经验用很简单方式沉淀到了 waza 的 /check 技能。</p>\n<h3 id=\"如何设计-think-这个技能的\">如何设计 /think 这个技能的</h3>\n<p>居然到了 Waza Skill 设计思路分享的第三弹，今天给大伙分享我是如何设计 /think 这个技能的，也就是在写代码之前做方案设计用的。</p>\n<p>我使用 Claude Code 有两个非常有意思的设置，第一个是 /model opusplan, 也即默认做计划会使用 opus 最强模型，然后去执行使用普通 Sonnet 模型，这样可以帮助我的 Max 省点儿用在更需要地方。</p>\n<p>第二个是我其实默认执行会用 alias c=“claude —dangerously-skip-permissions”，这个不建议技术小白用，我用是由于我知道他在做什么，以及主要是我懒得缘故。</p>\n<p>然后回到正题，那么 /think 怎么让最牛的模型执行更好一点呢？继续回到模型本身，其实模型不喜欢表态，但是我更喜欢能表态给你最优方案的工程师，所有我做的第一件事就是，开头就要求模型必须有立场，说清楚什么证据能推翻这个立场，并且明确禁掉了”There are many ways to think about this”这类正确但无用的废话，给 2-3 个选项没问题，但必须有明确推荐，而且必须包含一个最小化选项。</p>\n<p>然后方案并不是想出来就 ok 了，第二部会让他自己反驳自己，什么情况下这个方案会有问题，假如有办法修复，那就补充到方案里面重新呈现，假如直接打破了方案，他会直接高数在哪些情况下为什么不行，这样至少交到你手里的方案是你心知肚明的。</p>\n<p>对于前提验证也会做得比较细，先确定解决的目录代码位置对不对，我还真出现过他出方案拿着一个不对的路径在出，然后查旧的技术方案文档避免重复造轮子，然后去搜索 Github 看看有没有人也处理过类似的问题，这三步做完才开始想办法，防止一开始就建立在错误的前提上。</p>\n<p>这里也会有复杂性分级，超过 8 个文件或者服务新增会明确告知规模，超 3 个组件交换数据会画 ASCII 图找环，所有 API key 和第三方依赖在方案阶段就列清楚，防止白忙，也防止引入不靠谱的方案。</p>\n<p>最后还有一个硬性规定，方案里面不允许出现 TBD、TODO、“以后再说”、“类似第 N 步”这种东西，因为又回到 AI 的性格，给了这个东西执行的时候很容易出现少做或者多瞎想，相当于不要给 AI 任何退路，导致效果不好。</p>\n<p>最后方案的输出也有要求，做什么、不做什么、选了哪一个方案什么理由，3-5 个决策依据，明确的未知项，/think 决不写代码，用户批准后再进行。</p>\n<p>这里我做 Think 技能的时候，也是参考我认为好的技术专家是怎么来做技术方案的，详细分析调研后的最优技术方案，决策果断，不留尾巴，被否定了立马去优化方案本身等等。</p>\n<h3 id=\"聊工程师技能部分的-hunt-技能\">聊工程师技能部分的 /hunt 技能</h3>\n<p>终于到了 Waza SKill 设计思路的第 4 部分，讲完这个就差不多了，因为其他两个是 /read 和 /learn 之前已经简单聊过，这次继续聊工程师技能部分的 /hunt 技能，其实就是 debug 问题排查问题的技能。</p>\n<p>其实证明 AICoding 是民科和专科的一个很大区别，可以来看用户是如何用 AI 来解决一些很久没有解决的问题的排查思路的，这个过程可以看到明显区别，其实这也是经验丰富的工程师其实用好 AI 远会比不那么懂技术的人可以解决更加复杂问题的原因。</p>\n<p>之前经常碰到，Claude Code 遇到一个问题去解决，基本上就是是一个 patch，你说不行，他给你是另外一个，你会发现 4-5 轮下面，又有新问题出来了，也即很容易出现在没有诊断出问题下不断去打补丁，很像之前没有 AI 时候刚刚写代码的小伙伴。</p>\n<p>/hunt 的核心规则有意思，就是在 AI 能用一句话说出根因之前，不许碰代码。而且这句话有精度要求，需要明确的那种原因说明。</p>\n<p>然后我设计了一张“自我欺骗检查表”，防止模型陷入几种典型的自我合理化的思维，每一种都配备了对应的规则，然后在 gotchas 里有真实案例，这里会根据我最近一个月排查问题时候出现的问题再次总结抽象一下。</p>\n<p>假设验证阶段也有一些干活要求，比如加一个最新的观测手段，比如让 AI 学会打 log，打断言，或者跑一个最小失败的测试 case，修完之后还有问题应该是立马去更换方案，会把查了什么、排查了什么方向、还不知道什么整理成 handoff 交给用户来决定怎么继续，而非一直试下去。</p>\n<p>输出也会建议到 AI，根因在哪 file:line、改了什么 file:line、什么证据确认修好了、测试通过情况。最终状态三选一：resolved、resolved with caveats、blocked。</p>\n<p>这样你会发现 /hunt 就很像一个经验丰富的技术专家了，遇到问题不是去猜，而是先沉下心去看问题在哪儿，诊断清楚原因，然后一把就过就解决的那种，往往这样会节约很多时间。</p>\n<h2 id=\"随便看看\">随便看看</h2>\n<p><strong>妙言发布了 3.2.0 Nargacuga 🐆 版本</strong><br>\n<a href=\"http://github.com/tw93/MiaoYan\">http://github.com/tw93/MiaoYan</a><br>\n1、预览更快：两阶段渲染让文字立即显示，本地图片在后台懒加载，明显减少预览首屏等待时间<br>\n2、终端快捷入口：新增 Cmd+J 全局快捷键，随时打开当前文件夹所在终端，文件夹右键菜单也有对应入口<br>\n3、复制路径：右键任意笔记可直接复制完整文件路径<br>\n4、西班牙语本地化：完整覆盖菜单、设置页和系统字符串的西班牙语翻译<br>\n5、Mermaid 升级至 v11.14.0，修复子图连线渲染问题并新增图表功能<br>\n6、实时重载修复：其他工具修改的笔记现在能正确触发重载，含符号链接目录内的文件（closes #502）<br>\n7、启动与窗口修复：从 Finder 直接打开 .md 文件不再出现白屏，单栏模式下启动和退出时也不会再丢失笔记<br>\n8、导出与模式切换：修复切换笔记时预览空白、PPT 演示模式退出时序混乱、导出超时处理异常等问题<br>\n9、并发安全：修复 ExportCache 数据竞争、安全作用域 URL 泄漏、异步渲染后笔记状态错乱等问题<br>\n<img src=\"https://raw.githubusercontent.com/tw93/static/main/miaoyan/miaoyan.gif\" width=\"800px\"></p>\n<p><strong>Kaku 最近会上一个有意思的功能，再等几天就上线</strong><br>\n<a href=\"https://github.com/tw93/Kaku\">https://github.com/tw93/Kaku</a><br>\nKaku 最近在开发一个有意思的功能，一个在终端内可畅通无阻的真 Agent 帮手，慢慢实现过年期间说的那个 Kaku AI 的润物细无声，也满足让我 100% 的 Coding 工作可以完全在 Kaku 完成。</p>\n<p>非常方便的上下文环境 + 各种 CLI 好用的工具 + 模型 + 克制的性格 让 Kaku 不是那种冷冰冰，也不是那种 GPT 那种我稳稳把你接住的浮夸感，Kaku AI 的定位是你的一个技术很厉害但友善且不啰嗦的工程师好友。等我测试几天没有 Bug 的时候，就发布 Kaku 的 0.10 版本给大伙用用。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png\" loading=\"lazy\" data-pswp-width=\"1645\" data-pswp-height=\"1079\" style=\"aspect-ratio: 1.5246;\" width=\"800\"></p>\n<p><strong>我的 Claude Code Max 使用建议</strong><br>\n首先我会在 .zshrc 里面加上一个 alias，这样我每次按 c 就直接启动了危险无阻挡模式，假如你是小白就不建议开始，使用 auto mode 就好了，然后有一个很大的建议，把自动上下文窗口压缩控制到 400k，加起来就是后面这个 alias 写到文件里面去，相当于把 1m 的上下文窗口在 40%的时候就开始压缩了，效果会好不少。</p>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"sh\"><code><span class=\"line\"><span style=\"color:#F97583\">alias</span><span style=\"color:#E1E4E8\"> c</span><span style=\"color:#F97583\">=</span><span style=\"color:#9ECBFF\">'CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 claude --dangerously-skip-permissions'</span></span></code></pre>\n<p>然后我会设置 /model 为 opusplan，这类你可以直接在 claude code 里面运行 <code>/model opusplan</code> 这个隐藏命令就开始了，假如想更快，可以 <code>/fast</code> 打开这个，刚好弥补上面节约的 token。</p>\n<p>最后，还有人给了我一个超级好的建议，就是在使用 opusplan 的时候，一定要在 claude 配置文件<code>~/.claude/settings.json</code>里面开启 <code>showClearContextOnPlanAccept</code> 这个字段为 <code>true</code>，不然会会在 sonnet 上遇到严重的缓存未命中问题，一把设置好后，舒服太多了。</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第264期 - 终于完工","link":"https://weekly.tw93.fun/posts/264/","pubDate":"Sun, 12 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/kd/264.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/kd/264.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/kd/264.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>封面图用于记录我的硬件小玩具终于完工的照片，很有意思，我想着把这个过程通过今天的周刊记录下来，希望有兴趣的小伙伴来看看。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"新文章发布\">新文章发布</h2>\n<p><strong>在 AI 时代，我是如何深入学习一个技术领域的</strong><br>\n<a href=\"https://tw93.fun/2026-04-06/learn.html\">https://tw93.fun/2026-04-06/learn.html</a><br>\n把上次的学习总结，集合 Waza 里面的/learn 技能给大伙分享一下，关于上一篇大模型的文章我是如何写的过程，希望对你有用。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/deep04.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/deep04.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/deep04.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<h2 id=\"聊聊做小机器狗的过程\">聊聊做小机器狗的过程</h2>\n<p><strong>4 月 4 日，重学硬件，期待可以整一个软硬件结合的小玩意</strong><br>\n这个时候属于买齐了所有的零件和工具，大大小小一桌子，等到清明节假期来好好玩玩。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/gu/gOR0gb.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/gu/gOR0gb.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/gu/gOR0gb.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"1536\" style=\"aspect-ratio: 1.3333;\" width=\"800\"></p>\n<p><strong>4 月 4 日晚上 9 点 45，0.1.0-beta 版本</strong><br>\n终于有第一个反应了，别提我有多高兴了，请忽略粗鲁，因为出厂设置就是这样，我要用 Windows 电脑去修改。<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://gw.alipayobjects.com/os/k/4s/IMG_0321.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>4 月 5 日凌晨 12 点 07，0.1.0-beta1</strong><br>\n搞定 WiFi 模块、AI 模块、单片机模块、四足模块可运行。明天来加上脚以及调试屏幕效果，立马就睡觉去去！<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/IMG_032613.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>4 月 5 日中午 1 点 45，0.1.0-beta2</strong><br>\n调好机械腿控制模块，可以趴下睡觉行走，这个狗还是一如既往的粗率，但但但采购的有一个机械腿马达看着有点问题，等待换零件中！<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/new01.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>4 月 6 日上午 10 点 33，0.1.0-beta3</strong><br>\n腿部控制全部 OK 了，但是现在屏幕应该是我调试过程中烧屏了，等待快递中，期待尽快 Release！<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_0379.jpg06.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_0379.jpg06.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_0379.jpg06.jpg\" loading=\"lazy\" data-pswp-width=\"3880\" data-pswp-height=\"2910\" style=\"aspect-ratio: 1.3333;\" width=\"800\"></p>\n<p><strong>4 月 8 日晚上 11 点 37，0.1.0-beta4</strong><br>\n晚上下班后屏幕终于到了，一下子调试好屏幕、温度二氧化碳、红线外、灯光等传感器，WiFi 配网调试中，基本出现差不多了，剩下封胶和稳固。<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/IMG_043028.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>4 月 11 日上午 11 点 30，0.1.0 终于完成 🎉</strong><br>\n把电池包封胶好了，还绑了几根带子防止散架，WiFi 和 Ai 对话模块也调试好了，使用 DeepSeek 模型稍微快一点，对话速度还可以，接下来打算玩高级一点硬件去。<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/26F9D347-A9C8-4DCC-811A-033887BD049515.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>最后拍几张立体照，记录一下</strong></p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"50%\">\n           <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/26410.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/26410.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/26410.jpg\" loading=\"lazy\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"600\">\n        </td>\n        <td width=\"50%\">\n           <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_050519.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_050519.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_050519.JPG\" loading=\"lazy\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"600\">\n        </td>\n    </tr>\n    <tr>\n        <td width=\"50%\">\n           <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_050736.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_050736.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_050736.JPG\" loading=\"lazy\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"600\">\n        </td>\n        <td width=\"50%\">\n           <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_050944.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_050944.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_050944.JPG\" loading=\"lazy\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"600\">\n        </td>\n    </tr>\n</tbody></table>\n<h2 id=\"潮流工具\">潮流工具</h2>\n<p><strong>App Store Price：可以查询不同国家/地区 App Store 中应用的价格信息</strong><br>\n<a href=\"https://app.vbr.me\">https://app.vbr.me</a><br>\n这个工具有点意思，可以查询不同国家/地区 App Store 中应用的价格信息，比如说你可以看 Claude 哪一个区订阅最便宜，后面我应该用得上。<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/Pnc8XN58.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/Pnc8XN58.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/Pnc8XN58.png\" loading=\"lazy\" data-pswp-width=\"1200\" data-pswp-height=\"886\" style=\"aspect-ratio: 1.3544;\" width=\"800\"></p>\n<h2 id=\"随便写写\">随便写写</h2>\n<p><strong>和大伙聊聊我认为的好的产品体验</strong></p>\n<p>上次飞丢的无人机有后续了，由于飞到中途信号突然消失，找了半天没有找到，上传飞行日志大疆排查也没有排查出来，在他们不确定是否真的飞丢情况下，在提供非常简单证明情况下，随心飞服务，直接寄给我一台全新，甚至担心我使用更方便，还送了我一张 128G 的卡，全程没有任何地方让我解释为啥飞丢了，有没有去找。</p>\n<p>这个事情让我非常喜欢大疆了，服务体验不管是客服还是技术支持工程师在这个过程非常专业清晰，想借这个事情和大伙聊聊我认为的好的产品体验。</p>\n<p>其实产品体验好并不只是大家经常以为，这个产品交互好棒，漂亮，好用，没有 Bug，更更重要的是让用户在着急时刻，你给他提供了一个远比他预期之外的更好体验，让他会非常激动给他的朋友分享你给到他的这次好的体验，这个我认为才是真的好的做生意的服务体验，也很担心这种因为信任所以简单的体验被有些钻空子贪便宜的小人破坏，只能是我们有心的大伙一起去维护这个好的信任关系。</p>\n<p>上两次让我体验非常好的是携程，要不是他是中概股，他应该会是我的持仓大头，体验好在这两次抢火车票的经历。</p>\n<p>第一次是 3 年前，春节回老家抢票，由于票很难买，他给我选的是多买几站确保可以上车，其实这里我就非常感谢他了，因为其他平台都没有抢到，更更更惊喜的是当时下午我还去电影院看电影了，想着这个事情完成了，看电影过程中，接到一个不知道电话我给直接挂断了，结果立马收到一个短信，说先生我们给你抢到了不需要多买几站的方案，担心需要你麻烦去 App 订单页面确定一下，明显看刚刚那个电话也是人打的，这个短信肯定也是那个服务支持同学发出来的，那个时候，并不是那几十块钱，而是我感觉他们服务体验做得真好，真的是在帮你干事，而且比你的预期办的好很多，这个才叫好的体验。</p>\n<p>还有一次在最近国庆回家，也抢到了两张一等座票，不过两个位置不在一块，还挺远的，可能是由于标注了带了一岁半宝宝，关键来了，在出发前 1 天，携程居然自动帮我换座位了，更简单消息通知告诉我，我们找到你这边车厢又有空位了，已经帮你换到一个车厢一起了，这个体验，又是一次比我预期给我带来更好的帮助。</p>\n<p>所以大伙做产品过程中，其实可以给到更多用户在他不好整的时候一个远超出他预期的体验或者帮助，而非骗用户骗点击方式来达成自己的目标，这样用户真的会爱死你了，成为你的产品的死忠粉！</p>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/lxEYPC26.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/lxEYPC26.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/lxEYPC26.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"1536\" style=\"aspect-ratio: 1.3333;\" width=\"800\"><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"},{"title":"第263期 - 硬件之美","link":"https://weekly.tw93.fun/posts/263/","pubDate":"Mon, 06 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/e5/263.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/e5/263.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/e5/263.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"4029\" data-pswp-height=\"3022\" style=\"aspect-ratio: 1.3332;\" width=\"800\">\n<p><small>封面图用于记录我假期在家三天玩的硬件小玩具，从一堆材料中锡焊、点胶、调试，终于快到最后一步了，屏幕调试过程中烧屏了，只能等快递到了继续整，很好玩。</small></p>\n<blockquote>\n<p><strong>记录每周看到的接地气的潮流技术，筛选后发布于此，觉得不错可关注此周刊，方便获取更新通知</strong></p>\n</blockquote>\n<h2 id=\"新文章发布\">新文章发布</h2>\n<p><strong>你不知道的大模型训练：原理、路径与新实践</strong><br>\n<a href=\"https://tw93.fun/2026-04-03/llm.html\">https://tw93.fun/2026-04-03/llm.html</a><br>\n至今写得耗时最长的一篇文章，好在搞懂了大模型训练皮毛，里面门道和我研究前相差太大了，非常建议从事 AI 应用或者对 AI 有兴趣的任何小伙伴阅读，应该能够让你看懂以及看个够。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/4q/Group.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/4q/Group.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/4q/Group.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<h2 id=\"产品发布\">产品发布</h2>\n<p><strong>Waza 我的工程师分身 Skill</strong><br>\n<a href=\"https://github.com/tw93/waza\">https://github.com/tw93/waza</a><br>\n把我自己常用的 Skill Release 成一个新玩意叫 Waza，在日语中是 技（わざ） 的意思，常用于武术领域的招式，第一次开源一个没有代码只有 md 的产品，在没有 AI 的年代对于程序员而言是很羞耻的。</p>\n<p>之前 Superpowers 出来的时候，我安装一次就卸载了，感觉太重了，不是很适合我，会有不少人给我推荐 “你知道 Superpowers 吗？这个都不用那你就不潮流了，非常牛逼”，后面发现了 gstack，好了不少，但还是太多了，还是不习惯，我期待简单好用，同时清楚它在做什么。</p>\n<p>所以我按自己的习惯做了 Waza，对我而言装上这一套就够了，其他 skill 不用再折腾，不多不少刚好够用，后面有新的迭代可以持续优化下去。8 个 skill 对应我认为在 AI 时代一个好的工程师应该具备的 8 个能力：</p>\n<p>1、会思考，AI 写代码很快，但方向错了越快越远，好的工程师在动手前会先质疑问题本身，压测方案，脑子里有清晰的架构再让 AI 去执行，/think 就是把这个习惯固定下来。</p>\n<p>2、会设计，做产品不只是把功能实现了，AI 生成的东西很容易千篇一律，好的工程师对交付物有审美要求，出来的东西要有明确的设计方向，/design 做的就是这件事。</p>\n<p>3、会排查，AI 改 bug 最容易陷入”改了试试”的循环，好的工程师遇到问题会系统化定位，确认根因再动手修，一次到位，这个习惯我沉淀成了 /hunt。</p>\n<p>4、会检查，AI 生成的代码更需要人来把关，合并前先审一遍 diff，能自动修的修掉，需要判断的归拢到一起，用证据验证而不是凭感觉收工，这个是 /check。</p>\n<p>5、会阅读，好的工程师习惯读一手资料而不是二手总结，把 URL 或 PDF 转成干净的 Markdown 直接进工作流，/read 做的就是这件事。</p>\n<p>6、会写作，技术再强，写不清楚别人就接收不到，好的工程师能把学到的、想表达的东西清晰地传递给对应的受众，/write 帮你把这一步做好。</p>\n<p>7、会学习，AI 时代技术迭代更快，进入一个陌生领域不是刷几篇文章就完了，而是收集、消化、提纲、初稿、打磨、发布，用输出驱动学习，/learn 就是这套流程。</p>\n<p>8、会维护，好的工程师不只关注业务代码，工具链本身也需要体检，CLAUDE.md、rules、hooks、MCP 这些配置感觉不对的时候跑一下 /health 就知道问题在哪。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/yx/JMouVn.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/yx/JMouVn.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/yx/JMouVn.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1920\" style=\"aspect-ratio: 1.0000;\" width=\"800\"></p>\n<h2 id=\"产品更新\">产品更新</h2>\n<p><strong>Kaku 0.9 版本发布了很好用</strong><br>\n<a href=\"https://github.com/tw93/kaku\">https://github.com/tw93/kaku</a><br>\n发布了几个有意思的功能，相信可以帮助到你。</p>\n<p>1、<strong>自然语言生成命令</strong>：输入 <code># &#x3C;描述></code> 后按回车，自动生成的命令注入回提示符<br>\n2、<strong>Option+Click 移动光标</strong>：点击当前行任意位置即可将光标移动到该位置<br>\n3、 <strong>窗口置顶</strong>：通过 Window 菜单将窗口固定在最前，随时可切换开关</p>\n<p><video width=\"800px\" preload=\"\" loop data-autoplay=\"\" controls muted><source src=\"https://gw.alipayobjects.com/os/k/ke/kaku.mp4\" type=\"video/mp4\"></video></p>\n<h2 id=\"潮流工具\">潮流工具</h2>\n<p><strong>Claude HUD 这个工具帮你看到你的 Claude 使用量</strong><br>\n<a href=\"https://github.com/jarrodwatts/claude-hud\">https://github.com/jarrodwatts/claude-hud</a><br>\n功能有点儿过于全了，我简单配置后，支持了如下的效果，使用起来不错，有兴趣可以试试，不过代码感觉有点复杂，有空我会优化一下这个功能，极简就好。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/bc/l4yelI.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/bc/l4yelI.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/bc/l4yelI.png\" loading=\"lazy\" data-pswp-width=\"2440\" data-pswp-height=\"884\" style=\"aspect-ratio: 2.7602;\" width=\"800\"></p>\n<p><strong>一个很极简 AI 友好的 markdown 文档生成器</strong><br>\n<a href=\"https://docmd.io\">https://docmd.io</a><br>\n偶然发现了 docmd，给开发者用的极简零配置文档生成器，可以把 Markdown 转换为快速、清爽的静态文档，具备自动路由、内置搜索和 AI 方便使用的上下文能力。<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/rx/u4S6HX.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/rx/u4S6HX.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/rx/u4S6HX.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1080\" style=\"aspect-ratio: 1.7778;\" width=\"800\"></p>\n<p><strong>买了一个 140W 的充电器好用的</strong><br>\n买了一个 140W 的充电器，大小合适，终于从之前 45W 解脱了，有 4 个口，这样出门就方便多了，这个显示屏显示功率我很喜欢了。</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"33%\">\n           <img src=\"https://gw.alipayobjects.com/zos/k/2s/4R4qMs.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/2s/4R4qMs.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/2s/4R4qMs.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"300\">\n        </td>\n        <td width=\"33%\">\n           <img src=\"https://gw.alipayobjects.com/zos/k/k5/XWLwvO.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/k5/XWLwvO.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/k5/XWLwvO.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"300\">\n        </td>\n        <td width=\"33%\">\n           <img src=\"https://gw.alipayobjects.com/zos/k/vr/2oXfRE.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/vr/2oXfRE.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/vr/2oXfRE.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"300\">\n        </td>\n    </tr>\n</tbody></table>\n<h2 id=\"随便写写\">随便写写</h2>\n<p><strong>想和大伙聊聊，在 AI 时代我是如何深入学习一个技术领域的。</strong></p>\n<p>之前没有 AI 之前更多是看书、翻这个领域有名的国内外人的所有博客，然后摘抄记录到笔记本，这种速度挺慢，但是很有学习的乐趣，比如当时学习 WebGL 就是这种感觉，可能学懂一个东西差不多要半年空闲时间，慢但快乐。</p>\n<p>现在有了 AI 之后，其实我很讨厌网上那种 3 分钟教你看完百年孤独，也讨厌一切短剧和倍速看电视剧的方式，更多还是挑好的看，吃好一点。</p>\n<p>不过最近写你不知道的 Claude Code 和 Agent 系列，除了自己懂的部分外，其实还有大量不太清楚的领域，好在之前收藏了不少文章，刚好借助这一块清库存，全部搞懂输出出去，一直认为，很多时候，不在于看了多少东西，听了多少东西，输入了多少东西，其实用处不大，更加看重你输出了多少东西，这个才是你自己的。</p>\n<p>然后我上上周启动了一个深坑挑战自己，研究大模型的训练流程，确保非专业的人也听得懂，探索了 2 周，刚好这个经验可以分享给大伙，当然成文也差不多好了，最近会发出。</p>\n<p>我会把这个学习过程当做写代码一样的组织，第一步收集高质量的资料，比如与之相关的近几年的精品论文，各大模型厂商发布的关键模型的博客，X 上模型负责人发表的一些文章，以及斯坦福等高校的近两年关于这一块的课程学习，还有经典的手搓一个大模型的代码仓库等等，这些都是我的一个资料来源过程，我会借助工具自动化全部下载、转 md、清洗，梳理，弄好结构化分门别类到我这次研究的仓库。</p>\n<p>然后对于自己看得懂的内容就全部看一遍，把不好的删掉，好的留下，对于看不懂的内容，直接借助 Claude 帮我的理解，更复杂一点的直接翻译成中文去阅读，对于代码本地可以跑的就跑起来，不能跑的那种就去看结构，总之会有一个大概的认识和知晓技术原理，这个阶段可以去掉原有一半可能没有用的内容。</p>\n<p>到了这个阶段，其实你对这个领域有一个大概的认知了，就可以给这篇文章开始写一个大纲，以及大纲应该结合的来源内容，这里均可以用 markdown 很多表达，你要讲什么，或者说你想讲什么更想让读者知道，一定一定，文章是写给你给给看的人看的，需要知晓对方的认知水平，和汇报其实差不多。</p>\n<p>然后接下来就是苦力活加之前内容的复习过程，和大学时候考试前复习很像，把每一章的内容填充完整，这样下来，你会得到一篇非常长而且有点啰嗦的文章。</p>\n<p>这个时候 AI 就可以帮太忙，你可以让他帮你不改变你原有的内容意思你的语气的情况下，帮我去掉无用的啰嗦内容，以及连贯不到位的内容，或者是这一块缺少的内容，还需要补充什么知识的地方，借助 AI 继续去完善补充，这里又可以学到很多原来遗漏的东西。</p>\n<p>最后整理好以后，可以继续自己读一遍，而非让 AI 读一遍，这里 AI 只是工具，千万不要把你的脑袋被 AI 代替了，这就没有啥意思来，自己读的过程中可以对文章继续修改调优，这里和写代码又非常像了，自测那种感觉，修复问题修问题，最后读了 2 遍以后，基本感觉完美了，然后就可以发出来给大伙看看。</p>\n<p>有小伙伴肯定是担心自己写的东西没有人看，就不太喜欢发出来，或者说就不写了，其实只要你的内容有意义，自然就有读者，而非是你偷懒的理由。</p>\n<p>花 10min 写完这个碎碎念，结束，欢迎交流你是如何学习一个新领域的，下面视频就是我后面要发的那篇你不知道的大模型训练文章的学习仓库，挺有意思，就录了一个视频给大伙看看我的工业化学习方式。</p>\n<p><video width=\"800px\" preload=\"\" controls muted><source src=\"https://cdn.tw93.fun/blog/pic/llm45.mp4\" type=\"video/mp4\"></video></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit/zh\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ 支持作者</a>\n    </p>"}]},"en":{"count":12,"issues":[{"title":"274. Boundless Sky","link":"https://weekly.tw93.fun/en/posts/274/","pubDate":"Mon, 20 Jul 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27453.jpg\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27453.jpg\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27453.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover was shot one evening in Shenzhen, just after the rain, when the sky was especially clear. The building is called Haikuo Tiankong Yaju, and you could even see Baidu in the distance.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>wong2 made a handy tracker for Codex usage limit resets</strong><br>\n<a href=\"https://codex-resets.com/\">https://codex-resets.com/</a><br>\nPretty funny. Codex usage limits seem to reset whenever @thsottiaux announces one on X, almost like he has a button in his hand. There is no fixed schedule and no changelog, so this tool watches his posts and lets you know when a reset happens. Haha. Lately I haven’t been able to use up my Codex allowance at all.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/9zFep508.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/9zFep508.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/9zFep508.png\" loading=\"lazy\" data-pswp-width=\"3164\" data-pswp-height=\"2228\" style=\"aspect-ratio: 1.4201;\" width=\"800\"></p>\n<p><strong>Trees: a beautiful file tree rendering library</strong><br>\n<a href=\"https://trees.software/\">https://trees.software/</a><br>\nThe file tree rendering looks really good. I like simple, beautiful things like this. If you’re building a file tree for an editor sidebar, this is worth studying.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/lEQhIy33.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/lEQhIy33.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/lEQhIy33.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>Bark: an open-source tool for pushing messages to your own iPhone</strong><br>\n<a href=\"https://github.com/Finb/Bark\">https://github.com/Finb/Bark</a><br>\nAn open-source and free notification app built on APNs, so it doesn’t add extra battery drain. It also supports advanced iOS notification features including grouping, custom icons and sounds, time-sensitive notifications, critical alerts, and more.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/QMnaYL10.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/QMnaYL10.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/QMnaYL10.png\" loading=\"lazy\" data-pswp-width=\"2430\" data-pswp-height=\"1934\" style=\"aspect-ratio: 1.2565;\" width=\"800\"></p>\n<p><strong>WhatCable: find out what your USB-C cable can actually do</strong><br>\n<a href=\"https://www.whatcable.uk/\">https://www.whatcable.uk/</a><br>\nThis tool clearly tells you what a USB-C cable can do, including cable speed, charging limits, and connected devices. You can name each cable and have it track real-world performance over time, making it easier to see why a cable charges slowly or can’t drive a display. Nice idea, though fairly niche.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/cQ7ITN19.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/cQ7ITN19.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/cQ7ITN19.png\" loading=\"lazy\" data-pswp-width=\"3022\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.2634;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Phistory: see what changed in the system prompts of popular AI coding tools</strong><br>\n<a href=\"https://phistory.cc/?agent=claude-code&#x26;from=2.1.141&#x26;to=2.1.215\">https://phistory.cc/?agent=claude-code&#x26;from=2.1.141&#x26;to=2.1.215</a><br>\nGreat for anyone curious about how AI coding tools evolve. The site uses diffs to make each change easy to see.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/pgmjjD23.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/pgmjjD23.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/pgmjjD23.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>A site collecting beautifully designed Mac apps</strong><br>\n<a href=\"https://macapp.supply/\">https://macapp.supply/</a><br>\nThe site itself is nicely designed, and the Mac apps it features all feel polished. There’s a lot here for me to learn from.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/5SlEcC34.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/5SlEcC34.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/5SlEcC34.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>How Anthropic uses Claude Code for large-scale code migrations</strong><br>\n<a href=\"https://claude.com/blog/ai-code-migration\">https://claude.com/blog/ai-code-migration</a><br>\nAn official Claude blog post well worth reading. It covers Bun’s million-line migration from Zig to Rust and offers some useful lessons for large companies moving old, sprawling repositories.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/QZiACS37.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/QZiACS37.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/QZiACS37.png\" loading=\"lazy\" data-pswp-width=\"1109\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.5415;\" width=\"800\"></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"273. A Pile of Chairs","link":"https://weekly.tw93.fun/en/posts/273/","pubDate":"Mon, 13 Jul 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27342.JPG\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27342.JPG\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27342.JPG\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5496\" data-pswp-height=\"3911\" style=\"aspect-ratio: 1.4053;\" width=\"800\">\n<p><small>The cover was shot outside a shop in Tianmuli, where a pile of chairs sat with a line written next to them: use objects as the medium, embrace tradition. Compared with the AI world I still like the real world more, and I long for real feelings more too.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>A subway background sound I’ve been loving lately</strong><br>\n<a href=\"https://www.yamanote.fun/\">https://www.yamanote.fun/</a><br>\nThe author blends the Yamanote Line’s station melodies, announcements, door chimes and train sounds into one complete listening experience of Tokyo’s most beloved loop line. It’s really interesting, and I love having it as background music. It feels exactly like when I was riding it.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/mUuuQu23.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/mUuuQu23.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/mUuuQu23.png\" loading=\"lazy\" data-pswp-width=\"3106\" data-pswp-height=\"1948\" style=\"aspect-ratio: 1.5945;\" width=\"800\"></p>\n<p><strong>Kill AI slop</strong><br>\n<a href=\"https://killaislop.com/\">https://killaislop.com/</a><br>\nHaha, I also really dislike those ugly things that AI churns out. I found this site made by yetone, which is quite fun. It lays out a lot of the ugly cases for you, and it also gives you a skill to help you clean things up. I used it to check over everything I’ve made, and thankfully nothing got flagged.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/s9fJmu55.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/s9fJmu55.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/s9fJmu55.png\" loading=\"lazy\" data-pswp-width=\"3022\" data-pswp-height=\"2200\" style=\"aspect-ratio: 1.3736;\" width=\"800\"></p>\n<p><strong>AppPorts: move your big Mac apps to external storage</strong><br>\n<a href=\"https://appports.shimoko.com/zh\">https://appports.shimoko.com/zh</a><br>\nThis tool suits friends who run their Mac with an external drive, so you might want to give it a try.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/sdXGLY21.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/sdXGLY21.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/sdXGLY21.png\" loading=\"lazy\" data-pswp-width=\"3130\" data-pswp-height=\"2250\" style=\"aspect-ratio: 1.3911;\" width=\"800\"></p>\n<p><strong>One command to find out which models your hardware can run</strong><br>\n<a href=\"https://github.com/AlexsJones/llmfit\">https://github.com/AlexsJones/llmfit</a><br>\nA terminal tool that matches LLM models to the right specs based on your system’s RAM, CPU and GPU. It detects your hardware automatically and scores each model across four dimensions, quality, speed, fit and context, telling you which ones will run smoothly on your machine.<br>\n<img src=\"https://cdn.tw93.fun/uPic/demo19.gif\" width=\"800\"></p>\n<p><strong>Some nice loading effects</strong><br>\n<a href=\"https://dotmatrix.zzzzshawn.cloud/\">https://dotmatrix.zzzzshawn.cloud/</a><br>\nAlthough in the AI era this sort of thing has an old-school feel to it, it’s still worth looking at more of these aesthetic-leaning things, which teach you a bit more about design.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/swLiUX17.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/swLiUX17.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/swLiUX17.png\" loading=\"lazy\" data-pswp-width=\"3346\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.3988;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Spent a day rebuilding Mole’s website</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nI’m not pitching the product, I’d rather talk with you all about how I think about this site’s style: quiet, undisturbing, safe, something that feels trustworthy. I then spent a day rebuilding it, and I have to say I prefer Fable 5’s kind of clever, resourceful AI. Feel free to take a look at this video. Haha, the background music is my favorite Ryuichi Sakamoto piano piece, “Merry Christmas, Mr. Lawrence”.<br>\n<video width=\"800px\" preload=\"metadata\" loop controls><source src=\"https://cdn.tw93.fun/uPic/new-mole12.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Git commands you can have your AI run before reading a repo</strong><br>\n<a href=\"https://piechowski.io/post/git-commands-before-reading-code/\">https://piechowski.io/post/git-commands-before-reading-code/</a><br>\nThe original title is The Git Commands I Run Before Reading Any Code. It lists a few commands you can try running, and you’ll come across plenty of interesting findings. That said, I’d rather recommend letting your AI learn them and then read your repo, which is more fun.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/mLwoZF15.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/mLwoZF15.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/mLwoZF15.png\" loading=\"lazy\" data-pswp-width=\"1600\" data-pswp-height=\"811\" style=\"aspect-ratio: 1.9729;\" width=\"800\"></p>\n<p><strong>Getting started with loops</strong><br>\n<a href=\"https://x.com/ClaudeDevs/status/2074208949205881033\">https://x.com/ClaudeDevs/status/2074208949205881033</a><br>\nA piece on Loop from the official ClaudeDevs X account. It’s well written and worth a read, and it’ll help you better understand this concept in AI.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/c0CBq939.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/c0CBq939.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/c0CBq939.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"819\" style=\"aspect-ratio: 2.5006;\" width=\"800\"></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"272. Endless Lotus","link":"https://weekly.tw93.fun/en/posts/272/","pubDate":"Mon, 06 Jul 2026 00:00:00 GMT","description":"<p><video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/uPic/hehua54.mp4\" type=\"video/mp4\" poster=\"https://cdn.tw93.fun/uPic/27209.png\"></video></p>\n<p><small>The cover was shot over the weekend when I went to Xixi Wetland to fly the drone over the lotus flowers. It looked wonderful and was really stunning. Humans look so small beneath nature, and the drone has helped me see so many great things.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Bought a Brother T735DW printer just for this</strong><br>\nTo test Kami’s print layout, I specially bought a Brother T735DW printer. The build quality is really nice and I quite like it, so if you need to buy a printer you might want to look at this brand. The Kami-formatted output prints beautifully too. Of course, I pushed out an update to make Kami support printers better, so you’re all welcome to try it. PS: this was actually the first time I’d ever heard of Brother, but a lot of the old-timers tell me it’s a well-known name.<br>\n<video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/uPic/kami07.MP4\" type=\"video/mp4\"></video></p>\n<p><strong>This wood-chopping simulator site is kind of fun</strong><br>\n<a href=\"https://screen.toys/firewood/\">https://screen.toys/firewood/</a><br>\nThere’s a wood-chopping visualization site that’s pretty fun. It gives you a really realistic sense of chopping firewood, so when you’re tired from AI coding you can give it a go.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/8dIM0035.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/8dIM0035.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/8dIM0035.png\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"3322\" data-pswp-height=\"1988\" style=\"aspect-ratio: 1.6710;\" width=\"800\"></p>\n<p><strong>Glaze: a nice new take on building and shipping Mac apps</strong><br>\n<a href=\"https://www.glaze.app/\">https://www.glaze.app/</a><br>\nIt basically lets you vibe out your own desktop app by talking, to solve your own problems. It runs on your Mac, works offline, and you can distribute it too. It has a bit of a next-generation Mac App Store feel, worth a play.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/YgphuJ15.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/YgphuJ15.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/YgphuJ15.png\" loading=\"lazy\" data-pswp-width=\"3424\" data-pswp-height=\"2038\" style=\"aspect-ratio: 1.6801;\" width=\"800\"></p>\n<p><strong>sensory-ui: what if your component library had sound effects?</strong><br>\n<a href=\"https://www.sensory-ui.com/#showcase\">https://www.sensory-ui.com/#showcase</a><br>\nWhat would it feel like if your component library had sound effects? This is really fun and worth playing with, giving your shadcn/ui some audio.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/qs75CX03.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/qs75CX03.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/qs75CX03.png\" loading=\"lazy\" data-pswp-width=\"3314\" data-pswp-height=\"2290\" style=\"aspect-ratio: 1.4472;\" width=\"800\"></p>\n<p><strong>Playwrite Tanzania: a lot like Apple’s handwriting font</strong><br>\n<a href=\"https://fonts.google.com/specimen/Playwrite+TZ?preview.script=Latn\">https://fonts.google.com/specimen/Playwrite+TZ?preview.script=Latn</a><br>\nThis font really looks a lot like Apple’s boot-up “hello” handwriting style. It’s beautiful and pretty much spot on, so give it a try if you need it.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/6s4ew716.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/6s4ew716.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/6s4ew716.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>This book-showcase effect is so great</strong><br>\n<a href=\"https://press.stripe.com/\">https://press.stripe.com/</a><br>\nTry opening it in a desktop web browser. The animations feel really smooth, love it.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/GYgAl915.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/GYgAl915.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/GYgAl915.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<p><strong>Moderate intervention: tuning AI’s presence by user intent</strong><br>\n<a href=\"https://mp.weixin.qq.com/s/063MFQz-2Jkktdhpwf-jIw?scene=1\">https://mp.weixin.qq.com/s/063MFQz-2Jkktdhpwf-jIw?scene=1</a><br>\nPlenty of AI products have a problem with getting the degree of intervention wrong: pop-ups keep interrupting what you’re doing, and when idle they waste compute. How do you get AI to show up when needed and disappear when idle?<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/4YjJGQ44.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/4YjJGQ44.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/4YjJGQ44.png\" loading=\"lazy\" data-pswp-width=\"1080\" data-pswp-height=\"789\" style=\"aspect-ratio: 1.3688;\" width=\"800\"></p>\n<p><strong>The visualization for this college-entrance-exam application simulator</strong><br>\n<a href=\"https://agentsfeed.org/app-demo/gaokao/index.html\">https://agentsfeed.org/app-demo/gaokao/index.html</a><br>\nThis works really well, thanks to the person who made it. If a friend of yours needs to fill out their college applications, you can help them take a look together. Picking the right city and the right university really matters.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/jR3BJV07.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/jR3BJV07.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/jR3BJV07.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<p><strong>Maybe you should go learn something</strong><br>\n<a href=\"https://www.marginalia.nu/log/a_135_learn/\">https://www.marginalia.nu/log/a_135_learn/</a><br>\nThis article is actually useful. For most of us engineers, it’s worth using our spare time to learn something from other fields, which can be really interesting.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"271. Spiritual Home","link":"https://weekly.tw93.fun/en/posts/271/","pubDate":"Mon, 29 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27158.jpg\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27158.jpg\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27158.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"4826\" data-pswp-height=\"3619\" style=\"aspect-ratio: 1.3335;\" width=\"800\">\n<p><small>The cover photo was taken over the weekend when I went to my spiritual home, Wang Xiaobo’s bookstore, and sat there for a whole morning, reading “A Maverick Pig” that I’ve read several times, and grabbed a cup of Silver Age coffee on the side, which was really nice. Big thanks to the friend who pointed out that the past few issues of the weekly were a bit shallow, I’d been too absorbed in AI Coding. I take the criticism, and from now on I’ll keep the content more interesting, and strive to make it a spiritual home for everyone.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>claude-tap: a local proxy and trace viewer for AI coding agents</strong><br>\n<a href=\"https://github.com/liaohch3/claude-tap\">https://github.com/liaohch3/claude-tap</a><br>\nLaunch your CLI through it, or have it listen to the local app transcript, and you can see the real API traffic and agent context: system prompt, conversation history, tool schemas, tool calls, streaming responses, token usage, and request diffs. Worth a try for anyone who wants to dig into how it works.<br>\n<img src=\"https://cdn.tw93.fun/uPic/demo_zh37.gif\" width=\"800\"></p>\n<p><strong>VidBee: a nice tool for downloading videos from all kinds of sites</strong><br>\n<a href=\"https://github.com/nexmoe/VidBee\">https://github.com/nexmoe/VidBee</a><br>\nIt uses yt-dlp as its underlying engine, so it can download videos from almost any site in the world, including YouTube, TikTok, Instagram, Twitter, and more. Give it a try if you need it, but mind the copyright.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/S3yAup40.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/S3yAup40.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/S3yAup40.png\" loading=\"lazy\" data-pswp-width=\"3840\" data-pswp-height=\"2072\" style=\"aspect-ratio: 1.8533;\" width=\"800\"></p>\n<p><strong>Witr: helps you see why something is running</strong><br>\n<a href=\"https://github.com/pranshuparmar/witr\">https://github.com/pranshuparmar/witr</a><br>\nWhen something is running on your system, whether it’s a process, a service, or something bound to a port, there’s always a reason. That reason is often indirect, non-obvious, or spread across several layers. Plenty of other tools can tell you what is running; this one does a great job of telling you “why it’s running”, which is pretty interesting.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/TPgQHi39.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/TPgQHi39.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/TPgQHi39.png\" loading=\"lazy\" data-pswp-width=\"1232\" data-pswp-height=\"693\" style=\"aspect-ratio: 1.7778;\" width=\"800\"></p>\n<p><strong>Dinky: a file compression tool for Mac</strong><br>\n<a href=\"https://dinkyfiles.com/\">https://dinkyfiles.com/</a><br>\nIt’s quite nicely made, just drag your files in. It supports compressing images, videos, and PDF files, so give it a try if you need it.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/FFAHWB46.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/FFAHWB46.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/FFAHWB46.png\" loading=\"lazy\" data-pswp-width=\"3410\" data-pswp-height=\"2496\" style=\"aspect-ratio: 1.3662;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Ranking of LLM cache hit rates</strong><br>\n<a href=\"https://dirac.run/posts/cache-hit-rates-agents\">https://dirac.run/posts/cache-hit-rates-agents</a><br>\nKind of interesting. One reason domestic models keep their high cost-performance, along with the careful penny-pinching of our engineers.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/KyJWeN09.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/KyJWeN09.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/KyJWeN09.png\" loading=\"lazy\" data-pswp-width=\"2114\" data-pswp-height=\"2274\" style=\"aspect-ratio: 0.9296;\" width=\"800\"></p>\n<p><strong>Meituan’s AIGC tech innovation and practice for poster generation</strong><br>\n<a href=\"https://tech.meituan.com/2026/06/18/AIGC-poster.html\">https://tech.meituan.com/2026/06/18/AIGC-poster.html</a><br>\nMeituan is actually quite meticulous about how they build things and takes the time to distill methodologies. That said, these days I lean more toward using a more powerful model to solve problems in less time.</p>\n<p><strong>A fairly interesting record</strong><br>\nIt started with an email I received from a Russian teenager, along with a record of our back-and-forth replies, anonymized and then AI-generated. Russia is having a rough time right now, with even international bank cards mostly cut off. I’ve always thought of my products as global, with no political factors, letting everyone enjoy a bit of the fun of engineer tools, which is honestly pretty neat.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/1image49.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/1image49.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/1image49.png\" loading=\"lazy\" data-pswp-width=\"1024\" data-pswp-height=\"1536\" style=\"aspect-ratio: 0.6667;\" width=\"800\"></p>\n<h2 id=\"just-writing\">Just Writing</h2>\n<h3 id=\"walking-ahead-or-being-pushed-along\">Walking ahead, or being pushed along</h3>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/Group26.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/Group26.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/Group26.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\">\n<p>Lately I’ve had a feeling: engineers who have already transformed into AI engineers, versus those in traditional roles at traditional big companies who haven’t yet realized they need to transform, give off a vibe like the software engineers at the dawn of the internet versus the engineers working in the China Mobile / Unicom / Telecom direction at the same time. It’s also a lot like the difference between people using smartphones and people using feature phones around 2011.</p>\n<p>Before, it just felt like a difference in choices. Now it feels like a slowly-boiling-frog situation, and the water has actually gotten a bit scalding.<br>\nEngineers walking ahead of where technology is heading will have far more room to maneuver, while those being pushed along by the tech direction or the organization will have a rough time.</p>\n<p>Looking back through some of my pretty shallow past sharing, I was fairly lucky that after 2019 I basically stopped wanting to be a traditional role-based engineer. Back then I wanted to be more of an engineer who solves all kinds of problems, not limited to the role itself, dabbling in design, product, frontend and backend, and ops, more about solving a product’s problems.</p>\n<p>Looking back now, it’s a good thing I kept at it, otherwise reaching this stage would honestly be pretty rough.<br>\nHonestly, working that way back then wasn’t all that well-liked, it looked unfocused, and I could only rely on the things I did myself to slowly help the engineers around me grow. But at the time I really didn’t overthink it, I just felt that solving problems was way more interesting than guarding my own job, and that I could explore a ton of interesting things, without expecting immediate results, just letting things happen in their own time. I never imagined that, a few years later when AI arrived, it would become a small little moat for me in this wildly tug-of-war world.</p>\n<p>The content of the articles below is pretty disconnected from the rapid development of the current AI era. You can treat them as relics from ancient times, then put yourself back in that era, which should be fairly interesting. You can even read them against the timeline of AI development, which happens to let you see some of my own thinking and changes on the technical side.</p>\n<p>2019-11-25 <a href=\"https://tw93.fun/2019-11-25/product-and-github.html\">Product and Open Source Sharing</a><br>\n2020-03-18 <a href=\"https://tw93.fun/2020-03-18/how-to-do-design.html\">Interaction Design for Admin Dashboards</a><br>\n2022-07-01 <a href=\"https://tw93.fun/2022-07-01/gou.html\">How to Hunker Down and Get Stronger in a Tough Climate</a><br>\n2022-07-29 <a href=\"https://tw93.fun/2022-07-29/pd-code.html\">How to Be a Product Engineer?</a><br>\n2022-12-09 <a href=\"https://tw93.fun/2022-12-09/talk.html\">How Engineers Can Get Things Done Clearly</a><br>\n2023-10-25 <a href=\"https://tw93.fun/2023-10-25/new-fe.html\">The Dilemma and Breakthrough of Next-Gen Frontend</a><br>\n2024-01-12 <a href=\"https://tw93.fun/2024-01-12/open.html\">My Open Source Growth Journey</a><br>\n2024-09-09 <a href=\"https://tw93.fun/2024-09-09/future.html\">Talking About Future Tech Trends</a><br>\n2025-07-17 <a href=\"https://tw93.fun/2025-07-17/money.html\">How Engineers Can Invest Better</a><br>\n2025-08-17 <a href=\"https://tw93.fun/2025-08-17/ai-coding.html\">The Impact of AI Coding on Programmers</a><br>\n2025-12-22 <a href=\"https://tw93.fun/2025-12-22/engineer.html\">The Breakthrough and Growth of Next-Gen Engineers</a><br>\n2026-03-30 <a href=\"https://tw93.fun/2026-03-30/kill.html\">Kill the Hand-Coding Programmer</a></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"270. Qiao Cun","link":"https://weekly.tw93.fun/en/posts/270/","pubDate":"Mon, 15 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/27034.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/27034.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/27034.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5691\" data-pswp-height=\"4268\" style=\"aspect-ratio: 1.3334;\" width=\"800\">\n<p><small>The cover photo was taken over the weekend when I went to Qiao Cun for a meal, just a casual snap. Their food is great, the avocado and salmon are really tasty. Whenever a friend visits Hangzhou, I usually take them here or to Zhang’s Mansion.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"new-recommendation\">New Recommendation</h2>\n<p><strong>If a friend of yours needs to update their resume soon, you have to recommend Kami to them</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\nIf a friend of yours needs to update their resume soon, you have to recommend Kami to them. I tuned a dedicated version carefully, so Kami alone makes writing a resume genuinely handy, good-looking, and clear. Have them get their raw source material ready in Markdown, then tell the AI <code>/kami help me produce a resume</code>, tweak it once or twice, and it’s pretty much done. It’s not just layout, it also helps optimize and organize your resume content, looking at the talent profile from the perspective of a technical final-round interviewer.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/9MamaP33.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/9MamaP33.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/9MamaP33.png\" loading=\"lazy\" data-pswp-width=\"1241\" data-pswp-height=\"1754\" style=\"aspect-ratio: 0.7075;\" width=\"800\"></p>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>Mole’s desktop client 1.7.2 is here</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nThis release updates a ton of things, including support for users with accessibility needs. Status and the menu bar are faster and more stable, Software, uninstall, and updates are more complete, Clean is more thorough while still keeping review-first, the privacy check is more accurate, quieter, and smarter, Analyze, Doctor, and Clean Screen are more stable too, and there are quite a few optimizations for fan control on Apple silicon.</p>\n<p>It’s been exactly one month since Mole’s Mac version launched, written in my spare time, and the numbers are kind of fun. In total I wrote 110,000 lines of Swift, including 36,000 lines of test code and 1,983 unit tests, shipped 8 releases, added 145 new features, and supported 9 languages. It’s the last day of the early-bird price and MOLEWEEKLY still works, so anyone interested is welcome to give it a try. More surprises to come.</p>\n<p><video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mole318.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Kaku has finally updated to version 0.12 as well</strong><br>\nKaku even has its own little official site now <a href=\"https://kaku.fun/\">https://kaku.fun/</a>, go take a look. This update brings quite a few things: it now restores session history after you reopen a window, supports AI features you can use directly once logged in with the Codex backend, opens PDFs, images, audio and video, archives, and Office documents with the system default app, and when all panels are sitting at the shell prompt, Cmd+Q quits directly, plus other fun features. Go check out the Release.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/8fKF3s43.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/8fKF3s43.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/8fKF3s43.png\" loading=\"lazy\" data-pswp-width=\"3116\" data-pswp-height=\"1540\" style=\"aspect-ratio: 2.0234;\" width=\"800\"></p>\n<p><strong>Some fun recent updates to Pake</strong><br>\n<a href=\"http://github.com/tw93/Pake\">http://github.com/tw93/Pake</a><br>\nPake packages a web page into a lightweight desktop app with one command, supporting macOS, Windows, and Linux. Recently it added cmd+f content search, right-click download support, dots in desktop app names, clearer error messages when AppImage builds fail on Linux, a pnpm 11 compatibility fix, and more.<br>\n<img src=\"https://cdn.tw93.fun/blog/pic/pake128.gif\" width=\"800\"></p>\n<h2 id=\"just-chatting\">Just Chatting</h2>\n<p><strong>I’m not an influencer, not a content creator, not a KOL, so what am I</strong><br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/jDQIRZ22.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/jDQIRZ22.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/jDQIRZ22.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1080\" style=\"aspect-ratio: 1.7778;\" width=\"800\"><br>\nMy Twitter earnings are only a bit over 100 dollars each time, probably far less than most blue checkmarks, even lower than that friend who got burned twice by Tauri, which is kind of funny. Why so little? Haha, I should reflect on it, and along the way share my failure experience with everyone.</p>\n<p>First off, I’m not an influencer, not a content creator, not a KOL, nothing really, just an ordinary engineer who writes a bit of hobby code. Twitter, to me, is a way to sync the changelogs of my open-source products to everyone, and to share daily life posts about where I went, what I ate, what I watched. There’s no traffic pressure at all, and no pressure to turn traffic into money, so if the earnings are small, so be it. That actually happens to make this an account I like more and more.</p>\n<p>Content creators usually make money by taking ads, and AI companies tend to pay quite well, sharing lots of altruistic products to get more people to follow, earning their due while being helpful, which is honestly pretty nice too. But there’s usually traffic pressure: you have to keep chasing hot topics and obsessing over headlines, and the longer you do it the better you get. I just feel that’s too exhausting, and I can’t pull it off.</p>\n<p>I actually took some ads before, but I haven’t for a long time now. I remember an agency once contacted me and said advertisers don’t like an account like mine, they prefer the kind that constantly posts AI hot takes. When I heard that, I was actually happy, haha. My account hasn’t turned into the high-quality traffic account they see it as, so I guess I’m keeping things pretty well.</p>\n<p>I kept wondering, if I had to describe my account in one word, what would it be? I thought about it for a long time, and finally figured it out today, which is why this casual article exists: my account should be a continuously iterated “Tw93 Engineer Magazine”.</p>\n<p>This magazine has roughly these few columns: Product Notes, recording the updates and interesting ideas behind products like Pake, Mole, and Kaku; a Tech Column, where I write about technical thoughts, thoughts on AI, and learning topics in new tech areas; Good Stuff, all tools I actually use myself, none of the paid-promotion kind; and a Just Looking Around module where you can see my daily life, what I eat, play, and watch.</p>\n<p>Every engineer can flip through it casually, find something they’re interested in, and dive in to play with it. Friends who want to learn can also read through my long articles one by one, then head to my blog and the trending weekly to find more interesting past content.</p>\n<p>This magazine has almost no ads, and won’t say things against my conscience just to promote my own products. Updates are pretty casual too, usually at most two posts a day, just one when I’m too busy, posting whatever comes to mind. At the same time this magazine is a continuously iterating product: through it you can see how I change year by year, like a tech friend who keeps you company, and you can also reach the magazine’s editor via DM.</p>\n<p>The magazine is slowly growing its own side business, Mole. It sells not because the product is so great, but more because of people’s trust in the magazine itself. This made me realize that low-traffic content doesn’t mean it has no value. Not many people read it, but the trust runs deep, and that can actually bring some unexpected conversions, which is pretty magical. It’s just run rather casually, but fairly consistently.</p>\n<p>So what am I really running? It should just be this magazine called Tw93. Whatever kind of person I am, I write that kind of content, and naturally I’ll meet that kind of reader, with no need to worry about what to write. In the end, what I most want to do is let the engineers reading this magazine and me learn from and grow with each other, but without the anxiety.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"269. Tianmu Scenery","link":"https://weekly.tw93.fun/en/posts/269/","pubDate":"Sun, 07 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_151828.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_151828.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_151828.JPG\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo was taken at Tianmu Scenery on Mount Tianmu in Lin’an, where I went the weekend before last. A really nice place, super cool in summer with plenty of fresh air. The Liuchun House up the mountain is delicious, highly recommend a visit, way fewer people than Jiuxi Yanshu.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"new-article\">New Article</h2>\n<p><strong>You Don’t Know Embodied AI: From a Tiny Robot Dog to Optimus</strong><br>\n<a href=\"https://tw93.fun/en/2026-06-07/robot.html\">https://tw93.fun/en/2026-06-07/robot.html</a><br>\nNew article is here. Back in April I assembled a little robot dog. I posted a few things about the build on Twitter, you’ve probably seen them. Then I wrote on and off for almost 2 months and finally finished it, the longest article I’ve ever written. Give it a read.<br>\n<img src=\"https://tw93.fun/images/2026/robot/00-perception-space-action-torque.png\" width=\"800\"></p>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>Mole’s desktop client 1.6.2 is here</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nI’m working to round out Mole desktop’s nice features as fast as I can. Just shipped 1.6.2, go update. If you haven’t bought it yet and are interested, you’re welcome to grab it. The price is expected to return to normal after June 15.</p>\n<ol>\n<li>Keep Screen On (new): keep your Mac awake from the menu bar, with selectable durations. Restoring on launch now completes quietly, no more sudden admin-permission prompts.</li>\n<li>Privacy Check (new): the menu bar popover shows camera or microphone usage status and sends a local notification, so you can see it without opening the main window.</li>\n<li>Clean Screen (new): switch the screen to a solid color to make wiping the screen and keyboard easier. Press Escape to exit, and you can enable input lock too.</li>\n<li>Software updates cover more apps: Software now checks the Mac App Store, Sparkle, Electron, Homebrew cask/formula, Homebrew catalog, and GitHub Releases, with clearer progress.</li>\n<li>Uninstall finds more leftovers: leftover detection now covers receipts, Launch Items, Group Containers, Darwin temp caches, and more App Support traces.</li>\n<li>Clean is more useful while staying careful: Mole finds large directories like build, dist, target, and node_modules in your projects, but leaves them for you to review by default.</li>\n<li>Analyze scans faster: disk analysis adds concurrent computation, cache reuse, and subdirectory prewarming, so large directories open faster.</li>\n</ol>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/2QNwTk40.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/2QNwTk40.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/2QNwTk40.png\" loading=\"lazy\" data-pswp-width=\"4096\" data-pswp-height=\"2027\" style=\"aspect-ratio: 2.0207;\" width=\"800\">\n<p><strong>Kami, where good content deserves good layout, has shipped a bunch of updates</strong><br>\n<a href=\"http://kami.tw93.fun\">http://kami.tw93.fun</a></p>\n<ol>\n<li>Added a landing-page module. The Mole site and Kami’s own site you’ve seen are actually generated by Kami bootstrapping itself. It’s great for your product intro page, and it even thinks through Geo, Sitemap, and Vercel deployment for you, so you can build a site worry-free.</li>\n<li>Finally supports Marp slide mode, back to the days of writing slides in Markdown. One md file exports to HTML, PDF, or PPTX via marp-cli. The theme ships with Kami’s colors and fonts, works out of the box, and stays lightweight.</li>\n<li>Turns out there are quite a few Korean users, so on top of Simplified Chinese, Traditional Chinese, English, and Japanese, Kami now has fine-grained Korean support and multi-template designs. If you’re a friend from Korea, you’re very welcome to try it and send me feedback.</li>\n<li>The one-pager module, portfolio, and slides now all support importing your brand logo and other brand cues, so Kami blends right into your brand style.</li>\n<li>Since we’re engineers, Kami also does automatic syntax highlighting for code, coloring it for you at build time with no external CSS needed.</li>\n<li>One more fun thing: although Kami is also a Skill, it’s actually 70% code rather than Markdown. If you want to learn how to write a Skill that’s obedient and useful by default, you’re welcome to read the code, it might help <a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a></li>\n</ol>\n<p><video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/blog/pic/kami04.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Made a nice website for Kaku</strong><br>\n<a href=\"http://kaku.fun\">http://kaku.fun</a><br>\nFinally done, built using the Kami skill, with a lot of docs filled in, and it supports both Chinese and English. Little Kaku finally has its own website, go take a look. Also, Kaku 0.12 is out, remember to update~<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/Jyw4Z940.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/Jyw4Z940.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/Jyw4Z940.png\" loading=\"lazy\" data-pswp-width=\"3818\" data-pswp-height=\"2562\" style=\"aspect-ratio: 1.4902;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Come check out my latest desk setup</strong><br>\nReally happy, it arrived over the weekend. Before, I had a thick book plus a slab of mahjong tiles under my monitor, and the height was just right, but my OCD wanted a clean, unobtrusive 30×20×10 block to put underneath. I looked at lots of dedicated monitor risers, all too big, and looked at acrylic boards too, a bit rough, no solution.<br>\nHere’s the kicker: somehow while browsing PDD I stumbled onto these Buddha-statue bases. A perfect fit, ten times cheaper, and they work great!</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"38%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/HM8cAV17.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/HM8cAV17.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/HM8cAV17.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"38%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/2OEw9N23.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/2OEw9N23.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/2OEw9N23.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"24%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/nBYIfw31.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/nBYIfw31.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/nBYIfw31.png\" loading=\"lazy\" data-pswp-width=\"943\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.4604;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>Can’t believe I only just watched “A Love Letter to Grandma”, highly recommend</strong><br>\nOver the weekend I went to see the film “A Love Letter to Grandma”. It’s about to leave theaters, really good and really moving, the best film I’ve seen in a cinema in the past couple of years. The young actors were cast really well. If you haven’t seen it, definitely go when you have time!<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/HgIK5M29.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/HgIK5M29.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/HgIK5M29.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"1536\" style=\"aspect-ratio: 1.3333;\" width=\"800\"></p>\n<h2 id=\"just-saying-thanks\">Just Saying Thanks</h2>\n<p><strong>Some trade-offs I’ve made building products</strong><br>\nMore than 20 days after Mole Mac launched, sales hit a small milestone. I want to share some of the trade-offs I made along the way, and why early on I handled every bit of user communication, Q&#x26;A, and refunds entirely by hand. Hopefully it gives some input to folks building their own indie products.</p>\n<p>First, why do I handle user Q&#x26;A, feedback, email replies, refunds, activation-code resets, price-difference refunds, and so on completely by hand, even though they’re less than 1% of users and I could honestly spend half an hour writing an Agent to handle them? This is a common trap for engineers building products, something that looks efficient but isn’t actually great. There are two considerations here. Only by genuinely handling users’ after-sales issues can you feel what users really need, why they want a refund, why something feels hard to use, their real suggestions and feedback. You can even exchange emails to surface more of their real needs, and through this process you get fluent at knowing the best replies and solutions for every kind of problem. That way, once the product gradually grows, bringing in an Agent for efficiency works much better than doing it from the start.</p>\n<p>Second, why I don’t recommend building a so-called after-sales system from day one. This is an important technical-judgment call for a product engineer: prioritize getting the main product features right, rather than standing up all your peripheral support systems up front. AI is fast, but it still pulls your precious time away from improving the product itself. It looks like it costs no time, but it actually costs you a lot. Spending that time improving the product and meeting users’ real needs is far better.</p>\n<p>Next, I want to talk about some common pitfalls when engineers transition to indie product development. First, what’s the difference between a good product and an average one? A good product is better at deciding what not to build, at which stage each feature is best for the product and users, and which features, even if good, don’t belong on the product’s main line and shouldn’t be added, otherwise it easily turns into a mishmash that’s hard to maintain. Another trait of a good product is that you actually hold the next six months of its development in your head, clearly knowing which features each version should add, which are false needs, and which features should sit right where users naturally reach for them. A product that ordinary beginners don’t need a manual for is a good product. That’s also why, when some friends suggested adding nice Mac features to Mole, I apologetically declined, staying restrained and firmly believing in the product view of “don’t add entities unless necessary”.</p>\n<p>Mole’s positioning is the quiet guardian of Mac system optimization, cleanup, and maintenance. Keep that positioning, refine it, and make it the best Mac maintenance software in the world. If 1 in every 100 Mac users worldwide used Mole, then Mole would truly be good, and that’s what I chase as a product maker: letting more non-technical folks enjoy the fun of an engineer’s product. Recently some visually impaired users have been using Mole and ran into a few accessibility issues, which I’m rushing to fix. I’m really looking forward to how it works and feels for them.</p>\n<p>Maybe in the AI era a lot of things have indeed gotten much more convenient, but communicating with people can’t be replaced by AI, otherwise it loses its meaning. AI can boost efficiency, but it can hardly deepen the feeling and trust between people. This might be a good way for products built with AI Coding to keep a human touch going forward.</p>\n<p>Since this is my first paid product, there may be things I haven’t thought through, and I welcome experienced friends to point them out and offer suggestions.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"268. Xiaohe Park","link":"https://weekly.tw93.fun/en/posts/268/","pubDate":"Mon, 25 May 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/26829.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/26829.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/26829.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo is of a textured building I shot last weekend at Xiaohe Park. The sunlight happened to be perfect, paired with the green trees, it looked really nice.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>The Mole desktop client is here</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nFinally, finally, Mole’s Mac desktop version is out. The CLI will keep being free and open source forever. The desktop client is for folks who enjoy a more interactive product feel. We recently shipped 1.5, which adds various sprite animations in the menu bar, login-item management, software update management, and the most fun part, fan control, plus more. Head over to the official site for the full rundown. Weekly readers get 20% off with code MOLEWEEKLY. Early-bird price is currently $9.</p>\n<p>If you’ve contributed code to Mole or sponsored me on GitHub, DM me and I’ll send a 100% discount code.</p>\n<p><video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mole206.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Mole CLI updated to 1.39</strong><br>\n<a href=\"https://github.com/tw93/Mole\">https://github.com/tw93/Mole</a></p>\n<ol>\n<li>mo clean major hardening: GUI app dotdirs and Gradle DSL caches are no longer wiped by mistake; dry-run now matches actual cleanup so no more false reports; simctl probing retries to fix the first-error-after-restart issue; Trash cleanup no longer triggers blocking macOS warning dialogs; TMPDIR cleanup is roughly an order of magnitude faster; added cache coverage for UTM/Lima/Arc/QQ Browser/Codex CLI/Antigravity/Gemini; VS Code family now cleans leftover extensions by the .obsolete marker.</li>\n<li>mo uninstall: bundle ID matching upgraded to boundary checks so it won’t hit by mistake; leftover login items are now called out with their cleanup paths in the summary. mo purge: hardened with timeout protection and trap handling, any exit path restores the cursor and clears temp files.</li>\n<li>mo analyze: hardlinks are now deduped by inode, so FCP and other managed media no longer report tens of times inflated. mo status: available-memory math now aligns with Activity Monitor.</li>\n<li>mo touchid: PAM writes switched to atomic operations to preserve read-only permissions. mo optimize: removed Bluetooth reset to avoid accidentally kicking devices.</li>\n<li>Global NO_COLOR=1 support. When Trash isn’t available, it now fails closed to prevent silent permanent deletion.\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XjXNoU39.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XjXNoU39.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XjXNoU39.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1080\" style=\"aspect-ratio: 1.7778;\" width=\"800\">\n</li>\n</ol>\n<p><strong>Kami now builds product landing pages</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\nKami has shipped a bunch of updates lately. Beyond the original PDF generation, you can now tell it you want a landing page for product XX, and it’ll build something in the same quiet style as the Mole site.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XdDecf51.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XdDecf51.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XdDecf51.png\" loading=\"lazy\" data-pswp-width=\"4096\" data-pswp-height=\"2201\" style=\"aspect-ratio: 1.8610;\" width=\"800\"></p>\n<p><strong>Waza has had a bunch of updates lately</strong><br>\n<a href=\"https://github.com/tw93/Waza\">https://github.com/tw93/Waza</a><br>\nWaza (技, わざ), the engineer’s skill collection, has had a bunch of updates recently. Posting a tweet to keep everyone in the loop. If you’re using it, remember to update. I’ve folded in nearly a month of dev best practices, especially a lot of lessons from the recent Mole client work.</p>\n<p>First, Waza finally supports codex end-to-end. One command and you’re done, every capability is supported, because codex has felt really good to use lately.</p>\n<p>The biggest one: the original health skill was just for checking whether Claude config and usage matched best practices, but now it’s evolved into a full Agent Health check. There’s a fun phenomenon with people writing code with AI now, it feels amazing at first, but after a while it becomes unmaintainable and hard to extend. In that case try /health, it’ll check your code, including whether the various capabilities still look ok, whether it’s maintainable, whether things should be split apart, whether dead files should be deleted. Think of it as a scavenger for the bad code AI generates.</p>\n<p>Then /think (Thinking Mode) also has many updates. You can discuss with it whether a feature should be built, and it’ll give you a Kill / Keep / Pivot judgment across multiple dimensions. Honestly, a lot of the time a product is defined by what you choose not to add, not by what else you could add.</p>\n<p>I’ve always felt that adding rules to AI calls for restraint. Every rule you add becomes a ceiling for it. When the model gets stronger, your rules start dragging it down. That’s why I don’t like Superpowers or so-called Spec programming, too verbose, too many rules. That’s also why I wrote Waza, it’s like installing my code-writing avatar onto your computer.</p>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Lightpanda: a headless browser written from scratch in Zig</strong><br>\n<a href=\"https://github.com/lightpanda-io/browser\">https://github.com/lightpanda-io/browser</a><br>\nA headless browser written from scratch in Zig, designed for agents and automation. The pitch is -9x memory and +11x speed vs Chrome, compatible with the CDP protocol (Playwright/Puppeteer). Worth a look as browser infrastructure for the agent era.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/aQKcGc14.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/aQKcGc14.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/aQKcGc14.png\" loading=\"lazy\" data-pswp-width=\"1956\" data-pswp-height=\"1124\" style=\"aspect-ratio: 1.7402;\" width=\"800\"></p>\n<p><strong>Mise: Dev tools, env vars, and tasks in one CLI</strong><br>\n<a href=\"https://github.com/jdx/mise\">https://github.com/jdx/mise</a><br>\nA single tool that unifies runtime versions (nvm/asdf) + env vars (direnv) + tasks (make), all managed by a single mise.toml. Lightweight Rust binary. Worth a try if you’re interested.<br>\n<img src=\"https://cdn.tw93.fun/blog/pic/demo34.gif\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Recommending this lemon-flavored sparkling water</strong><br>\nYou have to chill it first, then it’s really good. Don’t drink the plain one, this lemon one is the best!</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"50%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XcWaIV34.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XcWaIV34.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XcWaIV34.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"50%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/PVaCgF40.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/PVaCgF40.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/PVaCgF40.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>This eye drop I’ve been using is pretty good</strong><br>\nIf you often lose yourself in AICoding, grab a bottle of Hai-Lu eye drops, and have your watch remind you to stand up and walk around.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/ybMdQk09.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/ybMdQk09.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/ybMdQk09.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\"></p>\n<p><strong>Bought a few nice wooden things</strong><br>\nFirst is a shoehorn, no more bending over to put on shoes. Second is a laptop riser, very useful, with anti-slip. Third is a small holder for aroma bottles. Fourth is the little brush I use to sweep up coffee grounds when I make coffee.</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"25%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/gv97iD44.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/gv97iD44.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/gv97iD44.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/UXoeo050.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/UXoeo050.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/UXoeo050.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/NUPl0m57.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/NUPl0m57.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/NUPl0m57.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/j7ICAj15.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/j7ICAj15.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/j7ICAj15.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>Some thoughts on the Mole desktop release</strong><br>\nOn the back of the recent Mole Mac release, I want to share the magic moments I’ve had over the past couple days. Thanks to this little toy project I started by the Sanya pool last year, I’ve met many interesting overseas developers from all kinds of countries.</p>\n<p>The Mac client took two weekends to build. Plenty of overseas users had brought it up before, saying their parents and siblings don’t use a CLI but really want this feature, asking if I could put out a simple, easy-to-use desktop version. Back then there was the time issue, plus I didn’t think the Mole CLI was mature enough yet, so it kept getting pushed back until now.</p>\n<p>It’s only been half a year since Mole launched, and somehow it’s over 50K stars, 500 user-submitted cleanup-suggestion issues, 300 high-quality feature PRs, and contributions from 100 developers around the world, delivering cleanup capabilities arguably stronger than tools like CleanMyMac. I even racked up 60T of traffic in one week from just 2 images I hosted on Vercel for the README, which left me owing Vercel $80, that’s when I realized how many people are actually using it, so the desktop version was worth doing.</p>\n<p>A lot of the small clever touches in the Mole desktop client only came to me once I started building. Like using planets to represent each feature, which traces back to my childhood love of watching planets move, plus 10 years ago when I picked up frontend, the very first thing I wanted to learn was WebGL. I started using WebGL to render the planets, and each planet’s character lined up nicely with what Mole does, so I worked that theme in:</p>\n<p>Clean uses Earth, “Rain washes the old soil, dust drifts with the tide”<br>\nUninstall uses Mars, “Red dust covers the old, travel light to journey on”<br>\nOptimize uses Mercury, “Swift along the near orbit, small fixes ring out”<br>\nAnalyze uses Jupiter, “From afar it becomes a map, the smallest details visible”<br>\nStatus uses the Sun, “Light that doesn’t strike the eye, a heartbeat that stays bright”</p>\n<p>Like the little mole’s digging and exploration moving from a small patch to the wide world, but still quiet, not getting in your way.</p>\n<p>Another design touch: I swapped each planet’s texture map more than 10 times, downloading and picking through many from NASA’s site to find the best fit. The rotation direction and axis, the speed, the post-completion flight characteristics of each planet, all reference how the actual planets move. That part was one of the more enjoyable bits of AI Coding. These details might feel only loosely connected to Mole-the-mole, and I could have just built a simple click-to-clean menu bar app, but I didn’t want to. There’s already too much cyber junk being generated by AI. I needed to make something that feels a bit more pleasant, so that my tokens aren’t wasted, and so I’m not polluting your timeline.</p>\n<p>I released it around 10pm that night. So grateful for the many friends who shared it on their own, and especially thankful to all the users who bought it, some folks even bought it purely because of the value the CLI had given them. Lots of European and American users, with French, German, all kinds of currencies coming in, really magical. There’s still a lot to round out on the Mac desktop, and I appreciate everyone’s patience, prepaying $9 for a pretty little toy. I’ll keep working on the features.</p>\n<p>I really like things that come together naturally, I don’t like chasing short-term results. This kind of long-term iteration, continuously meeting new friends, getting so much input and discussion, is the most precious treasure. Really fun.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"267. Westlake Stone Characters","link":"https://weekly.tw93.fun/en/posts/267/","pubDate":"Mon, 11 May 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/26722.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/26722.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/26722.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo was taken last weekend. To get a feel for the strokes for my type design project Luo, I went looking for these kinds of stone-carved characters along the road by West Lake and snapped this shot.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"just-writing\">Just Writing</h2>\n<p><strong>You Didn’t Know GEO: AI Visibility Principles, Practices, and Trade-offs</strong><br>\n<a href=\"https://tw93.fun/en/2026-05-01/ai-visibility.html\">https://tw93.fun/en/2026-05-01/ai-visibility.html</a><br>\nA bunch of friends have @-ed me lately saying my open source tools are getting recommended unprompted when they ask AI questions. I hadn’t done anything special, so I figured why not spend an hour structuring the content properly. After doing it I fired off a quick tweet, but the structure was messy. People seemed genuinely interested, so I decided to write it up as a proper article for reference and lookup.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/OMaEoa53.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/OMaEoa53.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/OMaEoa53.png\" loading=\"lazy\" width=\"800\"></p>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Kami, the typesetting system that gives good content the layout it deserves, has been upgraded</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\nKami has had several upgrades recently, including fixing Chinese garbled text in PPT, speeding up the engineering, expanding doc analogues to 8 categories, polishing many layout details, updating the built-in chart capabilities, and more. Welcome to update and try it out.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/rPlaVb01.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/rPlaVb01.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/rPlaVb01.png\" loading=\"lazy\" data-pswp-width=\"3276\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.3696;\" width=\"800\"></p>\n<p><strong>Waza, the engineer’s 8 skill trees, has been updated</strong><br>\n<a href=\"https://github.com/tw93/Waza\">https://github.com/tw93/Waza</a></p>\n<ol>\n<li>Durable Context: six skills (think, check, hunt, design, write, health) can consume optional memory/preview context. Safety contract: current state always wins, raw conversation reads disabled by default, hardcoded machine paths not allowed.</li>\n<li>Plan Execution Mode: /check executes approved implementation plans step by step, defaults to review-then-ship continuation, document review routes to /write.</li>\n<li>Evaluation Mode: /think now outputs Kill/Keep/Pivot, deciding whether something should be done or kept.</li>\n<li>Validation guardrails: trigger word overlap detection, routing drift checks, attribution leak interception, preventing silent skill conflicts and accidental personal info leaks.</li>\n<li>Design and Write references: added typography traps, design tokens, aesthetic quality, Chinese-English mixed typesetting standards, release-note style guide.\n<img src=\"https://gw.alipayobjects.com/zos/k/qa/waza_repaired_v4.svg\" width=\"800\">\n</li>\n</ol>\n<p><strong>Kaku finally updated to V0.10</strong><br>\n<a href=\"https://github.com/tw93/kaku\">https://github.com/tw93/kaku</a><br>\n🥷 Long wait, everyone. Kaku finally hits V0.10. I held this version back through several minor releases while I kept tuning a really handy in-app Agent assistant. The vibe is a clean, no-nonsense tech buddy. You can summon it with Cmd + L without disturbing any of your existing content, but it’s smart enough to read your context, and I’ve equipped it with a curated set of solid tools. You configure its brain through kaku ai. I highly recommend setting up search capabilities, and pipellm is a nice option.</p>\n<p>AI features are something I’ve always wanted to build but didn’t want to disturb users with. If you’re more of a pure terminal user, I’ve also added plenty of features worth catching up on.</p>\n<p>First, there’s a fun smart window-close intercept. When you haven’t configured whether to intercept window closing in kaku config, if you’re in the middle of AI work it’ll dynamically intercept and ask whether you really want to close, so you don’t accidentally kill it.</p>\n<p>It also finally supports window snapshot. Kaku auto-saves multi-tab and multi-pane layouts. When needed, hit Cmd+Option+Shift+T or use Shell → Restore Previous Window to recover. This nicely solves the pain of accidentally closing a window and wanting to start back up.</p>\n<p>Some folks suggested that the light mode looks great but the dark mode contrast is a bit too strong. Got it. I’ve now tuned a much softer dark mode, dropping the saturation of highlight colors and slightly dimming foreground text, so staring at the screen for a long time is easier on the eyes.</p>\n<p>I’m also obsessive about startup speed, especially cold start. I want to build the fastest terminal. Through Lua bytecode caching, lazy initialization of fonts and config, shell user variable caching, and similar tricks, your Kaku now opens almost instantly. Still a tiny bit behind Alacritty, but I’m working on it.</p>\n<p>Lastly, fixed full-screen crashes and freezes, multi-monitor race conditions, resize gaps, cursor reflow, links, selection, light theme readability, TUI copy, and many other detail issues.</p>\n<p>If this is your first time hearing about Kaku, welcome to give it a try. Still not mature, actively being polished. Any suggestions or bugs, please file an issue and I’ll handle them.<br>\n<video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/blog/pic/kaku14.mp4\" type=\"video/mp4\"></video></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>M5 Pro in black finally arrived. Stunning. Very excited</strong><br>\n16-inch M5 Pro / 48GB / 1TB black with standard glass. I think this config is a great fit for anyone considering a new machine.<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mac36.MP4\" type=\"video/mp4\"></video></p>\n<p><strong>Picked up an iPhone SE3 to play with</strong><br>\nHow can such a small phone feel this refined? Just lovely to hold.</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"33%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_099853.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_099853.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_099853.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"33%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_099901.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_099901.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_099901.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"33%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_100106.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_100106.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_100106.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>A neat UI bug debugging trick of mine</strong><br>\nSharing a really useful UI bug debugging approach. Back in my old-school coding days I often used screen-recording with slow-motion playback. AI struggles with this kind of thing, but humans get it instantly. Find the frame with the problem, and you basically know where the issue is. Then hand the screenshot to AI. Way better than logging or guessing.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/44JbuE11.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/44JbuE11.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/44JbuE11.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2314\" style=\"aspect-ratio: 1.4840;\" width=\"800\"></p>\n<p><strong>Somehow it’s been 4 years on Twitter, posted a little reflection</strong><br>\nJoined X 4 years ago already. The journey has been really fun, and it’s also been a great outlet for my urge to share tech and product stuff.</p>\n<p>I was just chatting with a new friend about how I ended up here. Back then it was still called Twitter. MiaoYan had just been written, and I was looking for somewhere to sync update logs. Yes, that simple. So I signed up with Google login and posted MiaoYan’s intro. Magically, it turned out MiaoYan was already being recommended by lots of folks with big followings as a simple and handy markdown-native notes app. Coming over felt like, oh, there are so many friends here. We finally meet. The Twitter environment back then was great. Not so many ads or money-grabbing. More sharing, conversation, pure tech discussion. Sad to say, many of those friends whose output quality was way higher than mine slowly stopped posting much.</p>\n<p>Later I gradually started sharing some good open source products I’d come across each morning, or the latest releases of my own products, and bits of my own thinking. Slowly I met many like-minded friends, and they put a lot of energy into contributing to my open source projects. Friends from Taiwan, Japan, Turkey, Europe, the US, and especially many friends who helped with Pake. That was a kind of pure code-writing era from before AICoding existed.</p>\n<p>When ChatGPT first came out, I immediately registered an account and started playing with 3.5. It really was a magic moment. Back then we shared funny prompts, very fun, but it now reads like ancient literature. I even wrote an article on 2022-12-04 titled “How Ordinary People Avoid Being Replaced by OpenAI.” Haha, you can see how shallow I was. The first deep question I asked was even “give me some online docs to learn Rust.” How AI has developed since then is beyond comparison.</p>\n<p>That was about when I felt all in on AI. At the company, I handed off all my main business support tech to my direct reports, and went looking for a bigger ceiling for my team in AI. I even paid out of pocket with my international credit card to buy official OpenAI API for the team to use, so we could understand the latest stuff. I solved a lot of business problems that had been giving managers headaches with AI. Meanwhile, since I’m good at sketching solutions and product flows, I also pushed AI application R&#x26;D platforms, B-side digital employee solutions, and the deep integration of business efficiency tools with AI. Three years on, much of it is now well-productized and efficiency has improved dramatically.</p>\n<p>Because the results in practice were so clear, in early 2023 I moved all my Chinese ADRs and company-allocated stock all in on AI direction. I sold them very cheaply, but bought what now look like treasures. Like Tesla I love at around 130, NVIDIA at around 90, SMH at around 160, etc. Around then I started intentionally learning to invest, analyzing companies and their underlying value, and read many books to sharpen my thinking. The books didn’t help much operationally, since most were written decades before AI, but the mindset is useful. Investing in AI also can’t follow the old playbook. It gave me an interest outside of programming, which is fun. Maybe one day I’ll build an investing-related AI product.</p>\n<p>Then, as you all know, came Mole, written last National Day during a Sanya pool vacation between swims and rests. Mole introduced me to many overseas developers. My overseas follower count grew sharply because developers from all over the world have been actively spreading the word almost daily. So grateful! Then came Kaku written during this year’s Spring Festival, plus the recently efficiency-boosting Waza and Kami, and now that the new machine is here I’m planning a font called Luo. The journey has been wonderful, and I’m really looking forward to what’s next. New friends are very welcome.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"266. Masked Sculpture","link":"https://weekly.tw93.fun/en/posts/266/","pubDate":"Mon, 27 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"2800\" data-pswp-height=\"2100\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo is a sculpture of a child wearing a mask, taken on the weekend while running errands over in Gongshu. In a flash, the pandemic already feels like a long time ago, and yet it also feels like just yesterday. Those years are still worth remembering.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"introducing-the-tw93-open-source-family\">Introducing the Tw93 Open Source Family</h2>\n<p><a href=\"https://github.com/tw93\">https://github.com/tw93</a><br>\n<img src=\"https://gw.alipayobjects.com/zos/k/sa/family.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/sa/family.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/sa/family.png\" loading=\"lazy\" data-pswp-width=\"1586\" data-pswp-height=\"992\" style=\"aspect-ratio: 1.5988;\" width=\"800\"></p>\n<p>After finishing Kami, I suddenly realized that Kaku, Waza, and Kami feel a lot like a small family. Then I kept thinking, and actually Pake, MiaoYan, and Mole have always been quietly part of this family too. Some of them were even out doing real work before AI showed up. Today let me introduce you to this warm and happy little family.</p>\n<p>Kaku is the dad. He mainly handles writing code, the terminal, and builds. Very reliable and capable in the AI era, he holds the family together well.</p>\n<p>Pake is the mom. She has been quietly packaging, organizing, and delivering apps all along. Gentle and efficient. She is the kids’ favorite in the family.</p>\n<p>MiaoYan is the older brother. Sensible and steady, he likes writing, Markdown, and reflective thinking. A quiet young man who thinks for himself, has his own opinions, shares his views, and never chases trends or follows the crowd.</p>\n<p>Waza is the older sister. Her personality is similar to mom’s, very sharp and capable. As a kid she even practiced taekwondo. She loves learning, and through endless practice and reflection she sharpens her skills until they become instinct.</p>\n<p>Kami is the younger sister. The youngest little sweetheart in the family, generated based on my daughter’s photo. Bright and cheerful, always smiling, very sunny. She has a kind of order-keeping presence at home, loves tidiness, and loves drawing pretty pictures. Small, but very warm.</p>\n<p>Mole is the family’s little pet mole. Brought home one year while swimming by a pool in Sanya. A round little mole with a tiny headlamp and a small shovel. He loves rummaging through corners, finding things you no longer need and helping you throw them away. He loves cleanliness. The moment he spots trash, before you can react, it is already gone. Always there, keeping us company.</p>\n<p>So, which member of the Tw93 Open Source Family did you meet first? Let me introduce the rest of the family to you, hoping they bring a little something good into your life. And of course, feel free to introduce them to your friends too.</p>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>Kami: A Comfortable Typesetting and Design System for the AI Era</strong><br>\n<a href=\"https://github.com/tw93/kami\">https://github.com/tw93/kami</a><br>\nThe weekend before last I started working on a new Skill called Kami (紙, かみ). You can think of him as the younger sister of Waza (技, わざ) and the daughter of Kaku (書く), focused on Paper typesetting scenarios. Last Monday I finished the open source release. Welcome to give it a try.</p>\n<p>For example, when you need to produce a one-page report, write a white paper, generate a polished slide deck, or build a portfolio PDF to send to someone. Any printing or typesetting scenario works. It auto-generates beautiful PDFs, and even has the ability to draw clear charts automatically.</p>\n<p>Plenty of updates lately. The most fun one: I added support for 12 inline SVG charts, things like stock investment charts and architecture diagrams, all with colors that match Kami. While generating your layout, it automatically decides whether chart capabilities are needed, helping you explain things more clearly.</p>\n<p>I also spent some time supporting English and Japanese scenarios, carefully picking fonts, letter spacing, line heights, and font sizes that I think work well for typesetting. If you have English or Japanese use cases, give it a try.</p>\n<p>The output also supports image and slide deck export, including HTML display. The best output for typesetting is still PDF in my opinion, since it reads very comfortably for others.</p>\n<img src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png\" loading=\"lazy\" data-pswp-width=\"2992\" data-pswp-height=\"2308\" style=\"aspect-ratio: 1.2964;\" width=\"800\">\n<p><strong>Mole has updates, plus good news: progress on the desktop client</strong><br>\n<a href=\"https://github.com/tw93/Mole\">https://github.com/tw93/Mole</a></p>\n<ol>\n<li>mo uninstall: cleans up leftover LaunchAgent/LaunchDaemon plists after uninstall; recognizes pkg-installed apps under non-standard paths like /usr/local and /opt; nested helper apps no longer block login item cleanup; sudo is dropped before calling brew, avoiding cask uninstall failures from “running as root”; Homebrew bottles now run correctly under prefixes that contain spaces (such as Applite).</li>\n<li>mo clean: Service Worker ScriptCache is no longer cleaned while Chrome / Arc / Brave / Vivaldi / VS Code / Cursor are running, so MV3 extensions stay intact; TCC-protected Group Containers are skipped to avoid repeated privacy prompts.</li>\n<li>Cloud &#x26; Office segments now have timeout and SIGINT handling, no more freezing; Microsoft Office helpers and research software bundles are no longer flagged as orphans (compatible with macOS’s built-in bash 3.2); added Yarn v1 global cache cleanup.</li>\n<li>mo clean: legacy AI coding assistant cleanup adds GitHub Copilot CLI (~/.copilot/pkg/universal/<version>/), handled alongside Claude Code and Cursor Agent.</version></li>\n<li>mo analyze: worker pool cap lowered again to prevent system thread exhaustion in Steam-like fan-out scenarios; uses incremental cache invalidation when deleting files, no full rescan needed; bundle parsing falls back to the filesystem after mdfind timeouts.</li>\n<li>mo optimize: gracefully skips periodic maintenance on macOS 26+ where the underlying tool no longer exists; adds mo optimise alias and completion.</li>\n</ol>\n<h2 id=\"just-writing\">Just Writing</h2>\n<p><strong>The AI Coding You Don’t Know: Onboarding, Scenarios, and Practice for Non-Technical Folks</strong><br>\n<a href=\"https://tw93.fun/en/2026-04-26/ai-coding.html\">https://tw93.fun/en/2026-04-26/ai-coding.html</a><br>\nLast month I gave a session at work for product and business folks on how to get started with AI Coding. Recently I also posted about it on Twitter, and a lot of people brought up that subscription costs prevent them from accessing the top-tier AI Coding tools. The methods and habits can actually be learned for free first, so I decided to write up the onboarding part. To make it easier to grasp, the article includes plenty of simple illustrations, which should make it more direct.<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/z1/00.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/z1/00.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/z1/00.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<p><strong>Video version of “The Agent You Don’t Know: Principles, Architecture, and Engineering Practice”</strong><br>\n<a href=\"https://www.youtube.com/watch?v=Z5If1L3eFtw\">https://www.youtube.com/watch?v=Z5If1L3eFtw</a><br>\nFinally uploaded to YouTube. If you read the article and did not fully follow it, or want a deeper look, the video version is up. New to YouTube here, so please like, subscribe, and share. From now on I will try to record more sessions and share them here.</p>\n<img src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg\" loading=\"lazy\" data-pswp-width=\"3288\" data-pswp-height=\"1876\" style=\"aspect-ratio: 1.7527;\" width=\"800\">\n<p>The <a href=\"https://tw93.fun/files/share/agent.html\">slides</a> are also fun. They are the predecessor of Kami. Kami started as a small investment report generator I was tinkering with inside CC. Around the same time I had a session about agents to give, and writing such a long deck felt tedious, so I just used the existing capability to generate and tweak versions until I was satisfied. That is how Kami was born. Welcome to read.</p>\n<p><strong>Moments of Happiness</strong><br>\nA lazy Sunday afternoon coding in the study<br>\nNothing else to deal with<br>\nEndless Claude Code<br>\nCode that works on the first try<br>\nLook up and see the sunset coming through the window<br>\nA very simple kind of happiness<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\"></p>\n<p><strong>Some thoughts after sharing, and they have shifted again</strong><br>\nRecently I interviewed a number of 985 university interns for campus recruiting. One strong impression: AI tools are rapidly widening the resource gap between students.</p>\n<p>From what I have seen, the gap can really reach 5x. The students clearly ahead, without exception, all got into Claude Code, Codex, and other top AI Coding tools relatively early, and were willing to pay for subscriptions themselves. They do not just use the tools, they have made them part of their daily learning and development. Talking models, engineering, agents, and code practice, the conversation flows naturally for an hour. In many places they understand things more deeply than I do.</p>\n<p>But there are also quite a few students with great grades and solid CS fundamentals who, because of family conditions or budget limits, can only use domestic relays or cheaper local model packages. That gap is very real. The best domestic models and top international ones still have about half a year of difference in overall capability. Before AI, the resource gap mostly meant slightly different efficiency. Now it directly affects vision, depth of practice, and confidence.</p>\n<p>I have been thinking about this a lot. For students with real potential, missing out on so much just because of a few dozen dollars a month feels like a real shame. It reminds me of when I was in college, also pretty broke most of the time. Lucky for me, in my second year I met some senior developers who pulled me into commercial projects and got me on my feet. I am very grateful to all the friends who patiently taught me technical things back then.</p>\n<p>So I want to try a small experiment: take part of the X posting revenue and sponsor a few students who do well academically, love computer science, but come from less wealthy families. Give them a few months of Claude Code or a similar AI Coding subscription, so they actually experience what good models and dev workflows feel like.</p>\n<p>But I am also pretty busy on my end and cannot personally handle applications, screening, verification, and long-term follow-up alone. So I want to invite some friends with similar interests to do it together. University teachers, student leads, open source community members, or friends already working in education, public welfare, or developer communities. Together we can come up with a more reliable mechanism.</p>\n<p><del>I do not want to make this big or complex for now. Start small, maybe 5 to 6 students per round, 3 to 4 months each, perhaps with short weekly video chats with me. Prioritize recommendations, work portfolios, learning records, and real usage feedback, to avoid turning this into pure cash handouts or a contest of who writes the best application. Of course, college students who are on X probably do not lack this money, so we still need better channels.</del></p>\n<p>If you have reliable channels, or want to help with rule design, recommendations, vetting, or follow-up, please DM me. If we can make this trustworthy, maybe we really can help a few students with real potential.</p>\n<p><strong>Update Reply</strong>:</p>\n<p>After the message went out, I received plenty of suggestions and reminders from friends. I read them all carefully.</p>\n<p>This really cannot be pushed forward on enthusiasm alone. On one side there are tool usage boundaries and compliance risks. On the other, the real needs of the student community, the screening method, and the follow-up feedback all need a more solid mechanism. Some friends mentioned getting badly burned doing similar things in the past, even bitten back in the end. I find that reminder very valuable.</p>\n<p>So the plan now is to first gather more on the actual situation, like the real pain points college students face when using AI Coding tools, budget limits, learning scenarios, and real needs. Then put together a clearer proposal.</p>\n<p>Going forward, I will prioritize working with domestic large model vendors, developer communities, and university teachers to see if there is a more formal and sustainable way to push this small step forward.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"265. Xixi Window View","link":"https://weekly.tw93.fun/en/posts/265/","pubDate":"Mon, 20 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"2400\" data-pswp-height=\"1800\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo is from lunch at Yueya in Xixi Wetland one noon this week. I had not been there in a long time. The place still feels great. The sun was out, short sleeves felt just right, and I took this shot outside the window. Spring moves fast.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"talking-about-wazas-design-ideas\">Talking About Waza’s Design Ideas</h2>\n<p>I want to write a few pieces introducing the implementation references behind some interesting skills in Waza. Last week I wrote one every morning, so I am collecting them here for everyone.<br>\n<a href=\"https://github.com/tw93/waza\">https://github.com/tw93/waza</a></p>\n<img src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png\" loading=\"lazy\" data-pswp-width=\"1200\" data-pswp-height=\"775\" style=\"aspect-ratio: 1.5484;\" width=\"800\">\n<h3 id=\"introducing-the-design-skill\">Introducing the /design Skill</h3>\n<p>I really dislike those AI-generated websites that all look the same, often with emoji and blue-purple gradients. They look ugly to me. Usable, sure, but that is about it.</p>\n<p>So I asked Claude Code to study my tuning notes from all the UI websites I have built recently. It produced a basic set of what I consider best practices and anti-patterns. That became the initial shape. Then I learned the useful parts from the Claude frontend design skill, and a pattern basically came together.</p>\n<p>For concrete rules, I learned quite a bit from pbakaus/impeccable. It contributed many specific rules for me, including banned font lists, color systems, theme styles, forbidden CSS patterns, animation standards, and more. These help give AI some aesthetic knowledge.</p>\n<p>Then I took a capability from getdesign: a nine-part scaffold structure originally from Google Stitch. I simplified it and folded it into /design. At that point, the skill had a proper knowledge system.</p>\n<p>Finally, when I ask you to use this skill, it first asks a few questions: who will use it, what aesthetic direction to choose, what you want users to remember from the page, what you dislike most, and what kind of signature micro-interaction the page should have. With this important context plus /design, Claude Code often gets much better results.</p>\n<h3 id=\"how-i-designed-the-check-code-review-skill\">How I Designed the /check Code Review Skill</h3>\n<p>First, we need to understand that when a model says it is done, it may not actually be done. It may have left behind nonexistent things or problematic details, and issues often stay hidden. In Agent design, my engineering experience is to give the model a checklist to verify whether the work is truly complete. This tends to work far better than simply asking it to check the result.</p>\n<p>From the beginning, /check was not designed as one big all-in-one reviewer. It is an orchestration and division-of-labor system. SKILL.md is the lead reviewer, responsible for review levels and process control. Under agents/, there are independent security and architecture reviewers. Each handles its own area without interfering with the others. Which reviewer gets pulled in, and when, is decided by activation rules rather than the keyword matching people usually use.</p>\n<p>The level logic is also interesting. Code changes under 100 lines get a fast review. Changes between 100 and 500 lines bring in experts as needed. Changes above 500 lines bring in the full set, followed by a round of adversarial testing. The adversarial testing looks for problems from four angles: violated assumptions, possible issues under combined failures, errors across parent-child chains, abuse scenarios, and so on.</p>\n<p>The issues found are handled in four levels. Things that can be safely fixed are fixed directly. Things that are probably right but need confirmation are packaged up for you to approve manually. Things that require judgment are asked about. Reference-only items are also reported, but it will not ask you about every tiny issue, and it will not overstep by changing behavior logic for you.</p>\n<p>There is also a hard requirement: if verification has not finished, the task is not complete. It includes a detection script that can identify project types such as Cargo, TypeScript, and Python, then run the relevant tests. If it cannot detect the project type, it reports an error directly instead of pretending everything passed.</p>\n<p>This makes it feel more like an experienced technical expert applying review judgment to different situations. I happened to distill that experience into Waza’s /check skill in a very simple way.</p>\n<h3 id=\"how-i-designed-the-think-skill\">How I Designed the /think Skill</h3>\n<p>This is already the third part of the Waza skill design notes. Today I want to share how I designed /think, the skill used for planning before writing code.</p>\n<p>I have two very interesting settings when using Claude Code. The first is /model opusplan, which means planning uses the strongest Opus model by default, while execution uses the regular Sonnet model. This helps save my Max quota for places where it matters more.</p>\n<p>The second is that I usually run Claude Code with the alias <code>c=\"claude --dangerously-skip-permissions\"</code>. I do not recommend this for technical beginners. I use it because I know what it is doing, and mainly because I am lazy.</p>\n<p>Back to the main topic: how does /think help the strongest model perform better? It starts with the model itself. Models do not like taking a position, but I prefer engineers who can take a position and recommend the best plan. So the first thing I did was require the model to state its position at the beginning, explain what evidence could overturn that position, and explicitly ban correct but useless filler like “There are many ways to think about this”. Giving 2 or 3 options is fine, but there must be a clear recommendation, and it must include a minimal option.</p>\n<p>A plan is not done just because it has been thought up. The second step asks it to argue against itself: under what conditions would this plan fail? If the issue can be fixed, it adds the fix back into the plan and presents it again. If the issue breaks the plan outright, it directly explains when and why the plan does not work. At least the plan you receive is one you understand clearly.</p>\n<p>It also checks assumptions carefully. First, confirm whether the target directory and code location are correct. I have actually seen it produce a plan against the wrong path. Then it checks old technical design documents to avoid reinventing things. Then it searches GitHub to see whether others have handled similar problems. Only after these three steps does it start thinking about solutions, so the plan is not built on a wrong premise from the start.</p>\n<p>There is also complexity grading. If more than 8 files are involved or a new service is added, it clearly states the scale. If more than 3 components exchange data, it draws an ASCII diagram to look for cycles. All API keys and third-party dependencies are listed during the planning stage, preventing wasted work and unreliable plans.</p>\n<p>Finally, there is a hard rule: the plan cannot contain TBD, TODO, “leave it for later”, or “similar to step N”. This goes back to AI’s behavior. If you leave these openings, execution can easily miss things or improvise too much. Do not give AI any escape route that can lead to poor results.</p>\n<p>The output format is also defined: what to do, what not to do, which option was chosen and why, 3 to 5 decision points, and explicit unknowns. /think never writes code. It waits for user approval before execution.</p>\n<p>When I designed the Think skill, I was also using my idea of how a good technical expert writes a technical plan: detailed analysis and research, a decisive best plan, no loose ends, and immediate plan refinement when challenged.</p>\n<h3 id=\"talking-about-the-hunt-skill-for-engineers\">Talking About the /hunt Skill for Engineers</h3>\n<p>This is finally part 4 of the Waza skill design notes. After this, it is almost complete, because the other two, /read and /learn, were already briefly covered before. This time I will continue with the engineering skills and talk about /hunt, which is the skill for debugging and investigating problems.</p>\n<p>One major difference between superficial AI coding and serious AI coding is visible in how users use AI to investigate problems that have stayed unsolved for a long time. The troubleshooting process shows a clear gap. This is also why experienced engineers can use AI to solve much more complex problems than people who understand less about technology.</p>\n<p>I often ran into this before: Claude Code hits a problem and fixes it with a patch. You say it is wrong, so it gives you another patch. After 4 or 5 rounds, new problems appear. It is easy to keep patching without diagnosing the actual issue, much like junior developers did before AI.</p>\n<p>The core rule of /hunt is interesting: before AI can state the root cause in one sentence, it is not allowed to touch the code. That sentence also has a precision requirement. It needs to clearly explain the cause.</p>\n<p>Then I designed a self-deception checklist to prevent the model from falling into several common patterns of self-justifying thinking. Each pattern has matching rules, and the gotchas include real cases. I summarize and abstract this again based on issues I ran into while debugging over the past month.</p>\n<p>The hypothesis verification stage also has concrete work requirements. For example, add a fresh observation method, teach AI to add logs, add assertions, or run a minimal failing test case. If there are still problems after the fix, it should immediately switch plans. It organizes what it checked, which directions it investigated, and what remains unknown into a handoff for the user to decide how to continue, instead of trying endlessly.</p>\n<p>The output also guides AI to include the root cause at file:line, what changed at file:line, what evidence confirms the fix, and which tests passed. The final state has three options: resolved, resolved with caveats, or blocked.</p>\n<p>You can see that /hunt behaves like an experienced technical expert. When it hits a problem, it does not guess. It slows down, looks for where the problem is, diagnoses the cause clearly, and then fixes it in one pass. This often saves a lot of time.</p>\n<h2 id=\"things-to-browse\">Things to Browse</h2>\n<p><strong>MiaoYan released version 3.2.0, Nargacuga</strong><br>\n<a href=\"http://github.com/tw93/MiaoYan\">http://github.com/tw93/MiaoYan</a></p>\n<ol>\n<li>Faster preview: two-stage rendering shows text immediately, while local images lazy-load in the background. This noticeably reduces the wait for the first preview screen.</li>\n<li>Terminal shortcut: added Cmd+J as a global shortcut to open the terminal for the current folder anytime. The folder right-click menu also has the same entry.</li>\n<li>Copy path: right-click any note to copy its full file path directly.</li>\n<li>Spanish localization: complete Spanish translation coverage for menus, settings pages, and system strings.</li>\n<li>Mermaid upgraded to v11.14.0, fixing subgraph edge rendering issues and adding new chart features.</li>\n<li>Real-time reload fix: notes modified by other tools now correctly trigger reloads, including files inside symlinked directories (closes #502).</li>\n<li>Startup and window fixes: opening .md files directly from Finder no longer shows a blank screen. In single-column mode, notes are no longer lost during startup or exit.</li>\n<li>Export and mode switching: fixed blank previews when switching notes, timing issues when exiting PPT presentation mode, export timeout handling errors, and more.</li>\n<li>Concurrency safety: fixed ExportCache data races, security-scoped URL leaks, and note state confusion after async rendering.\n<img src=\"https://raw.githubusercontent.com/tw93/static/main/miaoyan/miaoyan.gif\" width=\"800px\">\n</li>\n</ol>\n<p><strong>Kaku has an interesting feature coming soon. It should ship in a few days</strong><br>\n<a href=\"https://github.com/tw93/Kaku\">https://github.com/tw93/Kaku</a><br>\nKaku has been developing an interesting feature recently: a real Agent assistant that can move smoothly inside the terminal. It gradually realizes the quiet Kaku AI idea I mentioned during Chinese New Year, and it also helps me move 100% of my coding work fully into Kaku.</p>\n<p>A very convenient context environment, useful CLI tools, models, and a restrained personality make Kaku feel different. It is not cold, and it is not the over-the-top “I have got you” style of GPT either. Kaku AI is positioned as a technically strong, friendly, and concise engineer friend. Once I test it for a few days without bugs, I will release Kaku 0.10 for everyone to try.<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png\" loading=\"lazy\" data-pswp-width=\"1645\" data-pswp-height=\"1079\" style=\"aspect-ratio: 1.5246;\" width=\"800\"></p>\n<p><strong>My Claude Code Max usage suggestions</strong><br>\nFirst, I add an alias in <code>.zshrc</code>, so every time I press <code>c</code>, it starts dangerous unrestricted mode directly. If you are a beginner, I do not recommend starting this way. Auto mode is enough. Another big suggestion is to set the automatic context window compaction to 400k. Together, the alias below goes into the file, which means the 1m context window starts compacting at 40%. The result feels much better.</p>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"sh\"><code><span class=\"line\"><span style=\"color:#F97583\">alias</span><span style=\"color:#E1E4E8\"> c</span><span style=\"color:#F97583\">=</span><span style=\"color:#9ECBFF\">'CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 claude --dangerously-skip-permissions'</span></span></code></pre>\n<p>Then I set /model to opusplan. You can run the hidden command <code>/model opusplan</code> directly inside Claude Code to enable it. If you want it faster, you can turn on <code>/fast</code>, which nicely makes up for the token savings above.</p>\n<p>Finally, someone gave me a really good suggestion: when using opusplan, make sure to set <code>showClearContextOnPlanAccept</code> to <code>true</code> in the Claude config file <code>~/.claude/settings.json</code>. Otherwise, Sonnet can run into serious cache miss issues. Once this is configured, the experience feels much smoother.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"264. Finally Done","link":"https://weekly.tw93.fun/en/posts/264/","pubDate":"Mon, 06 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/kd/264.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/kd/264.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/kd/264.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo is a shot of my hardware toy finally finished. It was a fun ride, and I wanted to document the whole process in this week’s issue. Hope you enjoy reading it.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"new-article\">New Article</h2>\n<p><strong>How I Deep-Dive into a New Technical Domain in the AI Era</strong><br>\n<a href=\"https://tw93.fun/2026-04-06/learn.html\">https://tw93.fun/2026-04-06/learn.html</a><br>\nA follow-up to the learning writeup from last time, combined with the /learn skill inside Waza, walking through how I actually wrote that previous large model article. Hope it is useful to you.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/deep04.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/deep04.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/deep04.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<h2 id=\"building-a-little-robot-dog\">Building a Little Robot Dog</h2>\n<p><strong>April 4: Back to hardware basics. I want to build something that combines software and hardware.</strong><br>\nAll the parts and tools had finally arrived, a whole table full of them. Saving it all for the Qingming holiday to dig in properly.<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/gu/gOR0gb.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/gu/gOR0gb.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/gu/gOR0gb.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"1536\" style=\"aspect-ratio: 1.3333;\" width=\"800\"></p>\n<p><strong>April 4, 9:45 PM: v0.1.0-beta</strong><br>\nThe first sign of life. I was so happy I couldn’t describe it.<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://gw.alipayobjects.com/os/k/4s/IMG_0321.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>April 5, 12:07 AM: v0.1.0-beta1</strong><br>\nGot the WiFi module, AI module, microcontroller module, and quad-leg module all running together. Tomorrow I’ll attach the legs and tune the screen. Going to sleep right now!<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/IMG_032613.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>April 5, 1:45 PM: v0.1.0-beta2</strong><br>\nMechanical leg control is working. It can crouch, sleep, and walk. Still rough around the edges, but one of the leg motors from the order looks like it has a problem. Waiting on a replacement part.<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/new01.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>April 6, 10:33 AM: v0.1.0-beta3</strong><br>\nAll four legs are fully under control now. But I burned the screen during debugging. Waiting on shipping. Can’t wait to release.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_0379.jpg06.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_0379.jpg06.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_0379.jpg06.jpg\" loading=\"lazy\" data-pswp-width=\"3880\" data-pswp-height=\"2910\" style=\"aspect-ratio: 1.3333;\" width=\"800\"></p>\n<p><strong>April 8, 11:37 PM: v0.1.0-beta4</strong><br>\nThe replacement screen arrived after work. Got it running, then tuned the temperature, CO2, infrared, and lighting sensors all in one go. Still working on WiFi provisioning. It’s basically taking shape now, just need to seal and secure everything.<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/IMG_043028.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>April 11, 11:30 AM: v0.1.0 finally ships 🎉</strong><br>\nSealed up the battery pack and tied a few straps around it to keep things from falling apart. Got the WiFi and AI conversation module working too. Using DeepSeek makes it noticeably faster, response speed is decent. Next up: something with more advanced hardware.<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/26F9D347-A9C8-4DCC-811A-033887BD049515.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>A few photos from different angles to mark the moment</strong></p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"50%\">\n           <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/26410.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/26410.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/26410.jpg\" loading=\"lazy\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"600\">\n        </td>\n        <td width=\"50%\">\n           <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_050519.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_050519.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_050519.JPG\" loading=\"lazy\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"600\">\n        </td>\n    </tr>\n    <tr>\n        <td width=\"50%\">\n           <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_050736.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_050736.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_050736.JPG\" loading=\"lazy\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"600\">\n        </td>\n        <td width=\"50%\">\n           <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_050944.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_050944.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_050944.JPG\" loading=\"lazy\" data-pswp-width=\"4032\" data-pswp-height=\"3024\" style=\"aspect-ratio: 1.3333;\" width=\"600\">\n        </td>\n    </tr>\n</tbody></table>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>App Store Price: Look up app prices across different countries and regions</strong><br>\n<a href=\"https://app.vbr.me\">https://app.vbr.me</a><br>\nA handy little tool. You can check what an app costs in any App Store region, like figuring out which country has the cheapest Claude subscription. I’ll probably find a use for this soon.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/Pnc8XN58.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/Pnc8XN58.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/Pnc8XN58.png\" loading=\"lazy\" data-pswp-width=\"1200\" data-pswp-height=\"886\" style=\"aspect-ratio: 1.3544;\" width=\"800\"></p>\n<h2 id=\"random-thoughts\">Random Thoughts</h2>\n<p><strong>Let me share what I think makes for a genuinely good product experience.</strong></p>\n<p>There’s a followup to my lost drone story. The signal cut out mid-flight, I searched for a long time, couldn’t find it. I uploaded the flight logs and DJI couldn’t find a clear cause either. Even without being sure it was actually lost, they asked for very minimal proof and, under their Care Refresh service, just shipped me a brand new one. They even threw in a 128GB card in case it would be more convenient. Not once did anyone ask me to explain how it got lost or whether I had gone looking for it.</p>\n<p>That experience made me a real fan of DJI. Their customer service and technical support engineers were professional and clear throughout the whole process. I want to use that story to share what I think makes a good product experience.</p>\n<p>Good product experience is not just what people usually say: great interaction design, beautiful UI, easy to use, no bugs. Those matter, but what matters even more is this: when a user is in a tough spot, you give them something far better than they expected. Something so good that they get excited and tell their friends about it. That is what I consider truly good product experience, the kind that is good for business too. The only thing I worry about is that this culture of trust and simplicity gets taken advantage of by people trying to game the system. It’s something we all have to protect together.</p>\n<p>Two other experiences that stood out to me involved Ctrip.</p>\n<p>The first was three years ago during the Spring Festival. Tickets home were nearly impossible to get. They suggested I buy tickets for a few extra stops to guarantee I could board, and I was already grateful for that because nothing else had worked. But then, even better: I was at the movies that afternoon, feeling like everything was handled, when I got a call from an unknown number that I declined. Right after, a text came in saying they had found me a direct option that didn’t require the extra stops, and could I please go to the app to confirm. You could tell a real person had made that call and sent that message. It wasn’t the few dollars saved. It was the feeling that someone was genuinely working hard for me and delivering better than I had hoped. That is good experience.</p>\n<p>The second happened recently, during National Day. I had gotten two first-class seats but they weren’t together, pretty far apart. I had noted I was traveling with an 18-month-old. Then, the day before departure, Ctrip quietly swapped our seats. Just a simple notification: we found an open seat in your carriage and moved you both together. Another moment where someone gave me more than I expected.</p>\n<p>So if you are building a product, think about giving your users something far beyond what they expect in the moments when they really need it, rather than chasing clicks with tricks. When you do that, people will genuinely love your product and become your most loyal fans.</p>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/lxEYPC26.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/lxEYPC26.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/lxEYPC26.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"1536\" style=\"aspect-ratio: 1.3333;\" width=\"800\"><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"263. Hardware Beauty","link":"https://weekly.tw93.fun/en/posts/263/","pubDate":"Mon, 06 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/e5/263.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/e5/263.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/e5/263.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"4029\" data-pswp-height=\"3022\" style=\"aspect-ratio: 1.3332;\" width=\"800\">\n<p><small>The cover photo is from a hardware toy I spent three days playing with at home during the holiday. I was soldering, applying glue, and debugging through a pile of components. I was almost at the final step when I burned the screen during testing. Now I am waiting for the replacement to arrive so I can keep going. Lots of fun.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"new-article\">New Article</h2>\n<p><strong>What You Don’t Know About LLM Training: Principles, Paths, and New Practices</strong><br>\n<a href=\"https://tw93.fun/2026-04-03/llm.html\">https://tw93.fun/2026-04-03/llm.html</a><br>\nThis is the longest article I have ever written. The good news is I finally got a handle on the basics of large model training. The gap between what I assumed I knew before and what I actually found was massive. I highly recommend this to anyone working in AI applications or anyone curious about AI. It should give you a clear picture without leaving you lost.<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/4q/Group.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/4q/Group.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/4q/Group.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>Waza, My Engineer-Alter-Ego Skill Set</strong><br>\n<a href=\"https://github.com/tw93/waza\">https://github.com/tw93/waza</a><br>\nI packaged my personal skills into something new called Waza. In Japanese, 技（わざ）means technique or skill, often used in martial arts. This is the first time I have released an open-source project with zero code, just markdown files. In the pre-AI era, for a programmer, that would have been embarrassing.</p>\n<p>When Superpowers came out, I installed it once and deleted it right away. Too heavy, not my thing. A lot of people kept telling me “You don’t know Superpowers? If you’re not using it you’re not with the times, it’s amazing.” Then I found gstack, which was better, but still felt like too much. I still wasn’t used to it. I wanted something simple and useful where I could clearly see what it was doing.</p>\n<p>So I built Waza the way I like it. For me, this set is enough. No need to mess with other skills. Not too many, not too few, just right. New iterations can be added over time.</p>\n<p>The 8 skills correspond to 8 abilities I think a good engineer in the AI era should have:</p>\n<ol>\n<li>\n<p><strong>Think clearly.</strong> AI writes code fast, but if the direction is wrong, the faster you go the further off course you get. A good engineer questions the problem itself before touching any code, stress-tests the plan, and has a clear mental architecture before asking AI to execute. /think locks this habit in.</p>\n</li>\n<li>\n<p><strong>Design well.</strong> Building a product is not just about making features work. AI-generated things tend to look the same. Good engineers have an aesthetic standard for what they deliver and a clear design direction. /design handles this.</p>\n</li>\n<li>\n<p><strong>Debug systematically.</strong> AI fixing bugs most easily falls into a “try this, try that” loop. A good engineer diagnoses problems systematically, confirms the root cause before touching the code, and gets it right in one shot. I turned this habit into /hunt.</p>\n</li>\n<li>\n<p><strong>Review before merging.</strong> AI-generated code needs human oversight even more. Check the diff before merging, auto-fix what can be auto-fixed, group the judgment calls together, and verify with evidence rather than gut feeling. That is /check.</p>\n</li>\n<li>\n<p><strong>Read primary sources.</strong> Good engineers read original material, not second-hand summaries. Converting URLs or PDFs into clean Markdown and pulling it directly into the workflow is what /read does.</p>\n</li>\n<li>\n<p><strong>Write clearly.</strong> No matter how technically strong you are, if you can’t explain it clearly, others won’t receive it. A good engineer can convey what they have learned and what they want to express to the right audience. /write helps you nail this step.</p>\n</li>\n<li>\n<p><strong>Learn actively.</strong> Tech moves faster in the AI era. Entering an unfamiliar domain is not just skimming a few articles. It is collecting, digesting, outlining, drafting, refining, and publishing. Output drives learning. That entire flow is /learn.</p>\n</li>\n<li>\n<p><strong>Maintain the toolchain.</strong> A good engineer does not only care about business code. The toolchain itself needs regular checkups. When something feels off with CLAUDE.md, rules, hooks, or MCP configs, run /health and find out what is wrong.</p>\n<img src=\"https://gw.alipayobjects.com/zos/k/yx/JMouVn.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/yx/JMouVn.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/yx/JMouVn.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1920\" style=\"aspect-ratio: 1.0000;\" width=\"800\">\n</li>\n</ol>\n<h2 id=\"product-updates\">Product Updates</h2>\n<p><strong>Kaku 0.9 is out and it is really good</strong><br>\n<a href=\"https://github.com/tw93/kaku\">https://github.com/tw93/kaku</a><br>\nA few fun features shipped in this version that should be genuinely helpful.</p>\n<ol>\n<li><strong>Natural language command generation</strong>: Type <code># &#x3C;description></code> and press Enter, and the auto-generated command is injected back into the prompt.</li>\n<li><strong>Option+Click to move the cursor</strong>: Click anywhere on the current line to move the cursor there.</li>\n<li><strong>Window pinning</strong>: Pin the window to the front via the Window menu, and toggle it on or off anytime.</li>\n</ol>\n<p><video width=\"800px\" preload=\"\" loop data-autoplay=\"\" controls muted><source src=\"https://gw.alipayobjects.com/os/k/ke/kaku.mp4\" type=\"video/mp4\"></video></p>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Claude HUD helps you track your Claude usage</strong><br>\n<a href=\"https://github.com/jarrodwatts/claude-hud\">https://github.com/jarrodwatts/claude-hud</a><br>\nIt is a little feature-heavy, but after some simple configuration it works well. Worth trying if you are curious. The code feels a bit complex, and when I have time I will probably simplify it myself. Minimalism is the goal.<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/bc/l4yelI.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/bc/l4yelI.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/bc/l4yelI.png\" loading=\"lazy\" data-pswp-width=\"2440\" data-pswp-height=\"884\" style=\"aspect-ratio: 2.7602;\" width=\"800\"></p>\n<p><strong>A super minimal, AI-friendly Markdown doc generator</strong><br>\n<a href=\"https://docmd.io\">https://docmd.io</a><br>\nStumbled on docmd. It is a zero-config documentation generator built for developers. It converts Markdown into fast, clean static docs with automatic routing, built-in search, and context that AI can easily use.<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/rx/u4S6HX.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/rx/u4S6HX.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/rx/u4S6HX.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1080\" style=\"aspect-ratio: 1.7778;\" width=\"800\"></p>\n<p><strong>Picked up a 140W charger and it is great</strong><br>\nGot a 140W charger. Good size, finally free from my old 45W. Four ports, which makes it way more convenient on the go. The display showing real-time power output is a nice touch.</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"33%\">\n           <img src=\"https://gw.alipayobjects.com/zos/k/2s/4R4qMs.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/2s/4R4qMs.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/2s/4R4qMs.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"300\">\n        </td>\n        <td width=\"33%\">\n           <img src=\"https://gw.alipayobjects.com/zos/k/k5/XWLwvO.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/k5/XWLwvO.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/k5/XWLwvO.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"300\">\n        </td>\n        <td width=\"33%\">\n           <img src=\"https://gw.alipayobjects.com/zos/k/vr/2oXfRE.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/vr/2oXfRE.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/vr/2oXfRE.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"300\">\n        </td>\n    </tr>\n</tbody></table>\n<h2 id=\"random-thoughts\">Random Thoughts</h2>\n<p><strong>Let me share how I dive deep into a new technical domain in the AI era.</strong></p>\n<p>Before AI, I mostly read books and went through every blog post from notable people in the field, both domestic and international, writing notes by hand. It was slow but genuinely fun. Learning WebGL back then felt like that. Getting a solid understanding of something might take half a year of free time. Slow, but happy.</p>\n<p>Now that AI is here, I still can’t stand those “summarize a hundred-year-old novel in 3 minutes” things online. I also dislike short-episode dramas and watching shows at 2x speed. I mostly still choose good things and take time with them.</p>\n<p>But recently while writing the “You Don’t Know Claude Code” and Agent series, outside of the parts I already understood, there were huge areas I wasn’t clear on. Luckily I had saved a lot of articles, and this was the perfect chance to clear the backlog, fully digest everything, and write it all out. I have always believed that what matters is not how much you read, how much you hear, or how much you take in. Most of that doesn’t really stick. What matters is how much you output. That is what becomes truly yours.</p>\n<p>A couple of weeks ago I started a deep challenge: studying the training pipeline of large language models and making sure even non-specialists could understand it. I explored for two weeks, and the experience is now ready to share. The article is basically done and should be coming out soon.</p>\n<p>I organize this learning process like writing code. Step one: collect high-quality material. Recent top papers in the field, blog posts from major model providers about their key releases, threads from model leads on X, recent courses from Stanford and similar schools, and classic “build an LLM from scratch” repos. These are my sources. I use tools to automate downloading everything, converting to Markdown, cleaning, and organizing it all into a structured repo for this research.</p>\n<p>For content I understand, I read it all through, delete the bad parts, and keep the good ones. For content I don’t understand, I use Claude to help me get it. The more complex parts I translate into Chinese and read that way. For code that can run locally, I run it. For code that can’t, I read the structure. Either way, I end up with a rough understanding of the technical principles. This phase usually cuts the original material by half.</p>\n<p>At this point you have a general picture of the field, so you can start writing an outline and figuring out which source material belongs with each section. All of it works well in Markdown. What do you want to say, or more accurately, what do you want your reader to know? Always remember: an article is written for its readers. You need to know your audience’s level. It is a lot like giving a presentation.</p>\n<p>Then comes the grind, which is also a review of everything you have covered. It feels a lot like cramming before an exam in college. You fill in each section completely, and what you end up with is a very long and somewhat rambling article.</p>\n<p>This is where AI really helps. You can ask it to remove the redundant parts and smooth out the disconnected bits, without changing your original meaning or your voice. You can also ask it to flag gaps and help fill them in. That process teaches you even more things you had missed.</p>\n<p>Once that is done, read through it yourself one more time, not AI. AI is just a tool here. Do not let it replace your brain, that defeats the whole point. Reading through yourself, you can keep adjusting and polishing. It feels a lot like testing your own code: fix issues, fix more issues. After reading it twice and feeling good about it, you can publish it for everyone to see.</p>\n<p>Some folks worry that nobody will read what they write, so they hold back or just don’t write at all. Honestly, if your content has real value, readers will come. Worry about quality, not the audience.</p>\n<p>That took 10 minutes to write. Done. Happy to hear how you learn new fields. The video below is a recording of the learning repo for the LLM training article I mentioned, the one coming out soon. It shows my “industrial-scale” way of learning. Kind of fun to look at.</p>\n<p><video width=\"800px\" preload=\"\" controls muted><source src=\"https://cdn.tw93.fun/blog/pic/llm45.mp4\" type=\"video/mp4\"></video></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"}]}}