auto_agent/智能化部署agent-demo接口定义说明.md
2026-04-08 19:28:26 +08:00

16 KiB

智能化部署 Agent Demo 接口定义说明

1. 文档说明

1.1 文档目的

本文档用于定义智能化部署 Agent MVP 阶段的 demo 接口,作为前后端开发、联调和本地 Agent 接入的直接输入。

本文档覆盖以下接口范围:

  1. Agent 对外任务接口。
  2. 云端与本地 Agent 的交互接口。
  3. 软件 A demo 接口。
  4. 身份 demo 接口。
  5. 审批 demo 接口。

1.2 设计目标

  1. 先打通完整闭环。
  2. 接口语义尽量稳定,便于后续替换为真实系统。
  3. 上层编排尽量不感知 demo 与真实系统差异。
  4. 所有关键动作可追溯、可审计。

1.3 非目标

本文档不覆盖:

  1. 前端页面字段细节。
  2. 数据库表结构 DDL。
  3. 真实软件 A 适配细节。
  4. 所有部署场景的扩展字段。

2. 总体约定

2.1 协议约定

  1. 协议采用 HTTPS + JSON
  2. 字符编码采用 UTF-8
  3. 时间字段统一采用 yyyy-MM-dd HH:mm:ss.SSS 字符串格式,例如 2026-04-07 18:00:00.123
  4. 未特殊说明时,所有时间字段默认时区为 Asia/Shanghai
  5. 所有写接口建议支持 request_id 做幂等控制。

2.2 字段命名规范

  1. 所有 JSON 字段统一采用 snake_case
  2. 主键、关联键、设备键、任务键统一使用 *_id 后缀,例如 task_idapproval_idedge_id
  3. 状态字段统一使用 *_status 后缀,例如 task_statusapproval_status
  4. 类型字段统一使用 *_type 后缀,例如 action_typeos_type
  5. 时间点字段统一使用 *_at 后缀,例如 created_atfinished_atexpire_at;通用响应时间字段保留 timestamp
  6. 毫秒级耗时统一使用 *_ms 后缀,例如 duration_mslatency_mstimeout_ms
  7. 数量统计统一使用 *_count 后缀,例如 log_error_counttotal_count
  8. 集合字段优先使用复数名词,例如 rolespermissionstarget_nodes
  9. 布尔字段按语义命名,通用执行结果使用 success,权限判断使用 allowed,验证结果使用 *_ok
  10. 令牌有效期等以秒为单位的持续时间字段统一使用 *_seconds 后缀,例如 expires_in_seconds

2.3 通用请求头

面向用户调用:

Authorization: Bearer <access_token>
Content-Type: application/json
X-Request-Id: 2f6af6ad-8d98-4f6a-90d4-1ec6a661f701
X-Tenant-Id: tenant-demo

面向本地 Agent 调用:

Authorization: Bearer <edge_token>
Content-Type: application/json
X-Request-Id: 4a2e9309-5670-43cf-a88e-7ab5a36190e1
X-Edge-Id: edge-shanghai-001
X-Signature: <signature>

2.4 通用响应格式

所有接口统一返回如下格式:

{
  "request_id": "2f6af6ad-8d98-4f6a-90d4-1ec6a661f701",
  "success": true,
  "code": "OK",
  "message": "success",
  "data": {},
  "timestamp": "2026-04-08 14:30:00.123"
}

字段说明:

  1. request_id:请求唯一标识。
  2. success:是否成功。
  3. code:业务错误码。
  4. message:可读描述。
  5. data:业务数据。
  6. timestamp:响应时间。

2.5 通用错误码

建议保留以下错误码:

  1. OK
  2. INVALID_PARAM
  3. UNAUTHORIZED
  4. FORBIDDEN
  5. NOT_FOUND
  6. CONFLICT
  7. APPROVAL_REQUIRED
  8. CONFIRM_REQUIRED
  9. TOOL_CALL_FAILED
  10. EDGE_UNAVAILABLE
  11. SOFTWARE_A_FAILED
  12. TIMEOUT
  13. INTERNAL_ERROR

