主要变更: - RDP 远程桌面:新增 backend/pkg/rdp(RDP 引擎 + credssp/display/rle/trace)、 backend/controller/rdp*(连接/凭证/文件/会话/实时)、frontend RDP 组件与 API - Windows SMB 文件传输:backend/pkg/winsmb - 云账单同步:backend/pkg/billingsync + billing_sync/aliyun_billing,前端账单详情 - Agent CLI Kubernetes 工具:kubernetes_action/get、pod_execute/logs - 服务器导入助手:server_import_helpers、ImportCredentialSettings - 国际化与组件重构(cloud/deploy/monitor/server/system 等多模块) - 清理编译产物二进制:移除 backend/server、backend/agent/bin/aiops-agent-* - .gitignore:新增 backend/agent/ 与 .cache/(避免 334MB go-build 缓存误入库) Co-Authored-By: Claude <noreply@anthropic.com>
56 lines
3.4 KiB
Go
56 lines
3.4 KiB
Go
// agent_cli.go - Agent CLI 会话与消息持久化模型 // Logan.Li
|
|
// 记录 AI 运维 Agent 的每次任务(关联主机 + 用户)及其 ReAct 推理过程
|
|
// (思考/工具调用/输出/结果),供前端历史回放与审计。
|
|
package model
|
|
|
|
import "time"
|
|
|
|
// AgentCLISession Agent CLI 任务会话 // Logan.Li
|
|
type AgentCLISession struct {
|
|
ID uint `gorm:"primarykey" json:"id"`
|
|
UserID uint `gorm:"index" json:"user_id"` // 发起用户
|
|
Mode string `gorm:"size:16;default:host;index" json:"mode"` // host | kubernetes
|
|
ServerID uint `gorm:"index" json:"server_id"` // 主机模式目标主机
|
|
ServerName string `gorm:"size:128" json:"server_name"` // 主机名快照
|
|
ServerHost string `gorm:"size:64" json:"server_host"` // 主机 IP 快照
|
|
ClusterID uint `gorm:"index" json:"cluster_id"` // K8s 模式集群 ID
|
|
ClusterName string `gorm:"size:128" json:"cluster_name"` // 集群名快照
|
|
Namespace string `gorm:"size:128" json:"namespace"` // K8s 命名空间
|
|
PodName string `gorm:"size:128" json:"pod_name"` // 可选目标 Pod
|
|
Container string `gorm:"size:128" json:"container"` // 可选目标容器
|
|
Title string `gorm:"size:255" json:"title"` // 任务标题(query 截断)
|
|
Status string `gorm:"size:32;default:running" json:"status"` // running/done/aborted/error
|
|
Provider string `gorm:"size:50" json:"provider"` // LLM 提供商
|
|
Model string `gorm:"size:100" json:"model"` // 模型名
|
|
Rounds int `json:"rounds"` // ReAct 轮次
|
|
TotalTokens int `json:"total_tokens"` // token 消耗
|
|
Duration int64 `json:"duration"` // 耗时(毫秒)
|
|
Error string `gorm:"type:text" json:"error,omitempty"` // 错误信息
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
// TableName 表名 // Logan.Li
|
|
func (AgentCLISession) TableName() string { return "agent_cli_sessions" }
|
|
|
|
// AgentCLIMessage Agent CLI 任务消息(ReAct 推理过程的每一步) // Logan.Li
|
|
type AgentCLIMessage struct {
|
|
ID uint `gorm:"primarykey" json:"id"`
|
|
SessionID uint `gorm:"index;not null" json:"session_id"`
|
|
Round int `json:"round"` // ReAct 轮次
|
|
Type string `gorm:"size:32" json:"type"` // thought/tool_call/tool_result/done/error/session
|
|
Role string `gorm:"size:32" json:"role"` // user/assistant/tool
|
|
Content string `gorm:"type:text" json:"content"` // 思考文本/最终答案
|
|
ToolName string `gorm:"size:64" json:"tool_name"` // 工具名
|
|
ToolArgs string `gorm:"type:text" json:"tool_args"` // 工具参数 JSON
|
|
ToolOutput string `gorm:"type:text" json:"tool_output"` // 工具输出
|
|
Risk string `gorm:"size:32" json:"risk"` // 风险等级
|
|
Success bool `json:"success"`
|
|
Duration string `gorm:"size:32" json:"duration"` // 工具耗时
|
|
Tokens int `json:"tokens"`
|
|
CreatedAt time.Time `gorm:"index" json:"created_at"`
|
|
}
|
|
|
|
// TableName 表名 // Logan.Li
|
|
func (AgentCLIMessage) TableName() string { return "agent_cli_messages" }
|