{{ msgText }}
系统概览
用户与机器管理
👥 用户数
{{ users.length }}
已创建用户
🖥 在线机器
{{ onlineAgents.length }}
当前在线
📦 暂存机器
{{ parkedMachines.length }}
已暂存
🔗 连接地址
客户端登录地址
{{ siteOrigin }}
Agent 连接地址
{{ siteOrigin }}
快速操作
平台概览
代理商与平台运营总览
🏢 代理商总数
{{ tenants.length }}
代理商总数
✅ 启用中
{{ tenants.filter(t => t.is_active).length }}
正常运营
⛔ 已停用
{{ tenants.filter(t => !t.is_active).length }}
已停用代理商
👤 总用户数
{{ tenants.reduce((s, t) => s + (t.user_count || 0), 0) }}
所有代理商用户合计
最近代理商
| 代理商 | 代理商ID | 用户数 | 状态 | 创建时间 |
|---|---|---|---|---|
| {{ t.name }} | {{ t.code }} | {{ t.user_count || 0 }} | 启用 停用 | {{ fmtDate(t.created_at) }} |
🏢
暂无代理商
快速操作
🏢
{{ loggedTenantName || loggedTenantCode }}
代理商ID:{{ loggedTenantCode }}
🔗 连接地址
工程师客户端登录地址
{{ clientLoginUrl }}
在工程师客户端「服务器地址」中输入此地址登录
Agent 连接地址
{{ clientLoginUrl }}
在 Agent「服务器」框粘贴此地址,自动识别代理商并连接
快速操作
代理商管理
代理商的添加、编辑、停用与删除
代理商列表 ({{ tenants.length }})
🏢
暂无代理商
| 代理商 | 代理商ID | 用户数 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|
|
{{ t.name }}
ID: {{ t.id }}
|
{{ t.code }} | {{ t.user_count || 0 }} | 启用 停用 | {{ fmtDate(t.created_at) }} |
AI 配置
全局 AI 服务参数,所有代理商共用
🤖 模型配置
支持 OpenAI 及所有兼容接口(通义千问、DeepSeek、文心一言等)
用户管理
管理团队成员与权限角色
用户列表 ({{ users.length }})
👥
暂无用户
| 用户 | 角色 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|
|
{{ u.display_name }}
{{ u.username }}
|
{{ roleLabel(u.role) }} | 启用 禁用 | {{ fmtDate(u.created_at) }} | 当前用户 |
机器管理
查看和管理已连接的 Agent 机器
在线机器 ({{ onlineAgents.length }})
🖥
暂无在线机器
通过客户端连接 Agent 后,机器将出现在此处
| 名称 | IP 地址 | 操作系统 | 版本 | 操作 |
|---|---|---|---|---|
|
{{ a.display_name || a.hostname }}
{{ a.hostname }}
|
{{ a.ip_address || '--' }} | {{ a.os_info || '--' }} | {{ a.version || '?' }} |
暂存机器 ({{ parkedMachines.length }})
📦
暂无暂存机器
| 名称 | 状态 | 机器 ID | 暂存时间 | 操作 |
|---|---|---|---|---|
| {{ m.display_name || m.hostname }} {{ m.hostname }} |
● 在线● 待接入● 离线 | {{ (m.machine_id || '').slice(0, 12) }}… | {{ fmtDate(m.parked_at) }} |
⏳ 待接入请求 ({{ pendingRequests.length }})
| 主机名 | IP | 系统 | 描述 | 操作 |
|---|---|---|---|---|
| {{ rq.hostname }} | {{ rq.ip || '--' }} | {{ rq.os_info || '--' }} |
Enter 发送 · Shift+Enter 换行 · 需先选择目标机器
活跃度统计
区间 {{ activity.since }} 起 · 生成于 {{ activity.generated_at }} ·
扫描 {{ activity.source.log_files }} 个日志 / {{ activity.source.audit_lines }} 行审计
(耗时 {{ activity.scan_seconds }}s)
统计中,请稍候...
暂无数据
口径说明
· 隧道连接数 ≠ 使用次数:客户端对每个 TCP 连接各建一条隧道,所以把「使用时段」(间隔 5 分钟内合并)作为使用频次。
· 未配对的 open = 连接失败({{ activity.source.failed }} 次),不是数据缺失,已排除在时长之外。
· 「审计行」包含机器产生的记录(进程页每 5 秒一行、文件传输每分块一行),看人工操作请用有效操作。
· 隧道连接数 ≠ 使用次数:客户端对每个 TCP 连接各建一条隧道,所以把「使用时段」(间隔 5 分钟内合并)作为使用频次。
· 未配对的 open = 连接失败({{ activity.source.failed }} 次),不是数据缺失,已排除在时长之外。
· 「审计行」包含机器产生的记录(进程页每 5 秒一行、文件传输每分块一行),看人工操作请用有效操作。
{{ activityHints[activityTab] }}
| 用户 | 远程桌面 | 隧道占用 | 有效操作 | 活跃天数 | 活跃分钟 | MCP 调用 |
|---|---|---|---|---|---|---|
| {{ r.name }} | {{ fmtDur(r.desktop_sec) }} | {{ fmtDur(r.tunnel_sec) }} | {{ r.effective_ops }} | {{ r.active_days }} | {{ r.active_minutes }} | {{ r.mcp_calls }} |
| 最近 {{ activity.days }} 天没有记录 | ||||||
| 用户 | 类型 | 使用时段 | 连接数 | 实际占用 | 平均/时段 | 峰值并发 | 连接失败 | 同秒聚集 | 数据区间 |
|---|---|---|---|---|---|---|---|---|---|
| {{ r.name }} | {{ r.kind }} | {{ r.usage }} | {{ r.connections }} | {{ fmtDur(r.busy_sec) }} | {{ fmtDur(r.avg_usage_sec) }} | {{ r.peak }} | {{ r.failed || '—' }} | {{ r.scheduled_pct }}% ⚠ | {{ r.first }} ~ {{ r.last }} 已下线 |
| 最近 {{ activity.days }} 天没有记录 | |||||||||
| 用户 | 审计行 | 其中机器产生 | 有效操作 | 活跃天数 | 活跃分钟 | 主要行为 |
|---|---|---|---|---|---|---|
| {{ r.name }} | {{ r.audit_lines }} | {{ r.auto_lines || '—' }} | {{ r.effective_ops }} | {{ r.active_days }} | {{ r.active_minutes }} | {{ idx ? '、' : '' }}{{ k }}×{{ v }} |
| (系统) | {{ activity.system_ops.audit_lines }} | — | — | — | — | 无 user=/admin= 署名 = Agent 自己发起(如客户端自动申请维护位) |
| 用户 | 调用次数 | 成功 | 失败 | 失败率 | 工具耗时 |
|---|---|---|---|---|---|
| {{ r.name }} | {{ r.calls }} | {{ r.ok }} | {{ r.fail }} | {{ r.calls ? Math.round(r.fail / r.calls * 100) + '%' : '—' }} | {{ fmtDur(r.total_ms / 1000) }} |
| 暂无 MCP 使用记录 | |||||
修改密码