Anthropic 发布 ant CLI 直接在终端调用 Claude API

2次阅读
没有评论

共计 5185 个字符,预计需要花费 13 分钟才能阅读完成。

我们知道 [[Anthropic]] 围绕着 [[Claude]] 模型发布了一系列客户端,包括在终端下使用的 [[Claude Code]],以及桌面版的 [[Claude Desktop]]。2026 年 4 月,Anthropic 又发布了一款 Claude 官方的 CLI 工具,叫做 ant。根据官方的介绍,这是专为 [[Claude API]] 设计的命令行客户端,可以在终端下像操作 Kubernetes 资源一样管理 Claude API 资源。

ant 和 Claude Code 最大的区别在于,ant 专注于管理 Claude API,而 Claude Code 像它的名字一样是一款专注于代码编写,修改代码的 Coding Agent。ant 更像 kubectl,它是在终端里管理 Claude API 资源(如 Agent、Session、Deployment、Environment、Skill),更适合自动化和 CI/CD。而 Claude Code 更像是一个在终端里工作的 AI 开发搭档,重点是读写文件、运行命令、修改项目代码,并在开发流程里持续协作。

虽然两者都可以直接调用 Claude API,但是如果你想把 Claude 的能力编排进系统,可以选择 ant。而如果你要做的是让 Claude 帮你完成代码编写测试,可以选择 Claude Code。ant 是 API 的运维工具,Claude Code 则是开发助手。

ant CLI 使用 Go 语言编写,以 MIT 协议开源,仓库地址在 github.com/anthropics/anthropic-cli

安装

ant 提供了多种安装方式,可以按照不同的操作系统进行选择。

macOS 用户可以直接通过 Homebrew 安装:

brew install anthropics/tap/ant

Linux 或 WSL 环境下可以直接下载 release 包:

VERSION=1.10.0
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/')
curl -fsSL "https://github.com/anthropics/anthropic-cli/releases/download/v${VERSION}/ant_${VERSION}_${OS}_${ARCH}.tar.gz" \
  | sudo tar -xz -C /usr/local/bin ant

如果本地已经有 Go 1.22 或更高版本的环境,也可以直接使用 go install 安装:

go install github.com/anthropics/anthropic-cli/cmd/ant@latest

二进制文件会放置在 $(go env GOPATH)/bin 下,记得把这个路径加入 PATH

安装完成之后可以执行 ant --version 验证。

认证

ant 支持两种认证方式,可以根据使用场景任意选择。

第一种是浏览器 OAuth 登录,适合本地开发:

ant auth login

这条命令会打开浏览器,让你登录 [[Claude Console]] 并选择组织和 Workspace,签发的 Token 会写入 $ANTHROPIC_CONFIG_DIR 目录下(默认在 ~/.config/anthropic/)。如果是远程主机没有浏览器,可以使用 ant auth login --no-browser,CLI 会打印授权 URL,并提示你将返回的 Code 粘贴回终端。

通过 --profile <name> 可以创建命名的 Profile,方便在多个 Workspace 之间切换:

ant auth login --profile work
ant profile activate work
ant --profile work models list

第二种是使用 API Key,适合 CI 或服务器场景:

export ANTHROPIC_API_KEY=sk-ant-api03-...

如果只是单次调用想覆盖默认 Key,可以使用 --api-key 参数。需要注意的是当环境变量中存在 ANTHROPIC_API_KEY 时,它会优先于任何 Profile 配置。

执行 ant auth status 可以查看当前使用的认证源、激活的 Profile 以及 Workspace,便于排查问题。

ant 适用场景

ant 把 Claude API 的每一种资源都映射成了子命令,所以非常适合下面这些场景。

第一个场景是 Managed Agents 的运维。Anthropic 2026 年推出了 [[Managed Agents]] 功能,提供云端沙箱、持久化会话以及内置的 bash、文件操作、Web 搜索等工具。ant 是管理这些资源的最自然方式,可以从终端直接创建 Agent、启动 Session、查询 Event 流。

第二个场景是把 API 资源版本化。Agent、Skill、Environment、Deployment 这些资源都可以写成 YAML 文件,提交到 Git 仓库,通过 CI 同步到 Claude API,实现 GitOps 风格的资源管理。

第三个场景是写脚本和自动化。相比 curl 加 jq 的组合,ant 的输入接受类 YAML 的语法,输出支持 JSON、JSONL、YAML、Pretty 多种格式,配合 --transform 可以用 GJSON 语法直接提取字段,组合到 Shell pipeline 中非常顺手。

第四个场景是与 Claude Code 配合。Claude Code 通过内置的 claude-api skill 已经理解了 ant 的使用方式,所以你可以用自然语言告诉 Claude Code「列出我最近的 Agent Session 并总结哪些出错了」,它会自动调用 ant,解析结构化输出再做推理。

如何使用

