Zero:把模型选择权、权限边界和会话数据都留在本地的终端编码代理
编码代理可以回答您、您的模型、您的机器、您的规则。
秒懂
- 它是什么?
- Zero 是一个用 Go 编写的终端编码代理,支持任意 OpenAI 或 Anthropic 兼容模型,提供 TUI 与可脚本化的 exec 模式,并把会话数据保存在本地。它的控制力和可移植性值得工程团队评估,但沙箱能力在 macOS 和 Windows 上有所取舍。
- 适合谁用?
- 适合那些对模型选择有硬性要求、需要把会话数据留在本地的个人开发者或小型团队,尤其是已经在使用 Ollama、LM Studio 或多种云端模型 API 的用户。不适合需要开箱即用的托管服务、或者对 Windows ARM 原生支持有要求的场景。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 2 天前。
- 用什么语言写的?
- 主要是 Go(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决什么问题:终端里的自主代理,但所有权在你
大多数编码代理要么绑定特定云服务,要么把会话数据上传到厂商服务器,要么只允许你使用预置的模型。Zero 的定位是让你在本地终端里运行一个能读仓库、改文件、执行命令的代理,同时你可以自由选择模型、设置权限级别,并且所有会话数据都保存在本地磁盘。项目描述里写的是“The coding agent that answers to you, your model, your machine, your rules”,翻译过来就是:它听你的,用你的模型,跑在你的机器上,遵守你的规则。目标用户是那些对数据主权有要求、或者需要在不同模型之间切换的开发者,比如同时使用 OpenAI 和本地 Ollama 的人。它不是给完全不想碰配置的人准备的,因为首次设置需要你手动选 provider 和填 API key。
实际工作机制:TUI、exec 与本地会话三层结构
从 README 可以看出,Zero 的工作方式分为三个层面。交互层是 TUI,支持模型和 provider 选择器、图片输入、斜杠命令、计划与工具渲染、滚动回看、主题,以及会话的 resume 和 fork。自动化层是 `zero exec`,它以文本、JSON 或 stream-JSON 格式输入输出,支持隔离的 worktree、spec-first 运行,并且返回有意义的退出码,适合放进 CI。数据层是本地会话存储,会话可搜索、可恢复,Zero 本身不会上传遥测数据。这种设计把交互和自动化分开,但共用同一套会话机制,意味着你在 TUI 里开始的对话,理论上可以通过 `zero exec --resume` 继续。文档还提到 stream-JSON 协议有专门文档,说明它把程序化使用当作一等公民。
安装与首次运行:npm 包装器、安装脚本和源码编译三条路径
安装方式有三种。npm 包装器是推荐路径,`npm install -g @gitlawb/zero` 会安装一个小的包装器,平台二进制作为可选依赖从 npm registry 获取,不需要 install scripts,也不会从 npm 之外下载。如果安装时用了 `--omit=optional`,包装器会从 GitHub Release 获取二进制。Linux 和 macOS 支持 x64/arm64,Windows 只有 x64,ARM 版 Windows 靠模拟运行。安装脚本是 `curl -fsSL https://raw.githubusercontent.com/Gitlawb/zero/main/scripts/install.sh | bash`,PowerShell 对应 `irm ... | iex`。源码编译要求 Go 1.26.6+,命令是 `go run ./cmd/zero`。Linux 上如果要原生沙箱,需要额外构建 `zero-linux-sandbox` 和可选的 `zero-seccomp`,并且要把它们和主二进制放在同一个 PATH 目录。macOS 不需要额外 helper,Windows 源码构建可以用主 exe 作为沙箱 helper。首次运行 `zero` 会启动设置向导,也可以直接用 `zero providers list`、`zero models list`、`zero doctor` 来检查环境。
模型接入的灵活性:从云端 API 到本地模型
Zero 支持的模型来源非常宽。README 明确列出 OpenAI、Anthropic、Gemini、Groq、OpenRouter、DeepSeek、Mistral、xAI、Qwen、Kimi、GitHub Models、Ollama、LM Studio,以及任何 OpenAI 或 Anthropic 兼容端点。配置方式有两种:通过环境变量,比如 `export OPENAI_API_KEY=sk-...`,或者通过 `zero providers setup` 命令直接配置特定服务商。例如 `zero providers setup aimlapi --set-active` 可以激活 AI/ML API,`zero providers setup longcat --set-active` 配置美团 LongCat。MiniMax 有预设,使用 Anthropic 兼容端点,但如果你想用 OpenAI 兼容端点,需要手动添加 custom profile,像 `zero providers add custom-openai-compatible --name minimax-openai --model MiniMax-M3 --base-url https://api.minimax.io/v1 --api-key-env MINIMAX_API_KEY --set-active`。对于本地模型,先运行 Ollama 或 LM Studio,再用 `zero providers detect` 自动发现。这种灵活性是优点,但代价是配置复杂度:每个服务商的参数可能不同,你需要自己管理 API key 的环境变量名。
日常使用的控制手段:斜杠命令与权限模式
TUI 里的控制方式很具体。`/model` 和 `/provider` 切换模型,`/spec` 和 `/plan` 在构建前起草计划,`/image` 附加图片给视觉模型,`/resume` 和 `/rewind` 继续或回滚会话,`/new` 开新会话但保留旧会话在磁盘上,`/btw` 在隔离分支里提问而不污染主会话,`/loop` 可以按间隔重复提示词,比如 `/loop 5m /babysit-prs`。权限模式通过 `Shift+Tab` 循环切换,`/permissions` 和 `/tools` 可以查看当前策略。`/add-dir` 允许为当前会话额外添加一个写目录,这个功能暗示了默认的写权限是限制在工作区内的。这些命令覆盖了从模型管理到会话控制的日常操作,但要注意,`/loop` 这样的自动化功能如果权限设置不当,可能让代理反复执行有副作用的命令,所以权限模式的粒度很重要。
安全模型的边界:沙箱在 Linux 上才完整
README 的安全模型部分被截断了,但已经能看到关键信息:文件写入、shell 命令、网络访问和超出工作区的写入都要经过权限和沙箱策略。Linux 上需要额外构建 `zero-linux-sandbox` 才能获得原生沙箱,还有一个可选的 `zero-seccomp` 兼容包装器。macOS 不需要额外 helper,这听起来方便,但也意味着 macOS 上的沙箱能力可能不如 Linux 完整,文档没有详细说明。Windows 上源码构建可以用主 exe 作为 helper,但 release 归档会提供独立的 helper 可执行文件。这里有一个真实的限制:如果你在 macOS 或 Windows 上跑 Zero,你得到的权限控制可能主要依赖 Zero 自己的策略层,而不是操作系统的沙箱隔离。对于需要严格隔离不可信代码的场景,Linux 是更稳妥的选择。另一个限制是 Windows ARM 只能模拟运行 x64 构建,性能可能有折扣。
扩展机制与维护成本:MCP、skills、插件和 hooks
Zero 支持通过 MCP 服务器、skills、插件、hooks 和专家子代理来扩展功能,这些都从同一个 CLI 调用。这意味着你可以接入现有的 MCP 生态,或者定义自己的技能集。但 README 没有给出具体的扩展示例或配置格式,所以实际使用需要参考文档。维护成本方面,项目最近发布了 v0.8.0,更新频率大约每两周一个版本,说明还在快速迭代。Go 语言编译成单一二进制,部署相对简单,但 Go 版本要求是 1.26.6+,这意味着如果你从源码构建,你的 Go 工具链必须足够新。npm 包装器的设计避免了 install scripts,降低了供应链风险,但如果你使用 `--omit=optional`,它会从 GitHub Release 下载二进制,这需要网络访问 GitHub,在某些企业网络环境下可能失败。许可证是 MIT,允许自由使用和修改,但如果你二次分发,需要保留版权声明。
替代方案与选择依据:对比 Claude Code 和本地代理
一个直接的替代方案是 Anthropic 的 Claude Code,它同样在终端运行,能读写文件和执行命令,但它的模型选择通常绑定到 Anthropic 的 API。Zero 的不同之处在于它允许你使用任何 OpenAI 或 Anthropic 兼容端点,包括本地 Ollama,这意味着你可以完全离线运行,或者在不同模型之间切换而不换工具。另一个替代是开源的 Aider,它专注于 Git 仓库的编辑,但它的架构是围绕 diff 应用和 Git 历史,而 Zero 更强调会话管理和权限控制。如果你只需要简单的代码补全,VS Code 的 Copilot 可能更顺手,但 Zero 是完整的代理,能执行多步骤任务。选择 Zero 的依据是:你是否需要模型无关性、本地会话存储和细粒度权限控制。如果你对这些没有硬性要求,使用更成熟的托管服务可能更省心。
编辑结论
适合那些对模型选择有硬性要求、需要把会话数据留在本地的个人开发者或小型团队,尤其是已经在使用 Ollama、LM Studio 或多种云端模型 API 的用户。不适合需要开箱即用的托管服务、或者对 Windows ARM 原生支持有要求的场景。在采用前,先确认你的模型端点是否与 Zero 的 provider 配置兼容,检查 `zero doctor` 的输出以验证环境变量和网络连通性,并阅读 docs/STREAM_JSON_PROTOCOL.md 以评估 exec 模式是否能满足 CI 集成需求。最终判断依据是:如果你愿意为控制权付出配置成本,Zero 的本地会话和权限策略值得一试;如果你追求最小运维,它可能不是首选。
社区笔记