在编程 Agent 这个赛道上,大家似乎都在做加法——更多的功能、更大的上下文、更复杂的工具链。但最近一个名为 Zerostack 的项目反其道而行:用最少的代码,做最核心的事。
这个用纯 Rust 编写的编程 Agent 在 Hacker News 上拿到了 220 分、75 条讨论,对于一个只有 51 次提交、136 个 star 的新项目来说,这个热度不同寻常。
极简主义的底气
Zerostack 的 README 开篇就点明了自己的定位:受 pi 和 opencode 启发的极简编程 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