第 265 期 - 西溪窗外 En
封面图用于周内中午去西溪湿地月芽吃了个午饭,好久没有去了,环境真好,刚好那天太阳穿短袖刚刚好舒服的那种状态,拍了一个窗外,春天真快。
记录每周看到的接地气的潮流技术,筛选后发布于此,觉得不错可关注此周刊,方便获取更新通知
聊聊 Waza 的设计思路
我想陆续用几条内容来介绍 Waza 里面一些有趣技能的实现参考,上周每天早上写了一条,记录给大伙看看。
https://github.com/tw93/waza
介绍 /design 技能
首先我非常讨厌 AI 生成的那种千篇一律甚至还带 emoji,蓝紫色渐变的网站,觉得非常丑,只能说能用。
于是我把我最近做的所有的带 UI 的网站让 Claude Code 去学习我的调教记录,会生成一份基础的我觉得最佳实践和不应该有的反模式,这个基础上会有一个雏形,然后我把 claude frontend design skill 里面有用的学习过来,基本就有一个模式了。
考虑到一些具体规则,我从 pbakaus/impeccable 学习了一些,他给我贡献了大量具体的规则,比如说禁用的字体清单、色彩系统、主题风格、css 模式的禁止项、动画的规范等,用于让 AI 具备一定的审美知识了。
然后从 getdesign 的能力中,获取到设计的一个来源于 Google Stitch 的九段式脚手架的结构,在简化能力基础上汇集到 /design 里面,这里他就有一个知识面体系了。
最后我会在让你用这个技能的时候,先回答几个问题,谁用、美学方向选择、页面想让用户记住的、你最不喜欢的、网页特色微交互是怎么样的,这样 Claude Code 再基于这个重要的上下文以及 /design 去工作 往往会得到事倍功半的效果。
如何设计 /check 这个代码 Review 技能的
首先我们需要知道模型本身告诉你他做完了,不一定是做完了,很有可能会留下一些不存在或者有问题的东西,经常会藏些问题,在 Agent 设计中我的工程经验是会给模型一个 checklist 用来校验是否真的做完了,这样往往会比你让他去检查效果好太多了。
/check 最开始做的时候设计就不是一个大而全的 reviewer,而是一个编排分工能力系统,其中 SKILLmd 是主审,负责审查的分级和流程控制,agents/ 下有独立的安全审查员和架构审查员,各管各的,互不干扰,什么时候拉谁进来,会由一份激活规则来判断决定,而非传统大家用的关键词匹配。
分级逻辑也比较有意思,对于 100 行以下的代码快速 review,100-500 行的按需加专家,500 行以上的全拉满,然后再加一轮对抗性测试,对抗性测试会从这四个角度来找漏洞,包括违反假设条件、组合失败下的问题可能、上下级串联错误的问题、滥用的场景等等
然后发现的问题也分 4 级来处理,能安全修复的直接去修复了,大概了对的会打包出来让你手动再确定一次是否 ok,需要判断的会问你,仅供参考的部分也会高数你,但是不会每一个小问题都来问你一遍,也不会越权帮你改行为逻辑。
还有一个硬要求,验证没有跑完就不算完成,会自带一个探测的脚本,能识别 Cargo、TypeScript、Python 等项目类型去跑测试,探测不到就直接报错,不会假装通过。
这样就更像一个很经验的技术专家,在面对不同情况的问题 review 的一些经验,刚好我把这些经验用很简单方式沉淀到了 waza 的 /check 技能。
如何设计 /think 这个技能的
居然到了 Waza Skill 设计思路分享的第三弹,今天给大伙分享我是如何设计 /think 这个技能的,也就是在写代码之前做方案设计用的。
我使用 Claude Code 有两个非常有意思的设置,第一个是 /model opusplan, 也即默认做计划会使用 opus 最强模型,然后去执行使用普通 Sonnet 模型,这样可以帮助我的 Max 省点儿用在更需要地方。
第二个是我其实默认执行会用 alias c=“claude —dangerously-skip-permissions”,这个不建议技术小白用,我用是由于我知道他在做什么,以及主要是我懒得缘故。
然后回到正题,那么 /think 怎么让最牛的模型执行更好一点呢?继续回到模型本身,其实模型不喜欢表态,但是我更喜欢能表态给你最优方案的工程师,所有我做的第一件事就是,开头就要求模型必须有立场,说清楚什么证据能推翻这个立场,并且明确禁掉了”There are many ways to think about this”这类正确但无用的废话,给 2-3 个选项没问题,但必须有明确推荐,而且必须包含一个最小化选项。
然后方案并不是想出来就 ok 了,第二部会让他自己反驳自己,什么情况下这个方案会有问题,假如有办法修复,那就补充到方案里面重新呈现,假如直接打破了方案,他会直接高数在哪些情况下为什么不行,这样至少交到你手里的方案是你心知肚明的。
对于前提验证也会做得比较细,先确定解决的目录代码位置对不对,我还真出现过他出方案拿着一个不对的路径在出,然后查旧的技术方案文档避免重复造轮子,然后去搜索 Github 看看有没有人也处理过类似的问题,这三步做完才开始想办法,防止一开始就建立在错误的前提上。
这里也会有复杂性分级,超过 8 个文件或者服务新增会明确告知规模,超 3 个组件交换数据会画 ASCII 图找环,所有 API key 和第三方依赖在方案阶段就列清楚,防止白忙,也防止引入不靠谱的方案。
最后还有一个硬性规定,方案里面不允许出现 TBD、TODO、“以后再说”、“类似第 N 步”这种东西,因为又回到 AI 的性格,给了这个东西执行的时候很容易出现少做或者多瞎想,相当于不要给 AI 任何退路,导致效果不好。
最后方案的输出也有要求,做什么、不做什么、选了哪一个方案什么理由,3-5 个决策依据,明确的未知项,/think 决不写代码,用户批准后再进行。
这里我做 Think 技能的时候,也是参考我认为好的技术专家是怎么来做技术方案的,详细分析调研后的最优技术方案,决策果断,不留尾巴,被否定了立马去优化方案本身等等。
聊工程师技能部分的 /hunt 技能
终于到了 Waza SKill 设计思路的第 4 部分,讲完这个就差不多了,因为其他两个是 /read 和 /learn 之前已经简单聊过,这次继续聊工程师技能部分的 /hunt 技能,其实就是 debug 问题排查问题的技能。
其实证明 AICoding 是民科和专科的一个很大区别,可以来看用户是如何用 AI 来解决一些很久没有解决的问题的排查思路的,这个过程可以看到明显区别,其实这也是经验丰富的工程师其实用好 AI 远会比不那么懂技术的人可以解决更加复杂问题的原因。
之前经常碰到,Claude Code 遇到一个问题去解决,基本上就是是一个 patch,你说不行,他给你是另外一个,你会发现 4-5 轮下面,又有新问题出来了,也即很容易出现在没有诊断出问题下不断去打补丁,很像之前没有 AI 时候刚刚写代码的小伙伴。
/hunt 的核心规则有意思,就是在 AI 能用一句话说出根因之前,不许碰代码。而且这句话有精度要求,需要明确的那种原因说明。
然后我设计了一张“自我欺骗检查表”,防止模型陷入几种典型的自我合理化的思维,每一种都配备了对应的规则,然后在 gotchas 里有真实案例,这里会根据我最近一个月排查问题时候出现的问题再次总结抽象一下。
假设验证阶段也有一些干活要求,比如加一个最新的观测手段,比如让 AI 学会打 log,打断言,或者跑一个最小失败的测试 case,修完之后还有问题应该是立马去更换方案,会把查了什么、排查了什么方向、还不知道什么整理成 handoff 交给用户来决定怎么继续,而非一直试下去。
输出也会建议到 AI,根因在哪 file:line、改了什么 file:line、什么证据确认修好了、测试通过情况。最终状态三选一:resolved、resolved with caveats、blocked。
这样你会发现 /hunt 就很像一个经验丰富的技术专家了,遇到问题不是去猜,而是先沉下心去看问题在哪儿,诊断清楚原因,然后一把就过就解决的那种,往往这样会节约很多时间。
随便看看
妙言发布了 3.2.0 Nargacuga 🐆 版本
http://github.com/tw93/MiaoYan
1、预览更快:两阶段渲染让文字立即显示,本地图片在后台懒加载,明显减少预览首屏等待时间
2、终端快捷入口:新增 Cmd+J 全局快捷键,随时打开当前文件夹所在终端,文件夹右键菜单也有对应入口
3、复制路径:右键任意笔记可直接复制完整文件路径
4、西班牙语本地化:完整覆盖菜单、设置页和系统字符串的西班牙语翻译
5、Mermaid 升级至 v11.14.0,修复子图连线渲染问题并新增图表功能
6、实时重载修复:其他工具修改的笔记现在能正确触发重载,含符号链接目录内的文件(closes #502)
7、启动与窗口修复:从 Finder 直接打开 .md 文件不再出现白屏,单栏模式下启动和退出时也不会再丢失笔记
8、导出与模式切换:修复切换笔记时预览空白、PPT 演示模式退出时序混乱、导出超时处理异常等问题
9、并发安全:修复 ExportCache 数据竞争、安全作用域 URL 泄漏、异步渲染后笔记状态错乱等问题

Kaku 最近会上一个有意思的功能,再等几天就上线
https://github.com/tw93/Kaku
Kaku 最近在开发一个有意思的功能,一个在终端内可畅通无阻的真 Agent 帮手,慢慢实现过年期间说的那个 Kaku AI 的润物细无声,也满足让我 100% 的 Coding 工作可以完全在 Kaku 完成。
非常方便的上下文环境 + 各种 CLI 好用的工具 + 模型 + 克制的性格 让 Kaku 不是那种冷冰冰,也不是那种 GPT 那种我稳稳把你接住的浮夸感,Kaku AI 的定位是你的一个技术很厉害但友善且不啰嗦的工程师好友。等我测试几天没有 Bug 的时候,就发布 Kaku 的 0.10 版本给大伙用用。

我的 Claude Code Max 使用建议
首先我会在 .zshrc 里面加上一个 alias,这样我每次按 c 就直接启动了危险无阻挡模式,假如你是小白就不建议开始,使用 auto mode 就好了,然后有一个很大的建议,把自动上下文窗口压缩控制到 400k,加起来就是后面这个 alias 写到文件里面去,相当于把 1m 的上下文窗口在 40%的时候就开始压缩了,效果会好不少。
alias c='CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 claude --dangerously-skip-permissions'
然后我会设置 /model 为 opusplan,这类你可以直接在 claude code 里面运行 /model opusplan 这个隐藏命令就开始了,假如想更快,可以 /fast 打开这个,刚好弥补上面节约的 token。
最后,还有人给了我一个超级好的建议,就是在使用 opusplan 的时候,一定要在 claude 配置文件~/.claude/settings.json里面开启 showClearContextOnPlanAccept 这个字段为 true,不然会会在 sonnet 上遇到严重的缓存未命中问题,一把设置好后,舒服太多了。