返回首页
最新
氛围编码、游戏、创造下一个谷歌?请告诉我们。
我是开发者。很高兴分享这个过程和经验。
架构:
- 自定义的面向服务的实体组件系统(SoA ECS),以便于缓存友好的迭代,在热循环中实现零分配。与bitECS/miniplex进行了基准测试。
- 受到《游戏编码完全指南》启发的进程管理器,但采用数据导向设计,使得进程为纯数据,系统包含逻辑。
- 多场重力系统,包含5种类型(点、平行、线段、圆柱、凸包),场之间有弹簧阻尼过渡。
- 使用Rapier3D的WASM和SIMD。具有重力感知的假阴影系统,以提高可玩性。
- WebGL 2在Three.js和Pixi.js之间共享上下文。
- 调试编辑器用于放置对象、配置设置、可视化碰撞体等(Tweakpane + Three.js助手)。
总计76K行TypeScript,735次提交。可以在移动设备上运行,使用游戏手柄效果最佳。
AI过程:
Claude Code(Opus)编写了约95%的代码。我提供了架构、约束和方向;查看了它写的一些内容,但不多。
我每个功能的过程:将我想要的内容、相关技术细节和“这有意义吗?”等信息进行头脑风暴,输入到聊天中。大致上是无序的。我构建了自定义的Claude Code技能,如/lets-build:plan,生成子代理先研究代码库,然后向我提出澄清问题。我们反复讨论,直到听起来合理,然后Claude撰写分阶段的计划文档,以确保每个阶段后应用程序仍然可运行。
随着发布日期的临近,我开始让Claude审查自己的计划。这主要能捕捉到主要问题。我还为此构建了专门的技能:/review-plan、/code-review、/retrospective、/ecs-review。
Claude遇到的困难:
- 尽管项目是数据导向的ECS,但它在TypeScript中默认使用面向对象编程。这需要大量的引导才能克服。我专门构建了/ecs-plan和/ecs-review技能来捕捉和修复这个问题。
- 关卡设计完全失败。我尝试制作一个CLI工具,以便Claude可以帮助在3D空间中放置对象,其中“下”可以是任何地方。尝试了高程图、建筑图纸;没有帮助。
- 有一次,它的index.ts长达数千行,确保快速首次绘制成了一场灾难。我开始手动重构,但觉得这样做是巨大的时间浪费。因此,我让Claude绘制依赖树并进行重构,这对它来说轻而易举。
最难的问题是相机和重力阴影。两者都能工作,但仍然存在边缘情况。Galaxy的相机也有问题;部分原因可能与任意重力方向有关。阴影都是假的,基于重力场类型投射,而字母形状(M、R)则产生了凹陷、不规则的几何形状,这是Galaxy在行星体上没有的。
总共有87个计划,每个计划平均2-3页。CLAUDE.md项目文件包含164行从调试会话中学到的严格约束。每个约束背后都有一场代币大屠杀。
最大的“胜利”之一是让Claude创建一些你可能永远不会在约50天的项目截止日期内做的工具。这种时间权衡(甚至是不可能性)不再有效,对于更长的项目,这种情况可能会更加严重。
阿诺德代理是一个健身追踪器,内置AI教练。以下是我使用它的方式:
- “这个动作在结束时让我肩膀疼,请提醒我正确的姿势和提示。”
- “根据上周的重复次数和重量,我今天应该如何调整我的锻炼?”
- `/generate` 一个以攀岩为重点的锻炼计划。
这个应用是免费的,你的数据可以完全导出(没有封闭的生态系统),还有一个匿名的全球排行榜来激励用户,包括一个“耻辱榜”,用于惩罚那些被抓到伪造数据的人。
我决定将这个项目100%以氛围编码的方式进行,其中一部分是通过幻觉编码实现的。我故意没有动过一行代码,尽管我审查了大部分代码。这个项目最初只是我自己的锻炼计划,但朋友们想尝试,所以我添加了锻炼方案,之后功能请求开始涌入,我基本上只是将它们转发给我的命令行代理。
氛围编码远非完美,但由于我是自己应用的日常用户,我能立即发现bug,有时甚至是在健身房里通过手机SSH连接在组间检查的。
---
技术栈:
- FastAPI + SQLite 在Linux服务器上
- React PWA(离线可用)
- 由Claude通过Anthropic API提供支持的AI教练
- Telegram OAuth + Resend魔法链接认证
- Sentry用于错误跟踪,Foursquare Places用于健身房位置
整个项目是用Claude Code构建的。氛围编码使用Claude,AI教练也是Claude。整个过程都是Claude的。
[https://agent-arnold.app](https://agent-arnold.app)
---
你对当前的健身追踪器有什么不满?我可能会解决这个问题。
你好,
我创建这个工具是因为在多个IDE和终端窗口中运行多个Claude Code代理变得有些混乱。像许多人一样,我从一次专注于一件事情,转变为同时处理多件事,而这一切变化得非常快。
我需要一个地方来查看所有的代理和工作树,能够无缝切换它们,监控它们的状态,并在完成后审查它们的更改。我还希望能够在灵感突现时,快速在独立的工作树中启动新的代理。
我已经在Baton内部构建Baton一段时间了,这个过程非常有趣。很想听听你的想法!
<a href="https://www.github.com/Grimm67123/GrimmBot" rel="nofollow">https://www.github.com/Grimm67123/GrimmBot</a>