10分钟跑通electerm的Widget系统从内置SSH服务到MCP对接【免费下载链接】electermFree and open-sourced terminal/ssh/sftp/ftp/telnet/serialport/RDP/VNC/Spice client(Linux, Mac, Windows, Android, HarmonyOS, iOS)项目地址: https://gitcode.com/GitHub_Trending/el/electermelecterm没有插件市场扩展靠内置Widget系统SSH、FTP、MCP服务都是表单化配置、一键启动。适合会用基本终端命令的读者跑通并看懂这套机制。 先跑起来打开Widget页签electerm的Widget不是下载安装的全部内置在程序里所谓装就是从列表里挑一个、把表单填完。从设置面板进入打开设置面板找到Widgets页签页内分两块widget列表和运行实例。列表顶部有搜索框选中某个widget后右侧生成它的配置表单这个页面的骨架在 src/client/components/setting-panel/tab-widgets.jsx。填表启动一个实例列表里点SSH Server表单自动生成host、端口默认22225、账号、密码、服务目录字段都来自源码里configs数组的定义。提交后弹出成功提示实例出现在运行实例页签前端把实例ID存进store供后续停止和调用实例方法src/client/store/widgets.js。验证端口是否在监听切到任意终端跑ss -lntp | grep 22225确认监听项后用表单里的账号密码默认test/test拿任意SSH客户端连一次能进shell、能看到目录就算跑通了。 看明白electerm的Widget系统到底做了什么用户视角下一个Widget就是一个后台服务填表启动、点停止就结束服务信息直接显示在运行实例页。机制上主进程启动时扫描src/app/widgets/目录下所有widget-*.js文件每个文件导出widgetInfo名称、类型、configs配置项定义和widgetRun启动逻辑instance类型的widget运行后注册进全局实例表标记singleInstance的会直接拒绝重复启动逻辑集中在 src/app/widgets/load-widget.js。自启动也走这里勾了autoRun的实例会存下来下次启动应用时后台逐个重放。内置6个widget归为四类本地SSH/SFTP测试服务器本地FTP、静态文件服务器批量文件重命名MCP服务对接AI助手 用起来4类高频场景连接调试验证别的客户端或脚本能不能连上目标机器时不必真去搭一台SSH服务。跑内置SSH Server22225端口、默认test/test账号认证和SFTP目录都能验一遍不碰真实环境src/app/widgets/widget-ssh-server.js。临时文件分发临时给同事传文件或者把本地静态页面暴露出来调试Local FTP Server和Static File Server都能把指定目录直接serve出去表单里还有缓存头、匿名访问等开关停止实例服务就没了。AI与自动化工具对接想让外部AI助手操作electerm启动MCP Server勾选书签、SFTP、命令执行等能力开关用命令白名单限定外部能跑什么长命令可注册成任务轮询取结果src/app/widgets/widget-mcp-server.js。批量文件处理下载一批文件要统一改名用File Renamer模板变量支持{n}、{name}、{ext}、{date}多步SSH/SFTP工作流走Batch Operation带进度展示。踩坑与绕路单实例、端口与自启动现象点运行提示已有实例在跑原因该widget是singleInstance类型同时只允许一个实例解法到运行实例页签停掉旧实例再重新启动现象实例启动失败报端口冲突原因该端口被其他进程占用解法ss -lntp | grep 22225确认占用回表单改端口重新提交现象应用重启后服务没自动起来原因运行时没勾autoRun解法在配置表单勾上autoRun实例会存进autoRunWidgets下次启动逐个重放如果只是想临时用一次、不想重启后还拉起服务的话autoRun别勾用完在运行实例页点停止即可。继续深入自己写一个Widget新widget就是在src/app/widgets/目录里加一个widget- .js导出widgetInfo元数据和configs定义和widgetRun(config)返回运行实例扫描就能发现它跑、停、调实例方法全部走load-widget.js的统一入口不用碰UI代码。src/app/widgets/ ├── load-widget.js # 扫描、分发、实例注册 ├── widget-ssh-server.js # 参考实现 └── widget-id.js # 你的widgetWidget系统不大后台服务表单配置实例管理的最小骨架都齐了。打开设置里的Widgets页签把SSH Server跑起来再用手边的SSH客户端连一次。提示实例启动成功的弹窗里带监听地址直接复制给对方就能用。【免费下载链接】electermFree and open-sourced terminal/ssh/sftp/ftp/telnet/serialport/RDP/VNC/Spice client(Linux, Mac, Windows, Android, HarmonyOS, iOS)项目地址: https://gitcode.com/GitHub_Trending/el/electerm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考