我不会写代码。但我用几个晚上,在 Claude Code 里和 AI 一起做了一只桌面宠物。
它会呼吸、会放烟花、会在我等 AI 回复的时候安静地陪着我,还会监督我每天打卡。全程 Claude 写代码,我看画面,哪里不对就喊停。
文末附了提示词,你复制给 Claude Code,也能做一只自己的。

1
起因是我刷到一个能生成 Claude 吉祥物动画的小工具。装好之后我说了一句:"让小螃蟹去花园里玩一会儿"。几秒钟后,蓝天、白云、绿草地,一只橙色的像素小螃蟹就在花丛里歪头望着我。

我又让它生成了一个"海边看日落"的动画。看着小螃蟹安静地坐在沙滩上看夕阳,我突然想到了旅行青蛙。
不知道你们有没有过这种感觉:每次给 AI 发完 prompt,盯着加载图标等结果的那几十秒,刷别的怕打断思路,干等着又觉得心里空空的。那一刻我突然想——
我不想让它只活在浏览器标签页里。
我想让它住在我的桌面上,陪我熬过那些等待的空白。需求很快定下来了:macOS 桌面宠物,透明悬浮窗,可拖动,纯代码画像素不用图片。剩下的交给 AI——它写代码,我看效果、做判断。
2
第一版跑起来的时候,我问了一个很蠢的问题:"我想问下咋启动啊。"
命令行启动桌宠确实不太直觉。启动之后桌面出现了两只一模一样的小螃蟹——不小心运行了两次。虽然是个 bug,但看着它俩并排站着,有点可爱。
真正的问题是动画跑起来之后开始的。Claude 给小螃蟹加了星星眼的表情,但整个身体才 14×8 像素,夸张的表情在这么小的画面上根本看不清,反而变了形。
"不像 Claude 了,去掉星星眼吧。"
后来眼睛又改了好几版。笑眼太大、闭眼线多了一个像素、竖眼看着别扭。来来回回折腾完,我定了一条规则:眼睛永远 1×1 像素,情绪靠身体动作和粒子效果表达。
这是我第一次意识到,AI 给你的方案看起来都挺合理,但你得有一条自己的底线。不然它一路改下去,最后你会得到一个"看起来正确但不是你要的"的东西。
还有一个小插曲——螃蟹是横着走的。对,这个 Claude 也搞错了,我让它改成横着走。
3
功能一个个加上去。烟花是看到 Claude 的 logo 之后想到的。它的米字形标志,8 个方向往外延伸,我一直觉得像烟花。第一版做得太小,我让 Claude 改成 logo 造型——8 个方向同时射出粒子线,三波连续爆炸。这是整个项目里我最喜欢的视觉效果。

但做到一半我发现,我最想要的不是这些酷炫动画,是音乐播放。
我用 Claude Code 做东西的时候喜欢放轻音乐,感觉更容易进入状态,慢慢养成了习惯。但每次都要切到浏览器、打开 YouTube、找到那个单曲循环的歌单——一套动作下来,节奏就断了。
"我最刚需的需求就是播放音乐。每次都要打开 YouTube,很麻烦,现在一键就能播了。"
用 macOS 自带的播放器实现,零依赖。至于音乐从哪来——我连背景音乐都是用 Suno 生成的,3 首轻音乐内置进去,开箱就能听。
然后是 Claude Code 联动。通过 HTTP 接口,小螃蟹能感知我正在和 Claude 做什么。我发 prompt,它头顶冒出思考气泡。Claude 在写代码,它就面对一个小屏幕敲键盘。工具报错了,它身体颤抖冒烟。任务完成,它腮红加五彩粒子庆祝。
做到这一步我又加了一个功能——权限气泡。Claude 每次请求敏感权限时,小螃蟹弹出一张卡片,你直接点允许或拒绝。技术上完全跑通了。
但我把它删了。
如果所有操作都秒速完成,等待感就没了,陪伴也失去了意义。有些功能技术上能做,但做了反而破坏体验。
4
做完一版,用了一阵子我发现一个问题——我退出这个项目,它就跟着消失了。
当时我在开发另一个项目,开个新对话要重头说上下文。我怕打断当前项目的对话记录、影响进度,另外 Claude 的额度有限,我想把它用在真正推进事情的地方——不是每次重启 Clawdy 都要跟 AI 从头讲一遍。
所以那个项目一结束,我立刻跟 AI 说:让它能一直在。
AI 给了三个方案——LaunchAgent、py2app、nohup 脚本。我没仔细研究哪个是什么,直接让它挑最轻量的给我用。
我不关心用哪种技术。我关心的是关机再开,它还在。
5
做到这里我又让 AI 加了一个功能:Windows 兼容。
AI 真的做了——代码里有 Windows 分支,透明窗口换个属性,音乐播放换个库,右键事件换一下。看起来挺完整的。
但我没有 Windows 电脑。
这意味着我其实没法验证它在 Windows 上能不能跑。代码摆在那儿,它可能能跑,也可能第一行就崩。我不知道。
一开始我没想那么多,README 直接写"支持 macOS / Windows / Linux"。后来我盯着这行字看了一会儿——我没资格承诺我没验证过的东西。如果有人真的是 Windows 用户,下载回去跑不起来,他们会觉得我在骗人。
我去改了 README。

