zerostack 是什么?

zerostack 是一个 Rust 写的极简终端编码 agent,灵感来自 pi 和 opencode,主打超低内存占用与性能:二进制 8.9MB、空会话 ~10MB RAM、工作时 ~13MB(对比 opencode 等 JS 编码 agent 的 ~300MB),却保留多 provider(OpenRouter/OpenAI/Anthropic/Gemini/Ollama/自定义)、标准工具集、四档权限系统、MCP、Exa 搜索、loop、git worktree 集成等完整能力。

⭐ 904 Stars 🍴 56 Forks Rust GPL-3.0 作者: gi-dellav
来源:README 首段 + Features + Performance + Cargo.toml 查看 GitHub 仓库 →

为什么值得关注

主流终端编码 agent 多是 JS/TS 写的,常驻内存动辄几百 MB、idle 也吃 CPU。zerostack 反其道用 Rust 把同样的能力做到罕见的轻量:8.9MB 二进制、idle ~10MB / 工作 ~13MB RAM、idle 0% CPU / 工作 ~1.5%(i5 7 代实测,对比 opencode idle ~2% / 工作 ~20%)。它没有为了轻量砍功能——多 provider、标准工具集(按 opencode 文档对齐)、四档可配权限、MCP(编译期可选特性)、Exa 集成 WebSearch/WebFetch、ACP 编辑器集成、prompt 模式系统、session 管理、loop(含 doom-loop 检测:同一 tool call 重复 3+ 次触发)、git worktree 集成都在。对在意资源占用、想常驻跑或在低配机/服务器上用 agent 的人,这是个有吸引力的取舍。极新(5 月创建)但发版活跃。

来源:README Performance / Features

核心功能

极低资源占用(Rust)

二进制 8.9MB,空会话 ~10MB RAM、工作时 ~13MB(对比 opencode 等 JS agent ~300MB);idle CPU 0.0%、用工具时 ~1.5%(i5 7 代实测,opencode 对应 ~2% / ~20%)。用 compact_str 等做内存优化,tokio 只开必要 feature。

来源:README Performance + Cargo.toml(compact_str/tokio features)
多 provider + 标准工具集

支持 OpenRouter(默认)、OpenAI、Anthropic、Gemini、Ollama 及自定义 provider(任意 base URL + API key 环境变量);暴露 opencode 文档描述的全套标准编码 agent 工具(文件读写、bash 等)。--provider/--model 显式指定,如 deepseek/deepseek-v4-flash。

来源:README Features / Supported providers / Quick start
四档权限系统

四种可配权限模式(如 restrictive -R:每个 tool 动作都要批准,除非命中白名单),支持 per-tool glob 模式、session allowlist、外部目录策略。可细粒度控制 agent 能动什么,契合谨慎使用场景。

来源:README 'Permission system'(four modes / per-tool patterns)
Loop 系统 + doom-loop 检测

loop 系统支持反复执行直到满足条件,可经 CLI 跑 headless loop(无人值守);内置 doom-loop 检测——同一 tool call 连续重复 3+ 次自动触发干预,避免 agent 卡死空转。

来源:README 'Loop system'(headless loops + doom-loop detection)
Git worktree 集成

内置 git worktree 集成(默认编译包含),让 agent 在隔离 worktree 里工作不污染主分支,支持并行任务工作流。README 给出 worktree 使用与示例工作流。

来源:README 'Git worktrees integration'
MCP / ACP / Exa + 可配 prompt 模式

MCP server 支持作为编译期可选特性接入扩展工具;ACP(Agent Communication Protocol)支持编辑器集成(可选编译);集成 Exa 搜索提供 WebSearch/WebFetch;prompt 系统有多种模式(默认 code 模式:全文件 + bash 工具访问 + TDD 工作流),prompts/ 目录可定制;slash 命令(/model 等)+ session 管理(继续上次会话)。

来源:README Features / Prompts system / Slash commands / Installation(features)

技术架构