2.6 关键枚举定义

2.5.1 风险等级

["LOW", "MEDIUM", "HIGH"]

2.5.2 任务状态

[
  "CREATED",
  "PENDING_CONFIRM",
  "PENDING_APPROVAL",
  "RUNNING",
  "VERIFYING",
  "SUCCEEDED",
  "FAILED",
  "PARTIAL_SUCCEEDED",
  "CANCELLED"
]

2.5.3 审批状态

["NOT_REQUIRED", "PENDING", "APPROVED", "REJECTED", "EXPIRED"]

2.5.4 动作类型

[
  "DEPLOY",
  "PUSH_CONFIG",
  "START_SERVICE",
  "STOP_SERVICE",
  "RESTART_SERVICE",
  "ROLLBACK",
  "QUERY_LOG",
  "HEALTH_CHECK",
  "CALL_THIRD_PARTY_API"
]

3. Agent 对外接口

3.1 创建任务

POST /api/agent/tasks

说明:

  1. 接收用户自然语言输入。
  2. 返回任务解析结果。
  3. 若缺参或需要确认,不直接执行。

请求示例:

{
  "input_text": "把 order-service 1.2.3 部署到测试环境",
  "channel": "WEB",
  "session_id": "sess-001",
  "tenant_id": "tenant-demo",
  "context": {
    "preferred_env": "test"
  }
}

响应示例:

{
  "request_id": "req-001",
  "success": true,
  "code": "OK",
  "message": "success",
  "data": {
    "task_id": "task-20260408-001",
    "parsed_intent": {
      "action_type": "DEPLOY",
      "app_code": "order-service",
      "env": "test",
      "version": "1.2.3"
    },
    "missing_slots": [],
    "risk_level": "MEDIUM",
    "task_status": "PENDING_CONFIRM",
    "next_action": "CONFIRM_TASK"
  },
  "timestamp": "2026-04-08 14:30:00.123"
}

3.2 确认任务

POST /api/agent/tasks/{task_id}/confirm

说明:

  1. 用户确认结构化任务。
  2. 低中风险任务确认后可进入执行。
  3. 高风险任务确认后进入审批。

请求示例:

{
  "confirmed": true,
  "comment": "确认执行"
}

响应示例:

{
  "request_id": "req-002",
  "success": true,
  "code": "OK",
  "message": "task confirmed",
  "data": {
    "task_id": "task-20260408-001",
    "task_status": "RUNNING",
    "approval_status": "NOT_REQUIRED"
  },
  "timestamp": "2026-04-08 14:31:00.123"
}

3.3 查询任务详情

GET /api/agent/tasks/{task_id}

响应示例:

{
  "request_id": "req-003",
  "success": true,
  "code": "OK",
  "message": "success",
  "data": {
    "task_id": "task-20260408-001",
    "task_status": "VERIFYING",
    "approval_status": "NOT_REQUIRED",
    "risk_level": "MEDIUM",
    "intent": {
      "action_type": "DEPLOY",
      "app_code": "order-service",
      "env": "test",
      "version": "1.2.3"
    },
    "tool_calls": [
      {
        "tool_name": "deploy_package",
        "success": true
      }
    ],
    "verification_result": {
      "process_ok": true,
      "port_ok": true,
      "http_ok": true,
      "log_error_count": 0
    },
    "summary": "部署成功,自动验证通过"
  },
  "timestamp": "2026-04-08 14:35:00.123"
}

3.4 查询任务报告

GET /api/agent/tasks/{task_id}/report

说明:

返回完整执行报告,适合前端展示和审计导出。

响应 data 建议包含:

  1. task_basic
  2. intent_snapshot
  3. approval_trace
  4. tool_trace
  5. verification_trace
  6. result_summary
  7. audit_trace

