我在周末构建了Sharpie,以解决我遇到的问题:在不使用截图或支付API调用费用的情况下测试和分享AI提示。
这是一个完全在Docker中运行的自托管游乐场:
- 本地LLM推理(通过Ollama使用Qwen2.5 3B)
- 本地分享提示的URL
- 复制和重混提示
- 零API费用
- 支持语法高亮的Markdown渲染
一切都是本地的——你的提示不会离开你的机器。只需运行一个docker-compose up命令,你就可以开始使用了。
这是我第一个真正的开源项目,非常欢迎反馈!
返回首页
最新
我已经从事硬件项目多年,而“我想要X”和“零件已订购,文件准备好打印”之间的差距通常需要几周时间。Modo缩短了这个过程。你只需描述你想要的东西(例如:“一个带显示屏和蜂鸣器的便携式CO2监测器”),它就会生成:
- 一份包含真实组件的物料清单(MPN,而不是虚构的零件)
- 一个基于实际零件尺寸生成的可打印外壳
- 接线图、固件模板和组装说明
- 设计验证(功率预算、引脚冲突、机械适配)
所有内容会在每个阶段完成时实时流式传输。
关键思想是将系统限制在一个经过精心挑选的组件数据库中,以防止它自行发明零件,然后使用数据表中的尺寸来驱动外壳几何形状。
你可以在不注册的情况下试用: [https://modo.is](https://modo.is)
我很好奇这里的人们会尝试构建什么,以及这个过程在哪些方面会出现问题。
我通常用 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)
我很想听听你的想法。虽然它仍然远未完成,但作为一个副项目,我对此感到非常兴奋 :)
在硅谷作为开发者工作了大约10年后,我到了一个阶段,感觉对这个领域已经失去了兴趣。无论我在工作中做什么,几乎都无法激励自己去关心,而我对周围同事的行为感到很烦躁。我曾经换过几家公司,想着可能是环境的问题,或者是公司正在做的事情不吸引我等,但无论去到哪里,过一段时间后总会感到同样的厌倦,这让我觉得是时候转向其他事情了。
有没有人从单纯的工程师转型到其他领域,并找到了更多的快乐?我愿意离开这个领域,虽然可能收入会减少。
介绍模态代理 SDK(非官方) - 将代理 SDK 移植到模态沙箱中运行。<p>示例:<a href="https://github.com/sshh12/modal-claude-agent-sdk-python/tree/main/examples" rel="nofollow">https://github.com/sshh12/modal-claude-agent-sdk-python/tree...</a>