Claude 干活的时候,在终端里打砖块

Claude Code 2.1.287 在 10 月 1 日上线了 Mods。第二天,GitHub 上冒出来的一批 mod 仓库里,最热闹的一类既不是安全工具,也不是用量统计,而是游戏。用「while Claude works」搜索,10 月 2 日前后新建的仓库里,能算作游戏的有十个左右,另外还有四个是在 Claude 干活时刷短视频的。星数最高的是 jarrodwatts/intermission,Claude 一开始干活,它就把你拉进一局 Doom 死斗。

本文挑三个能在普通终端里跑的游戏 mod,在本机实际装上玩了一遍,截图都来自真实终端。它们有一个共同点:Claude 开始干活,游戏开始;Claude 做完或者需要你回答问题,游戏立刻冻结。这件事 settings hook 做不到,只有 mod 能做。文章最后单独讲装第三方 mod 之前该看什么,因为 mod 和 Claude Code 本身拥有一样的本机权限。

如果还不了解 Mods 是什么,可以先看上一篇《Claude Code Mods 是什么:给 Claude 加工具、在终端画界面》。

等 Claude 的那几分钟

我在演示目录里让 Claude 写一个 400 行的命令行俄罗斯方块,它用了 2 分 9 秒;再让它读代码写一份 README,用了 28 秒。这种几十秒到几分钟的等待,每天要发生几十次。时间短到不值得切去做别的事,又长到足够让人拿起手机。

游戏 mod 填的就是这段空档。它们的设计目标写得很一致:Claude 在忙的时候你玩,Claude 一需要你,游戏就把注意力还给你。claude-arcade 的 README 开头就写着「游戏在 Claude 需要你的那一刻冻结」,Clawd Quest、21 点、Doom 死斗都有同样的设定。

claude-arcade:Claude 一停,球就停在半空

Zaho92/claude-arcade 内置打砖块、贪吃蛇、Merge、扫雷和猜数字五个游戏。装好后输入 /arcade,面板在全屏布局下停靠在对话右侧,普通布局下出现在输入框上方。上图是 Claude 读代码的时候,我在右边打砖块。

Claude 一做完,游戏马上冻结,面板底部显示「Claude is done -- your turn」。上图里贪吃蛇就停在半路。各种冻结条件写在 README 的一张表里:

Claude 的状态 游戏
开始处理你的 prompt 运行
本轮结束 冻结,提示轮到你了
用 AskUserQuestion 向你提问 冻结到你回答为止
等待权限确认 冻结到工具执行完为止
某个 subagent 结束 继续运行,只看主线程

最后一行是个容易做错的细节。subagent 结束时同样会触发「本轮结束」事件,如果不区分,主线程还在干活,游戏就被冻结了。

试玩时我还碰到一个情况:Claude 写完 tetris.py 之后,Claude Code 自带的 diff 面板自动弹了出来,占掉了游戏的位置,要手动关掉 diff 面板才能回到游戏。两个面板抢的是同一块停靠区。

冻结靠的是四个事件

这个冻结逻辑在 claude-arcade 的 hooks/register.tsx 里,核心只有四个事件处理函数。下面是删掉细节后的结构:

ts 复制代码
// Claude 开始干活:游戏继续
on('turn.start', async ($, e, next) => { /* 标记主线程在运行 */ return next(e) })

// 本轮结束:只有主线程结束才冻结,subagent 结束不算
on('turn.complete', async ($, e, next) => {
  const done = await next(e)
  if (e.agentId === undefined) await freeze(/* 'done' */)
  return done
})

// Claude 向你提问:对话框开着的时候一直冻结
on('tool.call', { tool: 'AskUserQuestion' }, async ($, e, next) => {
  await freeze(/* asking */)
  try { return await next(e) } finally { /* 解除 */ }
})

// 弹出权限对话框:冻结到对应的工具执行完
on('classic.PermissionRequest', async ($, e, next) => { /* ... */ })

settings hook 也能收到 Stop、PermissionRequest 这些事件,但每次触发都是启动一个新的 shell 进程,执行完就退出。游戏要求两件 hook 给不了的东西:一是常驻的状态,球的位置、分数、冻结原因要一直留在内存里;二是一块能每秒重绘很多次的界面。mod 运行在 Claude Code 进程内,用 ui.render 画面板,用 $.store 跨会话保存最高分,这两件事都有了。

tool.call 那一段还有一点值得注意:处理函数先冻结,再调用 next(e) 等待对话框关闭,最后在 finally 里解除冻结。mod 不只是在事件发生后收到通知,而是包裹着整个工具调用,所以知道这个调用什么时候结束。

