Hazzel
一个能在终端里读懂的编码助手:自带密钥、每次写入先看 diff 再落盘。
- Star 数
- ★ 29
- 最近更新
- 今天
- License
- Apache-2.0
- 主语言
- Python
- FA 评分
- 63/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 习惯在终端工作、不想离开编辑器的开发者,希望让代理改代码但先看 diff 再决定。
- 不适合
- 需要完全无人值守自动提交 PR 的团队
- 需要云端控制台或多机会话同步的用户
- 依赖图形化 IDE 集成的开发者
- 源码审查
- 63/100 · 存在缺口
这个 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 的错误对象。
- 习惯在终端工作、不想离开编辑器的开发者,希望让代理改代码但先看 diff 再决定。
- 需要在无订阅成本下使用自有 Groq 或 OpenAI 密钥的个人开发者。
- 在无外网环境里跑 Ollama 本地模型的团队,用 keyless 方式完成读代码与改代码。
- 把 Hazzel 接入 CI:用 hazzel -p "prompt" --output-format json 解析结构化结果与退出码。
- 想在提交前用 /review --staged 与 /commit 自动起草规范提交信息的工程师。
- 需要在代理改错后只回滚它的改动、保留自己后续编辑的用户(/undo 与 /redo)。
如何安装或部署这个 Agent?
无需安装即可试用(不会触碰 venv):
uvx hazzel或:
pipx run hazzel长期使用可安装:
pip install hazzel或:
uv tool install hazzelpipx 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?
查看各维度的扣分理由
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。
测试覆盖审批、plan、fastpath 等纯逻辑,CI 在四版本跑 pytest,自洽性尚可(2)。但依赖可用性仅宽松下限约束、无锁文件,且 README 声称 453 测试通过属徽章断言,记 1。失败信息有结构化 JSON 错误与退出码说明,测试也验证错误格式,记 2。
README 明确面向终端开发者、BYOK、本地 Ollama、管道模式与 CI 用法,场景清晰(2)。能力边界有专门章节说明不做什么,记 2。触发精度有 fastpath 测试验证只读命令与危险命令的区分,记 2。环境适配覆盖 Python 3.10-3.13 与多 provider,但仅 Linux CI,记 2。
README 结构清晰、安装命令多路径、示例丰富、有已知局限章节,信息架构与示例记 2。命名稳定性有版本化命令与 changelog 链接,记 2。许可证为完整 Apache-2.0 文本,记 3。版本与 changelog 有 release 工作流校验 tag 与源码版本一致,但 CHANGELOG 内容未提供,记 2。维护责任仅个人邮箱与未验证发布者,记 1。
输出可用性有 diff 预览、JSON 输出、退出码,记 2。边际价值在于可读性与选择性 undo,但同类工具众多,记 2。成本收益 BYOK 与本地模型、token 计费展示,记 2。
README 大量性能与对比声明(~10k 行、453 测试、比 Aider 优)缺乏可核验证据,claim_traceability 记 1。跨源佐证仅测试与 README 部分对应,记 1。事实与推断分离不足,营销语气与事实混杂,记 1。
- 发布者身份未经 FollowAgents 验证,维护责任仅靠个人邮箱,长期支持不确定。
- README 声称的沙箱、只读白名单与 453 测试通过等关键安全与质量声明缺少对应源码或可核验证据,属静态断言。
- 依赖仅设宽松下限且无锁文件,供应链风险未缓解。
- /allow all=always 可一次性关闭所有确认,需谨慎使用。
- 仅最新版本获得安全修复,早期阶段稳定性有限。