Hazzel

一个能在终端里读懂的编码助手:自带密钥、每次写入先看 diff 再落盘。

Star 数
★ 29
最近更新
今天
License
Apache-2.0
主语言
Python

30 秒速览

运行形态
命令行工具
可在哪里用
通用 · 跨平台OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
低 · 几分钟可跑通
开始前需要
PythonGroq API 密钥或其他提供商密钥(使用 Ollama 时可选)Ollama(可选,用于本地无密钥模型)Shell / 命令行网络访问本地文件系统MCP Server
典型场景
习惯在终端工作、不想离开编辑器的开发者,希望让代理改代码但先看 diff 再决定。
不适合
  • 需要完全无人值守自动提交 PR 的团队
  • 需要云端控制台或多机会话同步的用户
  • 依赖图形化 IDE 集成的开发者

这个 Agent 能做什么,适合哪些场景?

Hazzel 是一个用 Python 编写的终端编码代理,约 1 万行代码,核心循环集中在 agent/core.py,所有可执行动作都在 tools/ 下,撤销系统在 safety.py 中。它通过 repl 接收提示、@file 引用和斜杠命令,先由 agent/fastpath.py 处理无需调用模型的本读取操作,再交由 agent/dispatch.py 分发到 16 个工具。任何写文件或执行命令的动作都要经过 safety.py 的审批、沙箱和检查点三道关口:修改以 diff 形式展示、由你确认后才写入,写入前的原始字节快照保存在 ~/.config/hazzel/undo/。它支持 Groq、OpenAI、Anthropic、Mistral、Gemini、DeepSeek、OpenRouter 以及本地 Ollama 共 8 个后端,费用由你自己的密钥直接结算。此外还提供最小化的 MCP stdio 客户端、SKILL.md 技能加载,以及 hazzel -p 与 --output-format json 的非交互管道模式。项目当前版本为 v1.6.2,采用 Apache-2.0 许可,定位于早期阶段。

