- 支持 Windows Agent 构建、安装脚本和统一上报协议 - 增强 RDP 剪贴板、虚拟盘和文件传输能力 - 新增 AIOps 上下文工具、告警 RCA trace 落库和回放接口 - 重构 docs 模块文档并补充终端、堡垒机、监控、AI Agent 设计
3.9 KiB
3.9 KiB
04 - 工具与 ACI 设计
ACI 是 Agent-Computer Interface:给模型使用的“机器接口”,不是给人点的 UI。AIOps Agent CLI 的工具设计应把运维能力包装成少量、稳定、可审计、可控的动作。// Logan.Li
设计目标
工具层解决三个问题:
- 模型如何接触真实环境。
- 平台如何限制模型能做什么。
- 审计如何复盘模型做过什么。
这和 SWE-agent 提出的 ACI 思路一致:模型不是普通人类用户,它需要简洁、结构化、反馈明确的接口,而不是把完整 Shell、控制台或页面直接暴露出去。
Tool 接口
当前工具接口位于 backend/pkg/agentcli/tools/registry.go:
type Tool interface {
Name() string
Description() string
Parameters() map[string]interface{}
RiskLevel() RiskLevel
Execute(ctx context.Context, args map[string]interface{}) (*Result, error)
}
| 方法 | 设计要求 |
|---|---|
Name() |
稳定、短、语义清楚,例如 ssh_execute |
Description() |
告诉模型何时使用,不写产品介绍 |
Parameters() |
JSON Schema 参数,字段越少越好 |
RiskLevel() |
静态风险等级 |
Execute() |
执行真实动作,返回结构化结果 |
动态风险接口
执行型工具的风险取决于参数,因此需要实现:
type DynamicRiskTool interface {
Tool
RiskLevelForArgs(args map[string]interface{}) RiskLevel
}
示例:
| 工具调用 | 风险 |
|---|---|
ssh_execute{"command":"df -h"} |
safe |
ssh_execute{"command":"systemctl restart nginx"} |
high |
ssh_execute{"command":"mkfs.ext4 /dev/sda"} |
critical |
当前工具清单
Host 模式
| 工具 | 作用 | 风险 |
|---|---|---|
ssh_execute |
在目标主机执行命令 | 动态风险 |
analyze_output |
分析长输出、错误日志、命令结果 | safe |
Kubernetes 模式
| 工具 | 作用 | 风险 |
|---|---|---|
kubernetes_get |
查询资源、事件、状态 | safe |
pod_logs |
获取 Pod / Container 日志 | safe |
pod_execute |
在容器内执行命令 | 动态风险 |
kubernetes_action |
执行重启、扩缩容、删除等变更 | high |
analyze_output |
分析长输出 | safe |
工具编排范式
主机排障
ssh_execute("只读检查")
→ ssh_execute("读取日志")
→ analyze_output("压缩长输出")
→ ssh_execute("确认后修复")
→ ssh_execute("验证结果")
→ done
Kubernetes 排障
kubernetes_get("pods/events")
→ pod_logs("查看业务错误")
→ pod_execute("必要时进容器确认")
→ kubernetes_action("确认后变更")
→ kubernetes_get("回查状态")
→ done
ACI 设计原则
| 原则 | AIOps 约束 |
|---|---|
| 小动作 | 一次工具调用只做一个明确动作 |
| 强反馈 | 输出包含 success、output、error、duration |
| 可恢复 | 失败输出要能指导下一步,而不是只返回 “failed” |
| 可审计 | 工具名、参数、风险、输出都落库 |
| 可控权 | 工具注册受模式、用户权限、资产权限和策略控制 |
| 可裁剪 | 工具输出能摘要、截断、脱敏 |
不应暴露的工具
| 工具类型 | 原因 |
|---|---|
| 后端本机 shell | 多用户平台风险高,容易越权 |
| 任意 HTTP 请求 | 容易形成 SSRF |
| 任意文件读写 | 绕过资产文件权限和堡垒机审计 |
| 明文凭据读取 | 凭据只能由平台注入工具,不给模型展示 |
| 超大批量操作 | 容易造成成本、可用性和误操作风险 |
新增工具检查清单
- 是否真的需要新工具,还是已有工具能完成。
- 是否有明确成功/失败输出。
- 参数是否最小化。
- 是否实现风险等级。
- 是否能按用户权限禁用。
- 是否会泄露敏感输出。
- 是否有审计字段。
- 是否需要审批流。