feat(rdp): 新增 RDP 远程桌面/SMB/账单同步能力 + 清理编译产物
主要变更: - 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>
This commit is contained in:
1 parent
777d9e4e71
commit
76ec9387f0
202 files changed
+16555
-2543
No files matched your search
@@ -18,13 +18,42 @@ import (
|
||||
"ezops/pkg/agentcli/llm"
|
||||
"ezops/pkg/agentcli/safety"
|
||||
"ezops/pkg/agentcli/tools"
|
||||
k8sclient "ezops/pkg/kubernetesclient"
|
||||
"ezops/pkg/remoteexec"
|
||||
)
|
||||
|
||||
// EngineConfig 引擎配置(由 controller 从 model.LLMConfig + model.Server 构建后注入) // Logan.Li
|
||||
// RunMode Agent 运行模式 // Logan.Li
|
||||
const (
|
||||
RunModeHost = "host"
|
||||
RunModeKubernetes = "kubernetes"
|
||||
)
|
||||
|
||||
// NormalizeRunMode 规范化运行模式(兼容旧 k8s 参数) // Logan.Li
|
||||
func NormalizeRunMode(mode string) string {
|
||||
if mode == "k8s" || mode == RunModeKubernetes {
|
||||
return RunModeKubernetes
|
||||
}
|
||||
if mode == "" {
|
||||
return RunModeHost
|
||||
}
|
||||
return mode
|
||||
}
|
||||
|
||||
// KubernetesTarget Kubernetes 模式目标上下文(由 controller 注入) // Logan.Li
|
||||
type KubernetesTarget struct {
|
||||
Client *k8sclient.Client
|
||||
ClusterName string
|
||||
Namespace string
|
||||
PodName string
|
||||
Container string
|
||||
}
|
||||
|
||||
// EngineConfig 引擎配置(由 controller 从 model.LLMConfig + 目标上下文构建后注入) // Logan.Li
|
||||
type EngineConfig struct {
|
||||
Mode string // host | kubernetes
|
||||
LLM llm.Config // LLM 客户端配置(endpoint 已解析)
|
||||
SSH remoteexec.SSHConfig // 目标主机 SSH 配置(含凭据)
|
||||
SSH remoteexec.SSHConfig // 主机模式 SSH 配置
|
||||
Kubernetes *KubernetesTarget // Kubernetes 模式目标
|
||||
SafetyMode safety.Mode // 安全模式(默认 balanced)
|
||||
Core *core.Config // ReAct 配置(nil 用默认)
|
||||
MemoryDir string // Evolver 记忆目录(空则 data/agentcli)
|
||||
@@ -47,25 +76,40 @@ func NewEngine(cfg EngineConfig) (*Engine, error) {
|
||||
if cfg.MemoryDir != "" {
|
||||
coreCfg.MemoryDir = cfg.MemoryDir
|
||||
}
|
||||
mode := cfg.SafetyMode
|
||||
if mode == "" {
|
||||
mode = safety.ModeBalanced
|
||||
safetyMode := cfg.SafetyMode
|
||||
if safetyMode == "" {
|
||||
safetyMode = safety.ModeBalanced
|
||||
}
|
||||
|
||||
// LLM 客户端
|
||||
client := llm.NewClient(cfg.LLM)
|
||||
|
||||
// 工具注册中心:ssh_execute(SSH 长连接)+ analyze_output
|
||||
// 工具注册中心:按模式注册互斥工具集 // Logan.Li
|
||||
registry := tools.NewRegistry()
|
||||
sshTool, err := tools.NewSSHExecuteTool(cfg.SSH, coreCfg.ToolTimeout)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("ssh_execute 初始化失败: %w", err)
|
||||
runMode := NormalizeRunMode(cfg.Mode)
|
||||
coreCfg.Mode = runMode
|
||||
|
||||
switch runMode {
|
||||
case RunModeKubernetes:
|
||||
if cfg.Kubernetes == nil || cfg.Kubernetes.Client == nil {
|
||||
return nil, fmt.Errorf("Kubernetes 模式缺少集群客户端")
|
||||
}
|
||||
kt := cfg.Kubernetes
|
||||
registry.Register(tools.NewKubernetesGetTool(kt.Client, kt.Namespace))
|
||||
registry.Register(tools.NewPodLogsTool(kt.Client, kt.Namespace, kt.PodName, kt.Container))
|
||||
registry.Register(tools.NewPodExecuteTool(kt.Client, kt.Namespace, kt.PodName, kt.Container, coreCfg.ToolTimeout))
|
||||
registry.Register(tools.NewKubernetesActionTool(kt.Client, kt.Namespace))
|
||||
default:
|
||||
sshTool, err := tools.NewSSHExecuteTool(cfg.SSH, coreCfg.ToolTimeout)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("ssh_execute 初始化失败: %w", err)
|
||||
}
|
||||
registry.Register(sshTool)
|
||||
}
|
||||
registry.Register(sshTool)
|
||||
registry.Register(tools.NewAnalyzeOutputTool())
|
||||
|
||||
// 安全控制器
|
||||
sc := safety.NewController(mode)
|
||||
sc := safety.NewController(safetyMode)
|
||||
|
||||
// Evolver(LLM 可用时启用学习;失败降级)
|
||||
ev, err := evolver.NewEvolverEngine(coreCfg.MemoryDir, client)
|
||||
@@ -86,9 +130,9 @@ func (e *Engine) SetConfirmFn(fn safety.ConfirmFn) { e.safety.SetConfirmFn(fn) }
|
||||
// SetAutoApprove 测试用:自动批准(生产禁用) // Logan.Li
|
||||
func (e *Engine) SetAutoApprove(b bool) { e.safety.SetAutoApprove(b) }
|
||||
|
||||
// Run 执行任务(ReAct 循环);prior 为上一轮对话历史(不含 system),priorTokens 为累计 token // Logan.Li
|
||||
func (e *Engine) Run(ctx context.Context, query, serverInfo string, prior []llm.Message, priorTokens int) (*core.RunResult, error) {
|
||||
return e.agent.Run(ctx, query, serverInfo, prior, priorTokens)
|
||||
// Run 执行任务(ReAct 循环);targetInfo 为目标上下文摘要;prior 为上一轮对话历史(不含 system) // Logan.Li
|
||||
func (e *Engine) Run(ctx context.Context, query, targetInfo string, prior []llm.Message, priorTokens int) (*core.RunResult, error) {
|
||||
return e.agent.Run(ctx, query, targetInfo, prior, priorTokens)
|
||||
}
|
||||
|
||||
// EvolveStats 进化统计(供审计展示) // Logan.Li
|
||||
|
||||
Reference in new issue
Block a user