zerostack 是一个聚焦的 Rust 项目,src/(67 文件)按职责分模块:main.rs 入口、cli.rs(clap 命令行)、provider.rs(多 LLM provider 抽象)、event.rs(事件循环)、sandbox.rs(可选 sandbox 模式)等,TUI 用 ratatui、异步用 tokio(只开 rt/macros/sync/time/process/fs 必要 feature)、HTTP 用 reqwest、MCP 用 rmcp(编译期可选)。prompts/(11 文件)是可定制的 prompt 模式(code 等)。能力靠 Cargo feature 编译期裁剪——MCP、ACP、loop、git-worktree 是可选/默认 feature,sandbox 单独,让用户按需取舍二进制大小与功能。内存优化体现在选型(compact_str 紧凑字符串、tokio 精简 feature、Rust 无 GC)。HASHEDIT.md 描述基于哈希的编辑机制(类似锚点编辑,减少全文件重写)。设计判断:用 Rust + 编译期 feature 裁剪 + 紧凑数据结构把「完整能力的编码 agent」压到 ~10MB RAM,是非常清晰的「轻量优先」工程取舍,对标 opencode 的能力面但砍掉运行时开销;代价是 Rust 生态的 agent 工具链不如 JS 成熟,且极新(1.x 但 5 月才建)意味着稳定性与生态都待验证。

来源:src/ 模块 + Cargo.toml(features/deps)+ README + HASHEDIT.md

项目知识图谱