3.5 取消任务

POST /api/agent/tasks/{task_id}/cancel

说明:

  1. 仅允许取消未完成任务。
  2. 已经进入软件 A 执行阶段时,需要根据执行状态判断是否支持取消。

4. 云端与本地 Agent 交互接口

4.1 Edge 心跳

POST /api/agent/edge/heartbeat

请求示例:

{
  "edge_id": "edge-shanghai-001",
  "hostname": "customer-host-01",
  "os_type": "WINDOWS",
  "agent_version": "0.1.0",
  "capabilities": [
    "check_process",
    "check_port",
    "http_health_check",
    "grep_log",
    "service_control_windows"
  ]
}

4.2 Edge 拉取任务

POST /api/agent/edge/tasks/pull

请求示例:

{
  "edge_id": "edge-shanghai-001",
  "max_tasks": 5
}

响应示例:

{
  "request_id": "req-101",
  "success": true,
  "code": "OK",
  "message": "success",
  "data": {
    "tasks": [
      {
        "task_id": "task-20260408-001",
        "step_id": "step-verify-01",
        "tool_name": "http_health_check",
        "params": {
          "url": "http://10.0.0.12:8080/actuator/health",
          "timeout_ms": 3000
        },
        "expire_at": "2026-04-08 14:40:00.123"
      }
    ]
  },
  "timestamp": "2026-04-08 14:35:10.123"
}

4.3 Edge 回传执行结果

POST /api/agent/edge/tasks/report

请求示例:

{
  "edge_id": "edge-shanghai-001",
  "task_id": "task-20260408-001",
  "step_id": "step-verify-01",
  "tool_name": "http_health_check",
  "success": true,
  "code": "OK",
  "message": "200 OK",
  "data": {
    "status_code": 200,
    "latency_ms": 45
  },
  "evidence": {
    "response_body": "{\"status\":\"UP\"}"
  },
  "started_at": "2026-04-08 14:35:11.123",
  "finished_at": "2026-04-08 14:35:11.456"
}

4.4 Edge 上报异常

POST /api/agent/edge/events

说明:

用于上报:

  1. 本地 Agent 异常。
  2. 工具不可用。
  3. 证书异常。
  4. 系统资源异常。

5. 软件 A Demo 接口

5.1 设计说明

软件 A demo 版本用于支撑 MVP 闭环,其接口语义需尽量贴近未来真实软件 A 的标准能力。

建议 base path:

/api/demo/software-a

5.2 创建部署任务

POST /api/demo/software-a/deploy-tasks

请求示例:

{
  "operator": {
    "user_id": "u1001",
    "user_name": "alice"
  },
  "tenant_id": "tenant-demo",
  "app_code": "order-service",
  "env": "test",
  "version": "1.2.3",
  "target_nodes": [
    "10.0.0.12",
    "10.0.0.13"
  ],
  "deploy_options": {
    "graceful": true
  }
}

响应示例:

{
  "request_id": "req-sa-001",
  "success": true,
  "code": "OK",
  "message": "deploy task created",
  "data": {
    "software_a_task_id": "sa-task-001",
    "task_status": "RUNNING"
  },
  "timestamp": "2026-04-08 14:32:00.123"
}

5.3 查询部署任务状态

GET /api/demo/software-a/deploy-tasks/{software_a_task_id}

响应 data 建议包含:

  1. software_a_task_id
  2. task_status
  3. progress_percent
  4. app_code
  5. env
  6. version
  7. target_nodes
  8. started_at
  9. finished_at
  10. error_detail

5.4 推送配置

POST /api/demo/software-a/config/push

请求示例:

{
  "operator": {
    "user_id": "u1001",
    "user_name": "alice"
  },
  "app_code": "order-service",
  "env": "test",
  "config_template": "default-v1",
  "config_version": "20260408-01",
  "target_nodes": [
    "10.0.0.12"
  ]
}

