RunResult 增加 Outcome/Reason;触顶标记 incomplete:max_steps; WebSocket finish 区分 incomplete 与 fatal error。补充 ai-agent docs 13 与挂点索引。
77 lines
4.2 KiB
Markdown
77 lines
4.2 KiB
Markdown
# 三产品 AI 运维 Agent 定位与执行边界
|
||
|
||
> 更新:2026-09-03
|
||
> 适用范围:OpsXCLI、OpsXShell、AIOps 三个独立项目的 AI 运维能力。
|
||
|
||
## 设计声明
|
||
|
||
三个项目服务不同的运维入口,必须独立实现目标选择、凭证取得、风险裁决和执行生命周期。可以共享安全原则、结构化结果和评测用例,但不得共享一个可在本机、桌面 SSH 与 Web 平台之间自由切换的“通用远程执行器”。
|
||
|
||
| 项目 | 产品角色 | 唯一默认目标来源 | 凭证边界 | 审计边界 |
|
||
|------|----------|------------------|----------|----------|
|
||
| OpsXCLI | 服务器本机 CLI 运维工具 | 当前操作系统和当前工作目录 | 当前 OS 用户;SSH 仅显式启用并使用本机密钥 | 本机权限受限的会话/执行记录 |
|
||
| OpsXShell | 桌面远程终端助手 | 用户当前活跃 SSH connectionId | 已建立连接内部持有,模型不得选择或读取凭证 | 默认仅当前窗口,不建设堡垒机审计 |
|
||
| AIOps | 多用户 Web 运维管理平台 | 平台授权的资产 ID 或 Kubernetes 目标 | 后端凭证库按权限解析,模型只见目标摘要 | 独立、可检索、不可随聊天会话删除 |
|
||
|
||
## 强制不变量
|
||
|
||
1. OpsXCLI 默认本地执行。远程 SSH 是例外能力,必须显式指定,严格校验 `known_hosts`,不得因校验文件缺失而降级为信任所有主机。
|
||
2. OpsXShell Agent 只能复用任务开始时的活跃 SSH 连接。执行期间连接改变、断开或被替换时,任务必须停止,不得自动切换到其他标签或保存的主机。
|
||
3. AIOps Agent 只能使用后端注入的平台目标和凭证。模型不得提供任意 IP、用户名、密码、私钥路径或集群凭证绕过资产系统。
|
||
4. 工具结果和错误必须先脱敏,再进入模型上下文、UI、记忆、缓存或持久化。
|
||
5. 风险确认只批准精确的目标与命令。目标、命令或参数发生变化后必须重新裁决。
|
||
6. 自动学习内容默认不可信,未经审核不得成为无人值守执行依据。
|
||
|
||
## 统一结果语义
|
||
|
||
三个项目的工具结果至少应表达运行 ID、工具调用 ID、目标摘要、动作摘要、退出码、成功状态、开始/结束时间、超时、取消、脱敏数量和验证结果。具体类型可以独立实现,但语义不得依靠解析自由文本猜测。
|
||
|
||
## 推荐执行链
|
||
|
||
```text
|
||
用户意图
|
||
→ 生成计划
|
||
→ 锁定产品内合法目标
|
||
→ 参数与风险校验
|
||
→ 必要时人工确认/平台审批
|
||
→ 独立执行器执行
|
||
→ 输出脱敏
|
||
→ 结果验证
|
||
→ 产品范围内审计或会话记录
|
||
```
|
||
|
||
## 禁止的错误复用
|
||
|
||
- 不把 OpsXCLI 的本机任意 Shell 直接暴露给 AIOps Web 用户。
|
||
- 不让 OpsXShell Agent 创建第二套 SSH 连接或读取保存凭证。
|
||
- 不把 AIOps 的平台审批、资产库存和永久审计强加给轻量桌面终端。
|
||
- 不以共享正则文件代替各项目执行前的最终安全裁决。
|
||
|
||
## 演进优先级
|
||
|
||
- P0:脱敏、目标锁定、危险操作拒绝、超时与真实取消、记忆不自动获得执行权。
|
||
- P1:结构化结果、只读诊断工具、执行后验证、目标与命令绑定确认。
|
||
- P2:版本化 Runbook、受控经验库、场景评测、跨资产自动化与熔断。
|
||
|
||
---
|
||
|
||
## 统一结果状态衔接(2026-09-18 增补)// Logan.Li
|
||
|
||
**边界优先**:统一结果状态 ≠ 统一执行平面。不削弱上文三产品隔离;不得共享可跨入口自由切换的通用远程执行器。
|
||
|
||
三产品应对用户暴露同一套语义(实现可分阶段):
|
||
|
||
`completed` | `incomplete` | `failed` | `cancelled` | `awaiting_confirm`
|
||
|
||
`incomplete` reason:`max_steps` / `context_budget` / `tool_timeout` / `llm_timeout` / `connection_lost` / `safety_abort`
|
||
|
||
详见 [13-运行结果状态与可续跑契约](13-运行结果状态与可续跑契约.md)。
|
||
|
||
| 产品 | 默认步数预算 | 触顶现状 | 目标 |
|
||
|------|--------------|----------|------|
|
||
| opsxcli | MaxIterations=16 | 硬失败文案 | incomplete + 可续 |
|
||
| aiops agentcli | MaxIterations=16 | 硬停 | 同上;续聊已有 prior |
|
||
| opsxshell | `MAX_AGENT_STEPS=12` | 抛错 | 同上;仍绑当前 connectionId |
|
||
|
||
Shell 侧短文:`opsxshell/docs/01-AI-Agent步数预算与incomplete.md`。
|