ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Elastic AI agent skills 实战:把 Claude Code 的 endpoint 改到 TaoToken

Elastic AI agent skills 实战:把 Claude Code 的 endpoint 改到 TaoToken

1. Elastic AI agent skills 是什么,为什么要把 Claude Code 的 endpoint 换掉

Elastic AI agent skills 是 Elastic 官方开源的一套 Agent Skills 包,仓库地址在elastic/agent-skills。它做的事情很具体:把 Elasticsearch、Kibana、Fleet、Observability、Elastic Security 这些产品的操作知识,拆成一个个独立的 skill 文件夹,每个文件夹里放一个SKILL.md,里面写清楚这个 skill 叫什么、什么时候该用、具体怎么调 API。Claude Code 启动时会读取这些 skill 的名称和描述,平时不加载全文,只有检测到你在做相关任务时才把完整说明读进来。这样 agent 默认保持轻快,需要深度知识时又能拿到流程化的操作步骤。

这套东西适合谁?已经装好 Claude Code、手上有 Elasticsearch 集群或者 Kibana 环境、想让 AI 帮你写 ES|QL 查询、建 dashboard、配 Fleet policy、排查安全告警的开发者。它不是一个独立工具,而是给现有 coding agent 加装的专业知识层。

那为什么要把 Claude Code 的 endpoint 改到 TaoToken?原因很直接:Claude Code 默认走 Anthropic 官方通道,国内直连经常超时,而且如果你同时用多个模型、多个 agent,每个都要单独配 Key 很麻烦。TaoToken 提供统一的 API 入口,一个 Key 就能调 Claude 系列模型,Claude Code 只需要把ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址,其余请求格式完全不变。这样 Elastic skills 的调用链路就变成:Claude Code → TaoToken → 模型 → 返回 skill 执行结果,鉴权和计费都收拢到一处。

我实测下来,改 endpoint 这一步不复杂,但有几个坑:环境变量名写错、Base URL 多带斜杠、Key 没配对,都会导致 401 或者连接失败。下面按顺序把配置、验证、排障都走一遍。

2. 前置准备:TaoToken Key、Claude Code 与 Elastic skills 安装

在动 endpoint 之前,先把三样东西准备好:TaoToken 的 API Key、能正常启动的 Claude Code、以及装好的 Elastic skills。

先说 TaoToken 这边。打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册后在控制台里创建 API Key。创建入口在 https://taotoken.net/console/api-keys ,进去之后点新建,复制出来的 Key 一般长这样:sk-开头的一串字符。这个 Key 只显示一次,先存到安全的地方。如果你还没决定用哪个模型,可以先去模型对话页面 https://taotoken.net/models 看看当前支持的模型列表,Claude Code 场景下选 Claude 系列就行。

然后是 Claude Code。确认你本地能跑claude命令,claude --version有输出即可。Claude Code 读取环境变量的方式很标准,主要认这几个:ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY(或者ANTHROPIC_AUTH_TOKEN)。我们要改的就是ANTHROPIC_BASE_URL,把它从默认的 Anthropic 地址换成 TaoToken 的 API 地址https://taotoken.net/api。注意这里不要加 UTM 参数,API 地址就是干净的https://taotoken.net/api。

最后是 Elastic skills。用 npx 装最省事,前提是环境里有 Node.js 和 npx。先列一下有哪些 skill 可用:

npx skills add elastic/agent-skills --list

这条命令会把仓库 clone 下来,然后打印出 33 个 skill 的名称和描述。确认没问题后,针对 Claude Code 安装:

npx skills add elastic/agent-skills -a claude-code

交互式提示里会让你选具体装哪些 skill,用空格切换,回车确认。安装完成后,skill 会被复制到~/.claude/skills/目录下,每个 skill 一个文件夹。如果你只想装某一个,比如 ES|QL 相关的:

npx skills add elastic/agent-skills --skill elasticsearch-esql -a claude-code

装完之后,Claude Code 在启动时就能发现这些 skill。你可以用ls ~/.claude/skills/确认目录里有没有elasticsearch-esql、kibana-dashboards这些文件夹。

注意:skills 安装时会复制到项目目录或 home 目录,仓库后续更新不会自动同步。用 npx 安装默认走 symlink,更新一次所有 agent 都能刷新;如果是本地 clone 安装的,需要重新跑 installer 加--force。

三样齐了之后,就可以进入 endpoint 配置环节。

3. 可复制配置:把 Claude Code 的 endpoint 指向 TaoToken

这一步是全文的核心。Claude Code 的配置分两种方式:环境变量和 settings 文件。环境变量适合临时测试,settings 文件适合长期使用。两种我都给出来,你按自己的习惯选。

先看环境变量方式。在~/.zshrc或~/.bashrc里加这几行:

export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的TaoToken密钥"

保存后source ~/.zshrc让它生效。这里的关键是ANTHROPIC_BASE_URL的值必须是https://taotoken.net/api,结尾不要带斜杠,也不要带任何查询参数。Claude Code 会在后面自动拼接/v1/messages这类路径。

如果你更喜欢用 settings 文件,Claude Code 支持在项目根目录或用户目录放.claude/settings.json。内容如下:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥" } }

这个文件放在~/.claude/settings.json是全局生效,放在项目里的.claude/settings.json只对当前项目生效。我一般把 Key 放全局,项目里只覆盖模型相关的配置。

如果你用的是 Codex 或者 Cline 这类也走 Anthropic 兼容接口的工具,配置思路一样,只是文件位置不同。Codex 认~/.codex/auth.json,Cline 在 VSCode 设置里填 Base URL 和 Key。不管哪个工具,三件套都是:Base URL 填https://taotoken.net/api,Key 填 TaoToken 的 Key,Model ID 填你要用的 Claude 模型名。

配置写完之后,先别急着跑 skill,用一条最简单的命令验证通道是否打通:

claude -p "reply with ok"

如果返回ok或者类似的正常回复,说明 Claude Code 已经通过 TaoToken 拿到模型响应了。如果报 401,说明 Key 不对;如果报连接超时,说明 Base URL 写错了或者网络有问题。这一步过了,再进下一步验证 skills。

提示:不要把 Key 硬编码到会提交到 git 的文件里。settings.json 如果放项目里,记得加进.gitignore。

4. 验证请求:跑一次 elasticsearch-esql skill 并确认走的是 TaoToken

通道打通后,来验证 Elastic skills 是否真的能通过 TaoToken 工作。我们拿elasticsearch-esql这个 skill 做例子,它的作用是执行 ES|QL 查询,适合做日志分析、指标聚合、从查询结果生成图表。

在 Claude Code 的聊天窗口里输入:

/elasticsearch-esql

Claude Code 会识别到这个 skill,然后向你索要连接 Elasticsearch 需要的变量,通常是集群地址、认证信息这些。你按提示填进去。填完之后,就可以提问了。比如:

what are the indices in the clusters?

Claude Code 会加载elasticsearch-esql的完整说明,按照里面写的流程去调 Elasticsearch 的 API,把索引列表拉回来。如果一切正常,你会看到返回的索引名称列表。

再试一个更贴近实际场景的:

用 ES|QL 查一下最近一小时 error 级别的日志数量,按 service.name 分组

这时候 skill 会生成对应的 ES|QL 语句,比如:

FROM logs-* | WHERE @timestamp > NOW() - 1 hour AND log.level == "error" | STATS count = COUNT(*) BY service.name | SORT count DESC

然后通过 Elasticsearch 的_query接口执行,把结果返回给你。整个过程里,Claude Code 负责理解你的意图、生成查询、调用 API,而模型推理这部分请求是发往 TaoToken 的。

怎么确认请求确实经由 TaoToken 完成?两个办法。第一,看 TaoToken 控制台的用量记录,https://taotoken.net/console 里会有请求日志和 token 消耗,你跑完 skill 后刷新一下,能看到对应的调用记录。第二,临时把ANTHROPIC_BASE_URL改回默认值再跑同样的命令,如果报连接错误或者超时,说明之前能跑通确实是靠 TaoToken 通道。

我试过在同一个会话里连续跑多个 skill,比如先/elasticsearch-esql查数据,再切到kibana-dashboards建可视化,Claude Code 会根据任务自动切换加载对应的 skill,模型请求始终走同一个 endpoint。这种统一入口的好处是,你不用为每个 skill 单独配 Key,也不用担心中间某个环节的鉴权不一致。

