DataDog/pup

GitHub: DataDog/pup

Pup 是 Datadog 官方为 AI Agent 打造的 Rust CLI 工具,通过 200 多条命令让智能助手直接操控 Datadog 的可观测性、安全和运维平台。

Stars: 760 | Forks: 71

# :dog2: 给你的 Agent 一只小狗:推出 Pup CLI [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c112773742153110.svg)](https://github.com/DataDog/pup/actions/workflows/ci.yml) [![Rust](https://img.shields.io/badge/rust-stable-orange?logo=rust)](https://www.rust-lang.org/) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) 每个 AI agent 都需要一个忠诚的伙伴。认识一下 Pup —— 这个 CLI 让你的 agent 全面访问 Datadog 的可观测性平台(因为即使是自主运行的 agent 也需要优秀的工具,而不仅仅是小把戏)。 ## 什么是 Pup? 一个全面的、为 AI agent 准备的 CLI,涵盖了广泛的 Datadog 产品领域。我们释放了 Datadog API 的全部威力,让你的 agent 能够抓取指标、嗅出错误并追踪问题,而不会找错 API 方向。 AI agent 是基础设施管理中增长最快的接口。像 Vercel 和 AWS 这样的公司正竞相使其平台可被 agent 访问,但我们走在了前列。Pup 通过以一种 agent 能够顺利导航的方式暴露 API 接口,使 Datadog 成为 AI 原生工作流的绝佳选择。 ## 为什么你的 Agent 会喜欢它 - :paw_prints: **训练有素**:自我发现的命令(无需费力寻找文档) - :guide_dog: **服从指令**:结构化的 JSON/YAML 输出,易于解析 - :service_dog: **被牵引绳拴着**:OAuth2 + PKCE 提供作用域访问(不再有长期密钥失控乱跑) - :dog: **知道所有的把戏**:Monitors、日志、指标、RUM、安全等等! ## 试一试(也欢迎人类!) ``` # 提供您的 agent 凭证(基本上是内部培训) pup auth login # 现在它们可以像乖巧的小狗一样获取数据了 pup monitors list --tags="team:api-platform" # Fetch monitors pup logs search --query="status:error" --from="1h" # Sniff out errors pup metrics query --query="avg:system.cpu.user{*}" # Track the metrics tail ``` :dog: **TL;DR**:我们构建了一个全面的 CLI,以便 AI agent 可以像专家一样使用 Datadog。给你的 agent 一只 pup。它们受过良好训练、忠诚,并且知道比你预期的多得多的把戏。 *P.S. 在制作这个 CLI 的过程中没有伤害任何真实的小狗。只有大量的 Rust 代码和 API 端点。* ## API 覆盖范围 Pup 涵盖了大部分主要的 Datadog 产品界面。请参阅 [docs/COMMANDS.md](docs/COMMANDS.md) 获取权威的命令参考,或者运行 `pup --help`(或 `pup agent schema` 获取机器可读的输出)以获取构建后 命令的实时列表。 💡 **提示:** 使用 Ctrl/Cmd+F 搜索特定的 API。[通过 GitHub Issues 请求功能](https://github.com/DataDog/pup/issues)。
📊 核心可观测性 | API Domain | Status | Pup Commands | Notes | |------------|--------|--------------|-------| | Metrics | ✅ | `metrics search`, `metrics query`, `metrics list`, `metrics get` | 支持 V1 和 V2 API | | Logs | ✅ | `logs search`, `logs list`, `logs aggregate` | 支持 V1 和 V2 API | | Events | ✅ | `events list`, `events search`, `events get` | 基础设施事件管理 | | RUM | ✅ | `rum apps`, `rum sessions`, `rum metrics`, `rum retention-filters`, `rum playlists`, `rum heatmaps` | Apps, sessions, metrics, retention filters, replay playlists, heatmaps | | APM Services | ✅ | `apm services`, `apm entities`, `apm dependencies`, `apm flow-map` | 服务统计、操作、资源;实体查询;依赖关系;流量可视化 | | Traces | ✅ | `traces search`, `traces aggregate`, `traces metrics` | Span 搜索/聚合和基于 span 的指标定义 | | Profiling | ✅ | `profiling aggregate`, `profiling analytics`, `profiling timeline`, … | Continuous Profiler 查询(需要 API + App keys) | | Database Monitoring | ✅ | `dbm samples search` | DBM 查询样本搜索 | | Session Replay | ❌ | - | 尚未实现 |
🔔 监控与告警 | API Domain | Status | Pup Commands | Notes | |------------|--------|--------------|-------| | Monitors | ✅ | `monitors list`, `monitors get`, `monitors delete`, `monitors search` | 具有高级搜索的完整 CRUD 支持 | | Dashboards | ✅ | `dashboards list`, `dashboards get`, `dashboards delete`, `dashboards url` | 完整的管理功能 | | SLOs | ✅ | `slos list`, `slos get`, `slos delete`, `slos status` | 完整的 CRUD 以及 V2 状态查询 | | Synthetics | ✅ | `synthetics tests`, `synthetics locations`, `synthetics suites` | 测试、位置和 V2 套件管理 | | Downtimes | ✅ | `downtime list`, `downtime get`, `downtime cancel` | 完整的停机时间管理 | | Notebooks | ✅ | `notebooks list`, `notebooks get`, `notebooks delete` | 支持调查 notebooks | | Status Pages | ✅ | `status-pages pages`, `status-pages components`, `status-pages degradations` | **新增** — 页面、组件和降级管理 | | Powerpacks | ❌ | - | 尚未实现 | | Workflow Automation | ✅ | `workflows get`, `workflows create`, `workflows update`, `workflows delete`, `workflows run`, `workflows instances` | 完整的 CRUD 以及运行和实例管理(列表、获取、取消) | | Local Runbooks | ✅ | `runbooks list`, `runbooks describe`, `runbooks run`, `runbooks import`, `runbooks validate` | **新增** — 基于 YAML 定义的多步骤 runbooks,支持 pup/shell/http/workflow 步骤类型、变量插值和可重用模板 |
🔒 安全与合规 | API Domain | Status | Pup Commands | Notes | |------------|--------|--------------|-------| | Security Monitoring | ✅ | `security rules`, `security signals`, `security findings`, `security content-packs`, `security risk-scores` | 规则、信号、发现、内容包、实体风险评分 | | Cloud Security | ✅ | `security findings analyze`, `security findings schema` | 用于配置错误、身份风险和所有 Cloud Security 发现类型的 DDSQL 分析 | | Application Security | ✅ | `security findings analyze`, `security asm-custom-rules`, `security asm-exclusions` | 通过 DDSQL 查询 API 发现、WAF 自定义规则和排除过滤器 | | Static Analysis | ✅ | `static-analysis ast`, `static-analysis custom-rulesets`, `static-analysis sca`, `static-analysis coverage` | 代码安全分析 | | Audit Logs | ✅ | `audit-logs list`, `audit-logs search` | 完整的审计日志搜索和列表 | | Data Governance | ✅ | `data-governance scanner-rules list` | 敏感数据扫描器规则 | | CSM Threats | ✅ | `csm-threats` | Cloud Security Management 威胁规则和 agent 规则 | | Sensitive Data Scanner | ✅ | `data-governance scanner-rules list` | 通过上方的数据治理列出 | | Agentless Scanning | ✅ | `agentless-scanning aws list/get/create/update/delete`, `agentless-scanning gcp list`, `agentless-scanning azure list` | AWS、GCP 和 Azure 的云无代理扫描配置 | | Logs Restriction | ✅ | `logs-restriction list`, `logs-restriction get`, `logs-restriction create`, `logs-restriction update`, `logs-restriction delete` | 用于细粒度日志访问控制的日志限制查询 | | Data Deletion | ✅ | `data-deletion requests list`, `data-deletion requests create`, `data-deletion requests cancel` | GDPR/合规性数据删除请求管理 |
☁️ 基础设施与云 | API Domain | Status | Pup Commands | Notes | |------------|--------|--------------|-------| | Infrastructure | ✅ | `infrastructure hosts list`, `infrastructure hosts get` | 主机清单管理 | | Tags | ✅ | `tags list`, `tags get`, `tags add`, `tags update`, `tags delete` | 主机标签操作 | | Network | ✅ | `network flows list`, `network devices`, `network interfaces` | 网络流、设备清单、接口标签 | | Cloud (AWS) | ✅ | `cloud aws list`, `cloud aws cloud-auth persona-mappings` | 具有角色映射 CRUD 的 AWS 集成管理 | | Cloud (GCP) | ✅ | `cloud gcp list` | GCP 集成管理 | | Cloud (Azure) | ✅ | `cloud azure list` | Azure 集成管理 | | Cloud (OCI) | ✅ | `cloud oci` | Oracle Cloud 租户配置和产品 | | Containers | ✅ | `containers list`, `containers images list` | Containers | | Processes | ✅ | `processes list` | 进程清单查询 |
🚨 事件与运营 | API Domain | Status | Pup Commands | Notes | |------------|--------|--------------|-------| | Incidents | ✅ | `incidents list`, `incidents get`, `incidents attachments`, `incidents settings`, `incidents handles`, `incidents postmortem-templates` | 事件管理,包括设置、处理和事后总结模板 | | On-Call (Teams) | ✅ | `on-call teams` (CRUD, memberships with roles) | 完整的团队管理系统,支持 admin/member 角色 | | Case Management | ✅ | `cases` (create, search, assign, archive, projects, jira, servicenow, move) | 完整的案例管理,支持 Jira/ServiceNow 关联 | | Error Tracking | ✅ | `error-tracking issues search`, `error-tracking issues get` | 错误问题搜索和详情 | | Service Catalog | ✅ | `service-catalog list`, `service-catalog get` | 服务注册表管理 | | Scorecards | ✅ | `scorecards list`, `scorecards get` | 服务质量评分 | | Fleet Automation | ✅ | `fleet agents`, `fleet deployments`, `fleet schedules` | Agent 管理、部署、计划 (预览版) | | HAMR | ✅ | `hamr connections get`, `hamr connections create` | **新增** — 高可用多区域连接 | | Investigations | ✅ | `investigations list`, `investigations get`, `investigations trigger` | Bits AI SRE 调查管理 | | Change Management | ✅ | `change-management create`, `change-management get`, `change-management update`, `change-management create-branch`, `change-management decisions` | 变更请求管理,包括决策和分支 | | Incident Services/Teams | ✅ | `incidents services`, `incidents teams` | 范围限定于事件管理的服务和团队 CRUD | | Live Debugger | ✅ | `debugger probes list`, `debugger probes get`, `debugger probes create`, `debugger probes delete`, `debugger probes watch` | 用于 Live Debugger 的远程日志探针管理 | | Software Catalog | ✅ | `software-catalog entities list`, `software-catalog entities upsert`, `software-catalog kinds list`, `software-catalog relations list` | 软件目录实体和类型管理(下一代目录) |
🔧 CI/CD 与开发 | API Domain | Status | Pup Commands | Notes | |------------|--------|--------------|-------| | CI Visibility | ✅ | `cicd pipelines list`, `cicd events list` | CI/CD 流水线可见性和事件 | | Test Optimization | ✅ | `cicd tests`, `cicd flaky-tests`, `test-optimization` | 测试事件、不稳定测试管理和测试优化 API | | DORA Metrics | ✅ | `cicd dora` | DORA 部署补丁 | | Code Coverage | ✅ | `code-coverage branch-summary`, `code-coverage commit-summary` | 分支和提交级别的覆盖率摘要 | | Deployment Gates | ✅ | `deployment-gates gates`, `deployment-gates evaluations`, `deployment-gates rules` | 部署门禁 CRUD、评估触发和规则管理 |
👥 组织与访问 | API Domain | Status | Pup Commands | Notes | |------------|--------|--------------|-------| | Users | ✅ | `users list`, `users get`, `users roles`, `users seats` | 用户和角色管理,支持席位分配 | | Organizations | ✅ | `organizations get`, `organizations list` | 组织设置管理 | | API Keys | ✅ | `api-keys list`, `api-keys get`, `api-keys create`, `api-keys delete` | 完整的 API 钥 CRUD | | App Keys | ✅ | `app-keys list`, `app-keys get`, `app-keys create`, `app-keys update`, `app-keys delete` | 完整的应用程序密钥 CRUD | | Service Accounts | ✅ | - | 通过 users 命令管理 | | Roles | ❌ | - | 仅通过 users 列出 | | AuthN Mappings | ✅ | `authn-mappings list`, `authn-mappings get`, `authn-mappings create`, `authn-mappings update`, `authn-mappings delete` | SAML/IdP 属性到角色的身份验证映射 |
⚙️ 平台与配置 | API Domain | Status | Pup Commands | Notes | |------------|--------|--------------|-------| | Usage Metering | ✅ | `usage summary`, `usage hourly` | 使用量和计费指标 | | Cost Management | ✅ | `costs datadog projected`, `costs datadog attribution`, `costs datadog by-org`, `costs datadog aws-config`, `costs datadog azure-config`, `costs datadog gcp-config`, `costs ccm custom-costs`, `costs ccm tag-descriptions`, `costs ccm tag-metadata`, `costs ccm tags`, `costs ccm tag-keys`, `costs ccm budgets`, `costs ccm commitments` | 成本归因、云成本配置 (AWS/Azure/GCP) 和云成本管理(自定义成本、标签描述、预算、承诺计划) | | Product Analytics | ✅ | `product-analytics events send`, `product-analytics query` | 服务端产品分析事件和查询 | | Integrations | ✅ | `integrations slack`, `integrations pagerduty`, `integrations webhooks`, `integrations jira`, `integrations servicenow`, `integrations google-chat`, `integrations ms-teams` | 第三方集成,包括 Jira、ServiceNow、Google Chat 和 Microsoft Teams | | Feature Flags | ✅ | `feature-flags flags`, `feature-flags environments`, `feature-flags allocations`, `feature-flags exposure`, `feature-flags enable`, `feature-flags disable` | 功能标志管理,包括环境、分配和曝光控制 | | Data Streams (Kafka) | ✅ | `kafka topic-configs`, `kafka broker-configs`, `kafka client-configs`, `kafka read-messages` | **实验性** — 通过 Datadog 进行 Kafka 集群检查 | | Restricted Datasets | ✅ | `datasets list`, `datasets get`, `datasets create`, `datasets update`, `datasets delete` | 用于数据访问控制的受限数据集管理 | | Observability Pipelines | ✅ | `obs-pipelines list`, `obs-pipelines get`, `obs-pipelines create`, `obs-pipelines update`, `obs-pipelines delete`, `obs-pipelines validate` | 完整的 pipeline CRUD 和验证 | | LLM Observability | ✅ | `llm-obs projects`, `llm-obs experiments`, `llm-obs datasets` | **新增** — LLM Obs 项目、实验和数据集管理 | | Reference Tables | ✅ | `reference-tables list`, `reference-tables get`, `reference-tables create`, `reference-tables batch-query` | **新增** — 用于日志富化的参考表管理 | | Miscellaneous | ✅ | `misc ip-ranges`, `misc status` | IP 范围和状态 | | App Builder | ✅ | `app-builder list`, `app-builder get`, `app-builder create`, `app-builder update`, `app-builder delete`, `app-builder publish` | 具有发布/取消发布和批量删除的低代码应用管理 | | Key Management | ✅ | `api-keys`, `app-keys` | API 密钥和应用程序密钥的 CRUD(在上方的组织和访问中列出) | | IP Allowlist | ❌ | - | 尚未实现 |
## 安装 ### Homebrew (macOS/Linux) ``` brew tap datadog-labs/pack brew install datadog-labs/pack/pup ``` ### 从源码构建 ``` git clone https://github.com/DataDog/pup.git && cd pup cargo build --release cp target/release/pup /usr/local/bin/pup ``` ### 手动下载 从[最新发布版](https://github.com/DataDog/pup/releases/latest)下载预构建的二进制文件。 ## 身份验证 Pup 支持两种身份验证方法。**首选 OAuth2**,如果您已登录,它将被自动使用。 ### OAuth2 身份验证(首选) OAuth2 提供安全的、基于浏览器的身份验证和自动 token 刷新。 ``` # 设置您的 Datadog 站点(可选) export DD_SITE="datadoghq.com" # Defaults to datadoghq.com # 通过浏览器登录 pup auth login # 使用任意命令 - 自动使用 OAuth token pup monitors list # 检查状态 pup auth status # 登出 pup auth logout ``` **Token 存储**:Token 安全地存储在您系统的钥匙串中(macOS Keychain、Windows Credential Manager、Linux Secret Service)。设置 `DD_TOKEN_STORAGE=file` 以改用基于文件的存储。 **注意**:OAuth2 需要在您的 Datadog 站点上启用动态客户端注册 (DCR)。如果 DCR 尚不可用,请使用 API 密钥身份验证。 有关详细的 OAuth2 文档,请参阅 [docs/OAUTH2.md](docs/OAUTH2.md)。 ### API 密钥身份验证(回退方案) 如果 OAuth2 token 不可用,Pup 会自动回退到 API 密钥身份验证。 ``` export DD_API_KEY="your-datadog-api-key" export DD_APP_KEY="your-datadog-application-key" export DD_SITE="datadoghq.com" # Optional, defaults to datadoghq.com # 使用任意命令 - 自动使用 API key pup monitors list ``` ### Bearer Token 身份验证 (WASM / Headless) 对于 WASM 构建或无法访问钥匙串的环境,请使用预先获取的 bearer token: ``` export DD_ACCESS_TOKEN="your-oauth-access-token" export DD_SITE="datadoghq.com" pup monitors list ``` API 密钥身份验证(`DD_API_KEY` + `DD_APP_KEY`)也可在 WASM 中运行。请参阅下方的 [WASM](#wasm) 部分。 ### 身份验证优先级 Pup 按以下顺序检查身份验证: 1. **`DD_ACCESS_TOKEN`** - 无状态 bearer token(最高优先级) 2. **OAuth2 token**(来自 `pup auth login`)- 如果存在有效 token 则使用 3. **API 密钥**(来自 `DD_API_KEY` 和 `DD_APP_KEY`)- 如果 OAuth token 不可用则使用 ## 使用方法 ### 身份验证 ``` # OAuth2 登录(推荐) pup auth login # 检查身份验证状态 pup auth status # 刷新 access token pup auth refresh # 登出 pup auth logout ``` ### 测试连接 ``` pup test ``` ### Monitors ``` # 列出所有 monitor pup monitors list # 获取特定 monitor pup monitors get 12345678 # 删除 monitor pup monitors delete 12345678 --yes ``` ### Metrics ``` # 使用经典查询语法搜索指标 (v1 API) pup metrics search --query="avg:system.cpu.user{*}" --from="1h" # 查询时间序列数据 (v2 API) pup metrics query --query="avg:system.cpu.user{*}" --from="1h" # 列出可用指标 pup metrics list --filter="system.*" ``` ### Dashboards ``` # 列出所有 dashboard pup dashboards list # 获取 dashboard 详情 pup dashboards get abc-123-def # 打印实时 1 周 dashboard URL pup dashboards url abc-123-def --from=now-1w --to=now --live=true # 删除 dashboard pup dashboards delete abc-123-def --yes ``` ### SLOs ``` # 列出所有 SLO pup slos list # 获取 SLO 详情 pup slos get abc-123 # 删除 SLO pup slos delete abc-123 --yes ``` ### Incidents ``` # 列出所有 incident pup incidents list # 获取 incident 详情 pup incidents get abc-123-def ``` ## 全局标志 - `-o, --output`:输出格式(json, table, yaml)- 默认:json - `-y, --yes`:跳过破坏性操作的确认提示 ## 环境变量 - `DD_ACCESS_TOKEN`:用于无状态身份验证的 Bearer token(最高优先级) - `DD_API_KEY`:Datadog API 密钥(如果使用 OAuth2 或 DD_ACCESS_TOKEN 则可选) - `DD_APP_KEY`:Datadog 应用程序密钥(如果使用 OAuth2 或 DD_ACCESS_TOKEN 则可选) - `DD_SITE`:Datadog 站点(默认值:datadoghq.com) - `DD_AUTO_APPROVE`:自动批准破坏性操作(true/false) - `DD_TOKEN_STORAGE`:Token 存储后端(keychain 或 file,默认值:自动检测) ## Agent 模式 当 AI 编码 agent 调用 pup 时,它会自动切换到 **agent 模式**,该模式返回针对机器消费优化的结构化 JSON 响应(包括元数据、错误详情和提示)。Agent 模式也会自动批准确认提示。 当以下任何环境变量设置为 `1` 或 `true` 时,将**自动检测** agent 模式: | Variable | Agent | |----------|-------| | `CLAUDE_CODE` 或 `CLAUDECODE` | Claude Code | | `CURSOR_AGENT` | Cursor | | `CODEX` 或 `OPENAI_CODEX` | OpenAI Codex | | `AIDER` | Aider | | `CLINE` | Cline | | `WINDSURF_AGENT` | Windsurf | | `GITHUB_COPILOT` | GitHub Copilot | | `AMAZON_Q` 或 `AWS_Q_DEVELOPER` | Amazon Q | | `GEMINI_CODE_ASSIST` | Gemini Code Assist | | `SRC_CODY` | Sourcegraph Cody | | `PI_CODING_AGENT` | pi.dev | | `FORCE_AGENT_MODE` | 任何 agent(手动覆盖) | 您也可以使用 `--agent` 标志或通过设置 `FORCE_AGENT_MODE=1` 显式启用它: ``` # 自动检测(例如,在 Claude Code 内运行) pup monitors list # 显式 flag pup monitors list --agent # 环境变量覆盖 FORCE_AGENT_MODE=1 pup monitors list ``` 如果您正在将 pup 集成到 AI agent 工作流中,请确保设置了适当的环境变量,以便为您的 agent 优化响应。如果没有设置,pup 将默认为人类友好的输出。 ## WASM Pup 通过 `wasm32-wasip2` 目标编译为 WebAssembly,以便在 WASI 兼容的运行时中使用,例如 Wasmtime、Wasmer 和 Cloudflare Workers。 ### 构建 ``` # 安装 WASI target rustup target add wasm32-wasip2 # 构建 WASI cargo build --target wasm32-wasip2 --no-default-features --features wasi --release ``` ### 身份验证 WASM 构建支持**无状态身份验证** —— 不支持钥匙串存储和基于浏览器的 OAuth 登录。请使用 `DD_ACCESS_TOKEN` 或 API 密钥: ``` # 选项 1:Bearer token DD_ACCESS_TOKEN="your-token" DD_SITE="datadoghq.com" wasmtime run target/wasm32-wasip2/release/pup.wasm -- monitors list # 选项 2:API key DD_API_KEY="your-api-key" DD_APP_KEY="your-app-key" wasmtime run target/wasm32-wasip2/release/pup.wasm -- monitors list ``` `pup auth status` 命令可在 WASM 中运行,并报告已配置的凭据。`login`、`logout` 和 `refresh` 子命令会返回使用 `DD_ACCESS_TOKEN` 的指导。 ### 限制 - 没有本地 token 存储(keychain/file)—— 请使用 `DD_ACCESS_TOKEN` 或 API 密钥 - 没有基于浏览器的 OAuth 登录流程 - 网络依赖宿主运行时的网络功能 ### 使用 Wasmtime 运行 ``` # 直接运行 wasmtime run --env DD_ACCESS_TOKEN="your-token" target/wasm32-wasip2/release/pup.wasm -- monitors list # 或者使用 API key wasmtime run --env DD_API_KEY="key" --env DD_APP_KEY="key" target/wasm32-wasip2/release/pup.wasm -- --help ``` ## Runbooks `pup runbooks` 是一个用于 YAML 定义的操作程序的本地执行引擎。Runbooks 位于 `~/.config/pup/runbooks/` 中,使用 `pup`、shell、HTTP、Datadog Workflow 和交互式确认步骤对多步骤任务(从部署门控到事件分类)进行编码。 ``` # 列出可用 runbook pup runbooks list # 查看 runbook 的步骤 pup runbooks describe incident-triage # 运行 runbook,传递所需变量 pup runbooks run deploy-service --arg SERVICE=payments --arg VERSION=1.2.3 # Dry-run(显示步骤而不执行) pup runbooks run deploy-service --dry-run # 从文件导入 runbook pup runbooks import ./my-runbook.yaml # 验证 runbook 文件而不运行它 pup runbooks validate ./my-runbook.yaml ``` ### Runbook 功能 - **步骤类型**:`pup`(Datadog 命令)、`shell`、`http`、`datadog-workflow`、`confirm` - **变量插值**:在任何字段中使用 `{{VAR_NAME}}`,通过 `--arg KEY=VALUE` 传递 - **可重用模板**:将共享的步骤定义存储在 `_templates/` 中,并使用 `template: ` 引用它们 - **HTTP 步骤**:支持完整的方法(GET/POST/PUT/PATCH/DELETE),带有 `body`、`headers`、`content_type` 和 `body_file` - **失败处理**:每个步骤支持 `on_failure: fail|warn|ignore` 和 `optional: true` - **条件执行**:`when: on_success|on_failure|always` - **轮询**:用于长时间运行操作的 `poll.interval`、`poll.timeout`、`poll.until` - **输出捕获**:`capture: VAR_NAME` 存储 stdout 以供后续步骤使用 - **带时间戳的输出**:每个步骤都显示开始时间、已用时间以及标记的 stdout/stderr 请参阅 `docs/examples/runbooks/` 获取现成的示例,并参阅 [docs/EXAMPLES.md](docs/EXAMPLES.md) 获取完整参考。 ## Agent 技能 Pup 附带了一组嵌入在二进制文件中的技能和领域 agent,可以安装到任何 AI 编码助手。运行 `pup skills list` 查看您已安装版本中可用的技能。 ``` # 为您的 AI 助手安装所有 skill 和 agent pup skills install # 为特定工具安装 pup skills install --target-agent=claude-code pup skills install --target-agent=cursor # 列出可用的 skill 和 agent pup skills list pup skills list --type=skill pup skills list --type=agent # 安装特定的 skill pup skills install dd-monitors ``` 对于 Claude Code,技能将安装到 `.claude/skills/`,agent 将安装到 `.claude/agents/`(原生子 agent 格式)。对于其他工具,所有内容都将作为 `SKILL.md` 安装在该工具的技能目录中。 Pup 还可用作 **Claude Code 插件市场**: ``` /plugin marketplace add DataDog/pup ``` ## ACP Server `pup acp serve` 将 pup 变成本地 AI agent 服务器,让编码工具直接与 Datadog Bits AI 对话。它支持两种协议: - **[ACP](https://agentcommunicationprotocol.dev/)** — 用于 ACP 原生客户端的 Agent Communication Protocol - **OpenAI 兼容** — `POST /chat/completions`,适用于 [opencode](https://opencode.ai)、Cursor 和任何 `@ai-sdk/openai-compatible` 客户端 ``` # 启动服务器(自动发现您的第一个 Datadog AI agent) pup acp serve # 或者指定特定的 agent pup acp serve --agent-id --port 9099 ``` 将任何 OpenAI 兼容的客户端指向 `http://127.0.0.1:9099` 以开始询问有关您的 Datadog 环境的问题。 **opencode** (`~/Library/Application Support/opencode/opencode.jsonc`): ``` { "provider": { "datadog": { "name": "Datadog AI", "npm": "@ai-sdk/openai-compatible", "models": { "datadog-ai": { "name": "Datadog AI Agent" } }, "options": { "baseURL": "http://127.0.0.1:9099" } } } } ``` 有关完整的使用详情,请参阅 [docs/EXAMPLES.md#acp-server](docs/EXAMPLES.md)。 ## 开发 ``` # 运行测试 cargo test # 构建 cargo build --release # Lint cargo clippy -- -D warnings # 格式检查 cargo fmt --check # 构建 WASM rustup target add wasm32-wasip2 cargo build --target wasm32-wasip2 --no-default-features --features wasi # 无需构建直接运行 cargo run -- monitors list ``` ## 许可证 Apache License 2.0 - 详情请参阅 LICENSE。 ## 文档 有关详细文档,请参阅 [CLAUDE.md](CLAUDE.md)。
标签:API安全, API集成, Datadog, JSON输出, OAuth2认证, OISF, Rust, SRE, 人工智能助手, 偏差过滤, 可观测性, 可视化界面, 命令行界面, 基础设施管理, 威胁情报, 开发者工具, 性能监控, 数字取证, 无线安全, 日志管理, 网络流量审计, 自动化脚本, 自动化运维, 运维自动化, 通知系统