开源一个游戏协议抓包平台:把游戏流量变成可查询的调试证据

仓库:https://github.com/OwnSecurityGuard/gametrace
(创作不易,给颗 star 当作鼓励,skr~)
各位对平台或者这类功能有什么见解可以在讨论区一起讨论一波~~

GameTrace 抓实时或回放的游戏流量,用独立的解码插件把报文还原成结构化协议事件,再投影成请求/响应配对、服务端推送、协议错误、字段级状态变更。人在 Web 面板上看这份 trace,自动化脚本和 AI Agent 通过 MCP 查同一份 trace。

与其说它是「抓包平台」,不如说想成为游戏网络的调试证据层——重点不是存了多少 pcap,而是这条链路:

packet → 协议事件 → 请求/响应配对 → 状态变更 → trace → Agent 查询

GameTrace 协议事件视图:请求/响应成对、协议错误、服务端推送与状态变更标记

图:「协议事件」视图——请求与响应成对、协议错误带原因、服务端推送,以及每条事件引发的状态变更。

GameTrace 协议事件视图:状态变更标记

它能拿来干什么

这个 session 里有哪些协议? → login 相关请求 → 它的 response 是什么?
→ 之后发生了哪些 state change? → 为什么 Player:1001 的 hp 从 100 变成了 65?

协议接入:平台提供了写解码插件的 Skill

这是我比较想强调的一点:新协议接入不是「自己啃文档」的过程,平台自带 Skill。

插件形态是一个 Go 二进制 + 一个 plugin.yaml,作为独立 gRPC 进程运行:可热加载、可热替换,与管线崩溃隔离。而且插件源码、二进制和进程都在你自己的机器上——平台不保存源码、不编译、也不拉起插件。

Agent 应该操作证据,而不是重建一套流程

GameTrace 把抓包、查询、插件开发都通过 MCP 暴露,且和人看到的是同一份证据:

get_capabilities / read_skill                     发现能力
start_capture / get_session_status                抓包与状态
sample_bytes_plugin / get_protocol_catalog        观察流量、确认协议形态
list_decoded_data / list_connections              查结构化事件与连接
list_state_changes / list_session_alerts          追状态变更与规则命中
scaffold_plugin / connect_plugin / test_plugin / verify_plugin   写插件、接入、验证

Agent 应该操作 GameTrace 的证据,而不是自己重新发明一套抓包、解析和分析流程。

否则最后会变成「平台 + Agent 自己的抓包脚本 + Agent 自己的 parser + Agent 自己的数据格式」,平台反而没有意义。所以 GameTrace 更希望成为 Agent 的网络调试工作台。

后续计划

游戏接口自动化测试平台(重点方向)

现在 GameTrace 解决的是「看得见」——真实流量变成结构化协议事件。下一步想解决「测得动」:把同一条 trace 变成可以直接复用的测试资产,让它从观测层长成一个游戏接口自动化测试平台。

一次真实抓包
   ↓
请求模板 + 断言基线            (从 session 里的 request / response 提取)
   ↓
Agent 生成接口用例             (字段级断言:状态变更的 before / after 天然就是断言点)
   ↓
回归执行 → 响应差异比对
   ↓
失败时直接回落到网络证据        (哪一帧不对、上一帧是什么、对应的请求是谁)

这里想守住的一条边界是:GameTrace 不重造通用执行引擎,而是让协议语义、用例、断言和证据都落在同一份 trace 上,执行可以继续跑在你现有的测试框架里。

其他


如果你也在做游戏测试、协议分析或 Agent 工程,欢迎来看看,顺手给颗 star:

https://github.com/OwnSecurityGuard/gametrace(MIT License)


↙↙↙阅读原文可查看相关链接,并与作者交流