feat: 完善堡垒机与 Agent 智能运维能力

- 支持 Windows Agent 构建、安装脚本和统一上报协议

- 增强 RDP 剪贴板、虚拟盘和文件传输能力

- 新增 AIOps 上下文工具、告警 RCA trace 落库和回放接口

- 重构 docs 模块文档并补充终端、堡垒机、监控、AI Agent 设计
This commit is contained in:
Logan.Li committed 2026-07-05 23:49:36 +08:00
1 parent a9513c2056
commit e0d652d211
169 files changed
+12192 -9116

No files matched your search

+142 -20
View File
@@ -522,7 +522,14 @@
"zoomOut": "Zoom Out",
"username": "Username",
"password": "Password",
"port": "Port"
"port": "Port",
"unnamed": "Unnamed",
"default": "Default",
"saved": "Saved",
"createFailed": "Create failed",
"created": "Created",
"severity": "Severity",
"critical": "Critical"
},
"menu": {
"dashboard": "Dashboard",
@@ -570,7 +577,7 @@
"scripts": "Scripts",
"remoteExec": "Remote Exec",
"aiops": "AIOps",
"aiAssistant": "AI Assistant",
"aiAssistant": "Assistant",
"aiAlertAnalyzer": "Alert Analysis",
"aiPredictive": "Predictive Analytics",
"aiAgentCli": "Agent CLI",
@@ -997,16 +1004,11 @@
"syncButton": "Sync to Remote",
"uploadFile": "Upload File",
"uploading": "Uploading...",
"noFiles": "No files (SMB 445 must be reachable to list)",
"downloading": "Loading...",
"smbHint": "Prefer SMB direct transfer; if port 445 is blocked, auto-stages to AIOps and uses RDP download command.",
"syncSuccess": "Synced to remote",
"emptyContent": "Content is empty",
"clipboardHint": "Cannot auto-read clipboard, please Ctrl+V to paste (auto-read available under HTTPS)",
"uploadedToDownload": "{{name}} uploaded to Download",
"autoSent": "{{name}} auto-delivered (fallback when SMB unavailable)",
"downloadStarted": "Download started: {{name}}",
"listFileError": "Cannot list remote files (SMB 445 may be blocked)",
"uploadFailed": "Upload failed",
"downloadFailed": "Download failed"
},
@@ -1129,6 +1131,8 @@
"webshellLoggingIn": "Logging in...",
"general": "General",
"rdpFiles": "Files",
"rdpClipboard": "Clipboard",
"clipboardReady": "Captured",
"remoteClipboard": "Remote Clipboard",
"remoteClipPlaceholder": "Remote copied content will display here",
"syncToRemote": "Sync to Remote",
@@ -1136,18 +1140,81 @@
"syncButton": "Sync to Remote",
"uploadFile": "Upload File",
"rdpUploading": "Uploading...",
"noRdpFiles": "No files (requires SMB 445 reachable to list)",
"rdpLoading": "Loading...",
"smbHint": "Prefer SMB direct transfer; if port 445 unreachable, auto-stage to AIOps and RDP executes download command.",
"syncedToRemote": "Synced to remote",
"emptyContent": "Content is empty",
"clipboardHint": "Cannot auto-read clipboard, please Ctrl+V to paste (auto-read available under HTTPS)",
"uploadedToDownload": "{{name}} uploaded to Download",
"autoSent": "{{name}} auto-delivered (fallback when SMB unavailable)",
"uploadedToVirtualDrive": "{{name}} staged in AIOps\\Upload",
"aiopsVirtualDrive": "AIOps on Go-client",
"aiopsVirtualDriveLocation": "This PC > AIOps on Go-client",
"uploadToVirtualDrive": "Upload to Drive",
"rdpUploadHint": "Select or drop a file, max {{limit}}",
"downloadStarted": "Download started: {{name}}",
"listFileError": "Cannot list remote files (SMB 445 may be unreachable)",
"rdpUploadFailed": "Upload failed",
"rdpDownloadFailed": "Download failed"
"rdpUploadTooLarge": "File exceeds {{limit}}, please upload in batches",
"rdpUploadStatus": {
"reading": "Reading local file",
"sending": "Sending to RDP session",
"staged": "Staged, copy it from AIOps\\Upload on the remote desktop",
"failed": "Upload failed, please retry"
},
"rdpDownloadFailed": "Download failed",
"rdpDialog": {
"waiting": "Waiting for connection",
"bitmapDecodeFailed": "RDP bitmap decode failed",
"rawFrameDrawFailed": "RDP raw frame draw failed",
"bitmapDrawFailed": "RDP bitmap draw failed, received {{count}} frames",
"creating": "Creating RDP session...",
"unparseableFrame": "Received unparseable RDP frame",
"connectionError": "RDP connection error",
"connectionClosed": "RDP connection closed",
"graphicSession": "Windows RDP graphic session",
"tools": "Tools",
"synced": "Synced to remote",
"remoteCopyRequested": "Requested remote copy, waiting for clipboard data",
"downloadStarted": "Download started: {{name}}",
"uploadStaged": "Staged in AIOps\\Upload: {{name}}",
"autoExecuting": "Auto-executing upload command..."
},
"importCred": {
"sshPort": "SSH Port",
"linuxDefault": "(Linux default)",
"sshCredential": "Linux SSH Credential",
"optional": "(optional)",
"noSshCred": "No SSH credentials",
"noCredential": "No credential",
"rdpPassword": "Windows RDP Password",
"noRdpCred": "No RDP credentials"
},
"statusBadge": {
"running": "Running",
"stopped": "Stopped",
"maintenance": "Maintenance",
"offline": "Offline"
},
"table": {
"cores": " cores",
"memory": "Mem",
"connections": " conn",
"read": "R",
"write": "W",
"terminal": "Terminal",
"files": "Files",
"rdpLogin": "RDP Login",
"terminalLogin": "Terminal Login"
},
"pasteToRemote": "Paste to Remote",
"copyFromRemote": "Copy Remote",
"remoteClipEmpty": "Remote clipboard is empty",
"remoteCopyRequested": "Sent Ctrl+C to remote, waiting for clipboard data",
"copiedToLocal": "Copied to local clipboard",
"copyFailed": "Copy failed",
"manualSync": "Manual input & sync",
"sessionPolicy": {
"restricted": "Current session policy restricts some clipboard or file actions",
"clipboardDisabled": "Clipboard is disabled by session policy",
"fileUploadDisabled": "File upload is disabled by session policy",
"fileDownloadDisabled": "File download is disabled by session policy"
}
},
"alert": {
"stat": {
@@ -2044,6 +2111,22 @@
"allType": "All Types",
"pagination": "{{n}}/page"
},
"credForm": {
"pageSubtitle": "Manage Git repositories, registries, environments, build nodes, and deploy tools",
"gitRepo": "Git Repository",
"imageRegistry": "Image Registry",
"newRepo": "New Repository",
"newRegistry": "New Registry",
"noRepo": "No Git repositories",
"noRegistry": "No image registries",
"namespace": "Namespace",
"repoNamePlaceholder": "e.g. aiops-backend",
"registryNamePlaceholder": "e.g. harbor-prod",
"namespacePlaceholder": "e.g. library / devops",
"credHint": "Use system credential",
"dockerPwd": "Docker password",
"noCredHint": "No {{type}} credential. Create one in Credential Management first."
},
"releaseCreate": {
"commitMsg": "Commit Message",
"commitMsgPlaceholder": "feat: add new feature",
@@ -4657,6 +4740,12 @@
"lastMonth": "Last month",
"thisQuarter": "This quarter",
"thisYear": "This year"
},
"channel": {
"dingtalk": "DingTalk",
"wechat": "WeChat Work",
"email": "Email",
"sms": "SMS"
}
},
"task": {
@@ -7087,6 +7176,20 @@
"batchDeleteFailed": "Batch delete failed",
"singleSignOnDesc": "One account can only be logged in on one device",
"sessionSettings": "Session Settings",
"sessionWatermark": "Session User Watermark",
"sessionWatermarkDesc": "Show current login user \"{{user}}\" on RDP/terminal views",
"sessionRecordEnabled": "Session Recording",
"sessionRecordEnabledDesc": "Record SSH/RDP sessions and keep replay data",
"clipboardEnabled": "Allow Clipboard",
"clipboardEnabledDesc": "Allow bidirectional text clipboard sync between browser and remote host",
"fileUploadEnabled": "Allow File Upload",
"fileUploadEnabledDesc": "Allow file upload through RDP AIOps drive or terminal file features",
"fileDownloadEnabled": "Allow File Download",
"fileDownloadEnabledDesc": "Allow downloading remote files to the local browser",
"commandPolicyEnabled": "Command Policy",
"commandPolicyEnabledDesc": "Enable command allow/deny lists and high-risk command blocking progressively",
"approvalRequired": "Require Approval",
"approvalRequiredDesc": "Require temporary access approval before remote sessions progressively",
"roleManageDesc": "Modify role information and permissions",
"terminalLiveMonitor": "Live Terminal Monitor",
"systemInfoDesc": "Version and system status",
@@ -7245,7 +7348,8 @@
"title": "AIOps",
"subtitle": "AI Assistant · Alert Analysis · Capacity Forecast",
"aiAssistant": "AI Assistant",
"assistantTitle": "AIOps Assistant",
"assistantTitle": "Assistant",
"aiDrivenAssistant": "AI chat, analysis, and remediation suggestions for ops scenarios",
"assistantPlaceholder": "Ask an ops question to start",
"assistantHint": "Enter an ops question and the AI assistant will analyze and suggest",
"sendMessage": "Send",
@@ -7291,7 +7395,9 @@
"assistantSummary": "Summary",
"assistantNoData": "No data",
"alertAnalysis": "Alert Analysis",
"alertAnalysisTitle": "AI Alert Analysis",
"aiAlertAnalysis": "Alert Analysis",
"alertAnalysisTitle": "Alert Analysis",
"alertRootCauseAnalysis": "Alert root cause analysis and remediation suggestions",
"alertAnalysisDesc": "LLM-based alert root cause analysis and remediation",
"alertAnalysisHint": "Select an alert for AI analysis",
"alertRootCause": "Root Cause Analysis",
@@ -7438,7 +7544,7 @@
"capacityPlanning": "Capacity Planning",
"notConnectedRetry": "Connection not ready; please retry later",
"safetyHighRiskConfirm": "High-risk + confirm",
"aiAssistantShort": "AI Assistant",
"aiAssistantShort": "Assistant",
"recommended": "Recommended",
"endpointLabel": "Endpoint",
"wsConnectFailed": "WebSocket connection failed",
@@ -7820,7 +7926,7 @@
"predictive.s1a2b3c4d": "Metric Forecast",
"predictive.s2b3c4d5e": "Capacity Planning",
"predictive.s3c4d5e6f": "Cost Forecast",
"predictive.s4d5e6f7g": "AI Predictive Analytics",
"predictive.s4d5e6f7g": "Predictive Analysis",
"predictive.s5e6f7g8h": "Linear regression prediction, capacity planning and cost forecasting based on real-time metrics and cloud billing",
"predictive.s6f7g8h9i": "Confidence",
"predictive.s7g8h9i0j": "Predicted month-end",
@@ -7896,7 +8002,7 @@
"approvalPermission": "Permission Approval",
"approvalWorkflow": "Approval Workflow",
"scripts": "Scripts",
"aiAssistant": "AI Assistant",
"aiAssistant": "Assistant",
"aiAlertAnalyzer": "Alert Analysis",
"aiPredictive": "Predictive Analysis",
"users": "Users",
@@ -7966,5 +8072,21 @@
"apiaccesskey.s4b5c6d7e": "Credential copied",
"apiaccesskey.s5c6d7e8f": "I've saved it",
"apiaccesskey.s6d7e8f9g": "Your access credential"
},
"logCenter": {
"saveQuery": "Save as Query",
"saveAsAlert": "Save as Alert",
"queryName": "Query Name",
"queryNamePlaceholder": "Enter query name",
"alertName": "Alert Name",
"alertNamePlaceholder": "Enter alert rule name",
"triggerCondition": "Trigger Condition",
"createAlert": "Create Alert",
"createFromQuery": "Created from query: {{name}}",
"defaultDatasource": "Default datasource",
"alertRuleCreated": "Alert rule created",
"quickQuery": "Quick Query",
"quickQueryHint": "{{engine}} common query templates, click to fill",
"entries": "entries"
}
}
}
+142 -20
View File
@@ -522,7 +522,14 @@
"zoomOut": "缩小",
"username": "用户名",
"password": "密码",
"port": "端口"
"port": "端口",
"unnamed": "未命名",
"default": "默认",
"saved": "已保存",
"createFailed": "创建失败",
"created": "已创建",
"severity": "级别",
"critical": "严重"
},
"menu": {
"dashboard": "仪表盘",
@@ -997,16 +1004,11 @@
"syncButton": "同步到远端",
"uploadFile": "上传文件",
"uploading": "上传中...",
"noFiles": "暂无文件(需 SMB 445 可达才能列出)",
"downloading": "加载中...",
"smbHint": "优先 SMB 直传(一键);若 445 不通则自动暂存到 AIOps 并由 RDP 执行下载命令。",
"syncSuccess": "已同步到远端",
"emptyContent": "内容为空",
"clipboardHint": "无法自动读取剪贴板,请 Ctrl+V 粘贴(HTTPS 下可自动读取)",
"uploadedToDownload": "{{name}} 已上传到 Download",
"autoSent": "{{name}} 已自动下发(SMB 不可用时的回退模式)",
"downloadStarted": "已开始下载 {{name}}",
"listFileError": "无法列出远端文件(SMB 445 可能未开放)",
"uploadFailed": "上传失败",
"downloadFailed": "下载失败"
},
@@ -1129,6 +1131,8 @@
"webshellLoggingIn": "正在登录...",
"general": "通用",
"rdpFiles": "文件",
"rdpClipboard": "剪贴板",
"clipboardReady": "已捕获",
"remoteClipboard": "远端剪贴板",
"remoteClipPlaceholder": "远端复制内容将显示在此",
"syncToRemote": "同步到远端",
@@ -1136,18 +1140,81 @@
"syncButton": "同步到远端",
"uploadFile": "上传文件",
"rdpUploading": "上传中...",
"noRdpFiles": "暂无文件(需 SMB 445 可达才能列出)",
"rdpLoading": "加载中...",
"smbHint": "优先 SMB 直传(一键);若 445 不通则自动暂存到 AIOps 并由 RDP 执行下载命令。",
"syncedToRemote": "已同步到远端",
"emptyContent": "内容为空",
"clipboardHint": "无法自动读取剪贴板,请 Ctrl+V 粘贴(HTTPS 下可自动读取)",
"uploadedToDownload": "{{name}} 已上传到 Download",
"autoSent": "{{name}} 已自动下发(SMB 不可用时的回退模式)",
"uploadedToVirtualDrive": "{{name}} 已暂存到 AIOps\\Upload",
"aiopsVirtualDrive": "Go-client 上的 AIOps",
"aiopsVirtualDriveLocation": "此电脑 > Go-client 上的 AIOps",
"uploadToVirtualDrive": "上传到虚拟盘",
"rdpUploadHint": "选择或拖入文件,最大 {{limit}}",
"downloadStarted": "已开始下载 {{name}}",
"listFileError": "无法列出远端文件(SMB 445 可能未开放)",
"rdpUploadFailed": "上传失败",
"rdpDownloadFailed": "下载失败"
"rdpUploadTooLarge": "文件超过 {{limit}},请分批上传",
"rdpUploadStatus": {
"reading": "正在读取本地文件",
"sending": "正在发送到 RDP 会话",
"staged": "已暂存,远端可从 AIOps\\Upload 复制",
"failed": "上传失败,请重试"
},
"rdpDownloadFailed": "下载失败",
"rdpDialog": {
"waiting": "等待连接",
"bitmapDecodeFailed": "RDP 位图解码失败",
"rawFrameDrawFailed": "RDP 原始帧绘制失败",
"bitmapDrawFailed": "RDP 位图绘制失败,已收 {{count}} 帧",
"creating": "正在创建 RDP 会话...",
"unparseableFrame": "收到无法解析的 RDP 帧",
"connectionError": "RDP 连接发生错误",
"connectionClosed": "RDP 连接已关闭",
"graphicSession": "Windows RDP 图形会话",
"tools": "工具",
"synced": "已同步到远端",
"remoteCopyRequested": "已请求远端复制,等待剪贴板回传",
"downloadStarted": "已开始下载 {{name}}",
"uploadStaged": "已放入 AIOps\\Upload:{{name}}",
"autoExecuting": "正在自动执行上传命令..."
},
"importCred": {
"sshPort": "SSH 端口",
"linuxDefault": "(Linux 默认)",
"sshCredential": "Linux SSH 凭证",
"optional": "(可选)",
"noSshCred": "暂无 SSH 凭证",
"noCredential": "不使用凭证",
"rdpPassword": "Windows RDP 密码",
"noRdpCred": "暂无 RDP 凭证"
},
"statusBadge": {
"running": "运行中",
"stopped": "已停止",
"maintenance": "维护中",
"offline": "离线"
},
"table": {
"cores": "核",
"memory": "内存",
"connections": "连接",
"read": "读",
"write": "写",
"terminal": "终端",
"files": "文件",
"rdpLogin": "RDP 登录",
"terminalLogin": "终端登录"
},
"pasteToRemote": "粘贴到远端",
"copyFromRemote": "复制远端内容",
"remoteClipEmpty": "远端剪贴板为空",
"remoteCopyRequested": "已发送 Ctrl+C 到远端,等待剪贴板回传",
"copiedToLocal": "已复制到本地剪贴板",
"copyFailed": "复制失败",
"manualSync": "手动输入并同步",
"sessionPolicy": {
"restricted": "当前会话策略限制了部分剪贴板或文件操作",
"clipboardDisabled": "会话策略已禁用剪贴板",
"fileUploadDisabled": "会话策略已禁用文件上传",
"fileDownloadDisabled": "会话策略已禁用文件下载"
}
},
"alert": {
"stat": {
@@ -2044,6 +2111,22 @@
"allType": "全部类型",
"pagination": "{{n}}条/页"
},
"credForm": {
"pageSubtitle": "统一管理 Git 仓库、镜像仓库、环境、构建节点和发布工具",
"gitRepo": "Git 仓库",
"imageRegistry": "镜像仓库",
"newRepo": "新建仓库",
"newRegistry": "新建镜像仓库",
"noRepo": "暂无 Git 仓库",
"noRegistry": "暂无镜像仓库",
"namespace": "命名空间",
"repoNamePlaceholder": "例如 aiops-backend",
"registryNamePlaceholder": "例如 harbor-prod",
"namespacePlaceholder": "例如 library / devops",
"credHint": "使用系统凭证",
"dockerPwd": "Docker 密码",
"noCredHint": "暂无{{type}}凭证,可先在凭证管理中创建"
},
"releaseCreate": {
"commitMsg": "提交信息",
"commitMsgPlaceholder": "feat: 新增功能",
@@ -4657,6 +4740,12 @@
"lastMonth": "上月",
"thisQuarter": "本季度",
"thisYear": "本年度"
},
"channel": {
"dingtalk": "钉钉",
"wechat": "企业微信",
"email": "邮件",
"sms": "短信"
}
},
"task": {
@@ -7087,6 +7176,20 @@
"batchDeleteFailed": "批量删除失败",
"singleSignOnDesc": "同一账号只能在一个设备登录",
"sessionSettings": "会话设置",
"sessionWatermark": "会话用户水印",
"sessionWatermarkDesc": "在 RDP/终端画面显示当前登录用户「{{user}}」",
"sessionRecordEnabled": "会话录像",
"sessionRecordEnabledDesc": "记录 SSH/RDP 会话内容并支持回放",
"clipboardEnabled": "允许剪贴板",
"clipboardEnabledDesc": "允许浏览器与远端主机双向同步文本剪贴板",
"fileUploadEnabled": "允许文件上传",
"fileUploadEnabledDesc": "允许通过 RDP AIOps 盘或终端文件能力上传文件",
"fileDownloadEnabled": "允许文件下载",
"fileDownloadEnabledDesc": "允许从远端主机下载文件到本地浏览器",
"commandPolicyEnabled": "命令策略",
"commandPolicyEnabledDesc": "启用命令黑白名单和高危命令拦截(逐步接入)",
"approvalRequired": "访问需审批",
"approvalRequiredDesc": "远程访问前要求提交临时授权申请(逐步接入)",
"roleManageDesc": "修改角色信息与权限",
"terminalLiveMonitor": "终端实时监控",
"systemInfoDesc": "版本与系统状态",
@@ -7243,11 +7346,12 @@
},
"aiops": {
"title": "AIOps 智能",
"subtitle": "AI 助手 · 告警分析 · 容量预测",
"subtitle": "智能助手 · 告警分析 · 预测分析",
"aiAssistant": "智能助手",
"assistantTitle": "AIOps 智能助手",
"assistantTitle": "智能助手",
"aiDrivenAssistant": "面向运维场景的 AI 对话、分析和处置建议",
"assistantPlaceholder": "输入运维问题开始对话",
"assistantHint": "输入运维问题,AI 助手将分析并给出建议",
"assistantHint": "输入运维问题,智能助手将分析并给出建议",
"sendMessage": "发送",
"newConversation": "新对话",
"conversationHistory": "历史对话",
@@ -7291,7 +7395,9 @@
"assistantSummary": "总结",
"assistantNoData": "暂无数据",
"alertAnalysis": "告警分析",
"alertAnalysisTitle": "智能告警分析",
"aiAlertAnalysis": "告警分析",
"alertAnalysisTitle": "告警分析",
"alertRootCauseAnalysis": "告警根因分析与修复建议",
"alertAnalysisDesc": "基于大模型的告警根因分析和修复建议",
"alertAnalysisHint": "选择左侧告警进行 AI 智能分析",
"alertRootCause": "根因分析",
@@ -7438,7 +7544,7 @@
"capacityPlanning": "容量规划",
"notConnectedRetry": "连接未就绪,请稍后重试",
"safetyHighRiskConfirm": "高风险+确认",
"aiAssistantShort": "AI 助手",
"aiAssistantShort": "智能助手",
"recommended": "推荐",
"endpointLabel": "接口地址(Endpoint)",
"wsConnectFailed": "WebSocket 连接失败",
@@ -7820,7 +7926,7 @@
"predictive.s1a2b3c4d": "指标预测",
"predictive.s2b3c4d5e": "容量规划",
"predictive.s3c4d5e6f": "成本预测",
"predictive.s4d5e6f7g": "AI 预测分析",
"predictive.s4d5e6f7g": "预测分析",
"predictive.s5e6f7g8h": "基于实时指标与云账单的线性回归预测、容量规划与成本前瞻",
"predictive.s6f7g8h9i": "置信度",
"predictive.s7g8h9i0j": "预测月末",
@@ -7966,5 +8072,21 @@
"apiaccesskey.s4b5c6d7e": "凭证已复制",
"apiaccesskey.s5c6d7e8f": "我已保存",
"apiaccesskey.s6d7e8f9g": "你的访问凭证"
},
"logCenter": {
"saveQuery": "另存为查询",
"saveAsAlert": "另存为告警",
"queryName": "查询名称",
"queryNamePlaceholder": "输入查询名称",
"alertName": "告警名称",
"alertNamePlaceholder": "输入告警规则名称",
"triggerCondition": "触发条件",
"createAlert": "创建告警",
"createFromQuery": "从查询页创建: {{name}}",
"defaultDatasource": "默认数据源",
"alertRuleCreated": "告警规则已创建",
"quickQuery": "快捷查询",
"quickQueryHint": "{{engine}} 常用查询模板,点击快速填充",
"entries": "条"
}
}
}