# Buttons：专为 AI Agent 设计的 CLI 工作流引擎

> Buttons 是一个轻量级 CLI 工作流引擎，允许 AI Agent 创建、管理和执行可复用的自动化任务。它将代码、API 调用和 Agent 指令封装为"按钮"（Button），提供类型化参数和结构化输出，被称为"Agent 界的 n8n"。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-17T04:45:26.000Z
- 最近活动: 2026-04-17T04:50:12.430Z
- 热度: 0.0
- 关键词: Agent, CLI, workflow, automation, n8n, AI Agent, shell, API, tooling, Rust, Go
- 页面链接: https://www.zingnex.cn/forum/thread/buttons-ai-agent-cli
- Canonical: https://www.zingnex.cn/forum/thread/buttons-ai-agent-cli
- Markdown 来源: ingested_event

---

## 背景：Agent 需要什么样的自动化工具？\n\n随着 AI Agent 的快速发展，如何让 Agent 执行复杂的多步骤任务成为了一个关键问题。现有的工作流工具如 n8n、Airflow 等虽然功能强大，但往往过于重量级，且并非为 Agent 原生设计。\n\nButtons 项目提出了一个简洁的理念：每个"按钮"是一个自包含、可复用的动作。创建一次，永久执行。它将代码、API 调用和 Agent 指令封装成统一的接口，让 Agent 能够像按按钮一样触发复杂的工作流。\n\n## 项目概览：Agent 界的 n8n\n\nButtons 由 Autono 团队开发，定位为"n8n for agents"。它是一个 CLI 工作流引擎，核心特性包括：\n\n- **单一静态二进制文件** - 约 5MB，无运行时依赖\n- **多平台支持** - macOS、Linux（amd64/arm64），Windows 支持正在开发\n- **多种安装方式** - npm、curl、Docker、Go、Homebrew\n- **三种按钮类型** - 代码按钮、API 按钮、Agent 指令按钮\n- **类型化参数** - 支持 string、int、bool 三种类型\n- **结构化输出** - JSON 格式，便于 Agent 解析\n\n## 安装方式\n\n### npm 安装（推荐）\n\n```bash\nnpm install -g @autono/buttons\n# 或\npnpm add -g @autono/buttons\nbun add -g @autono/buttons\n```\n\n### curl 快速安装\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/autonoco/buttons/main/install.sh | sh\n\n# 指定版本\ncurl -fsSL https://raw.githubusercontent.com/autonoco/buttons/main/install.sh | BUTTONS_VERSION=v0.1.0 sh\n\n# 安装到用户目录（无需 sudo）\ncurl -fsSL https://raw.githubusercontent.com/autonoco/buttons/main/install.sh | BUTTONS_INSTALL_DIR=$HOME/.local/bin sh\n```\n\n### Docker 使用\n\n```bash\ndocker pull ghcr.io/autonoco/buttons:latest\ndocker run --rm ghcr.io/autonoco/buttons:latest version\n```\n\n### Homebrew（即将支持）\n\n```bash\nbrew install autono/tap/buttons\n```\n\n## 核心概念：三种按钮类型\n\nButtons 支持三种类型的按钮，每种都可通过 `--prompt` 参数附加 Agent 指令：\n\n### 1. 代码按钮（Code Button）\n\n代码按钮执行脚本文件，支持 Shell、Python、Node.js 三种运行时。\n\n**创建示例：**\n\n```bash\n# Shell 按钮（默认）\nbuttons create deploy --arg env:string:required\n\n# Python 按钮\nbuttons create transform --runtime python --arg input:string:required\n\n# Node.js 按钮\nbuttons create parse --runtime node\n\n# 内联代码（无需编辑文件）\nbuttons create greet --code 'echo "Hello, $BUTTONS_ARG_NAME!"' --arg name:string:required\n\n# 导入现有脚本\nbuttons create etl --file ./scripts/etl.sh --arg source:string:required\n```\n\n代码按钮的参数通过环境变量传递，格式为 `BUTTONS_ARG_<NAME>`。\n\n### 2. API 按钮（API Button）\n\nAPI 按钮调用 HTTP 端点，支持 URL 模板和请求体模板。\n\n**创建示例：**\n\n```bash\n# GET 请求\nbuttons create weather \
  --url 'https://wttr.in/{{city}}?format=j1' \
  --arg city:string:required\n\n# POST 请求\nbuttons create notify \
  --url https://hooks.slack.com/services/xxx \
  --method POST \
  --header \"Content-Type: application/json\" \
  --body '{\"text\": \"{{message}}\"}' \
  --arg message:string:required\n\n# GraphQL 查询\nbuttons create repos \
  --url https://api.github.com/graphql \
  --method POST \
  --header \"Authorization: Bearer {{token}}\" \
  --header \"Content-Type: application/json\" \
  --body '{\"query\": \"{ repository(owner: \\\"{{owner}}\\\", name: \\\"{{repo}}\\\") { stargazerCount } }\"}' \
  --arg token:string:required --arg owner:string:required --arg repo:string:required\n```\n\nURL 模板支持 `{{arg}}` 占位符，会根据上下文自动进行 URL 编码。\n\n### 3. Agent 指令按钮（Agent Button）\n\n纯指令按钮，仅包含给 Agent 的提示词，用于指导 Agent 执行特定任务。\n\n```bash\nbuttons create deploy-checklist \
  --agent \"Before deploying, verify: 1) All tests pass 2) Staging is green 3) Team notified\"\n```\n\n## 组合模式：代码/API + Agent 提示\n\n最强大的是组合模式，将执行动作与 Agent 解读结合：\n\n```bash\n# 代码 + 提示\nbuttons create check-logs \
  --code 'northflank logs --service api --env production --tail 100' \
  --prompt \"Summarize any errors or warnings from these logs\"\n\n# API + 提示\nbuttons create analyze-weather \
  --url 'https://wttr.in/{{city}}?format=j1' \
  --arg city:string:required \
  --prompt \"Extract temperature and conditions as a one-line summary\"\n```\n\n执行后返回的结果包含原始输出和提示词：\n\n```json\n{\n  \"ok\": true,\n  \"data\": {\n    \"status\": \"ok\",\n    \"stdout\": \"ERROR 2026-03-31 connection timeout to db-primary...\",\n    \"prompt\": \"Summarize any errors or warnings from these logs\",\n    \"button\": \"check-logs\"\n  }\n}\n```\n\n## 按钮管理命令\n\n### 查看按钮\n\n```bash\n# 列表视图\nbuttons\nbuttons list --json\n\n# 详情视图\nbuttons weather\n```\n\n### 执行按钮\n\n```bash\n# 基本执行\nbuttons press weather --arg city=Miami\n\n# JSON 输出\nbuttons press weather --arg city=Miami --json\n\n# 模拟执行（不实际运行）\nbuttons press weather --arg city=Miami --dry-run\n\n# 设置超时\nbuttons press slow-task --timeout 120\n```\n\n### 历史记录\n\n```bash\n# 所有按钮历史\nbuttons history\n\n# 特定按钮历史\nbuttons history weather\n\n# 最近 5 条\nbuttons history --last 5\n```\n\n### 删除按钮\n\n```bash\nbuttons delete deploy\nbuttons delete deploy -F  # 跳过确认\nbuttons rm deploy         # rm 是 delete 的别名\n```\n\n## 按钮存储结构\n\n每个按钮是一个自包含的文件夹，默认存储在 `~/.buttons/buttons/<name>/`：\n\n```\n~/.buttons/buttons/weather/\n├── button.json      # 规格定义（参数、运行时、超时）\n├── main.sh          # 代码文件（根据运行时可能是 .sh/.py/.js）\n├── AGENT.md         # Agent 指令/上下文\n└── pressed/         # 执行历史\n    ├── 2026-03-31T09-53-45.json\n    └── ...\n```\n\n可通过 `BUTTONS_HOME` 环境变量覆盖存储位置。\n\n## 安全设计\n\nButtons 在安全性方面做了细致考虑：\n\n1. **执行隔离** - 每个执行使用 `context.WithTimeout`，默认 60 秒超时\n2. **进程管理** - 发送 SIGTERM，5 秒宽限期后发送 SIGKILL\n3. **参数安全** - 参数作为环境变量传递，不进行 shell 插值\n4. **文件权限** - 规格文件 0600，代码文件 0700\n5. **URL 编码** - `{{arg}}` 值根据上下文自动编码（路径、查询、JSON）\n6. **响应限制** - HTTP 响应体默认限制 10MB，可配置\n7. **网络隔离** - 默认阻止私有网络地址（localhost、10/8 等），需显式启用 `--allow-private-networks`\n\n## 与 n8n 的对比\n\n| 特性 | Buttons | n8n |\n|------|---------|-----|\n| 架构 | 单机 CLI | 服务端应用 |\n| 资源占用 | ~5MB 二进制 | 需要数据库、Redis |\n| 部署复杂度 | 极低 | 中等 |\n| Agent 原生 | 是 | 需适配 |\n| 可视化编辑 | 否 | 是 |\n| 适用场景 | Agent 自动化 | 企业工作流 |\n\nButtons 更适合 Agent 场景：轻量、快速、易于集成到 Agent 的工具链中。\n\n## 实际应用场景\n\n### 1. Agent 工具链集成\nAgent 可以将 Buttons 作为工具使用，通过结构化输出理解执行结果。\n\n### 2. 开发环境自动化\n创建常用的开发任务按钮：部署、日志查看、测试运行等。\n\n### 3. CI/CD 流水线\n在 CI 环境中使用 Buttons 执行特定的构建、测试、发布步骤。\n\n### 4. 运维脚本管理\n将分散的运维脚本统一封装为按钮，便于管理和审计。\n\n### 5. API 编排\n将多个 API 调用组合成可复用的按钮，简化复杂集成场景。\n\n## 项目状态与展望\n\nButtons 目前处于早期开发阶段（v0.1.0），但核心功能已经可用。根据项目路线图，未来可能包括：\n\n- Windows 原生支持\n- 更多运行时（如 Deno、Bun）\n- 按钮共享机制（类似 npm registry）\n- 更丰富的模板库\n- Web UI 管理界面\n\n## 总结\n\nButtons 是一个面向未来的工具，它敏锐地捕捉到了 AI Agent 时代的自动化需求。通过将工作流封装为"按钮"，它降低了 Agent 执行复杂任务的门槛，同时保持了足够的灵活性和安全性。\n\n对于正在构建 Agent 系统的开发者来说，Buttons 提供了一个轻量但强大的工作流编排选项。它的设计哲学——简单、可复用、Agent 原生——使其在众多自动化工具中脱颖而出。\n\n随着 AI Agent 生态的成熟，类似 Buttons 这样专为 Agent 设计的工具将会越来越多，它们将共同塑造下一代自动化基础设施。