ant 的命令遵循 resource action 的模式,嵌套资源用冒号分隔:

ant <resource>[:<subresource>] <action> [flags]
资源 常用动作 说明
messages create 发送消息 platform.claude
models list, retrieve 查看可用模型
beta:agents create, list, update, retrieve 管理 Agent(Beta)
beta:sessions create, stream 会话管理(Beta)
beta:sessions:events send, list, stream 发送/读取会话事件
batches create, retrieve 批量请求

下面通过几个例子说明常用的工作流。

发送一次 Messages 请求

最简单的调用就是给 Claude 发一条消息:

ant messages create \
  --model claude-opus-4-8 \
  --max-tokens 1024 \
  --message '{role: user, content: "Hello, Claude"}'

可以看到结构化字段使用了类 YAML 的语法,不需要写一堆转义引号。返回的是完整 API 响应,stdout 是终端时会自动 pretty-print。

创建并运行一个 Agent

把 Agent 定义写到 YAML 文件 summarizer.agent.yaml

name: Summarizer
model: claude-sonnet-4-6
system: |
  You are a helpful assistant that writes concise summaries.
tools:
  - type: agent_toolset_20260401

然后通过管道传给 ant 创建:

ant beta:agents create < summarizer.agent.yaml

返回的 JSON 里会包含 idversion,把 id 记录下来后续会用到。这个 YAML 文件可以直接 check 进 Git 仓库,更新时执行:

ant beta:agents update --agent-id agent_011CY... --version 1 < summarizer.agent.yaml

version 是乐观锁字段,需要传入上一次拿到的版本号。

启动 Session 与 Agent 对话

Agent 需要运行在一个 Environment 里,同样可以用 YAML 描述:

name: summarizer-env
config:
  type: cloud
  networking:
    type: unrestricted

创建 Environment 并拿到 id 之后就可以启动 Session:

ant beta:sessions create \
  --agent agent_011CY... \
  --environment-id env_01595... \
  --title "Summarization task"

向 Session 发送一条用户消息:

ant beta:sessions:events send \
  --session-id session_01JZC... \
  --event '{type: user.message, content: [{type: text, text: "Summarize the benefits of type safety in one sentence."}]}'

读取整段对话,可以用 --transform 直接提取每条消息的文本:

ant beta:sessions:events list \
  --session-id session_01JZC... \
  --transform 'content.0.text' --format auto --raw-output

如果想看实时流,把 list 换成 stream 即可:

ant beta:sessions:events stream --session-id session_01JZC...

文件引用与输出转换

ant 支持用 @ 前缀把文件内容内联到字符串字段里,二进制文件会自动 base64 编码。比如把一份 PDF 喂给 Messages API:

ant messages create \
  --model claude-opus-4-8 \
  --max-tokens 1024 \
  --message '{role: user, content: [
    {type: document, source: {type: base64, media_type: application/pdf, data: "@./scan.pdf"}},
    {type: text, text: "Extract the text from this scanned document."}
  ]}' \
  --transform 'content.0.text' --raw-output

--transform 使用 GJSON 语法,列表接口会对每一项分别应用,所以可以很方便地从列表中提取字段:

ant beta:agents list \
  --transform "{id,name,model}" \
  --format jsonl

配合 --raw-output 还可以把单值字段抓出来赋给 Shell 变量:

AGENT_ID=$(ant beta:agents create \
  --name "My Agent" \
  --model '{id: claude-sonnet-4-6}' \
  --transform id --raw-output)

调试与补全

任何命令加上 --debug 都会把完整的 HTTP 请求和响应打印到 stderr,API Key 会被自动脱敏:

ant --debug beta:agents list

ant 还自带了 zsh、bash、fish、PowerShell 的补全脚本,例如 zsh 下:

ant @completion zsh > "${fpath[1]}/_ant"

与 Claude Code 协作

由于 Claude Code 通过 claude-api skill 内置理解了 ant 的用法,所以可以在 Claude Code 里直接用自然语言操作 Claude API 资源,例如:

  • 列出我最近的 Agent Session,并总结哪些出错了
  • ./reports 下所有 PDF 上传到 Files API,并打印返回的 ID
  • 拉取 session_01… 的 Event,告诉我 Agent 卡在哪一步

Claude Code 会在后台调用 ant,解析结构化输出,再基于结果继续推理,整个过程不需要写一行胶水代码。

总结

ant 是 Anthropic 在 Managed Agents 发布后补齐的最后一块基础设施,使得 Claude API 资源的管理体验非常接近 kubectl 之于 Kubernetes。对于希望把 Claude 能力编排进生产系统的团队来说,ant 提供了从交互探索、脚本自动化到 GitOps 全链路的工具支持。

如果说 [[Claude Code]] 让 Claude 成为开发者身边的 Coding Agent,那么 ant 就是让 Claude API 资源进入 DevOps 工具链的关键一步。

参考

正文完
 0
评论(没有评论)