# 终端远程连接
# 一、功能概述
通过远程方式连接本地终端,将本地终端注册至MCP控制中心,实现对本地终端的远程命令执行与管理。
# 二、客户端部署
# 2.1 客户端下载
点击下载alinesno-infra-claw (opens new window)
新版本通过打包和内部群下载。
# 2.2 客户端启动
Token获取方式在MCP界面的[请求Token]生成获取,同时确保本地安装jdk21及以上版本。
# 2.2.1 基础启动(临时运行)
适用于调试场景,终端关闭后进程终止:
# 核心参数说明:
# -DAGENT_WS_SERVER_URL:MCP控制中心的WebSocket服务地址
# -DAGENT_WS_AUTH_TOKEN:客户端接入控制中心的认证令牌
java -DAGENT_WS_SERVER_URL=wss://xxxx -DAGENT_WS_AUTH_TOKEN=mcp-xxx -jar alinesno-infra-claw-xxxx-SNAPSHOT.jar
# 2.2.2 后台启动(Linux生产环境)
适用于生产环境,进程后台常驻运行,日志输出至agent.log:
nohup java -DAGENT_WS_SERVER_URL=wss://xxxx -DAGENT_WS_AUTH_TOKEN=mcp-xxx -jar alinesno-infra-claw-xxxx-SNAPSHOT.jar > agent.log 2>&1 &
# 2.3 客户端注册
此功能位于MCP界面的[客户端]菜单
启动客户端后,程序会自动完成以下操作:
- 向MCP控制中心发起注册请求
- 注册成功后,生成并返回ClientId(格式示例:AGENT-XXXXX)
- 该ClientId为终端唯一标识,需记录并用于后续配置
# 三、MCP控制中心配置
# 3.1 核心功能
通过自定义工具类实现Mac系统下的终端命令远程执行,支持命令参数校验、执行结果格式化、异常捕获等能力。
# 3.2 控制脚本
以下为控制脚本示例:
注意 脚本的类名称根据场景命名,比如MacLocalAIPClawTool,为Mac系统下的终端执行脚本
import com.alinesno.infra.smart.mcp.tools.AIPClawTool;
/**
* MacLocal系统专用的AI命令执行工具类
* 继承自通用的AIPClawTool基类,专门用于在Mac环境下执行自定义Shell命令
* 核心功能:
* 1. 初始化SSH连接参数(绑定终端ClientId)
* 2. 接收外部传入的命令参数(用途描述/执行命令)
* 3. 执行Shell命令并捕获执行结果/异常
* 4. 格式化返回执行结果(便于前端展示/日志分析)
*
* @author (可补充作者信息)
* @version 1.0
*/
class MacLocalAIPClawTool extends AIPClawTool {
/**
* 初始化SSH连接参数
* 作用:绑定当前终端的WebSocket客户端ID,作为MCP控制中心识别终端的唯一标识
* 注意:需替换为实际注册时获取的ClientId(AGENT-XXXXX)
*/
public void initParams() {
// 替换为步骤2.3中获取的真实ClientId
setWsClientId("AGENT-XXXXX");
}
/**
* 核心执行方法:执行自定义Shell命令
* 执行流程:初始化参数 → 获取外部参数 → 校验参数 → 执行命令 → 格式化结果
*
* @return String 格式化的命令执行结果,包含用途、命令、结果/异常信息
*/
public String execute() {
// 1. 初始化SSH连接参数(绑定ClientId)
initParams();
// 2. 获取外部传入的参数(从MCP上下文参数池读取)
// commandPurpose:命令执行的业务用途描述(如"查看磁盘占用")
def commandPurpose = getParam("commandPurpose");
// shellCommand:待执行的Shell命令(核心参数,如"df -h")
def shellCommand = getParam("shellCommand");
// 3. 参数校验:确保核心命令不为空
if (!shellCommand) {
return "执行失败:未指定要执行的Shell命令(shellCommand参数为空)";
}
// 用途描述为空时设置默认值,保证结果完整性
if (!commandPurpose) {
commandPurpose = "未描述执行用途";
}
// 4. 执行命令并处理结果(使用StringBuilder提升拼接效率)
StringBuilder resultBuilder = new StringBuilder();
try {
// 调用基类方法执行Shell命令
String commandResult = executeCommand(shellCommand);
// 5. 构建格式化的成功结果
resultBuilder.append("命令执行用途:").append(commandPurpose).append("\n")
.append("执行的Shell命令:").append(shellCommand).append("\n")
.append("命令执行结果:").append(commandResult);
} catch (Exception e) {
// 捕获异常并格式化返回
resultBuilder.append("命令执行用途:").append(commandPurpose).append("\n")
.append("执行的Shell命令:").append(shellCommand).append("\n")
.append("执行失败原因:").append(e.getMessage());
}
// 返回最终格式化结果
return resultBuilder.toString();
}
}
# 四、使用方式
将上述MacLocalAIPClawTool工具类集成至MCP控制中心的SKILL/工具模块,通过引用该工具类:
- 传入
commandPurpose(可选)和shellCommand(必选)参数 - 调用
execute()方法即可远程执行指定的Shell命令 - 接收并解析格式化的执行结果
# 五、注意事项
- ClientId为终端唯一标识,需确保与实际注册值一致,否则无法建立连接
- 生产环境建议使用
nohup后台启动方式,避免终端关闭导致进程终止 - 执行高危Shell命令(如rm、mv)时,需做好参数校验,防止误操作
← 嵌入智能体交互 接口API数据加密和解密 →