"macOS 已测试,Windows / Linux 代码已写但未实机验证,欢迎帮忙测试。"
改完之后我反而踏实了。你能验证的才是你的产品,剩下都是文档。
这是我从这次开发里学到的一件挺重要的事——AI 能帮你把代码铺到每个平台,但它不会替你验证。不会代码的人最容易掉的坑,不是技术不够,是以为自己做到了。
6
它既然一直在桌面上了,我开始想——它能不能做点别的。
比如监督我做事。
我给自己定了个目标:四个月写 32 篇公众号,完成就出国玩一周。这是我给自己画的饼,但画在脑子里总会忘,画在本子上又嫌麻烦。那不如,让它画在小螃蟹这儿?
我跟 AI 说了一下,它就加了出来:今日打卡、计划管理、全部进度。

点一下"打卡",它变成"今日已打",数字从 0/32 跳到 1/32。

看全部进度能看到连续打卡天数、进度条、完成后的奖励。

做完之后我盯着那个进度条看了一会儿。本来我想的是它"陪我等 AI",现在它变成了"陪我完成每天要做的事"。功能变了,但它还是那只小螃蟹。
需求会自己长出来。产品不是一开始就设计好的,它是你用着用着、从生活里长出来的。
7
还有一个问题我折腾了好久。
透明窗口有个副作用——鼠标点击会穿过去。小螃蟹身体就 14×8 像素,窗口却是透明的一大片,你很难点中它。AI 给了几个方案,其中一个是加一层几乎看不见的网格来接收点击。我看了一眼效果图:
"这个黑色边框太难看了,恢复原样吧——或者你看看 clawd-assets 里有沙滩背景,用这个是不是会好看很多。"
clawd-assets 是我之前用 Clawd 工具生成的一堆 HTML 动画——跳舞的、放烟花的、还有海边看日落的。我想起来了,那张沙滩日落的图挺好看的。
AI 顺着我给的素材重构了整个场景。最后变成这样:Clawdy 有两个地方可以去——
家:就是你桌面上那只透明悬浮的小螃蟹,日常陪着你
沙滩:一个独立的小窗口,金色落日、紫色天空、蓝色海浪。它去那儿玩一会儿,你也可以把窗口收起来

我点"去沙滩玩",它就跳到另一个窗口里,走在沙滩上看落日。我点"回家",它又回到桌面角落继续呼吸。
它不再只是住在我桌面上,它有自己的家,也有自己的沙滩。
这段过程里我学到的是:AI 不知道你电脑里有什么。你做过的东西、攒的素材、某个旧文件夹里的图——这些 AI 看不到,除非你提起来。它能写代码、能给方案,但它不知道你"有什么"。不会代码的人在这件事上反而有优势——你比 AI 更清楚你自己的资源在哪里。
8
回头看这几个晚上,最有价值的不是那些代码,而是中间那些说"对"和"不对"的时刻——
星星眼不好看,去掉
权限气泡很酷但破坏定位,删掉
Windows 兼容我验证不了,改 README 承认
沙滩背景别用黑色网格,用我自己做过的素材
整个过程我不需要懂代码。我只需要知道自己想要什么,看到结果之后判断对不对,不对就说不对,继续改。
判断力比代码能力更重要。
不会代码反而好——你不会被技术选项困住,你只问一句:这是不是我要的?
如果你也想做一只自己的桌面宠物,下面这段提示词复制给 Claude Code 就能开始:
帮我做一个 macOS 桌面宠物,用 Python + tkinter。角色是 Claude 的吉祥物 Clawd,一只橙色的像素小螃蟹。
【长什么样】
- 身体是 14×6 的像素方块,颜色 #e07a5f
- 有 2 只眼睛、2 条腿
- 整体走可爱像素风
【要实现什么】
1. 透明悬浮窗,无边框、置顶、能拖着走、不挡事
2. 有好几种动画状态,自动随机切换,每种播 3-8 秒
3. 所有像素都用代码画,不要用图片,后面好改
4. 双击小螃蟹能放烟花,参考 Claude logo 的米字形,8 个方向同时射出粒子线
5. (可选)打卡功能:可以自己新建目标,每天点一下打卡,有进度条,完成了给个奖励
角色长什么样、叫什么名字、有什么特殊功能,你自己来定。代码的事交给 AI,你只管看效果——觉得不对就喊停,觉得对了就继续。
如果你想直接用现成的,Clawdy 在这里:github.com/lunaark/clawdy

你每天打开电脑,盯着屏幕等什么?
那个让你烦躁或空白的时刻,可能就是你下一个产品要解决的地方。