关于 GitCode 上 MoFix(即昇腾 Model-Agent,仓库地址 `gitcode.com/Ascend/model-agent`)连接远程服务器的问题
关于 GitCode 上 MoFix(即昇腾 Model-Agent,仓库地址 gitcode.com/Ascend/model-agent)连接远程服务器的问题,
结论如下:MoFix 本身就内置了"SSH 通用工具"技能,可以直接通过 SSH/隧道方式操作远程服务器;同时也原生支持 MCP 协议(内置 Cannbot、msAgent 等 MCP Server),两条路都走得通,看你想让 Agent 干什么。
两条路线对比
| 维度 | 路线 A:内置 SSH Skill | 路线 B:MCP Server 接入 |
|---|---|---|
| 原理 | Agent 调用 paramiko/sshpass 脚本直连远程主机 | Agent 通过 MCP 协议连接本地或远程工具服务 |
| 适合场景 | 远程跑命令、传文件、查 NPU 状态、做端口转发 | 让 Agent 按需扩展能力(GitCode 仓库管理、外部工具等) |
| 传输方式 | SSH 协议(22 端口或自定义端口) | stdio(本地)/ Streamable HTTP、SSE(远程) |
| 远程访问 | 天然支持(可直接 SSH 到远程 Ascend 服务器) | 需要 MCP Server 本身在可达网络,或用 SSH 隧道把远程端口映射到本地 |
| 配置复杂度 | 低,一次配置主机/用户名/密码即可 | 中,需要写 MCP Server 的 JSON 配置和 Token |
路线 A:用 MoFix 自带的 SSH 技能直连远程服务器
昇腾 Model-Agent 的技能库里有专门的"通用工具"分类(共 23 个 Skill),其中就包含 SSH 连接、单元测试、Bug 修复等能力。更具体地说,昇腾生态在 Ascend/agent-skills 和 Ascend/MindIE-SD 仓库里维护了两个非常成熟的 SSH Skill:
1. remote-access(推荐用于直接操作 Ascend 服务器)
这个技能通过 paramiko 提供单连接复用的 SSH 执行通道,核心能力包括:
-
SSH 连接复用:所有远程命令走同一条 paramiko 连接,避免反复连接触发
MaxStartups限制 -
容器内执行:支持
docker exec包装,直接进入容器操作 -
空闲卡选择:自动跑
npu-smi扫描 HBM 占用,帮你挑最空闲的 NPU 卡 -
文件传输:基于同一条连接的 SFTP,还会自动处理 Windows 上传脚本的 CRLF→LF 转换
安装方式一行命令:npx skills add https://github.com/Ascend/MindIE-SD --skill remote-access2.
ssh-dev-suite/connect(更完整的 SSH 套件)
涵盖 SSH 连接管理、远程命令执行、文件传输(rsync)、容器感知命令、后台任务编排等,依赖sshpass、rsync、kubectl、docker等工具。它还有一个专门的tunnel子能力,用于 SSH 隧道和端口转发,适合做可视化监测。
实际使用时,向 MoFix 提供 4 个参数即可:远端 IP、SSH 用户名、密码或密钥、(容器内执行时的)容器名,Agent 会自动复用连接执行后续所有操作。路线 B:给 MoFix 挂 MCP Server
MoFix 的目录结构里有专门的
mcp_servers/子目录,内置了 Cannbot 算子调试和 msAgent 性能 Profiling 两大 MCP 智能体,共 144 个算子/调试工具,能自动解析 NPU 日志、定位算子瓶颈。同时,外部 Agent 和 MCP Server 在 mofix 启动时会克隆到临时目录、MCP 化后提供服务,关闭时自动清理。
如果你想自己写 MCP Server 接入,MoFix 支持三种传输方式,参考 JiuwenSwarm 的配置格式(同类 Agent 通用):mcp: servers: # 本地 stdio:Agent 拉起子进程,最简单 - name: my-local-tool transport: stdio command: python args: ["path/to/server.py", "--transport", "stdio"] # 远程 SSE / Streamable HTTP:连到远端已部署的 MCP 服务 - name: remote-api transport: streamable-http url: http://<远程IP>:8000/mcp headers: Authorization: Bearer your-token-here对于远程 MCP,经验法则是:本机工具用 stdio,跨网络边界的工具用 Streamable HTTP,别用蹩脚的 wrapper 把 stdio 服务硬暴露到网络上。
SSH 隧道 + MCP 的组合玩法
如果远程服务器在内网、Agent 所在机器无法直连,可以先建 SSH 隧道把远程端口映射到本地,再让 MoFix 通过本地地址访问 MCP Server:
# 本地端口转发:把远程 8000 端口映射到本地 18000 ssh -fNL 18000:127.0.0.1:8000 user@jump-host然后 MoFix 的 MCP 配置里写
url: http://127.0.0.1:18000/mcp即可。这种模式在 core-manager 这类管控系统中也有实际应用,管理机通过 SSH 隧道连目标 Agent 的 loopback HTTP 服务。几个需要注意的点
Token 与凭据管理:SSH 凭据优先级是
MINDIE_SSH_PASSWORD环境变量 > 交互输入(不回显)>--password参数;GitCode MCP 的GITCODE_TOKEN也要用个人访问令牌,不要明文写进代码。
主机密钥校验:paramiko 默认走 RejectPolicy,首次连接未知主机时会拒绝。自动化场景可以加载known_hosts,或显式传allow_unknown_host=True(仅限可信网络)。
网络可达性:远程 MCP Server 需要确保 Agent 所在机器能访问到目标端口;SSH 隧道方案则要求能先 SSH 到跳板机。防火墙、安全组规则要提前放通。
Schema 膨胀:MCP 工具定义会全部注入模型上下文,一个啰嗦的 MCP Server 可能比等效 CLI 多烧 30 倍 token。建议只接当前任务需要的 Server,优先选 schema 精简的实现。官方文档入口
-
昇腾 Model-Agent 仓库(含 Skills、MCP Servers 完整源码):
https://gitcode.com/Ascend/model-agent -
昇腾 Agent Skills 集合:
https://gitcode.com/Ascend/agent-skills(SSH 连接、远程访问等技能都在这里) -
GitCode MCP Server(用 Go 实现的 GitCode API 封装,支持 STDIO 和 SSE 传输):可通过
gitcode-mcp启动,配合GITCODE_TOKEN环境变量
一句话总结:想让 MoFix 直接管远程服务器(跑命令、传文件、查卡),用内置的remote-accessSkill 走 SSH 就够了;想让 MoFix 扩展更多工具能力(GitCode 仓库操作、外部服务调用),挂 MCP Server,本地用 stdio、远程用 Streamable HTTP,网络不通就叠一层 SSH 隧道。
更多推荐


所有评论(0)