5作者: wangzhijie4 个月前原帖
嗨,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 已准备好协作 欢迎大家加入,共同构建它。
2作者: supertommy4 个月前原帖
我是开发者。很高兴分享这个过程和经验。 架构: - 自定义的面向服务的实体组件系统(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天的项目截止日期内做的工具。这种时间权衡(甚至是不可能性)不再有效,对于更长的项目,这种情况可能会更加严重。