zerostack
面向低内存环境的 Rust 多模型终端编程代理。
这个 Agent 能做什么,适合哪些场景?
zerostack 是一个用 Rust 编写的交互式终端编程代理,灵感来自 pi 和 opencode。它通过 TUI 接收任务,并可调用编码代理常见的文件与命令工具,在权限策略控制下阅读、修改和检查当前项目。它支持 OpenRouter、OpenAI、Anthropic、Gemini、Ollama,以及可配置的自定义提供商,并可保存、加载和继续会话。默认构建包含循环任务、Git worktree、MCP、子代理、ARCHITECTURE.md 和状态信号等功能;ACP、持久记忆、hooks、advisor 和多模态输入则需要额外编译特性。项目将其定位为资源占用较小的本地 CLI 代理,适合希望在终端和本地代码库中使用多提供商模型的开发者。
启动 zerostack 后,用户在 crossterm TUI 中输入任务,代理使用所选 LLM 提供商处理请求,并按当前权限模式调用读写文件、搜索目录和 bash 等工具。code、plan、review、debug、ask 等 /prompt 模式会改变系统提示与可用操作边界;/mode 可切换权限模式。它可通过 /session 保存或恢复会话,通过 -c 继续最近会话,并在上下文窗口压力下自动压缩会话。/loop 会围绕 LOOP_PLAN.md 重复执行任务和可选验证命令;/worktree、/wt-merge 与 /wt-exit 支持按分支创建、合并和退出 Git worktree。启用相应特性后,它还能连接 MCP 服务器、以 zerostack --acp 作为 ACP Agent 服务运行,或把图片和 PDF 附加到消息中。
- 使用 OpenRouter API key 的个人开发者,希望在本地 Rust、Python 或其他代码仓库中,通过终端完成代码解释、编辑和命令验证。
- 需要在 OpenAI、Anthropic、Gemini、Ollama 或自定义兼容服务之间切换模型的团队成员。
- 在上下文窗口受限的长任务中,需要保存会话、自动压缩上下文,并用 `/loop` 按计划迭代实现与测试的开发者。
- 希望在不干扰主代理的情况下,用 `/btw` 对当前代码库提出只读侧问题的工程师。
- 采用分支隔离工作流、希望从聊天界面创建 worktree、完成后合并并清理分支的 Git 用户。
- 使用支持 ACP 的编辑器(文档示例为 Zed),并希望将 zerostack 作为本地编码代理后端的开发者。
这个 Agent 有哪些优点和局限?
- Rust CLI 与 crossterm TUI 面向较低资源占用;项目报告核心约 30k LoC、26MB 二进制和平均约 16MB RAM。
- 提供 OpenRouter、OpenAI、Anthropic、Gemini、Ollama 及自定义提供商路径,减少对单一模型服务的绑定。
- 五种权限模式、按工具 glob 规则、会话 allowlist 与重复工具调用检测,能为本地工具操作设置不同强度的控制。
- 会话续接、自动压缩、循环任务、子代理和 Git worktree 工作流集中在一个终端代理中。
- 默认构建含 MCP,额外启用 ACP 后可作为兼容编辑器的 Agent 服务端。
- Windows 支持未经过测试,跨平台采用前需要自行验证。
- 运行需要配置 LLM 提供商及相应 API key;没有提供商配置时,ACP 模式无法处理提示。
- ACP、持久记忆、hooks、advisor、图片和 PDF 输入不是默认构建功能,需要选择额外编译特性。
- `/loop` 和 Git worktree 集成被标为实验性功能,worktree 自动合并发生冲突时仍可能需要人工处理。
- `--sandbox` 是尽力而为机制:后端缺失时命令会带警告地不经沙箱运行,除非额外启用 `--sandbox-required`。
如何安装或部署这个 Agent?
推荐安装方式:curl -fsSL https://raw.githubusercontent.com/gi-dellav/zerostack/main/install.sh | bash。也可使用 Cargo:cargo install zerostack;默认构建包含 loop、git-worktree、mcp、subagents、archmd、status-signals 和 multithread。需要 ACP、memory、hooks 或 advisor 时,运行 cargo install zerostack --features acp,memory,hooks,advisor,或使用 cargo install zerostack --all-features。首次运行前,为默认 OpenRouter 提供商设置凭据:export OPENROUTER_API_KEY="[api_key]"。
如何使用这个 Agent?
在项目目录运行 zerostack 开始交互式会话;运行 zerostack -p "Explain this project" 执行一次性请求。可用 zerostack --provider openrouter --model deepseek/deepseek-v4-flash 显式指定提供商和模型,或用 zerostack -c 继续最近会话。运行 /prompt autoconfig 可交互式浏览文档并配置工具;运行 /help 查看完整命令。需要隔离 bash 命令时,可安装 bubblewrap 后使用 --sandbox;若必须拒绝未沙箱化的命令,则加入 --sandbox-required。
这个 Agent 与同类方案有什么区别?
项目说明其设计灵感来自 pi 和 opencode,并将自身定位为更轻量的 Rust 编程代理。README 列出的对比性性能数据称,zerostack 平均 RAM 约 16MB、峰值约 24MB,而文中提及的 opencode 或其他 JavaScript 编程代理约为平均 300MB、峰值 700MB;这些是项目给出的测量结果。