龙虾AGI通用实验室Lobster AGI Lab · est. 20262026 · 09 · 16
首页 / 文章 / 开发的部分产品
开发的部分产品

我在 Claude Code 里塞了一个地牢游戏,现在写代码就是在闯关

格里灰丝2026-04-08约 2993 字Markdown 原文

终于可以光明正大地在工作时间打游戏了。

起因

事情是这样的。

我每天用 Claude Code 写代码,看着终端底部那个小小的状态栏,看着 spinner 转啊转——"思考中..."、"处理中..."——突然觉得:这东西也太无聊了吧。

Claude Code 有三个可以自定义的机制:Spinner(思考时的转圈文字)、StatusLine(终端底部的一行状态栏)、Hooks(工具调用后的钩子脚本)。官方拿来做什么?显示 token 用量、跑 lint 之类的。

但我看到的是:一块完美的游戏屏幕。

Spinner 可以显示氛围文字,StatusLine 可以当 HUD,Hooks 可以触发游戏事件——这不就是一个天然的游戏引擎吗?

于是我做了一件可能有点离谱的事:我在 Claude Code 里塞了一个完整的 Roguelike 地牢冒险游戏

什么效果?

你正常写代码,终端底部始终显示你在地牢里的状态:

🏰 B3·古墓遗迹 | ❤️85 ⚔️12 🛡5 | 🪙32 🎒3/6 | Lv.5 | 幽暗走廊

Claude 帮你编辑一个文件?你在地牢里前进了一步。运行一个命令?又前进了一步。然后突然——

⚔️ B3 | ❤️85 ⚡15 | 死循环蛇(♥25) | fight·flee·spell·item

一条死循环蛇挡在了你面前。

你可以输入 !g fight 一剑砍过去,也可以 !g flee 转身就跑,还可以 !g spell 火球 来一发大的。或者——你不理它,继续写代码。5 次工具调用后它自己就走了。

而 Claude 思考的时候,spinner 也变成了地牢氛围:

⏳ 火把噼啪作响中...⏳ 远处有东西在移动中...⏳ 握紧了剑柄中...

有内味了。

重点来了:零额外费用

我知道你在想什么:"这不是在浪费我的 API 调用吗?"

一分钱都不多花。

整个游戏引擎就是一个本地 Node.js 脚本。Hook 触发的是本地脚本,StatusLine 读的是本地 JSON 文件,所有游戏逻辑都在你机器上运行。唯一"搭便车"的是你写代码时 Claude 本来就要调用的工具——但那些调用你不玩游戏也会发生。

游戏命令 !g fight 这些,用的是 Claude Code 的 ! 前缀直接执行本地命令,不经过大模型,不消耗 token,不进入对话上下文。

所以实际上:你该花的钱一分没多,但多了一个游戏玩。

编程主题的怪物,懂的都懂

这不是一个随便套皮的地牢游戏。里面的怪物全是程序员的老朋友:

语法蟑螂 — 最弱的怪,打死它就跟改个 typo 一样简单

空指针幽灵 — 你的物理攻击有 30% 概率直接 miss(NullPointerException 的既视感)

死循环蛇 — 每回合自动回血,你不快点打死它,它就无限循环下去

内存泄漏史莱姆 — 越打越肉,每回合 MaxHP+10,拖得越久越打不死

野生 Bug — 打着打着可能突然复制出一个分身,Bug 不就是这样吗

递归巫师 — 血越少攻击越高,就像递归一样越来越深直到 Stack Overflow

段错误骑士 — 20% 概率暴击打你双倍伤害,毫无征兆,就跟 Segfault 一样

最终 Boss 叫生产环境守护者。每回合随机封印你一个技能。打过线上 bug 的人都懂这种绝望。

不只是写代码时能玩

你可能会问:不写代码的时候怎么办?总不能为了打游戏去写无意义的代码吧?

放心,我想到了。输入 !g walk 就能手动前进一步。所以你可以:

写代码时 — 自动推进,写着写着突然遇到怪物,来一场酣畅淋漓的战斗,然后继续写

不写代码时 — 手动 !g walk 一步步探索,完全可以专心玩游戏

休息时 — 逛逛商店、看看传承点怎么分配、研究下一次用什么职业

这就是这个游戏最妙的地方:写代码和打游戏不是对立的,它们是同一件事。

而且你随时可以 !g off 一键关闭,瞬间恢复正常的 Claude Code,老板来了完全看不出来。!g on 又可以接着玩。

你品,你细品,这是不是上班摸鱼的终极形态——你没有在打游戏,你在认真写代码,只不过写代码的过程恰好也在闯地牢而已。

它跟 Claude Code 的 Buddy 有什么区别?

Claude Code 官方有个 Buddy 功能——给你养个虚拟宠物之类的。挺可爱,但说实话,互动感太弱了。

CodeDungeon 是一个完整的游戏

回合制战斗 — 7 种技能、道具系统、装备系统,策略性拉满

4 个职业 — 战士、法师、盗贼、圣骑士,玩法完全不同

20 层地牢 — 4 大区域 4 个 Boss,从沉沦矿洞打到火焰深渊

7 种神秘事件 — 古老的镜子、受伤的冒险者、赌博骷髅……每次选择都有风险

Permadeath — 角色真的会死!死了从头来,但传承点让你越来越强

Roguelike 核心循环 — 死亡 → 传承 → 变强 → 再挑战,永远有"再来一局"的冲动

不是宠物,是冒险。

技术上怎么实现的?

其实原理很简单,就三个接入点:

PostToolUse Hook — Claude 每次调用工具(编辑文件、跑命令等),Hook 自动触发 engine.js,推进游戏一步

StatusLine — 一个脚本读取游戏状态 JSON 文件,渲染成一行 HUD 显示在终端底部

Spinner — 把默认的"思考中..."替换成地牢氛围词库

就这么三个东西,拼出了一个完整的游戏。

全部代码大约 1400 行 JavaScript,零外部依赖,纯 Node.js,不用装任何东西。安装就一句 node install.js,卸载也一句 node install.js uninstall

怎么安装?

git clone https://github.com/guoy0701/claude-code-game-CodeDungeon.gitcd claude-code-game-CodeDungeonnode install.js

三步搞定。重启 Claude Code,开始写代码,你就已经在地牢里了。

推荐再设置一下快捷命令,这样就能用 !g 来操作游戏:

# Linux/macOScp g ~/bin/g && chmod +x ~/bin/g# Windows (Git Bash)cp g /c/Users/$USERNAME/bin/g

详细说明看 GitHub 仓库的 README。

最后

我一直觉得,最好的工具应该有点人情味。我们每天对着终端写代码,终端回给我们的永远是冷冰冰的日志和报错。

但现在,终端底部多了一行小小的 HUD,告诉你——你不只是在写代码,你还是一个勇者,正在地牢深处披荆斩棘。

当然了,如果你的角色死在了第三层被一只语法蟑螂打死了……那也挺写实的,毕竟我们不都是经常被语法错误折磨吗。

· · ·

GitHub 开源地址: https://github.com/guoy0701/claude-code-game-CodeDungeon

Star 一下,然后在你的 Claude Code 里开始冒险吧。

写代码就是闯地牢。


上一篇我开发了个Claude Code切换账号的工具,妈妈再也不用担心我token限量而焦虑了下一篇你和 AI 的对话,从来就不该是线性的