Clawd Quest:Claude 的每个动作都变成游戏事件

sangularvilue/clawd 更进一步,不只跟着 Claude 暂停,还把 Claude 的动作变成游戏里的事件。这是一个无限关卡的平台跳跃游戏,主角是 Claude Code 的吉祥物 Clawd,敌人是 bug、幻觉、回归、合并冲突和死循环。被敌人碰到会涨 context 条,涨满就触发自动压缩,掉一条命。每关结束时从三个升级里选一个,升级的名字是 Opus 5.5、Extended Thinking、Prompt Caching、Subagent、Git Worktree 这些 Claude Code 的功能名。

游戏和 Claude 的联动方式如下:

Claude 做了什么 游戏里发生什么
编辑文件 前方出现一个能量豆
成功执行一条命令 context 降 10%
搜索代码 掉下一串 token
启动 subagent 一架辅助无人机,持续 20 秒
更新待办列表 加 50 分
工具报错 爬进来一只 bug
联网 一个幻觉追着你跑
本轮完成 加 500 分,3 秒后把你交还给 prompt
需要你输入 游戏暂停

截图右侧面板底部有一行「Claude ran a command: context -10%」,就是 Claude 刚跑完一条 shell 命令后游戏给出的反馈。截图下方那条横幅来自另一个 mod,土耳其开发者写的 clawd-madenci:Clawd 在像素矿洞里走,Claude 读文件时它挖矿,写文件时它放木块,跑 Bash 时会出现一个 TNT 并爆炸,工具报错时有苦力怕追它。它画在输入框上方,用的是 Raster 元素,按半格字符逐格着色,所以在 tmux 里也能显示。

两个 mod 抢同一个 /clawd

我把 Clawd Quest 和 clawd-madenci 放在同一个会话里加载,启动时屏幕上出现了一行报错:

arduino 复制代码
clawd-madenci: session.start hook skipped: threw clawd-madenci:
$.command.register: "/clawd" refused: the plugin clawd-quest registered it already

两个 mod 都想注册 /clawd 这个斜杠命令,先加载的拿到了,后加载的那个 session.start 处理函数抛错被跳过。但 clawd-madenci 的其他事件处理函数照常生效,截图里它的横幅照样在画,加载时的提示文字也同时被两个 mod 改了,显示为「Clawd on floor 1, 128... · ⛏ 2 blok」。

这说明两点。第一,Claude Code 对单个处理函数出错的处理是跳过它、继续执行其余的,一个 mod 的局部失败不会拖垮整个会话。第二,斜杠命令名目前是先到先得,社区 mod 一多,撞名会越来越常见。

Doom 死斗和刷短视频:要 Ghostty 或 kitty

剩下几个热门的 mod 我没有截图,因为它们要在终端里显示真实像素,依赖 kitty 图形协议,目前只有 Ghostty 和 kitty 支持,tmux 里显示不出来。

仓库 内容 要求
jarrodwatts/intermission Claude 干活 2 秒后打开面板,进入一局 Doom 死斗,对手是所有同样在等 Claude 的人;Claude 做完倒数 3 秒交还 macOS 15+、Ghostty 或 kitty,首次下载约 20MB
teatimedev/doomscroll 类似 TikTok 的视频流,30 帧带声音,滚轮切下一条 Ghostty 或 kitty,需要 ffmpeg 和 yt-dlp
851-labs/subway-surfers-claude-code-mod 在面板里循环播放地铁跑酷的录像,命令叫 /brainrot 需要 ffmpeg
hamzafer/claude-code-mods 里的 reels 在面板里放 YouTube Shorts 同一仓库还有贪吃蛇

intermission 是这批里工程量最大的。它在后台无窗口运行 Doom 引擎 Odamex,每一帧写进共享内存,终端从共享内存把画面画进面板,键盘和鼠标再传回游戏。终端只上报按键按下、不上报松开,所以它把「一直在自动重复」当作按住不放。

装第三方 mod 之前先看代码

pane-arcade 的 README 里有一句提醒:mod 拥有和 Claude Code 一样的本机权限,装之前先读代码。这一点和 settings hook 一样,但 mod 的代码量要大得多,claude-arcade 和 pane-arcade 都超过 5,000 行。

mod 访问外部世界都要经过 $ 上的接口,所以用 grep 搜 $.process、$.fs、$.net 这几类调用,就能很快看出它能碰到什么。我对本文提到的几个仓库做了这个检查:

