zot:轻量级编码代理工具,支持多模型交互、多方式运行及丰富扩展功能

zot:轻量级编码代理工具,支持多模型交互、多方式运行及丰富扩展功能 关于 zotzot 是轻量级终端编码代理工具以单个静态 Go 二进制文件发布。它无需运行时环境不依赖 Docker也无配备专用包管理器的插件系统仅专注代理循环。你只需将其添加到 $PATH 环境变量即可使用。zot 能与 Anthropic、OpenAI/Codex/Responses、Kimi、DeepSeek、Google Gemini/Vertex、GitHub Copilot、Bedrock、Azure OpenAI、OpenRouter、Groq、Cerebras、xAI、Together、Hugging Face、Mistral、Moonshot、Z.AI、小米、MiniMax、Fireworks、Vercel AI Gateway、OpenCode、Cloudflare AI 及本地兼容 OpenAI 的模型如 ollama交互。它能编辑文件、执行 shell 命令还能回复 Telegram 私信。你可用自己的 API 密钥或通过 Claude、ChatGPT/Codex、Kimi Code 或 GitHub Copilot 订阅登录。不过DeepSeek 和 Google 仅支持用 API 密钥登录。运行方式zot 支持四种运行方式交互式interactive提供完整 TUI文本用户界面支持流式输出、斜杠命令、消息队列和内联侧边聊天功能打印模式print用 zot -p 命令将最终助手回复文本输出到标准输出适合 shell 管道JSON 模式json用 zot --json 命令将 NDJSON 事件输出到标准输出适用于脚本和 CI 环境RPC 模式rpc用 zot rpc 命令启动长期运行子进程通过标准输入接收 NDJSON 命令在标准输出返回事件。你可将 zot 集成到任何语言编写的应用程序中。支持的供应商zot 有广泛供应商目录/login、/model、--provider 和 --list-models 命令都用相同 ID。支持订阅的供应商有 Anthropic Claude Pro/Max (anthropic)、OpenAI Codex / ChatGPT Plus/Pro (openai-codex)、Kimi Code (kimi) 和 GitHub Copilot (github-copilot)直接 API 供应商包括 Anthropic、OpenAI Chat Completions、OpenAI Responses、DeepSeek、Google Gemini、Kimi/Moonshot、Moonshot CN、Groq、Cerebras、xAI、Together AI、Hugging Face Router、OpenRouter、Mistral、Z.AI、小米/MiMo 令牌计划区域、MiniMax 全球/中国版、Fireworks、Vercel AI Gateway 和 OpenCode/OpenCode Go云/平台供应商有 Amazon Bedrock、Google Vertex AI、Azure OpenAI、Cloudflare Workers AI 和 Cloudflare AI Gateway本地/兼容供应商是 Ollama 和通过 --base-url 指定的本地兼容 OpenAI 的端点。你可用 /login 命令存储 API 密钥或订阅凭证。模型选择器仅显示当前通过环境变量、auth.json、Kimi CLI 回退机制或本地 Ollama 可用的供应商模型。支持的模型--list-models 和 /model 命令会显示所有供应商的合并模型目录。内置条目涵盖 Claude、GPT/Codex、Gemini/Gemma、Kimi/Moonshot、DeepSeek、Groq 托管的 Llama/Gemma/Compound、OpenRouter 路由的模型、Bedrock 模型 ID、Vertex 模型 ID、Azure OpenAI 部署、Copilot 模型及其他特定供应商的条目。zot 还会用存储的 API 密钥从 GET /v1/models 接口获取实时模型 ID并将其合并到目录中这些 ID 会在 $ZOT_HOME/models-cache.json 中缓存 6 小时。此外还有一些推测性目录条目上游供应商启用这些模型后即可正常使用。你可通过 $ZOT_HOME/models.json 文件添加自定义模型。用户添加的条目优先级高于内置和实时发现的模型且支持 groq、openrouter、github-copilot、amazon-bedrock、google-vertex、azure-openai-responses、fireworks、vercel-ai-gateway、mistral 和 xai 等供应商 ID。内置工具zot 有四个内置工具使用简单便捷是能实际交付代码的代理工具的最小可行工具箱。read 可读取文本文件或在现代终端中内联渲染 PNG、JPG、GIF 或 WebP 图像write 能创建或覆盖文件并按需创建父目录edit 可在现有文件中进行一个或多个精确匹配的替换bash 能在会话当前工作目录中执行 shell 命令合并标准输出和标准错误输出并设置超时时间。输入 /jail 命令可将每个工具的操作限制在当前目录内。Bash 会拒绝执行 sudo、rm -rf / 等明显越界命令这是防止意外操作的保护机制但非严格安全边界。扩展功能zot 支持通过子进程和 JSON-RPC 协议以任何语言扩展。扩展程序可注册斜杠命令、向模型暴露新工具、拦截工具调用以进行权限控制并在 TUI 中打开交互式扩展面板。扩展程序不会自动安装。你可用 zot ext install 命令在每台机器上手动安装扩展或在开发扩展时用 zot --ext ./path 命令临时加载。每个扩展有自己的目录待办事项数据、设置或缓存等持久状态可与扩展程序一起存储。技能功能技能是每个文件夹中的 SKILL.md 文件带 YAML 前置元数据头。zot 启动时会自动发现这些技能文件在系统提示中显示其名称同时暴露内置的 skill 工具供模型按需加载技能文件内容。代理只会加载所需指令不加载多余内容。内置和用户安装的技能默认从 .zot/skills/、$ZOT_HOME/skills/、.claude/skills/ 或 .agents/skills/ 目录加载。你可用 --no-skill 命令禁用所有技能发现功能。会话管理每次交互会追加到 $ZOT_HOME 目录下的 JSONL 转录文件中。你可用 -c 命令恢复上一次会话用 -r 命令选择特定会话或通过 /sessions 命令浏览所有会话。用 /jump 命令可在不编辑历史记录的情况下在过去的交互间跳转。用 /compact 命令可在不丢失对话线索的情况下释放上下文该命令会将会话转录文件总结为一条消息并保留最后几次交互的原文。当使用的上下文超过模型上下文窗口的 85% 时zot 会自动压缩。/session 命令用于对正在运行的转录文件进行更复杂操作。export 命令可将会话转录文件保存为可移植的 .zotsession 文件默认保存到 ~/Downloads 目录以便分享给其他机器或用户import 命令可将 .zotsession 文件导入为可恢复的会话。fork 命令可从任何过去的用户消息分支创建新会话新会话元数据会记录父会话和分支点这样可尝试不同方向而不污染原始对话线程tree 命令会以父子缩进形式显示该目录下的所有分支并允许切换到任何一个分支。导出功能仅涵盖主聊天线程包括消息、工具调用、工具结果、压缩信息和使用情况。/swarm 子代理不会被打包导出因为它们的每个代理状态存储在 Unix 套接字收件箱和磁盘上的会话文件中这些数据无法通过 JSONL 文件往返传输。若想分享某个代理的回复可手动从转录视图中复制。侧边聊天输入 /btw 命令可打开侧边聊天覆盖窗口该窗口会冻结主会话的上下文。你可在不使主对话线程臃肿的情况下快速提出澄清问题。侧边聊天中的内容不会追加到转录文件中也不会保存到会话文件中运行上下文窗口可保持简洁。集群代理Swarm集群代理是在主会话旁边运行的后台子代理。输入 /swarm 命令可打开仪表盘按 n 键可创建新的子代理。每个子代理是独立的 zot 子进程有自己的模型循环、持久会话文件和仪表盘聊天窗口但都与主会话在同一工作目录下运行可看到并编辑正在处理的相同文件。你可继续在主会话中工作子代理会并行处理任务。子代理和主代理用相同的 read、write、edit 和 bash 工具对主会话的工作目录操作无每个代理独立的工作树或分支。若需在隔离的检出上进行并行编辑可在 zot 外部用 git worktree 设置。在仪表盘的任何一行按 enter 键可打开该代理的转录窗口这是带底部内联编辑器的聊天覆盖窗口支持流式自动跟随和显示代理当前活动状态的忙碌指示器如 thinking、tool: edit_file 等。输入内容按 enter 键发送跟进消息按 esc 键返回仪表盘。以下是从命令行操作集群代理的常用命令脚本和无头流程的操作方式与仪表盘相同/swarm 打开仪表盘/swarm new 创建新的代理/swarm new --model gpt-5 指定新代理使用的模型/swarm logs 直接跳转到某个代理的转录窗口/swarm send 不打开仪表盘直接向代理发送跟进消息/swarm resume 选择已停止的代理并恢复运行/swarm kill 停止正在运行的代理其状态会保留/swarm remove 删除代理的会话和状态。子代理的作用域限于创建它们的会话只在该会话的仪表盘中显示。它们的状态会在 zot 重启后保留在 $ZOT_HOME/swarm/agents/ / 目录下在仪表盘的分离行按 R 键可恢复同一会话和收件箱套接字使对话从上次中断处继续。每个子代理的所有数据会话文件、事件日志、收件箱套接字、元数据都存储在 $ZOT_HOME/swarm/agents/ / 目录下。子代理对文件的实际编辑会直接应用到代码仓库中你可用 git status 和 git diff 命令跟踪这些更改。/session export 命令不会打包子代理.zotsession 文件仅含主聊天转录内容集群代理的状态会话文件、Unix 套接字收件箱是本地机器的无法通过 .zotsession 文件往返传输。若想分享某个代理的回复可手动从转录视图中复制。在 /settings 中开启自动集群代理auto-swarm功能后当请求自然拆分为独立的并行任务时主代理也可自行分叉子代理。具体细节参考设置部分。设置选项输入 /settings 命令可打开对话框显示所有持久化设置。用 up/down 键导航按 enter 或 space 键更改选中的设置项按 esc 键关闭对话框。设置更改会保存到 $ZOT_HOME/config.json 文件中下次交互时生效无需重启 zot。支持时渲染图像render images when supported用终端的图像协议如 Ghostty、Kitty、iTerm2、WezTerm内联绘制 read 命令返回的截图和图像若不支持则显示文本占位符。该功能会根据 TERM_PROGRAM 自动检测你也可通过切换开关覆盖检测结果。在不支持任何图像协议的终端上该选项会变灰并强制关闭。自动集群代理auto-swarm允许主代理通过内置的 swarm_spawn 工具并行创建后台子代理默认关闭。开启后该工具会注册到运行中的代理中系统提示会增加简短说明告诉模型主动将独立的子任务委派如“实现 A 和 B”、“调查三个文件”。每次创建子代理后主对话会立即继续你可通过 /swarm 命令监控、发送消息或终止子代理如同手动创建的子代理。一批子代理中的最后一个完成初始任务后zot 会向主聊天中注入 [auto-swarm update] 消息总结每个代理的状态、任务和转录尾部。主代理会编写简短跟进摘要通过 ID 引用这些代理这样可在一个对话中监控并行工作的进展。在会话中关闭该开关会在下次交互时从活动代理中移除 swarm_spawn 工具并删除系统提示中的附加说明模型将停止尝试委派任务。思考级别thinking level为支持的模型选择推理深度默认关闭。可用级别包括关闭无推理、最小约 1k 思考令牌、低约 2k、中约 8k、高约 16k和最大约 32k。zot 会将这些级别映射到每个供应商最接近的支持协议格式如 Claude 和 Gemini 的令牌预算、Gemini 的思考级别枚举或 OpenAI 风格的推理努力。当前状态栏会显示为 thinking: 你也可在每次运行时用 --reasoning 命令更改该设置。工具调用确认用 --no-yolo 标志运行 zot 时每个工具调用执行前都需确认。会弹出对话框显示工具名称和参数的一行预览并提供四个选项是、本次会话始终允许此工具、本次会话始终允许、否。在 TUI 中输入 /yolo 命令可在本次会话剩余时间内跳过确认步骤。该标志仅在交互式模式下有效。在 -p、--json 和 rpc 模式下工具仍可自由运行确保脚本和自动化流程正常工作。模型回退机制某个交互因可恢复的供应商错误如令牌过期 (401)、权限拒绝 (403)、速率限制 (429)、供应商故障 (502/503/504) 或临时网络故障失败时zot 会在聊天窗口中弹出内联救援选择器而非仅显示红色横幅。救援选择器与 /model 命令用相同的垂直列表/模糊过滤界面但仅显示当前已登录的供应商的模型通过环境变量、auth.json、Kimi CLI 回退机制或 ollama 登录包括内置目录中为任何供应商存储的 API 密钥。失败的模型会被排除。选择模型按 enter 键zot 会在新模型上重试相同提示。按 esc 键可取消选择。救援选择器弹出前每个供应商客户端会对 502/503/504 错误及连接重置/头部前 EOF 错误进行最多两次静默重试每次重试间隔较短250ms、750ms。多数边缘代理的小故障会在看到选择器前自动解决。救援重试会在重建代理前有意删除启动时的 --api-key 和 --base-url 覆盖设置因为这些设置常是失败原因然后从环境变量、auth.json 和供应商默认设置中重新解析凭证。若希望覆盖设置生效可用 /model 命令。无需额外配置候选模型列表会根据当前活动凭证动态生成。错误请求、上下文长度和序列化错误不会路由到救援选择器因为切换模型无法解决这些问题它们仍会作为普通错误显示。系统提示覆盖在 $ZOT_HOME 目录下放置 SYSTEM.md 文件可替换每次运行时的内置身份和指南。每次调用时--system-prompt 选项优先级最高删除该文件可恢复默认设置。用 --append-system-prompt 选项可重复使用可在不覆盖默认设置的情况下添加额外指令。嵌入功能有两种方式从其他程序驱动 zot它们共享相同的事件模式一种方式捕获的转录可通过另一种方式重放。Go 语言进程内调用导入 github.com/patriceckhart/zot/packages/agent/sdk 包。每个项目用一个 Runtime 实例Prompt(ctx, text, images) 方法返回 Event 通道。示例代码在 examples/sdk/ 目录下。任何语言进程外调用将 zot rpc 作为子进程启动通过其标准输入和标准输出交换 NDJSON 数据。Python、Node、shell 和 Go 语言的参考客户端在 examples/rpc/ 目录下。Telegram 集成你可将 zot 与 BotFather 令牌配对从任何地方向其发送私信。它能像在 TUI 中一样读取、写入、编辑文件和执行命令。照片和图像附件会转发给支持视觉功能的模型。有两种运行方式在活动的 TUI 会话中输入 /telegram或 /tg命令进行连接。私信会作为提示添加到同一会话中你在 TUI 中输入的内容会以 you: … 的形式镜像到 Telegram回复会以 zot: … 开头确保 Telegram 线程完整记录对话。连接时状态栏会显示 · tg · 标签。作为服务器的无头后台守护进程运行zot telegram-bot setup 粘贴你的 BotFather 令牌zot telegram-bot start 分离并在后台运行zot tg logs -f 实时查看机器人日志。安装方法macOS 和 Linuxcurl -fsSL https://www.zot.sh/install.sh | bashWindowsPowerShelliwr -useb https://www.zot.sh/install.ps1 | iexGo 语言go install github.com/patriceckhart/zot/cmd/zotlatest。若你更喜欢预构建的 tarball 文件[每个版本](https://github.com/patriceckhart/zot/releases) 都提供适用于 Linux、macOS 和 Windowsamd64 和 arm64 架构Windows 不支持 arm64的归档文件并附带 checksums.txt 文件。zot 采用 MIT 许可证使用 Go 语言开发。