启动后在终端进入 REPL:输入提示、用 @path 把文件钉入上下文、用 / 触发命令补全。核心循环读取仓库文件(read_file、搜索、列表、glob 如 **/*.py)、预览并应用编辑(edit_file)、以超时限制执行 shell(run_command),以及用 !cmd & 启动后台任务并通过 /jobs 管理。只读操作由 fastpath 本地直接回答而不走模型。每次写入前先给出 diff 并要求 y/N 确认,同一轮内一次决定即生效;ls、cat、git status 等只读命令走允许列表直接执行。每次写入前把旧内容快照进 ~/.config/hazzel/undo/(200 条事件,每文件 20 条),/undo 只回滚代理产生的片段并保留你之后的编辑,/redo 重新应用。git 相关命令 /status、/diff、/review、/commit(自动起草 Conventional 提交信息)、/log 均在本地即时执行。会话内可用 /usage、/budget 查看按提供商报告的 token 折算成美元的费用;/session save|list|restore 持久化每个项目的会话。非交互模式下 hazzel -p "prompt" --output-format json 输出 {success, response, model, usage} 或带 exit_code 的错误对象。

  1. 习惯在终端工作、不想离开编辑器的开发者,希望让代理改代码但先看 diff 再决定。
  2. 需要在无订阅成本下使用自有 Groq 或 OpenAI 密钥的个人开发者。
  3. 在无外网环境里跑 Ollama 本地模型的团队,用 keyless 方式完成读代码与改代码。
  4. 把 Hazzel 接入 CI:用 hazzel -p "prompt" --output-format json 解析结构化结果与退出码。
  5. 想在提交前用 /review --staged 与 /commit 自动起草规范提交信息的工程师。
  6. 需要在代理改错后只回滚它的改动、保留自己后续编辑的用户(/undo 与 /redo)。

如何安装或部署这个 Agent?

无需安装即可试用(不会触碰 venv):

uvx hazzel

或:

pipx run hazzel

长期使用可安装:

pip install hazzel

或:

uv tool install hazzel
pipx install hazzel

安装后至少配置一个提供商的密钥,例如:

export GROQ_API_KEY="..."

也可以跳过密钥,启动后在会话内用 /model 选择提供商;使用本地 Ollama 时无需密钥,可用 OLLAMA_HOST 覆盖地址。

如何使用这个 Agent?

进入你的项目目录并启动:

cd your-project
hazzel

在 REPL 中可直接用自然语言描述任务,例如修复失败的测试:

❯ Fix the failing test in tests/test_agent.py

常用命令:

❯ /review --staged
❯ /commit
❯ @screenshot.png make the nav match this
❯ /model
❯ /plan on
❯ /undo

单轮非交互执行:

hazzel -p "prompt" --output-format json

查看内置模型目录(无需密钥或网络):

hazzel --list-models

可选环境变量:

export HAZZEL_CODE_THEME=monokai
export HAZZEL_NO_UPDATE_CHECK=1

这个 Agent 有哪些优点和局限?

优点
  • 写入前强制 diff 审批,且同一轮内一次决定不再重复询问,行为可预测。
  • 内置基于快照的 /undo 与 /redo,不依赖 git,且只回滚代理的改动、保留用户后续编辑。
  • 8 个提供商后端 + Ollama 本地无密钥模式,切换只需 /model,无供应商锁定。
  • 约 1 万行 Python,核心循环、工具、安全各自集中在 agent/core.py、tools/、safety.py,可端到端审计。
  • 自带最小化 MCP stdio 客户端(仅标准库)与 SKILL.md 技能加载,扩展无需专有工具链。
  • 非交互模式提供 JSON 输出与明确退出码(1 失败、2 缺密钥、130 取消),便于接入 CI。
局限
  • 项目自述为 v1.6.2 早期阶段,不支持自主 PR、云端仪表盘或多机会话同步。
  • 需要自备提供商 API 密钥并自行承担调用费用,或本地部署 Ollama 承担算力。
  • 以终端 REPL 为唯一交互界面,没有 IDE 扩展或图形界面。
  • 对比表中的竞品结论来自项目自述,未经独立验证。
  • 撤销快照写入 ~/.config/hazzel/undo/ 并有人数上限(200 条事件、每文件 20 条),历史较深时无法回滚。

这个 Agent 与同类方案有什么区别?

README 明确以 Aider 与“云代理(Cloud agents)”作为对比对象,并给出价格模型、本地模型、代码可读性、/undo 机制、MCP 客户端五项差异;同时注明 Aider 本身优秀,比较只关乎适配而非优劣。云代理未被具体点名,因此无法确定具体产品。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Hazzel 当前 63 · 存在缺口 命令行工具免费 + 模型费 ★ 29 今天 Python OpenAI API · Claude API
Qwen Code 54 · 缺口较多 命令行工具免费 + 模型费 ★ 29k 今天 TypeScript OpenAI API · Claude API
FuXi 终端 AI 编程代理 37 · 缺口较多 命令行工具免费版 + 付费版 ★ 3.2k 6 天前 Python OpenAI API · Claude API
Octomind 70 · 存在缺口 命令行工具免费版 + 付费版 ★ 179 今天 Rust OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
63/ 100 五分制 3.2 / 5
信任安全 19/29
可靠稳定 8/14
适用触发 12/18
规范维护 12/18
有效结果 9/13
证据核验 3/8
查看各维度的扣分理由
信任安全19 / 29 · 3.3/5

README 与测试显示写操作先出 diff 再确认、/allow 持久规则、plan 模式阻断写、/undo 快照回滚,用户确认与回滚证据较强(3)。但最小权限仅部分:run_command 沙箱与只读白名单只在 README 描述,源码未提供,且 /allow all=always 可一次性关闭全部确认,故 least_privilege 记 2。数据流透明仅 README 声明,无源码佐证记 2。敏感数据处理仅 SECURITY.md 声称 0600 权限,无代码验证记 2。依赖安全仅 pyproject 列出五个未固定上限的第三方 SDK,无锁文件或审计,记 1。外部效应有沙箱与 git 阻断声明但缺源码,记 2。来源归属仅 LICENSE 附录与作者名,无 NOTICE/第三方归属,记 1。

可靠稳定8 / 14 · 2.9/5

测试覆盖审批、plan、fastpath 等纯逻辑,CI 在四版本跑 pytest,自洽性尚可(2)。但依赖可用性仅宽松下限约束、无锁文件,且 README 声称 453 测试通过属徽章断言,记 1。失败信息有结构化 JSON 错误与退出码说明,测试也验证错误格式,记 2。

适用触发12 / 18 · 3.3/5

README 明确面向终端开发者、BYOK、本地 Ollama、管道模式与 CI 用法,场景清晰(2)。能力边界有专门章节说明不做什么,记 2。触发精度有 fastpath 测试验证只读命令与危险命令的区分,记 2。环境适配覆盖 Python 3.10-3.13 与多 provider,但仅 Linux CI,记 2。

规范维护12 / 18 · 3.3/5

README 结构清晰、安装命令多路径、示例丰富、有已知局限章节,信息架构与示例记 2。命名稳定性有版本化命令与 changelog 链接,记 2。许可证为完整 Apache-2.0 文本,记 3。版本与 changelog 有 release 工作流校验 tag 与源码版本一致,但 CHANGELOG 内容未提供,记 2。维护责任仅个人邮箱与未验证发布者,记 1。

有效结果9 / 13 · 3.5/5

输出可用性有 diff 预览、JSON 输出、退出码,记 2。边际价值在于可读性与选择性 undo,但同类工具众多,记 2。成本收益 BYOK 与本地模型、token 计费展示,记 2。

证据核验3 / 8 · 1.9/5

README 大量性能与对比声明(~10k 行、453 测试、比 Aider 优)缺乏可核验证据,claim_traceability 记 1。跨源佐证仅测试与 README 部分对应,记 1。事实与推断分离不足,营销语气与事实混杂,记 1。

风险与缓解建议
  • 发布者身份未经 FollowAgents 验证,维护责任仅靠个人邮箱,长期支持不确定。
  • README 声称的沙箱、只读白名单与 453 测试通过等关键安全与质量声明缺少对应源码或可核验证据,属静态断言。
  • 依赖仅设宽松下限且无锁文件,供应链风险未缓解。
  • /allow all=always 可一次性关闭所有确认,需谨慎使用。
  • 仅最新版本获得安全修复,早期阶段稳定性有限。
证据充分度:低 评估于 2026年10月26日 审查版本 65f9d50008ca
查看完整评分方法 →

常见问题

使用 Hazzel 需要付费订阅吗?
不需要。软件本身免费且开源(Apache-2.0),采用 BYOK 模式:你设置自己的提供商密钥(如 GROQ_API_KEY)并直接向提供商付费;若使用本地 Ollama,则无需密钥也没有 API 调用费用。
代理改文件时会直接覆盖我的代码吗?
不会。每次写入前都会以 diff 形式展示并要求你确认,写入前还会把原始字节快照到 ~/.config/hazzel/undo/。/undo 只回滚代理产生的片段并保留你之后的编辑,/redo 可重新应用。
它能在脚本或 CI 里使用吗?
可以。hazzel -p "prompt" --output-format json 执行单轮并退出,成功时输出 {success, response, model, usage},失败时输出带 error 与 exit_code 的 JSON 对象,退出码为 1(失败)、2(缺密钥)或 130(取消)。
支持哪些模型和本地部署?
支持 Groq、OpenAI、Anthropic、Mistral、Gemini、DeepSeek、OpenRouter 共 7 个云端后端,以及完全本地、无需密钥的 Ollama(可用 OLLAMA_HOST 覆盖地址)。会话内用 /model 切换,hazzel --list-models 可列出内置模型目录。
它能接入外部工具或扩展吗?
可以。它内置仅依赖标准库的 MCP stdio 客户端,通过 .hazzel/mcp.json 配置任意 MCP 服务器,用 /mcp 查看或调用;也支持按需加载 SKILL.md 技能。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents