1. 为什么我要把 Jenkins 从浏览器里拽出来如果你每天的工作流里都有 Jenkins大概率经历过这套动作打开浏览器找到那个 Pipeline点 Build with Parameters填参数提交等页面跳转再点进构建详情再点 Console Output就为了看一行日志。要是 Pipeline 里还有 input 步骤你得盯着页面等它弹出来手动点 Proceed。一天重复十几次没什么技术含量但每次都要用鼠标。更麻烦的是当你想让 AI Agent 帮你干活时这套 UI 操作根本没法自动化。Agent 擅长的是跑命令、解析 stdout、根据退出码决定下一步而不是模拟点击网页。所以我一直在找一个能让 Agent 直接操控 Jenkins 的方式直到用上 jk 这个 Pipeline-native 的 Jenkins CLI。jk 的核心思路很简单以 Jenkins 的 Job URL 作为操作对象不需要额外配置 Job 名称或服务器路径你浏览器地址栏里的那个 URL 直接拿来用。它覆盖了查看 Pipeline 信息、触发构建、实时跟踪日志、响应 input 步骤这几个高频场景退出码直接反映构建状态Agent 可以用$?判断下一步怎么走。配合仓库内置的 jk-jenkins-cli skillAgent 能知道哪些命令只读、哪些需要用户确认比如生产环境的 input 步骤不能自动 proceed。这篇文章我会带你走完从配置到跑通的最小闭环先讲清楚 jk 和 TaoToken 统一 Key/API 通道怎么配合再给出可复制的 config.toml 骨架和 settings.json 配置片段最后用一次真实的 Pipeline 触发来验证整条链路。适合已经在用 Jenkins、想让 AI Agent 接管重复操作的同学。2. TaoToken 前置统一 Key 与 API 通道在让 Agent 操控 Jenkins 之前得先解决 Agent 本身的模型调用问题。我试过在多个工具里分别配置不同的 Key结果就是每换一个环境都要重新填一遍调试的时候还得翻半天记录。TaoToken 在这里的作用是提供一个统一的 Key 和 API 通道让 jk 触发的 Agent 流程和模型调用走同一套凭证体系。TaoToken 的官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点固定为 https://taotoken.net/api 注意 API 地址不带 UTM 参数。你需要先在控制台创建一个 API Key这个 Key 会同时用于模型对话和后续的 Agent 配置。具体操作路径是进入控制台后找到 API Keys 页面新建一个 Key 并复制保存。这个 Key 的权限范围建议按最小必要原则来如果你只是用来做 Jenkins 相关的 Agent 操作不需要开太高的权限。创建完成后把 Key 填到下面要讲的 config.toml 和 settings.json 里。这里有个容易踩的坑TaoToken 的 API 地址和官网地址是两个不同的域名配置的时候别把官网地址填到 API base URL 里。另外 Key 一旦创建就只显示一次记得先存到安全的地方再关页面。3. 可复制配置config.toml 与 settings.jsonjk 本身的配置和 TaoToken 的配置是分开的两层。jk 负责和 Jenkins 通信TaoToken 负责 Agent 的模型调用。下面给出两份可以直接复制的配置骨架。3.1 jk 的凭证配置jk 的凭证保存在~/.config/jk/credentials权限 0600。你可以用命令交互式添加jk auth add https://jenkins.example.com按提示输入用户名和 API Token 即可。后续所有命令自动读取不需要每次带认证参数。如果 Jenkins 用了自签名证书可以设置SSL_CERT_FILE指向 PEM 文件或者临时加--insecure跳过验证。3.2 config.toml 骨架如果你希望把 jk 的默认行为固化下来可以在~/.config/jk/config.toml里写# jk 全局配置 default_server https://jenkins.example.com timeout 300s watch_interval 5s # 输出格式agent 场景建议 json方便解析 output_format json # 日志跟踪的默认行为 logs_follow true logs_tail 200 # 安全相关生产环境 input 步骤默认不自动 proceed auto_proceed false require_confirm_for_input trueoutput_format json这一项对 Agent 特别重要因为 Agent 解析结构化输出比解析人类可读文本稳定得多。auto_proceed false配合require_confirm_for_input true是安全底线生产环境的 input 步骤必须由人确认。3.3 settings.json 配置片段Agent 侧的 settings.json 用来告诉它怎么调用模型、怎么执行 jk 命令。下面是一个最小片段{ model_provider: { base_url: https://taotoken.net/api, api_key: sk-your-taotoken-key, model: claude-sonnet-4-20250514 }, tools: { jenkins_cli: { command: jk, config_path: ~/.config/jk/config.toml, credentials_path: ~/.config/jk/credentials, allowed_operations: [ pipeline info, build trigger, build logs, build input ], require_confirmation: [ build input proceed ] } }, skill: { name: jk-jenkins-cli, path: ~/.config/jk/skills/jk-jenkins-cli } }把api_key换成你在 TaoToken 控制台创建的那个 Key。allowed_operations限制了 Agent 能执行的 jk 子命令require_confirmation则强制 input proceed 这类敏感操作必须经过人工确认。skill 字段指向 jk 仓库内置的 skill 目录Agent 会读取里面的规范来决定行为。4. 验证请求让 Agent 触发一次 Pipeline配置写完之后先别急着让 Agent 全自动跑手动验证一遍整条链路是否通。4.1 查看 Pipeline 信息jk pipeline info https://jenkins.example.com/job/my-pipeline输出是 YAML 格式包含 Job 基本信息和参数定义。确认能正常返回说明 jk 到 Jenkins 的认证没问题。4.2 触发构建并等待结果jk build trigger https://jenkins.example.com/job/my-pipeline -p ENVstaging -p VERSION1.2.0 --watch--watch会阻塞直到构建完成退出码直接反映构建状态0 表示 SUCCESS1 表示 FAILURE2 表示 UNSTABLE3 表示 ABORTED4 表示 PENDING_INPUT大于等于 10 表示 jk 自身错误。Agent 可以直接用$?判断下一步怎么走。4.3 实时跟踪日志jk build logs -f https://jenkins.example.com/job/my-pipeline/lastBuild类似tail -f构建运行中实时输出构建结束自动退出。Agent 可以边跑边解析日志遇到关键字就触发告警或重试。4.4 响应 input 步骤如果上一步退出码是 4说明 Pipeline 卡在 input 步骤jk build input https://jenkins.example.com/job/my-pipeline/lastBuild proceed -p DEPLOY_TARGETproduction这一步在 Agent 场景下必须由人确认因为生产环境的部署确认不能交给模型自动判断。skill 里明确规定 Agent 不能自动 proceed必须先检查 pendingInput 详情再请求用户确认。4.5 让 Agent 串起来把上面几条命令交给 Agent 后它的执行逻辑大致是先pipeline info拿到参数定义再build trigger --watch触发并等待根据退出码决定是继续跟踪日志还是处理 input。整个过程不需要打开浏览器也不需要模拟点击。5. 本篇常见错排查5.1 认证失败 401/403最常见的原因是 API Token 填错或者过期。jk 的凭证存在~/.config/jk/credentials权限必须是 0600权限不对 jk 会拒绝读取。另外确认 Jenkins 用户有对应 Job 的 Build 权限只读用户触发构建会返回 403。5.2 自签名证书报错如果 Jenkins 用的是自签名证书jk 会报 x509 错误。两种处理方式设置SSL_CERT_FILE指向 PEM 文件或者临时加--insecure。生产环境建议用前者后者只适合本地调试。5.3 退出码 4 但不知道 input 是什么退出码 4 表示 PENDING_INPUT但具体是哪个 input 步骤需要看详情。可以用jk build input url status查看 pendingInput 的详情确认参数后再 proceed。Agent 场景下这一步必须停下来问人不能自己猜。5.4 TaoToken API 调用返回 404检查base_url是不是写成了官网地址。API 端点固定为https://taotoken.net/api不带 UTM 参数也不带尾部斜杠。另外确认 Key 没有多余空格复制的时候容易带上换行。5.5 Agent 不执行 jk 命令先确认 settings.json 里的command路径正确jk 是否在 PATH 里。如果 Agent 报权限错误检查allowed_operations是否包含了要执行的子命令。skill 目录路径也要确认存在否则 Agent 不知道安全规范。6. 把 Jenkins 操作接进 Agent 工具链jk 不是要替代 Jenkins而是把 Jenkins 的操作界面从浏览器搬到终端。对于每天和 Pipeline 打交道的工程师来说少几次鼠标点击不是目的真正的价值是让 Jenkins 操作可以进入脚本、进入 Makefile、进入 AI Agent 的工具链。如果你想让 Agent 长期接管编码和部署流程可以了解一下 Coding Plan它把模型调用和工具链配置打包在一起省去逐个环境配置的麻烦。需要先拿到 Key 的话去 API Keys 页面创建一个然后按本文的 config.toml 和 settings.json 骨架填进去。接入过程中遇到报错可以对照接入文档排查或者直接用模型对话验证 Key 是否可用。配置完成后建议先用一个非生产环境的 Pipeline 跑一遍完整流程触发、等待、看日志、处理 input。确认退出码和日志解析都符合预期后再把生产环境的 Job URL 交给 Agent。记住把require_confirm_for_input保持为 true生产部署的确认权始终留在人手里。