|
| 1 | +<p align="center"> |
| 2 | + <img src="docs/assets/zero-logo.png" alt="Zero" width="385"> |
| 3 | +</p> |
| 4 | + |
| 5 | +<p align="center"><strong>一个独属于你的终端编码智能体。</strong></p> |
| 6 | + |
| 7 | +<p align="center"> |
| 8 | + <a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/license-MIT-blue"></a> |
| 9 | + <img alt="Go 1.25+" src="https://img.shields.io/badge/Go-1.25+-00ADD8?logo=go&logoColor=white"> |
| 10 | + <img alt="25+ providers" src="https://img.shields.io/badge/providers-25+-34E2EA"> |
| 11 | + <br> |
| 12 | + <a href="README.md">English</a> | <strong>中文</strong> |
| 13 | +</p> |
| 14 | + |
| 15 | +Zero 是一个用于本地终端的 AI 编码智能体。它可以检查仓库、编辑文件、运行命令、使用浏览器/终端辅助工具,并在你选择模型和权限级别的同时保持持久的本地会话。 |
| 16 | + |
| 17 | +```bash |
| 18 | +zero |
| 19 | +zero exec "修复 ./pkg 中失败的测试" |
| 20 | +zero exec --output-format stream-json < turns.jsonl |
| 21 | +``` |
| 22 | + |
| 23 | +## 为什么选择 Zero |
| 24 | + |
| 25 | +- **使用你想要的模型。** 支持 OpenAI、Anthropic、Gemini、Groq、OpenRouter、DeepSeek、Mistral、xAI、Qwen、Kimi、GitHub Models、Ollama、LM Studio,或任何 OpenAI/Anthropic 兼容端点。 |
| 26 | +- **保持控制权。** 文件写入、Shell 命令、网络访问和工作区外写入都经过 Zero 的权限和沙箱策略。 |
| 27 | +- **在终端中工作。** TUI 具有模型/提供商选择器、图片输入、斜杠命令、实时计划/工具渲染、回滚滚动、主题以及恢复/分叉支持。 |
| 28 | +- **无 TUI 也能工作。** `zero exec` 可脚本化,支持文本/JSON/stream-JSON I/O、隔离的工作树、规范优先运行,以及用于 CI 的有意义的退出码。 |
| 29 | +- **保持上下文本地化。** 会话存储在磁盘上,可搜索、可恢复,且 Zero 不会作为遥测数据上传。 |
| 30 | +- **可扩展。** 使用 MCP 服务器、技能、插件、钩子和来自同一 CLI 的专业子智能体。 |
| 31 | + |
| 32 | +## 安装 |
| 33 | + |
| 34 | +### npm |
| 35 | + |
| 36 | +```bash |
| 37 | +npm install -g @gitlawb/zero |
| 38 | +zero |
| 39 | +``` |
| 40 | + |
| 41 | +npm 包安装一个小型包装器以及与你平台匹配的 Zero 二进制文件(从 GitHub Releases 获取)。支持 Linux、macOS 和 Windows 的 x64 和 arm64。 |
| 42 | + |
| 43 | +### Bun |
| 44 | + |
| 45 | +Bun 默认不运行依赖的生命周期脚本,因此获取 Zero 二进制文件的 `postinstall` 会被跳过,首次运行会失败并显示 `No native binary found next to the npm wrapper`。 |
| 46 | + |
| 47 | +使用 Bun 安装后,通过以下两种方式之一获取二进制文件: |
| 48 | + |
| 49 | +```bash |
| 50 | +# 选项 A:手动运行安装程序 |
| 51 | +bun add @gitlawb/zero |
| 52 | +node node_modules/@gitlawb/zero/scripts/postinstall.mjs |
| 53 | + |
| 54 | +# 选项 B:允许 postinstall 在安装时运行 |
| 55 | +# 添加到你的 package.json: "trustedDependencies": ["@gitlawb/zero"] |
| 56 | +bun add @gitlawb/zero |
| 57 | +``` |
| 58 | + |
| 59 | +对于全局安装(`bun add -g @gitlawb/zero`),请对全局安装路径使用选项 A,或使用下面的安装脚本。 |
| 60 | + |
| 61 | +### 安装脚本 |
| 62 | + |
| 63 | +Linux/macOS: |
| 64 | + |
| 65 | +```bash |
| 66 | +curl -fsSL https://raw.githubusercontent.com/Gitlawb/zero/main/scripts/install.sh | bash |
| 67 | +``` |
| 68 | + |
| 69 | +Windows PowerShell: |
| 70 | + |
| 71 | +```powershell |
| 72 | +irm https://raw.githubusercontent.com/Gitlawb/zero/main/scripts/install.ps1 | iex |
| 73 | +``` |
| 74 | + |
| 75 | +### 从源码构建 |
| 76 | + |
| 77 | +源码构建需要 Go 1.25+。 |
| 78 | + |
| 79 | +```bash |
| 80 | +git clone https://github.com/Gitlawb/zero.git |
| 81 | +cd zero |
| 82 | +go run ./cmd/zero |
| 83 | +``` |
| 84 | + |
| 85 | +发布安装器和 npm 包需要已发布的 GitHub Release 资源。如果你在首次公开发布之前进行测试,请从源码构建: |
| 86 | + |
| 87 | +```bash |
| 88 | +go build -o zero ./cmd/zero |
| 89 | +``` |
| 90 | + |
| 91 | +在 Linux 上,如果你需要原生沙箱,还需要构建沙箱辅助程序: |
| 92 | + |
| 93 | +```bash |
| 94 | +go build -o zero-linux-sandbox ./cmd/zero-linux-sandbox |
| 95 | +go build -o zero-seccomp ./cmd/zero-seccomp # 可选的兼容性包装器 |
| 96 | +``` |
| 97 | + |
| 98 | +将 `zero` 和 `zero-linux-sandbox` 放在 `PATH` 上的同一目录中(`~/.local/bin` 是一个好的默认选择)。macOS 不需要额外的辅助二进制文件。Windows 源码构建可以使用主 `zero.exe` 作为沙箱辅助程序;发布包仍然附带独立的 Windows 辅助可执行文件。 |
| 99 | + |
| 100 | +更多安装细节:[docs/INSTALL.md](docs/INSTALL.md)。 |
| 101 | + |
| 102 | +## 首次运行 |
| 103 | + |
| 104 | +启动 TUI: |
| 105 | + |
| 106 | +```bash |
| 107 | +zero |
| 108 | +``` |
| 109 | + |
| 110 | +设置向导帮助你选择提供商和模型。你也可以从命令行配置提供商: |
| 111 | + |
| 112 | +```bash |
| 113 | +zero setup |
| 114 | +zero providers list |
| 115 | +zero models list |
| 116 | +zero doctor |
| 117 | +``` |
| 118 | + |
| 119 | +对于 API 提供商,在设置之前设置匹配的环境变量或在向导中输入密钥: |
| 120 | + |
| 121 | +```bash |
| 122 | +export OPENAI_API_KEY=sk-... |
| 123 | +export ANTHROPIC_API_KEY=... |
| 124 | +export GEMINI_API_KEY=... |
| 125 | +export LONGCAT_API_KEY=... |
| 126 | +``` |
| 127 | + |
| 128 | +要直接配置美团 LongCat(LongCat-2.0),运行: |
| 129 | + |
| 130 | +```bash |
| 131 | +zero providers setup longcat --set-active |
| 132 | +``` |
| 133 | + |
| 134 | +对于本地模型,运行 Ollama 或 LM Studio,然后使用 `zero setup` 或 `zero providers detect`。 |
| 135 | + |
| 136 | +## 日常使用 |
| 137 | + |
| 138 | +### 交互式 TUI |
| 139 | + |
| 140 | +```bash |
| 141 | +zero |
| 142 | +``` |
| 143 | + |
| 144 | +常用控制: |
| 145 | + |
| 146 | +| 控制 | 操作 | |
| 147 | +|---|---| |
| 148 | +| `Enter` | 发送提示 | |
| 149 | +| `/` | 打开斜杠命令建议 | |
| 150 | +| `Shift+Tab` | 切换权限模式 | |
| 151 | +| `Ctrl+B` | 显示/隐藏侧边栏 | |
| 152 | +| `Ctrl+C` | 取消或退出 | |
| 153 | + |
| 154 | +常用斜杠命令: |
| 155 | + |
| 156 | +| 命令 | 用途 | |
| 157 | +|---|---| |
| 158 | +| `/model`、`/provider` | 切换活动模型/提供商 | |
| 159 | +| `/spec`、`/plan` | 在构建之前起草和审查计划 | |
| 160 | +| `/image` | 为视觉模型附加图片 | |
| 161 | +| `/resume`、`/rewind` | 继续或回滚本地会话 | |
| 162 | +| `/compact`、`/context` | 管理上下文使用 | |
| 163 | +| `/permissions`、`/tools` | 检查可用工具和策略 | |
| 164 | +| `/add-dir` | 为此会话授予额外的写入目录 | |
| 165 | +| `/theme`、`/doctor`、`/config` | 调整外观和检查设置 | |
| 166 | + |
| 167 | +### 无头 `exec` 模式 |
| 168 | + |
| 169 | +```bash |
| 170 | +zero exec "解释 internal/agent/loop.go" |
| 171 | +zero exec --model claude-sonnet-4.5 "重构配置加载器" |
| 172 | +zero exec --use-spec "为 API 客户端添加速率限制" |
| 173 | +zero exec --worktree "在隔离的工作树中尝试迁移" |
| 174 | +zero exec --resume |
| 175 | +zero exec --fork <session-id> "尝试另一种方法" |
| 176 | +``` |
| 177 | + |
| 178 | +编程使用: |
| 179 | + |
| 180 | +```bash |
| 181 | +zero exec --input-format stream-json --output-format stream-json < turns.jsonl |
| 182 | +``` |
| 183 | + |
| 184 | +Stream-JSON 协议文档在 [docs/STREAM_JSON_PROTOCOL.md](docs/STREAM_JSON_PROTOCOL.md)。 |
| 185 | + |
| 186 | +## 安全模型 |
| 187 | + |
| 188 | +Zero 旨在使副作用可见。 |
| 189 | + |
| 190 | +- 工作区读取默认允许。 |
| 191 | +- 文件写入限制在工作区内,除非你授予其他目录。 |
| 192 | +- Shell 命令、网络访问、破坏性命令和提权操作需要权限授权。 |
| 193 | +- `--add-dir <path>` 和 `/add-dir <path>` 授予额外的写入根目录,而不会给智能体整个文件系统。 |
| 194 | +- 不安全/自主模式是显式选择加入。 |
| 195 | +- 在 Zero 控制的界面上,密钥会从工具输出和日志中被脱敏。 |
| 196 | + |
| 197 | +示例: |
| 198 | + |
| 199 | +```bash |
| 200 | +zero --add-dir ../docs-site |
| 201 | +zero exec --add-dir ../shared "更新两个仓库" |
| 202 | +``` |
| 203 | + |
| 204 | +沙箱行为可以通过以下方式检查: |
| 205 | + |
| 206 | +```bash |
| 207 | +zero sandbox policy |
| 208 | +zero sandbox grants list |
| 209 | +``` |
| 210 | + |
| 211 | +## Web 和本地控制 |
| 212 | + |
| 213 | +Zero 包含本地文件/搜索/编辑/Shell 工具、用于公共 URL 的 `web_fetch`,以及用于额外工具的 MCP 支持。 |
| 214 | + |
| 215 | +对于本地开发服务器,使用 Shell 命令(如通过 `exec_command` 的 `curl`),这样正常的沙箱和权限策略就会生效。长时间运行的命令保持附加到后台终端会话,可以从 TUI 中列出或停止。 |
| 216 | + |
| 217 | +npm 包还包含本地浏览器/终端工具使用的浏览器和终端辅助包。源码构建可以在它们位于 `PATH` 上或在 Zero 的本地控制设置中配置时使用相同的辅助工具。 |
| 218 | + |
| 219 | +## 常用命令 |
| 220 | + |
| 221 | +```text |
| 222 | +zero 交互式 TUI |
| 223 | +zero exec 一次性或脚本化智能体运行 |
| 224 | +zero setup 首次运行提供商设置 |
| 225 | +zero auth 支持提供商的 OAuth/登录辅助 |
| 226 | +zero models 模型注册表和能力 |
| 227 | +zero providers 提供商配置和检测 |
| 228 | +zero doctor 设置、密钥和连接检查 |
| 229 | +zero context 上下文预算报告 |
| 230 | +zero repo-map 确定性仓库映射 |
| 231 | +zero repo-info 本地仓库摘要 |
| 232 | +zero search | find 搜索本地会话历史 |
| 233 | +zero sessions 检查、恢复、分叉和回滚会话 |
| 234 | +zero spec 管理规范模式草稿 |
| 235 | +zero specialist 管理专业子智能体 |
| 236 | +zero skills 管理 Markdown 指令技能 |
| 237 | +zero plugins 管理插件 |
| 238 | +zero hooks 管理生命周期钩子 |
| 239 | +zero mcp 管理 MCP 服务器和工具 |
| 240 | +zero serve --mcp 通过 MCP stdio 暴露 Zero 工具 |
| 241 | +zero sandbox 检查沙箱策略和授权 |
| 242 | +zero worktrees 准备隔离的 Git 工作树 |
| 243 | +zero verify 检测和运行本地验证检查 |
| 244 | +zero changes 检查和提交本地 Git 变更 |
| 245 | +zero usage Token 使用量和估算成本 |
| 246 | +zero cron 定时智能体任务 |
| 247 | +zero update 检查更新版本 |
| 248 | +``` |
| 249 | + |
| 250 | +## 外观和无障碍 |
| 251 | + |
| 252 | +| 控制 | 效果 | |
| 253 | +|---|---| |
| 254 | +| `NO_COLOR=<任意值>` | 禁用颜色输出 | |
| 255 | +| `ZERO_THEME=<名称>` | 选择启动主题(`auto`、`dark`、`light`,或颜色主题如 `dracula`、`nord`、`gruvbox`、`tokyo-night`、`catppuccin`、`one-dark`、`solarized-dark`、`rose-pine`、`everforest`、`solarized-light`) | |
| 256 | +| `--theme <名称>` | 从 CLI 选择 TUI 主题(相同名称) | |
| 257 | +| `/theme` | 在 TUI 中打开主题选择器(实时预览;`/theme <名称>` 直接切换) | |
| 258 | +| `ZERO_NO_FADE=1` | 禁用流式淡入动画 | |
| 259 | + |
| 260 | +含义不仅仅依赖于颜色;差异、权限和状态也使用文本或标记符号。 |
| 261 | + |
| 262 | +## 开发 |
| 263 | + |
| 264 | +```bash |
| 265 | +go test ./... |
| 266 | +go run ./cmd/zero-release build |
| 267 | +go run ./cmd/zero-release smoke |
| 268 | +go run ./cmd/zero-perf-bench |
| 269 | +``` |
| 270 | + |
| 271 | +交叉编译示例: |
| 272 | + |
| 273 | +```bash |
| 274 | +go run ./cmd/zero-release build --goos linux --goarch amd64 |
| 275 | +go run ./cmd/zero-release build --goos windows --goarch amd64 --output dist/zero.exe |
| 276 | +``` |
| 277 | + |
| 278 | +## 文档 |
| 279 | + |
| 280 | +- [安装](docs/INSTALL.md) |
| 281 | +- [更新流程](docs/UPDATE.md) |
| 282 | +- [Stream-JSON 协议](docs/STREAM_JSON_PROTOCOL.md) |
| 283 | +- [专家](docs/SPECIALISTS.md) |
| 284 | +- [GitHub Action](docs/GITHUB_ACTION.md) |
| 285 | +- [基准测试](docs/BENCHMARK.md) |
| 286 | +- [性能](docs/PERFORMANCE.md) |
| 287 | +- [智能体评估](docs/AGENT_EVALS.md) |
| 288 | + |
| 289 | +## 贡献 |
| 290 | + |
| 291 | +欢迎贡献。阅读 [CONTRIBUTING.md](CONTRIBUTING.md),运行相关测试,然后提交一个聚焦的拉取请求。 |
| 292 | + |
| 293 | +安全报告应遵循 [SECURITY.md](SECURITY.md)。 |
| 294 | + |
| 295 | +## 许可证 |
| 296 | + |
| 297 | +Zero 基于 [MIT 许可证](LICENSE) 发布。 |
0 commit comments