仓库 代码行数 进程、文件、网络访问
Zaho92/claude-arcade 约 5,100 无,$.tool.call 只出现在测试里
sangularvilue/clawd 约 1,600 无,排行榜存在本地
michaeldavodovski/claude-code-blackjack 约 2,500 无
selmakcby/clawd-madenci 约 1,200 无
thefotes/pane-arcade 约 5,700 读自带的 CHIP-8 游戏文件,调用本机的 Stockfish 下棋
jarrodwatts/intermission 约 800 从 GitHub Releases 下载游戏程序并运行,通过 UDP 连到作者的服务器

intermission 的 README 写明了服务器地址,并说明只用一个随机名字连接,不发送会话、项目或 Claude 的任何内容。这是一个负责任的写法。但它依然会下载并运行一个二进制程序,装之前要对这件事心里有数。

另外有三点限制要知道:Mods API 还在早期访问阶段,版本之间可能变化;面板停靠在侧边需要全屏布局(/tui fullscreen,或者启动时设置 CLAUDE_CODE_NO_FLICKER=1);终端宽度不够时,大多数游戏面板不会自动打开,要手动执行命令。

按需求挑一个

你想要 推荐 安装
普通终端里就能玩,几种经典小游戏 claude-arcade /plugin marketplace add zaho92/claude-arcade,再 /plugin install arcade@zaho92-arcade
游戏内容和 Claude 的工作联动 Clawd Quest /plugin marketplace add sangularvilue/clawd,再 /plugin install clawd-quest@clawd
下棋、扫雷、CHIP-8 模拟器 pane-arcade /plugin marketplace add thefotes/pane-arcade,再 /plugin install arcade@pane-arcade
和其他等 Claude 的人对战 intermission Ghostty 或 kitty,/plugin install intermission --marketplace jarrodwatts/intermission
只想先试一次,不安装 任意一个 git clone 之后用 claude --plugin-dir <目录> 启动,只对当次会话生效

这些游戏能在两天内冒出来,是因为 mod 同时具备了三样东西:常驻进程里的状态,能高频重绘的界面,以及能包裹整个工具调用的事件。把它们换个用法,就是上一篇里的防误删面板,或者一个在 Claude 等你确认时提醒你的计时器。游戏只是最先被做出来、也最容易让人装上试试的那一类。

截图说明:截图来自 tmux 里运行的 Claude Code 2.1.288,按终端原样的文字和颜色渲染。裁掉了顶部的账号信息和底部的用量统计,以及一条来自我本机其他配置、与本文无关的 Stop hook 报错。


资料来源:Zaho92/claude-arcade;sangularvilue/clawd;selmakcby/clawd-madenci;thefotes/pane-arcade;jarrodwatts/intermission;teatimedev/doomscroll;851-labs/subway-surfers-claude-code-mod;hamzafer/claude-code-mods;michaeldavodovski/claude-code-blackjack;Claude Code CHANGELOG。

相关推荐
天空之城--1 小时前
Android一周动态:Android 18首次官宣、Compose Material3 1.4转正(5趋势+5资讯)
android·人工智能·flutter·架构·android jetpack
AI日报派送佬1 小时前
2026年10月3日AI行业日报|系统权限安全全面收紧,AI算力与模型工程化落地提速
人工智能·openai·英伟达·ai日报·智能体技术·ai安全管控·ai开源生态
Ai-_Man1 小时前
请问豆包的智能体聊天记录该怎么弄
开发语言·前端·javascript·人工智能·小程序·ecmascript·电脑
wechatbot8881 小时前
企微第三方自动化开发:原生能力无阉割 API 开放平台介绍
后端·ios·微信·企业微信·ai编程·ipad
richard_yuu1 小时前
OpenCV 实战第 2 篇:cv::Mat 内存模型,引用计数、ROI 与连续性
人工智能·opencv·计算机视觉
艺杯羹1 小时前
Anthropic突袭发布Claude Code Mods!用TypeScript编写智能体中间件:告别AI误删与失控
人工智能·typescript·系统架构
Yolanda_20221 小时前
18.神经网络-卷积层
人工智能·神经网络·cnn
合米AI SOP系统1 小时前
螺丝细小难识别?合米科技 AI SOP 视觉依靠动作识别攻克微小工件核验难题.
人工智能·科技·计算机视觉
IT_陈寒1 小时前
SpringBoot自动配置把我坑惨了:这些隐式规则要小心
前端·人工智能·后端