5.5 服务控制

5.5.1 启动服务

POST /api/demo/software-a/services/start

5.5.2 停止服务

POST /api/demo/software-a/services/stop

5.5.3 重启服务

POST /api/demo/software-a/services/restart

统一请求示例:

{
  "operator": {
    "user_id": "u1001",
    "user_name": "alice"
  },
  "app_code": "order-service",
  "env": "test",
  "target_nodes": [
    "10.0.0.12"
  ]
}

5.6 查询日志

POST /api/demo/software-a/logs/search

请求示例:

{
  "app_code": "order-service",
  "env": "test",
  "time_range": {
    "start_at": "2026-04-08 14:20:00.123",
    "end_at": "2026-04-08 14:30:00.123"
  },
  "keywords": [
    "ERROR",
    "Exception"
  ],
  "limit": 100
}

响应 data 建议包含:

  1. total_count
  2. entries
  3. summary

entries 单条建议字段:

  1. timestamp
  2. level
  3. host
  4. message

5.7 查询指标

POST /api/demo/software-a/metrics/query

请求示例:

{
  "app_code": "order-service",
  "env": "test",
  "metric_names": [
    "cpu_usage",
    "memory_usage",
    "http_5xx_count"
  ],
  "time_range": {
    "start_at": "2026-04-08 14:20:00.123",
    "end_at": "2026-04-08 14:30:00.123"
  }
}

5.8 查询应用拓扑

GET /api/demo/software-a/apps/{app_code}/topology?env=test

5.9 权限校验

POST /api/demo/software-a/permissions/check

请求示例:

{
  "operator": {
    "user_id": "u1001",
    "user_name": "alice"
  },
  "action_type": "DEPLOY",
  "app_code": "order-service",
  "env": "test"
}

响应示例:

{
  "request_id": "req-sa-009",
  "success": true,
  "code": "OK",
  "message": "success",
  "data": {
    "allowed": true,
    "reason": ""
  },
  "timestamp": "2026-04-08 14:31:00.123"
}

6. 身份 Demo 接口

6.1 设计说明

身份 demo 用于 MVP 阶段闭环,不要求完全模拟现网身份系统,但必须支持:

  1. 登录。
  2. 用户信息查询。
  3. 角色信息查询。
  4. 基础权限集合返回。

建议 base path:

/api/demo/identity

6.2 登录

POST /api/demo/identity/login

请求示例:

{
  "username": "alice",
  "password": "demo-password"
}

响应示例:

{
  "request_id": "req-id-001",
  "success": true,
  "code": "OK",
  "message": "login success",
  "data": {
    "access_token": "demo-token-alice",
    "expires_in_seconds": 7200,
    "user": {
      "user_id": "u1001",
      "user_name": "alice",
      "display_name": "Alice",
      "roles": [
        "DEPLOY_OPERATOR"
      ],
      "tenant_id": "tenant-demo"
    }
  },
  "timestamp": "2026-04-08 14:00:00.123"
}

6.3 获取当前用户信息

GET /api/demo/identity/me

6.4 查询用户权限

GET /api/demo/identity/users/{user_id}/permissions

响应 data 建议包含:

  1. user_id
  2. roles
  3. permissions
  4. allowed_envs
  5. allowed_apps

6.5 验证 Token

POST /api/demo/identity/token/introspect


7. 审批 Demo 接口

7.1 设计说明

审批 demo 用于高风险动作闭环,至少支持:

  1. 创建审批单。
  2. 查询审批单。
  3. 通过或驳回审批。
  4. 审批记录留痕。

建议 base path:

/api/demo/approval

7.2 创建审批单

POST /api/demo/approval/requests

请求示例:

