patriceckhart/zot

Yet another coding agent harness, lightweight and written in go.

zot – 基于 Go 的编程助手框架

功能

  • 提供一个单一的静态二进制文件,让您可以与大型语言模型(LLM)进行与代码相关任务的对话。
  • 开箱即用地支持 30+ 个 LLM 提供商(Anthropic、OpenAI/Codex、Google Gemini、Ollama 等),并且可以通过 Ollama 调用本地模型。
  • 提供内置的“工具”(读/写文件、编辑、运行 bash 命令、glob 模式),模型可以调用这些工具,将 LLM 转变为自主编码代理。
  • 以三种模式运行:
    1. 交互式 TUI – 终端 UI,您在其中输入提示并观察模型的操作。
    2. 打印模式 – zot "提示" 打印最终生成的文本并退出。
    3. JSON 模式 – 流式输出换行分隔的 JSON 事件,供程序化消费。
  • 包括 Telegram 机器人桥接、插件系统(子进程 + JSON-RPC)、主题、自定义按键绑定,以及通过 Markdown 文件实现的持久化“代理”/技能。

如何获取

  • macOS/Linux 的一行安装程序(curl … | bash)或 Windows PowerShell。
  • go install github.com/patriceckhart/zot/cmd/zot@latest。
  • 预构建的二进制文件也可在 GitHub 发布页面获得。

关键概念

概念 说明
提供商 zot 与之通信的远程 LLM 服务(Anthropic、OpenAI、Gemini 等)。
工具 模型可以请求的内置操作:读/写文件、编辑、运行 shell 命令、glob 模式。
AGENTS.md 为每个提示添加 常设指示 的全局或项目级 Markdown 文件(例如,“除非被要求,否则不要编辑文件”)。
SKILL.md 可以通过 /skill:<名称> 调用的可重用指示片段。
扩展 用任何语言编写的外部程序;zot 通过 JSON-RPC 与之通信。
连续模式 持久化本地存储($ZOT_HOME/sessions/…),可跨崩溃保留并服务于多个客户端(zot continuous serve)。
主题和键位映射 $ZOT_HOME 下的 JSON 文件允许您在 TUI 中自定义颜色和键盘快捷键。

典型工作流程

  1. 安装二进制文件并运行 zot。首次启动会打开一个带有 /login 命令的 TUI。
  2. 通过 API 密钥或 OAuth 登录(该工具可以启动浏览器,或为 Anthropic、OpenAI、Kimi、xAI、GitHub Copilot 等提供商使用设备代码流程)。
  3. 输入提示,例如 fix the failing test。zot 将提示发送给所选模型,接收响应,并可能自动调用工具(编辑文件、运行测试套件)。
  4. TUI 显示模型的推理、工具输出和最终答案。您可以批准、拒绝或编辑操作。
  5. 可选地添加 AGENTS.md 或 SKILL.md 来塑造未来的行为,或为特定领域任务编写自定义扩展。

配置和状态

  • 所有文件都位于 $ZOT_HOME 下(默认为 $XDG_STATE_HOME/zot 或平台等效路径)。
  • config.json 存储上次使用的提供商/模型、UI 偏好、HTTP 代理和自定义按键绑定。
  • auth.json 保存 API 密钥或 OAuth 令牌(模式 0600)。令牌会自动刷新。
  • models.json 可以定义自定义端点或自托管模型。
  • 会话记录以 JSONL 格式保存在 sessions/ 下,可以使用 zot --continue 恢复。

为什么重要

  • 单一二进制:无需 Python 运行时、Docker 或繁重依赖项——只需一个 Go 可执行文件。
  • 广泛的提供商覆盖:支持主要商业 API 和本地 Ollama 模型,无需更改代码即可轻松切换提供商。
  • 工具使用:模型可以读/写文件和运行 shell 命令,从而为代码生成、重构或调试实现真正的“代理”行为。
  • 可扩展:插件架构允许您在不重新编译的情况下添加特定领域功能(例如数据库查询工具)。

限制 / 注意事项

  • 使用与官方 CLI 相同的 OAuth 客户端 ID;提供商可能会撤销它们,因此 API 密钥流程是最安全的回退方案。
  • 扩展是选择加入的;默认不附带任何扩展。
  • 持久化状态位于本地机器上;跨机器共享会话需要运行 zot continuous serve。

结论 zot 是一个轻量级、Go 原生的框架,将 LLM 转变为交互式编程助手,具有内置工具使用、多提供商支持和可自定义的终端 UI。

相关

  • Dispatch
  • 项目
  • 项目
  • 项目
  • 项目