jrswab/axe

A lightweight cli for running single-purpose AI agents. Define focused agents in TOML, trigger them from anywhere; pipes, git hooks, cron, or the terminal.

Axe – 用于 LLM 代理的 Unix 风格 CLI

它是什么 – Axe 是一个(以 Go 编写的)命令行程序,让您可以在声明式的 TOML 文件中定义 代理(小型、单一用途的 LLM 工作流程),并从终端或脚本中执行它们。将每个代理视为一个与 LLM 对话的小型 Unix 工具,它可以调用内置工具(读写文件、执行 Shell 命令、抓取 URL、网页搜索),甚至可以将工作委派给其他代理。

为什么它很重要 – 大多数现有的 LLM 封装程序都假设您想要一个具有巨大上下文窗口的长期运行聊天机器人。Axe 颠覆了这个模型:除非您明确启用持久化记忆,否则代理是 专注、可组合且无状态的。因为它的运行方式与任何其他 CLI 相同,您可以将数据传送给代理 (git diff | axe run pr‑reviewer)、使用 cron 调度、从 CI 触发它,或使用标准 Unix 管道将多个代理串联在一起。


核心概念

概念 功能
代理定义 一个 TOML 文件 ($XDG_CONFIG_HOME/axe/agents/*.toml),指定模型、系统提示词、技能(Markdown 指令文件)、选用工具、子代理、记忆设置、Token 预算、重试策略等。
技能 可重复使用的 SKILL.md 指令集,告诉 LLM 如何 执行任务。技能会相对于 Axe 配置目录或通过绝对路径进行查找。
持久化记忆 选用的 Markdown 日志,会在每次执行时自动加载到 LLM 上下文中。Axe 也可以执行 LLM 辅助的垃圾回收来修剪旧条目。
工具使用 内置沙盒工具 (read_filewrite_filerun_commandurl_fetchweb_search 等) 以及选用的外部 MCP 工具。LLM 可以请求工具调用,Axe 执行它,返回结果,然后对话继续。
子代理委派 代理可以调用其他代理 (call_agent),并具有深度和并行限制,从而实现层级式工作流程。

重点功能(如 README 中所述)

  • 多供应商支持 – Anthropic、OpenAI、Ollama (本地)、OpenCode、AWS Bedrock。
  • 基于 TOML、可版本控制的配置 – 易于存储在 Git 中。
  • 标准输入管道 – 将代理视为任何其他过滤器。
  • 干跑模式 – 在不调用 LLM 的情况下预览解析后的上下文。
  • JSON 封装 – 用于下游自动化的结构化输出。
  • Token 预算强制执行 – 当达到累计 Token 限制时停止执行(退出代码 4)。
  • 记忆垃圾回收 – LLM 辅助修剪旧日志。
  • 重试逻辑 – 针对暂时性供应商错误的可配置指数/线性/固定退避策略。
  • 安全性 – 沙盒文件工具、网页抓取的宿主允许列表、SSRF 保护以及强化的 Docker 镜像(非 root 用户、只读根文件系统、删除权限)。

安装

方法 命令
预编译二进制文件 (Linux/macOS/Windows) 从 GitHub Releases 页面下载。
Go install (需要 Go 1.25+) go install github.com/jrswab/axe@latest
从源码编译 ```bash
git clone https://github.com/jrswab/axe.git
cd axe
go build .
---
### 快速入门工作流程
```bash
# 初始化配置目录 (~/.config/axe)
axe config init

# 创建一个名为 "my‑agent" 的新代理
axe agents init my-agent

# 编辑生成的 TOML 以设置模型、技能等
axe agents edit my-agent

# 执行它 – 您可以传送数据或使用 -p 提供提示词
git diff --cached | axe run my-agent
# 或
axe run my-agent -p "Summarise the latest changelog"

README 还附带了一个 examples/ 文件夹,其中包含可直接复制的代理,例如代码审查员、提交信息生成器和文本摘要器。

Docker 支持

  • 最小化的 Dockerfile 可构建强化的镜像(UID 10001,只读根目录,删除所有权限)。
  • 通过挂载您的 Axe 配置目录并通过环境变量传递 API 密钥来执行代理。
  • 通过 docker buildx 支持多架构构建 (linux/amd64, linux/arm64)。
  • 提供 docker‑compose.yml 用于与本地 Ollama 实例一起执行 Axe;您也可以通过省略 Ollama 服务将镜像与仅云端供应商一起使用。

典型使用案例

  • 自动化代码审查 – 将 git diff 传送至 code‑reviewer 代理,该代理可以读取文件、执行 linter 并建议变更。
  • 提交信息生成 – 将提交日志提供给生成简洁信息的代理。
  • 日志分析 – 将错误日志流传输至 log‑analyzer 代理,该代理可以搜索网页以寻找已知问题。
  • CI/CD 门控 – 在 GitHub Actions 工作流程中将代理作为一个步骤执行,以强制执行样式或安全性检查。
  • 特定数据提取 – 使用 read_file/run_command 工具从仓库中提取数据,然后要求 LLM 进行转换。

下一步方向

  • examples/README.md – 捆绑代理的详细说明。
  • CLI 参考axe --help 或 README 中的表格,了解所有命令和标志。
  • 代理 TOML 架构 – README 的“代理配置”部分列出了每个选用字段(记忆、预算、重试、MCP 服务器等)。
  • MCP 集成 – 如果您有支持 Model Context Protocol 的外部工具服务器,请在 [[mcp_servers]] 下声明它们以扩展工具集。

总结

Axe 提供了一种轻量级、符合 Unix 哲学的方式,将 LLM 视为可编程的命令行工具。通过保持每个代理的小型化、版本控制和可组合性,它自然地融入现有的 Shell 管道、CI 系统和 Docker 工作流程中,同时仍提供子代理委派、持久化记忆和多供应商支持等进阶功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目