{
  "task_id": "task-20260408-888",
  "risk_level": "HIGH",
  "operator": {
    "user_id": "u1001",
    "user_name": "alice"
  },
  "action_type": "RESTART_SERVICE",
  "target": {
    "app_code": "user-service",
    "env": "prod"
  },
  "reason": "生产故障恢复",
  "approvers": [
    "u2001"
  ]
}

响应示例:

{
  "request_id": "req-ap-001",
  "success": true,
  "code": "OK",
  "message": "approval created",
  "data": {
    "approval_id": "ap-20260408-001",
    "approval_status": "PENDING"
  },
  "timestamp": "2026-04-08 14:40:00.123"
}

7.3 查询审批单

GET /api/demo/approval/requests/{approval_id}

7.4 审批决策

POST /api/demo/approval/requests/{approval_id}/decision

请求示例:

{
  "decision": "APPROVED",
  "comment": "同意执行",
  "operator": {
    "user_id": "u2001",
    "user_name": "bob"
  }
}

decision 可选值:

["APPROVED", "REJECTED"]

7.5 查询待审批列表

GET /api/demo/approval/requests?approval_status=PENDING&approver_user_id=u2001


8. 建议的内部对象结构

8.1 Task 对象

{
  "task_id": "task-20260408-001",
  "session_id": "sess-001",
  "tenant_id": "tenant-demo",
  "operator": {
    "user_id": "u1001",
    "user_name": "alice"
  },
  "action_type": "DEPLOY",
  "app_code": "order-service",
  "env": "test",
  "version": "1.2.3",
  "target_nodes": [
    "10.0.0.12"
  ],
  "risk_level": "MEDIUM",
  "approval_status": "NOT_REQUIRED",
  "task_status": "RUNNING"
}

8.2 ToolCall 对象

{
  "tool_call_id": "tool-call-001",
  "task_id": "task-20260408-001",
  "tool_name": "deploy_package",
  "request_payload": {},
  "response_payload": {},
  "success": true,
  "duration_ms": 1200,
  "started_at": "2026-04-08 14:31:00.123",
  "finished_at": "2026-04-08 14:31:01.456"
}

8.3 Approval 对象

{
  "approval_id": "ap-20260408-001",
  "task_id": "task-20260408-888",
  "approval_status": "PENDING",
  "approvers": [
    "u2001"
  ],
  "decision_logs": []
}

9. 典型时序

9.1 部署时序

  1. 用户调用 POST /api/agent/tasks 发起自然语言请求。
  2. Agent 完成解析并返回 task_id 和结构化结果。
  3. 用户调用确认接口。
  4. Agent 调用身份 demo 获取操作者信息和权限。
  5. Agent 调用软件 A demo 权限校验。
  6. Agent 调用软件 A demo 创建部署任务。
  7. Agent 轮询软件 A demo 查询状态。
  8. Agent 调用 Edge 接口执行本地验证。
  9. Agent 汇总结果,更新任务状态并生成报告。

9.2 高风险审批时序

  1. 用户发起高风险任务。
  2. Agent 判定需要审批。
  3. Agent 调用审批 demo 创建审批单。
  4. 审批人完成审批。
  5. Agent 检查审批结果。
  6. 审批通过后进入执行。

10. demo 与正式系统的替换原则

  1. Agent 上层只依赖统一语义接口,不直接依赖 demo 接口字段差异。
  2. 软件 A demo、身份 demo、审批 demo 均应封装在适配层后面。
  3. 后续替换真实系统时,优先保持上层对象模型不变。
  4. 如真实系统能力不足,应在适配层内做降级,而不是修改编排主链路。

11. 推荐开发顺序

  1. 先完成通用响应格式、错误码和枚举定义。
  2. 再完成 Agent 对外任务接口。
  3. 再完成软件 A demo 接口。
  4. 再完成身份 demo 和审批 demo。
  5. 最后完成本地 Agent 拉取任务与结果回传接口。

这样可以最短路径打通 MVP 主链路。