🌐 GIoE 万物互联
互联 · 有中心的应用间通信框架,让程序之间不重新编译即可相互调度。
📌 技术定位
GIoE(General Internet over Everything)是一种有中心的应用间通信框架, 使本地程序在不重新编译的情况下相互通信,并发送信息要求其它程序执行「通过反射能访问」的一切功能。 该框架以中心节点 GCenter 为枢纽,接入的各个程序称为 GPeer。 它特别适用于不方便编译的场合:Release 版程序调试、插件开发、机器人或其它嵌入式开发、AI 训练程序开发、 需要长时间编译的 IL2CPP / NativeAOT,以及跨计算机或虚拟机(含云端)部署的程序调试。
✨ 核心特性
🎛️ GCenter(中心节点)
框架的中心节点,负责消息转发、调试、统计与日志;所有节点必须通过 TCP 连接到它并使用账号密码登录。
🔗 GPeer(节点)
实现了 GIoE 框架的程序,经 TCP 登录中心;通过中心转发或广播脚本,在线的节点之间相互具备高权限控制能力。
🧠 终端内置脚本引擎
每个终端实现一套虚拟机,同时能解释 GS2 与 GRJS 两种语言;因此远程指令既能是预编译的简短指令, 也能是完整的反射脚本。
🤖 AI 驱动链路
典型数据流:AI 编写 JS → GCenter(MCP 接口)→ 转发 → 目标节点执行。 借助 AI 庞大的 ES5 语料,可快速生成高质量的控制脚本。
🧩 IDE 插件
作为 IDE 跳转的执行端:例如语音识别程序生成 redirect 指令, 经中心转发给已登录的编辑器插件解释执行,实现跨设备的代码定位跳转。
🛰️ 跨机 / 跨虚拟化
适用于跨计算机、虚拟机乃至云端部署的程序调试,也适合「外网客户端登录到本地节点进行代理操作」的形态。
🧭 核心思想:GS2 边车
GIoE 的核心思想是:每个连入的客户端都内置一台 GS2VirtualMachine (客户端侧为反射外部化的虚拟机),因此任何节点都能向其它节点下发远程执行的 GS2 脚本—— 既可以是预编译的简短指令,也可以是完整的反射脚本,并可选择回传执行结果。
由于 GS2 具备强大的反射权限,这带来一个直接结果: 任何客户端——无论它是否由 C# 编写,哪怕只是一个编辑器插件——都能以「边车」方式, 调用本地一整套正在运行的软件,而无需该软件预先为它提供专用接口。
- 统一能力出口:GCenter 除转发消息外,还提供 REST(StreamableHTTP) 的 MCP 通用路由 (/mcps/<名>),把各项能力按名暴露为统一入口。 例如 CDP 调试能力即以 gcdp 之名经此路由提供; 这意味着GIoE 体系内所有能连到 GCenter 的客户端,都具备统一的 CDP 访问能力。
- 能力挂在体系上:能力不随某个客户端的存在与否而改变,也不因客户端语言或形态而缺失—— 新客户端接入即获得同一套远程执行与 MCP 能力,无需为每种语言、每种宿主各自实现一遍接口。
🔧 关键技术点
- 实现要求:节点侧导入脚本虚拟机与网络协议库,并实现登录协议与基础执行协议两组约定。
- 报文格式:协议类型(默认字典 / 原始对象 / 二进制 / 服务器推送)+ 大端序长度 + 编码后的负载。
- 请求与响应:请求含时间戳(双精度毫秒,兼容多语言)、协议分类、方法名与响应号;可选访问令牌、会话 ID 与重试次数;响应以状态码表示成败。
- 服务端推送:支持执行脚本(回传或不回传)、提示与弹窗交互、等待用户作答后回传等多种推送类型。
- 安全机制:账号密码登录 + 脚本虚拟机反射接口白名单限制。
🧪 示例
// 预编译指令:远程要求编辑器跳转到指定文件
redirect "MyClass.cs"
// 反射脚本:无需预编译指令,获取宿主编辑器当前文档名(示意)
getc "Microsoft.VisualStudio.Shell.Package"
.GetGlobalService [getc "EnvDTE.DTE, Microsoft.VisualStudio.Interop"] => $dte
ret ($dte ? $dte.ActiveDocument.n : $null)