5. 常见报错排查:401、local proxy failed、reading choices、OAuth

配置过程中最容易撞上的几类错误,我按实际遇到的顺序列一下,每个都给排查方向。

401 Unauthorized。这是最常见的。原因通常是 Key 没配对,或者环境变量没生效。先确认echo $ANTHROPIC_API_KEY能打印出你的 Key,如果为空说明source没执行或者写错了文件。再确认 Key 本身有没有多余空格,复制的时候容易带上换行。如果用的是 settings.json,检查 JSON 格式是否合法,多一个逗号都会导致解析失败。还有一种情况是 Key 被禁用或额度用完,去 https://taotoken.net/console/api-keys 看一下状态。

local proxy failed。这个报错通常出现在 Claude Code 尝试连接 Base URL 但连不上的时候。先确认ANTHROPIC_BASE_URL的值是https://taotoken.net/api,没有多余斜杠,没有拼写错误。然后确认本机网络能访问这个地址,可以用curl -I https://taotoken.net/api看返回头。如果 curl 也失败,说明是网络层的问题,不是配置问题。

reading choices 相关报错。这类错误一般出现在模型返回格式不符合预期的时候。检查你选的 Model ID 是否在 TaoToken 支持的列表里,去 https://taotoken.net/models 确认一下。如果 Model ID 写错,请求会发到一个不存在的模型,返回体结构不对,Claude Code 解析时就报错。另外确认没有在 settings 里同时配了多个冲突的模型参数。

OAuth 相关报错。Claude Code 某些版本会尝试走 OAuth 流程,如果你已经用 API Key 鉴权,可能会冲突。解决办法是确保没有残留的 OAuth token 文件,检查~/.claude/目录下有没有credentials.json之类的文件,有的话先备份再删掉,让 Claude Code 走纯 API Key 模式。

skill 加载了但没执行。有时候/elasticsearch-esql能识别,但提问后没反应。先确认 skill 目录确实在~/.claude/skills/下,ls ~/.claude/skills/elasticsearch-esql/能看到SKILL.md。然后确认 Elasticsearch 连接变量填对了,集群地址、认证信息缺一个都会导致 skill 执行中断。如果还是不行,在 Claude Code 里用/skills命令看看当前加载了哪些 skill。

注意:排障时优先用最小复现,先跑claude -p "reply with ok"确认通道,再跑 skill。这样能把「通道问题」和「skill 问题」分开定位。

6. 长期使用建议与接入入口

跑通一次之后,如果你打算长期用 Elastic skills 配合 Claude Code 做日常开发,有几个点值得注意。

skill 更新方面,npx 安装的走 symlink,跑npx skills check看有没有上游更新,有的话npx skills update一次刷新所有 agent。本地 clone 安装的,git pull之后重新跑./scripts/install-skills.sh add -a claude-code --force。别让 skill 版本落后太多,Elastic 的 API 和最佳实践更新挺频繁的。

模型选择方面,Claude Code 做 skill 调用时对模型的指令遵循能力有要求,选 Claude 系列里能力较强的型号,生成 ES|QL 和调用 API 的准确率会高一些。具体哪个型号适合你的场景,可以去 https://taotoken.net/models 对比,或者直接在模型对话页面 https://taotoken.net/models 试几条查询看看效果。

如果你要把这套配置带到团队里,建议把 Base URL 和 Model ID 写进项目的.claude/settings.json,Key 走环境变量或者团队统一的密钥管理,不要提交到仓库。这样每个人 clone 下来只需要配自己的 Key 就能跑。

接入相关的文档在 https://taotoken.net/doc ,API Key 管理在 https://taotoken.net/console/api-keys 。如果你主要做长期编码和 Agent 任务,可以看看 Coding Plan 页面 https://taotoken.net/coding-plan ,按用量规划比单次调用更划算。Claude Code 专用的接入说明在 https://taotoken.net/claudecode 。

最后留一个实用技巧:把常用的 ES|QL 查询模板存成 snippet,配合elasticsearch-esqlskill 用,每次让 Claude Code 基于模板改参数就行,比从零描述需求快很多。skill 的价值在于它知道 Elasticsearch 的 API 怎么调、参数怎么传,你只需要把业务意图说清楚。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进