1作者: ratulrahman16 天前原帖
我在周末构建了Sharpie,以解决我遇到的问题:在不使用截图或支付API调用费用的情况下测试和分享AI提示。 这是一个完全在Docker中运行的自托管游乐场: - 本地LLM推理(通过Ollama使用Qwen2.5 3B) - 本地分享提示的URL - 复制和重混提示 - 零API费用 - 支持语法高亮的Markdown渲染 一切都是本地的——你的提示不会离开你的机器。只需运行一个docker-compose up命令,你就可以开始使用了。 这是我第一个真正的开源项目,非常欢迎反馈!
1作者: Beefin16 天前原帖
我已经从事硬件项目多年,而“我想要X”和“零件已订购,文件准备好打印”之间的差距通常需要几周时间。Modo缩短了这个过程。你只需描述你想要的东西(例如:“一个带显示屏和蜂鸣器的便携式CO2监测器”),它就会生成: - 一份包含真实组件的物料清单(MPN,而不是虚构的零件) - 一个基于实际零件尺寸生成的可打印外壳 - 接线图、固件模板和组装说明 - 设计验证(功率预算、引脚冲突、机械适配) 所有内容会在每个阶段完成时实时流式传输。 关键思想是将系统限制在一个经过精心挑选的组件数据库中,以防止它自行发明零件,然后使用数据表中的尺寸来驱动外壳几何形状。 你可以在不注册的情况下试用: [https://modo.is](https://modo.is) 我很好奇这里的人们会尝试构建什么,以及这个过程在哪些方面会出现问题。
25作者: io_eric16 天前原帖
我通常用 C++ 开发网页游戏,但使用 Emscripten 总让我觉得有些过于复杂,因为我并不需要完整的 POSIX 模拟或庞大的标准库,只是为了在画布上渲染一些东西并处理基本的用户界面。 我想解决的主要问题是 JS/WASM 的互操作瓶颈。与其为每个调用使用标准的粘合代码,我将所有内容迁移到一个共享内存架构,使用命令和事件缓冲区。 它的工作原理是,我将所有的指令批量处理在 WASM 中,然后只向 JS 发送一个“刷新”信号。JS 端随后一次性直接从共享内存中读取所有内容。这种方式效率更高,我进行了一次基准测试,在画布上渲染 10,000 个矩形,结果差异显著:Emscripten 的帧率大约为 40 FPS,而我的设置达到了 100 FPS。 但是在 C++ 中编写 DOM 逻辑是非常痛苦的,所以我构建了 Coi。它是一种基于组件的语言,在编译时静态分析变化,以实现 O(1) 的反应性。与传统框架不同,它没有虚拟 DOM 的开销;编译器将状态变化直接映射到命令缓冲区中的特定句柄。 我最近对比了 Coi 和 React、Vue 在一个 1,000 行表格上的性能:在行创建、行更新和元素交换方面,Coi 表现最佳,因为它完全避免了“差异”步骤,并最小化了桥接跨越。它的包大小也是三者中最小的。 这个架构最酷的地方之一是标准库的工作方式。如果我想支持一个新的浏览器 API(比如 Web Audio 或新的 Canvas 功能),我只需将定义添加到我的 WebCC 模式文件中。当我重新编译 Coi 编译器时,该语言会自动获得一个新的标准库函数来访问该 API,完全不需要手动封装。 我对这个项目的进展感到非常自豪。它结合了自定义 WASM 堆栈的性能和一种让我觉得写起来很舒服的语法(至少对我来说是这样 :P)。此外,由于中间步骤是 C++,我还在考虑让它在服务器端工作,这样就可以在整个堆栈中共享组件。 示例(Coi 代码): ```coi component Counter(string label, mut int& value) { def add(int i) : void { value += i; } style { .counter { display: flex; gap: 12px; align-items: center; } button { padding: 8px 16px; cursor: pointer; } } view { <div class="counter"> <span>{label}: {value}</span> <button onclick={add(1)}>+</button> <button onclick={add(-1)}>-</button> </div> } } component App { mut int score = 0; style { .app { padding: 24px; font-family: system-ui; } h1 { color: #1a73e8; } .win { color: #34a853; font-weight: bold; } } view { <div class="app"> <h1>Score: {score}</h1> <Counter label="Player" &value={score} /> <if score >= 10> <p class="win">You win!</p> </if> </div> } } app { root = App; title = "My Counter App"; description = "A simple counter built with Coi"; lang = "en"; } ``` 在线演示: [https://io-eric.github.io/coi](https://io-eric.github.io/coi) Coi(语言): [https://github.com/io-eric/coi](https://github.com/io-eric/coi) WebCC: [https://github.com/io-eric/webcc](https://github.com/io-eric/webcc) 我很想听听你的想法。虽然它仍然远未完成,但作为一个副项目,我对此感到非常兴奋 :)