知识图谱:项目核心节点(中心)+ 核心功能(内环六边形)+ 关键技术依赖(外环 chip) tokio(精简 feature:rt/macros/sync/time/process/fs)— 异步运行时tokio(精简 fea… reqwest — provider HTTP 调用reqwest rmcp — MCP 客户端(编译期可选 feature)rmcp compact_str — 紧凑字符串(内存优化)compact_str clap + serde/serde_json + chrono + uuid — CLI/序列化/会话clap + serde/s… 极低资源占用(Rust) 多 provider + 标准工具集多 provider + 标准工… 四档权限系统 Loop 系统 + doom-loop 检测Loop 系统 + doom-lo… Git worktree 集成 MCP / ACP / Exa + 可配 prompt 模式MCP / ACP / Exa +… zerostack 项目本体 核心功能 关键依赖

中心为项目本体,内环 = 核心功能模块,外环 = 关键技术依赖;按 deep.json 中的 core_features 与 tech_stack.key_deps 自动生成

技术栈

语言Rust框架终端 TUI(ratatui)+ tokio 异步运行时 + clap CLI
tokio(精简 feature:rt/macros/sync/time…reqwestrmcpcompact_strclap + serde/serde_json + chrono + u…Exa
单二进制 8.9MB;编译期 feature 裁剪(MCP/ACP/loop/git-worktree/sandbox 可选);OpenRouter 默认 provider,需设 API key 环境变量;Debian/Ubuntu/Fedora/Arch 安装说明;GPL-3.0 协议;justfile 管理构建任务
来源:Cargo.toml + README Installation/Supported providers

快速上手

# 安装(默认含 MCP、loop、git-worktree) # 见 README Installation(cargo install / 各发行版包) # 带 ACP 编辑器集成:装 ACP feature 版本 # 设 API key(默认 OpenRouter) export OPENROUTER_API_KEY=... # 交互会话(默认 code prompt) zerostack # 单色 TUI zerostack --monochrome # 一次性模式 zerostack "" # 继续上次会话 zerostack --continue # 显式指定 provider/model zerostack --provider openrouter --model deepseek/deepseek-v4-flash # headless loop(无人值守,含 doom-loop 检测) # 见 README Loop system # 配置(config 位置、provider 别名、权限规则、MCP server)见 CONFIG.md # 可选 sandbox 模式见 README
来源:README Quick start / Installation / Configuration 原文

使用场景

1. 资源敏感场景:在低配机、容器、VPS 或想常驻跑 agent 的环境,用 ~10MB RAM 的编码 agent 替代 ~300MB 的 JS 方案;2. 多 provider 切换:用同一 CLI 在 OpenRouter/OpenAI/Anthropic/Gemini/Ollama/自定义 endpoint 间切换,本地模型走 Ollama;3. 谨慎权限工作流:用 restrictive 等模式 + per-tool glob 严格控制 agent 能执行什么,适合在重要仓库上小心使用;4. 无人值守任务:用 headless loop 跑反复执行类任务,doom-loop 检测防卡死;5. 并行隔离开发:git worktree 集成让多任务在独立 worktree 互不干扰;6. 编辑器集成:用 ACP 把 zerostack 接进支持 ACP 的编辑器。

来源:README Features / Loop system / Git worktrees / Permission system

优势与局限

优势

  • 资源占用极低且有实测对比:8.9MB 二进制、~10-13MB RAM、idle 0% CPU,对比 opencode 等 JS agent 的 ~300MB / ~20%,差距是数量级的,对常驻/低配场景是真优势
  • 轻量但不阉割:多 provider、标准工具集、四档权限、MCP、Exa 搜索、ACP、loop、git worktree 该有的都有,对标 opencode 能力面而非简化版
  • 工程取舍清晰:Rust + 编译期 feature 裁剪(MCP/ACP/loop 可选)+ 紧凑数据结构(compact_str)+ 精简 tokio feature,把轻量做成系统性选择而非偶然
  • 实用的鲁棒性细节:doom-loop 检测(同 tool call 重复 3+ 次干预)、四档权限 + per-tool glob + 外部目录策略,体现对 agent 实际失控场景的考虑
  • 迭代活跃:5 月创建即到 1.2.x,发版频繁,多发行版安装支持 + CONFIG.md/HASHEDIT.md 文档

局限

  • 稳定性 / 成熟度风险:2026-05-12 才创建,虽已 1.x 但极新,几天内多个版本,API/配置/行为仍可能快速变动;Rust 编码 agent 生态远不如 JS 成熟
  • 可扩展性风险:能力靠编译期 feature 裁剪,加新工具/集成需改 Rust 代码重编译,不像 JS agent 那样易热插拔;自定义 prompt 模式之外的深度扩展门槛高
  • 可测试性 / 质量未知:README 给了资源 benchmark 但没有编码任务质量(成功率/正确性)的对比数据,「轻量」之外它写代码的实际表现 vs opencode/Claude Code 未量化
  • 可维护性 / bus factor:单作者新项目(gi-dellav),src 67 文件规模尚小但全 Rust,长期维护与社区贡献能力待观察;GPL-3.0 协议对商业集成有 copyleft 约束
  • 性能声明的代表性:内存/CPU 数字是 i5 7 代单机实测,不同负载(大上下文、长会话、并发 worktree)下的占用未覆盖;二进制大小随启用 feature 增加
  • 依赖外部服务:默认 OpenRouter、Exa 搜索需各自 API key,provider 可用性与限流由上游决定;本地纯离线只有 Ollama 路径
来源:综合 README + Cargo.toml + src 结构 + repo 元数据

最新版本

v1.2.2(2026-05-19)。最近 4 个 release 全在 2 天内:v1.1.1 (2026-05-18) → v1.2.0 (2026-05-18) → v1.2.1 (2026-05-18) → v1.2.2 (2026-05-19),高频迭代。仓库 2026-05-12 创建,虽已进 1.x 但属诞生初期。

来源:GitHub Releases API(4 个 tag)+ repo created_at

总结评价

如果你在意编码 agent 的资源占用——想在低配机/容器/VPS 常驻跑,或受够了 JS agent 几百 MB 的内存——zerostack 是个有吸引力的 Rust 方案:~10MB RAM、8.9MB 二进制,却保留多 provider、权限系统、MCP、loop、git worktree 等完整能力。务实建议:1) 它最大卖点是资源占用,先确认这对你是真需求(桌面随便用的话 JS agent 的内存未必是问题);2) 设好 OPENROUTER_API_KEY(或换 provider)跑起来,重要仓库上用 restrictive 权限模式 + per-tool glob 控制范围;3) 极新(5 月建、1.2.x),别上关键生产,先在非关键任务验证它写代码的实际质量——README 只给了资源 benchmark、没给编码质量对比;4) 要的功能记得在安装时启用对应 feature(MCP/ACP 等是编译期可选);5) GPL-3.0 有 copyleft,商业集成前看清许可;6) 想要最新能力跟 release,但 API 可能变,配置写法以 CONFIG.md 为准。

来源:综合分析
透明度声明
本页内容由 AI(大语言模型)基于以下公开材料自动生成:GitHub README、代码目录结构、依赖文件、Release 信息。 分析时间: 2026-05-22 10:15. 质量评分: 100/100.

数据来源:README、GitHub API、依赖文件