面向 FDE / 集成开发工程师:拿到客户第三方系统(Prometheus、蓝鲸 CMDB、ITSM…)的 REST/OpenAPI 文档后,如何改造成 EASH 智能体中台可调用的能力(Tool),并完成测试、声明与编排绑定。
客户系统往往有几十上百个 REST 接口,但智能体只需要其中与办事协议对齐的原子动作(如「查告警」「查变更」「追溯影响面」)。你的工作是把外部 API 封装、归一、登记,而不是把 OpenAPI 原封不动暴露给 LLM。
配现场 base URL、密钥、同步策略。负责入图(Pull/Push)或给 Adapter 提供回源通道。
例:prometheus_url、cmdb api gateway
把一条外部 API映射为平台契约的 input/output。固定 REST 路径模板写在这里。
例:adapters.prometheus.get_alert
Pack 内 tools/*.yaml:tool_id、Schema、关联 connector + handler。智能体只能调已声明项。
例:ops:get_alert
mcp_adapter 接入,但仍须登记为 Pack 能力、走鉴权审计| 术语 | 定义 | 现场怎么说 |
|---|---|---|
| API Application Programming Interface |
应用程序编程接口——一切「程序之间怎么调用」的总称。可以是 HTTP、gRPC、消息队列、SDK 函数等。 | 口语「开放 API」= 给我们一个能调用的编程入口,不限定具体技术形态。 |
| REST Representational State Transfer |
基于 HTTP 的一种 API 架构风格:用 URL 表示资源,用 GET/POST/PUT/DELETE 表示动作,常见 JSON body。 |
口语「REST 接口」≈ 能通过 HTTPS 调用的 Web API。CMDB、ITSM、Prometheus 绝大多数属于这类。 |
| OpenAPI | 描述 REST API 的文档规范(原 Swagger)。机器可读的接口清单 + 参数说明。 | 客户给一份 openapi.yaml,FDE 据此开发 Adapter。 |
| 是什么 | 谁暴露 | EASH 怎么用 | 是否推荐作第三方接入主路径 | |
|---|---|---|---|---|
| REST / OpenAPI | 客户系统的标准 Web API | Prometheus、蓝鲸、ServiceNow、自研平台 | Connector 持密 + rest_adapter Handler 回源 |
✅ 首选——门槛最低、生态最广 |
| MCP Model Context Protocol |
给 AI Agent 用的工具发现/调用协议(tools/list、tools/call) | ① EASH 对外暴露(让 OpenClaw 调我们) ② 客户内部 MCP Server(少见但渐多) |
① 我方 mcp_manifest.json 汇总 Pack 能力② 客户 MCP → ToolGate mcp_adapter 转发 |
○ 客户已有 MCP 可用;不要求为此新建 |
| Skill 技能 / 技能包 |
无统一行业标准——各产品对「技能」定义不同:可能是 Prompt 模板 + 工具列表 + 配置文件的打包(OpenClaw Skill、Cursor Skill、厂商「运维技能市场」等) | Agent 平台厂商、ISV、客户自研助手 | 不直接对接 Skill 格式。拆解其背后的 API/MCP,经 ToolGate 登记为 ops:xxx 能力 |
△ 当作产品包装,不是企业 CMDB/监控的集成契约 |
flowchart TB
subgraph L1["对内 · Agent 调能力(主契约)"]
HAR[Harness / AgentBrain]
TG[ToolGate gRPC Execute]
YAML[Pack tools/*.yaml 声明]
YAML --> TG
HAR --> TG
end
subgraph L2["对外 · 别的 Agent 调 EASH(可选)"]
OC[OpenClaw / WorkBuddy]
MCP_OUT[EASH MCP Server]
OC --> MCP_OUT
MCP_OUT --> TG
end
subgraph L3["对外 · ToolGate 调客户系统"]
REST[客户 REST / OpenAPI]
WH[Webhook Push]
MCP_IN[客户 MCP Server]
TG -->|rest_adapter 推荐| REST
TG -->|mcp_adapter 可选| MCP_IN
CONN[Connector 入图] --> REST
CONN --> WH
end
SKILL[客户 Skill 包
非标准集成层]
SKILL -.->|FDE 拆解背后 API/MCP| TG
要点:MCP 可以是入口,也可以是出口,但企业办事能力在 EASH 内部统一登记在 tools/*.yaml,经 ToolGate 治理——不是让 LLM 随意挂载外部 Skill 清单。
| 客户说法 | FDE 先问什么 | EASH 做法 |
|---|---|---|
| 「有 REST / OpenAPI」 | Base URL、鉴权、测试环境、OpenAPI 文档 | 标准路径:Connector + Adapter + tools 声明 |
| 「有 MCP Server」 | MCP 地址、tools 列表、与客户 REST 是否重复、谁维护版本 | 评估 mcp_adapter 转发;仍要在 Pack 声明对应 ops:xxx,映射 Schema 与 Scope |
| 「有 Skill 包」 | Skill 属于哪个平台?背后调什么 API?有无凭证与审计? | 把 Skill 当文档/参考,抽取办事动作 → 用 REST 或 MCP 接 ToolGate;不把 Skill 文件直接给生产 Agent |
| 「只有数据库/文件,没有 API」 | 能否由客户中间层暴露只读 API? | Connector Pull 或客户建一层 REST;EASH 不直连库表 |
ci_id、severity 等 canonical 字段对齐本体mcp_adapter,减少重复封装;若 MCP 只是 REST 的薄包装,也可直连 REST。平台 SSOT:docs/platform/10-ToolGate工具接入规范.md §五 · 战略差异:docs/archive/运维智能体产品设计/14-OASHP与常见运维智能体路径的本质差异.md §3.1
flowchart TB
subgraph VENDOR["客户第三方系统"]
PROM["Prometheus / Alertmanager"]
CMDB["蓝鲸 CMDB / ServiceNow"]
ITSM["ITSM 变更单 API"]
ELK["Elastic / Loki"]
end
subgraph EASH["EASH 智能体中台"]
CONN["① Connector 插件
Go · 地址/密钥/同步"]
VAULT[("Vault 凭证")]
ADP["② Adapter Handler
Go · 路由+字段映射"]
TG["ToolGate 工具网关
Schema/Scope/审计"]
DECL["③ Pack tools/*.yaml
可调用工具"]
ORCH["智能体编排 Harness"]
AGENT["AgentBrain / LLM"]
NEO["Neo4j 知识图谱"]
end
PROM & CMDB & ITSM & ELK -->|REST/Webhook| CONN
CONN --> VAULT
CONN -->|Pull/Push 入图| NEO
DECL --> TG
ADP --> TG
CONN --> ADP
ORCH --> AGENT
AGENT -->|gRPC Execute| TG
TG --> ADP
ADP -->|按需回源| PROM & ITSM & ELK
TG -->|graph_query| NEO
sequenceDiagram
participant H as Harness 编排步骤
participant A as AgentBrain
participant TG as ToolGate
participant AD as Adapter handler
participant V as Vault
participant EXT as 客户 REST API
H->>A: 执行步骤 N(绑定 get_alert)
A->>TG: Execute(tool_id, input, principal)
TG->>TG: JSON Schema 校验 input
TG->>TG: Principal + Scope 鉴权
TG->>AD: 路由 adapters.prometheus.get_alert
AD->>V: 取 prometheus/alertmanager 凭证
AD->>EXT: GET /api/v2/alerts?filter=...
EXT-->>AD: 原始 JSON
AD->>AD: 映射为 canonical output
TG->>TG: 校验 output Schema + 审计
TG-->>A: ToolResponse
A-->>H: 结构化结果入上下文
| 路径 | 何时用 | Adapter 类型 | 典型能力 |
|---|---|---|---|
| A · 图谱 | 数据已由 Connector 入图 | graph_query | trace_impact、trace_ci_to_service |
| B · API 回源 | 需实时查外部系统 | rest_adapter / tsdb_adapter / log_adapter | get_alert、list_changes、query_metrics |
| C · 远程巡检 | 经客户堡垒机/自动化平台 | rpa_adapter | exec_readonly_on_host(阶段 2+) |
| 交付物 | 主要开发者 | 产物位置 | 说明 |
|---|---|---|---|
| Connector 插件 | EASH 平台研发 / 认证伙伴 | services/graphsync/... Go 插件或 sidecar | Pull/Push 入图;注册 connector_id 如 prometheus-v1 |
| Adapter Handler | EASH 预置 或 FDE 扩展 | services/toolgate/adapters/ Go 包 | 每个「办事动作」一个 handler;不是 Shell 脚本 |
| 连接器实例配置 | FDE / 实施 | 管理后台「业务系统连接」+ connectors/*.yaml | 填现场 URL、环境变量、Webhook 密钥 |
| 可调用工具 | Pack 作者 / FDE | packs/ops/tools/*.yaml | 声明 tool_id、Schema、adapter 绑定 |
| 字段映射 / 归一 | FDE + 顾问 | Pack mappings + 归一词典 | 外部字段 → 本体属性(如 labels.pod → ci_id) |
| 评测用例 | FDE + QA | Pack eval/ | 阻断发布门禁 |
tools/*.yaml → 跑评测 → 编排绑定。不必写 Go。07/10 开发 Go 插件与 handler → 再声明 Tool。
| 组件 | 语言 | 形态 | FDE 是否要写代码 |
|---|---|---|---|
| accessgw / toolgate / graphsync | Go | 微服务、gRPC/REST | 新 Adapter 时写 Go;否则只配 YAML |
| ontocore / agentsvc / harness | Python | FastAPI、Temporal Worker | 一般不改;写评测脚本可选 Python |
| 可调用工具 | YAML | tools/*.yaml、connectors/*.yaml | 必会 |
| Schema | JSON Schema Draft-07 | 嵌在 tools YAML | 必会 |
| 本地联调脚本 | Python / curl / httpx | 个人笔记本临时脚本 | 仅开发调试,禁止作为生产工具后端 |
connector_id + handler?有则跳到步骤 6。connectors/*.yaml 声明启用插件。
flowchart LR
API["客户 API 文档"] --> PICK["选取办事动作"]
PICK --> Q{"已有 Adapter?"}
Q -->|是| YAML["写 tools/*.yaml"]
Q -->|否| GO["Go 开发 handler"]
GO --> REG["注册到 ToolGate"]
REG --> YAML
YAML --> MAP["对齐映射/本体"]
MAP --> TEST["评测 + 联调"]
TEST --> DECL["Pack 声明/发布"]
DECL --> ORCH["编排绑定"]
Connector 负责连接信息与入图同步,不等于一条可调用工具。一个 Connector 实例可支撑多个 Tool。
| 系统 | 配置项 | 示例值 |
|---|---|---|
| Prometheus | prometheus_url、alertmanager_url | https://prometheus.hfec.prod:9090 |
| 蓝鲸 CMDB | api_url、app_code、app_secret | https://cmdb.xxx/api/c/compapi/v2 |
| ServiceNow | instance_url、OAuth / Basic | https://xxx.service-now.com |
Connector 插件接口为 Go,见 docs/platform/07-连接器框架与生态规范.md §2.1 Connector.Pull()。
Handler 是 ToolGate 内的一个 Go 函数,完成:读连接器配置 → 拼 REST 请求 → 解析响应 → 返回符合 output Schema 的 JSON。
| 字段 | 格式 | 示例 |
|---|---|---|
| handler 路径 | adapters.{系统}.{动作} | adapters.prometheus.get_alert |
| connector 引用 | Pack 已注册 connector_id | prometheus-v1 |
| REST 路径 | 写在 handler 内,可用 {base} 占位 | GET {alertmanager_url}/api/v2/alerts |
| 客户原始字段 | 转换 | 能力 output(本体对齐) |
|---|---|---|
Alertmanager labels.severity="critical" | 枚举归一 | severity: P1 |
labels.pod=pay-gw-03 | 查归一词典 | observed_on_ci_id: CI-PAY-GW-03 |
ITSM number=CHG001234 | 直接 | change_id: CHG001234 |
LLM 只看到 canonical 字段,不直接接触客户 API 原始结构。
声明文件是智能体能力的契约 SSOT。Pack 安装时 ToolGate register_tools() 热加载。
管理台「创建工具」表单是上述 YAML 的可视化录入,字段一一对应。原型入口:产品原型 → 领域包 → ④ 可调用工具。
| 字段 | 类型 | 规则 |
|---|---|---|
tool_id | string | 全局唯一,{pack_ns}:{name},如 ops:get_alert |
type | enum | graph_query | rest_adapter | tsdb_adapter | log_adapter | rpa_adapter | internal |
write | bool | 默认 false;true 须 autonomy_level_required ≥ L2 + HITL |
schema.input/output | JSON Schema | Draft-07+;additionalProperties: false |
adapter.connector | string | 已注册连接器插件 ID |
adapter.handler | string | ToolGate 内已注册 handler 路径 |
scope | object | 声明 required_dimensions,ToolGate 强制过滤 |
sensitivity | enum | public | internal | confidential | restricted |
timeout_ms / rate_limit | number | 建议显式声明,防止 LLM 反复调用打爆客户 API |
ci_id、alert_id、service_idbk_inst_id)— 由 Adapter 或归一词典解析| 步骤 | 内容 |
|---|---|
| 客户 API | GET {alertmanager}/api/v2/alerts,过滤 alert_id |
| 连接器 | prometheus-v1,配置 alertmanager_url |
| Handler | adapters.prometheus.get_alert(平台预置) |
| 声明 | ops:get_alert,input: alert_id |
| 编排 | 告警根因协议 Step 1 绑定 get_alert |
| 步骤 | 内容 |
|---|---|
| 客户 API | POST /cc/search_inst/(蓝鲸 compapi),body 含 bk_obj_id |
| 连接器 | cmdb-v1,配置 api_url + 应用凭证 |
| Handler | adapters.cmdb.search_inst — 需 FDE/研发实现或扩展 |
| 声明 | ops:search_ci,input: ci_id 或 hostname |
| 注意 | CMDB 数据通常先入图;实时查单用 rest_adapter,批量拓扑用 Connector Pull |
| 步骤 | 内容 |
|---|---|
| 数据源 | Neo4j 知识图谱(Connector 已将 CMDB/监控映射入图) |
| 连接器 | neo4j-v1(平台内置) |
| Handler | adapters.graph.trace_impact — Cypher 模板,无外部 REST |
| 声明 | ops:trace_impact,type: graph_query |
| 编排 | 影响面协议绑定;输出节点列表供 LLM 生成人话说明 |
| 层级 | 做什么 | 命令 / 入口 | 通过标准 |
|---|---|---|---|
| L0 Schema | YAML 语法 + JSON Schema 校验 | make validate-pack / CI | 无校验错误 |
| L1 客户 API | 直连客户测试环境 | curl / httpx / Postman | 200 + 预期 JSON 结构 |
| L2 ToolGate 单测 | 只调 ToolGate,不经过 LLM | POST /admin/v1/tools/execute 或 gRPC Execute | output 通过 Schema;审计有 trace_id |
| L3 评测用例 | Pack eval case 跑固定输入 | 原型「评测中心」/ CI eval job | EV-* 用例全绿 |
| L4 编排预览 | 整条诊断协议 dry-run | 原型「智能体编排 → 预览运行」 | 各步骤工具返回符合预期 |
| L5 工作台验收 | 值班员视角端到端 | workbench-web 对话触发 | 办事进度与编排步骤一致 |
每个新能力至少 1 条 eval case:固定 input → 断言 output 关键字段。映射未完成时标「待对齐」,评测失败则不能发布智能体(原型评测中心已模拟此门禁)。
tools/xxx.yaml 提交到 Pack 仓库 packs/ops/tools/get_alert 可被多个智能体复用。
flowchart LR
WB["工作台用户提问"]
HAR["Harness 按编排执行"]
AB["AgentBrain 推理"]
TG["ToolGate.Execute"]
AD["Adapter → 客户 API / 图谱"]
WB --> HAR --> AB --> TG --> AD
AD --> AB
AB --> WB
| 环节 | 行为 |
|---|---|
| 用户 | 中文提问,不感知 tool_id / YAML |
| Harness | 按已发布编排逐步执行;每步若绑定可调用工具则调 ToolGate |
| AgentBrain | 将工具返回的 JSON 摘要注入上下文,生成中文结论 |
| ToolGate | 鉴权、限流、Schema、审计 — 唯一出口 |
| 对外 MCP | 可选:由 mcp_manifest.json 汇总 tools,供 OpenClaw 等调用 — 与对内 gRPC 同源 |
| 输入方式 | 示例 | 说明 |
|---|---|---|
| OpenAPI / Swagger 文件 | openapi.yaml | 最理想,机器可解析 |
| 粘贴接口说明 | 「GET /api/v2/alerts,参数 filter=…」 | 客户常只有 Word/邮件描述 |
| 粘贴调用代码 | JS/Python/curl 片段 | 从客户现有脚本提取 |
flowchart LR
IN[粘贴材料 / 上传文件]
CTX[注入本体 + Connector 上下文]
GEN[AI 生成 YAML 草稿]
TEST[沙箱试跑]
FAIL{通过?}
FIX[AI 分析错误并修改]
SAVE[写入可调用工具]
IN --> CTX --> GEN --> TEST --> FAIL
FAIL -->|否| FIX --> TEST
FAIL -->|是| SAVE
试跑失败时助手会说明原因(如 Schema pattern 不匹配、字段未归一),可点 自动修复并重试 或在对话中输入「继续修复」,直到 ToolGate Execute 通过。
| 场景 | 建议 |
|---|---|
| ops-pack 预置能力(get_alert 等) | 无需助手,直接确认声明 |
| 客户非标接口 / 新 REST 动作 | 优先用助手生成草稿,FDE 审核 |
| 全新 Connector 插件(Go Pull) | 助手可生成 Tool 声明;Connector 插件仍须研发 |
| 客户只给 MCP tools/list | 助手解析 MCP 工具元数据 → 生成 tools/*.yaml(二期) |
原型入口:产品原型 → 领域包 → ③½ AI接口适配助手 · 需求文档:AI接口适配助手-产品需求.md
tools/*.yaml 通过 JSON Schema 校验,additionalProperties: falseadapter.connector + adapter.handler 已在平台注册warnwrite: true + 自治级别 + HITL
平台 SSOT:docs/platform/10-ToolGate工具接入规范.md ·
docs/platform/07-连接器框架与生态规范.md ·
样例 Pack:packs/ops/tools/、packs/ops/connectors/