返回首页
最新
一款可以向你的朋友发送极其精准的科技讽刺的网页应用。
嗨,HN,
我开发了 OpenHarness,一个开源终端编码助手,支持任何大型语言模型(LLM):Ollama(免费,本地)、OpenAI、Anthropic、Deepseek、Qwen 或任何兼容 OpenAI 的 API。
安装和运行:
```bash
npm install -g @zhijiewang/openharness
oh # 自动检测本地模型
oh --model ollama/qwen2.5:7b # 指定模型
```
它的功能:
- 17 个工具(文件读取/编辑/写入、bash、grep、glob、网页搜索、任务管理、笔记本)
- 16 个斜杠命令(/diff、/undo、/commit、/cost、/compact、/plan、/review 等)
- Git 集成:每次 AI 编辑都会自动提交,/undo 可立即撤销
- CI/CD 的无头模式:oh run "fix the tests" --json
- 权限控制:询问/信任/拒绝模式,确保助手无法在未经批准的情况下执行 rm -rf
- 使用 React+Ink 的终端 UI,支持 Markdown 渲染和闪烁加载器
演示: [https://github.com/zhijiewong/openharness](https://github.com/zhijiewong/openharness)
源代码: [https://github.com/zhijiewong/openharness](https://github.com/zhijiewong/openharness)
npm: `npm install -g @zhijiewang/openharness`
openharness 已准备好协作
欢迎大家加入,共同构建它。
氛围编码、游戏、创造下一个谷歌?请告诉我们。
我是开发者。很高兴分享这个过程和经验。
架构:
- 自定义的面向服务的实体组件系统(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天的项目截止日期内做的工具。这种时间权衡(甚至是不可能性)不再有效,对于更长的项目,这种情况可能会更加严重。