C
ChaoBro

Zerostack:用纯 Rust 写的编程 Agent,极简主义的新范式

在编程 Agent 这个赛道上,大家似乎都在做加法——更多的功能、更大的上下文、更复杂的工具链。但最近一个名为 Zerostack 的项目反其道而行:用最少的代码,做最核心的事。

这个用纯 Rust 编写的编程 Agent 在 Hacker News 上拿到了 220 分、75 条讨论,对于一个只有 51 次提交、136 个 star 的新项目来说,这个热度不同寻常。

极简主义的底气

Zerostack 的 README 开篇就点明了自己的定位:受 piopencode 启发的极简编程 Agent。

它的功能清单看起来并不花哨,但每一个都打在了痛点上:

  • 多模型支持:OpenRouter、OpenAI、Anthropic、Gemini、Ollama,甚至支持自定义 Provider
  • 标准工具集:参考 opencode 文档实现了编程 Agent 所需的全部标准工具
  • 四种工作模式:可配置的权限模式,包括 per-tool 模式、会话白名单和外部目录策略
  • 会话管理:保存/加载/恢复会话,自动压缩以保持在上下文窗口内
  • TUI 终端界面:基于 crossterm 构建,支持 Markdown 渲染、鼠标选择、回滚浏览和推理可见性切换
  • 运行时系统提示切换:在会话中随时切换系统提示模式(claude、opencode、pi 等),无需管理 Skills

这些功能单独拎出来都不稀奇,但组合在一个纯 Rust 项目里,意味着一件事:极低的内存占用和极快的启动速度

为什么是 Rust?

当前主流的编程 Agent——Claude Code、Cursor、Windsurf——基本都是 Electron 或类似技术的产物,内存占用动辄几百 MB 甚至上 GB。

Zerostack 选择 Rust 不是偶然。Rust 原生编译、零运行时依赖、内存安全的特性,让它成为构建高性能 CLI 工具的首选。对于一个需要在终端里高频交互的编程 Agent 来说,毫秒级的响应速度和 MB 级的内存占用,体验差距是实打实的。

想想你在远程服务器上 SSH 进去、需要快速跑一个 Agent 任务的场景——你不需要一个 500MB 的 Electron 应用,你需要的是一个能在 10MB 内存里跑起来、启动不到 100ms 的工具。

与 pi 和 opencode 的关系

Zerostack 明确承认自己受到了 pi 和 opencode 的启发。这三者其实代表了同一个思路:编程 Agent 不应该是一个臃肿的 IDE 插件,而应该是一个轻量的、可嵌入的命令行工具。

pi(原名 Aider 的轻量替代品)和 opencode(一个开源的终端编码助手)都已经在这个方向上做了探索。Zerostack 的创新在于:它把这套思路用 Rust 重新实现了一遍,并且在权限管理和模型切换上做了更精细的设计。

特别是它的四种可配置工作模式——从最宽松的全工具访问到最严格的会话白名单——让 Zerostack 可以在不同安全要求的场景下灵活切换。这对于企业用户来说是一个加分项。

社区的声音

HN 上的讨论呈现出一种有趣的分裂。一部分人认为:"又一个 coding agent,有什么特别的?"另一部分人则认为:"Rust + 极简 + 多模型支持,这才是 CLI 工具该有的样子。"

我觉得后者的观点更接近本质。编程 Agent 市场确实在快速膨胀,但大部分产品都在堆功能。Zerostack 的价值在于它做了一个减法:只保留最核心的交互层,把模型选择、权限控制、会话管理做好,其他的交给用户自己决定。

值得关注的方向

Zerostack 目前还是一个早期项目(51 次提交),但它的设计哲学值得关注。如果它能在社区里持续迭代,可能会成为编程 Agent 领域的一个"Unix 哲学"式的选择——做好一件事,做好。

对于喜欢终端工作流、对内存和启动速度敏感的开发者来说,Zerostack 值得放进你的工具箱里试试。毕竟,在这个"万物 Electron"的时代,看到一个纯 Rust 的编程 Agent,本身就是一种清新的体验。

GitHub: gi-dellav/zerostack | Crates: zerostack 1.0.0