返回首页
最新
嗨,HN,
Herd 是一个零依赖的 Go 库,能够管理操作系统子进程的集群,并以严格的 1:1 会话亲和性将 HTTP 流量路由到这些进程。
如果你将重型、有状态的二进制文件(如 Ollama、无头 Chromium 或 Python REPL)放在标准的反向代理后面,并且流量激增,通常会出现糟糕的结果。你要么会触发大规模的 CUDA/Metal 上下文风暴,导致主机内存溢出(OOM),要么会在不同用户的会话之间泄漏状态。
Herd 解决了这个问题,而不需要像 Kubernetes StatefulSets 或 Firecracker 那样的重型控制平面。它为你提供了自动的进程生命周期管理和内置的反向代理,只需大约 10 行 Go 代码。
它的工作原理如下:
- 它通过 exec.Cmd 生成操作系统级别的子进程。
- 它根据你定义的任何自定义会话 ID(一个头部、一个 cookie、一个路径参数)路由传入的 HTTP 流量。
- 如果会话存在,它会路由到那个精确的固定操作系统进程。
- 如果不存在,它会安全地获取一个单次锁,生成一个新进程,等待 /health 端点,并代理请求。
- 如果进程崩溃,影响范围仅限于一个会话,且池会自动恢复。
为了测试并发限制,我向一个由最多 10 个 Ollama(Qwen3:0.6B)工作进程支持的 Herd 网关发起了 200 个并发的 LLM 推理请求。在 M4 Pro Mac 上,它以 200/200 的成绩完成,零丢包,完美地充当了一个反压队列,安全地将流量逐步传递给操作系统,而不对主机的统一内存造成冲击。
它是 MIT 许可的。希望你能查看一下这个代码库,尝试打破单次锁,或者审查一下架构。
代码库: [https://github.com/HackStrix/herd](https://github.com/HackStrix/herd)
架构与 Mermaid 图: [https://github.com/HackStrix/herd/blob/main/docs/ARCHITECTURE.md](https://github.com/HackStrix/herd/blob/main/docs/ARCHITECTURE.md)
嘿,HN:
每次我想将Claude Agent SDK投入生产时,我都在重建相同的基础设施。会话、流媒体、沙箱、持久性、REST API、文件钩子。因此,我构建了Ash。
一个代理是一个包含CLAUDE.md文件、技能文件夹等的文件夹,可以通过命令行或tsx/python SDK一键部署。
在构建这个过程中,我关注了一些事情:
沙箱。每个代理在其自己的隔离进程中运行,具有环境白名单、cgroups资源限制,以及在Linux上的bubblewrap文件系统隔离。
会话持久性。所有状态存储在CRDB中。如果服务器在对话中崩溃,恢复功能会从中断的地方继续。你还可以将工作空间快照保存到S3/GCS,并在不同的机器上恢复。
保持简洁。SDK的`Message`类型在整个管道中不经翻译地流动,从Unix套接字到SSE再到客户端。Ash添加了会话路由、沙箱池和生命周期管理。它不会重新包装或翻译SDK的类型。
我一直在仔细测量开销。Ash在第99百分位的每条消息增加的延迟小于0.5毫秒。温暖恢复的延迟为1.7毫秒。冷恢复(恢复工作空间、生成进程、重新连接)的延迟为32毫秒。
开源、自托管、MIT许可证: [https://github.com/ash-ai-org/ash-ai](https://github.com/ash-ai-org/ash-ai)
我编写了这个程序!这是一个不错的小游戏,我用它来给我的女朋友发送秘密信息。我想你也可以用它来鼓励小朋友学习拼写?如果你想到其他用途,请告诉我!
我该如何在雇主或合作者面前处理这个问题,而不透露具体的私人细节?我问过一个人工智能,它说直接回应是个好主意,但我认为在我这种情况下,人们更可能会指责受害者。<p>另外,我并没有辞职或请假,所以没有人知道。我现在提这个问题是因为一位教授直言不讳地说我的发表记录“很薄弱”。
在线工作诈骗似乎越来越普遍。我很好奇,是否会有人愿意使用一个在发布之前对每个职位列表进行验证的招聘网站。这样的做法是否会让你更倾向于在该网站上寻找工作?