Loongsuite Go Agent 在标准 Go 编译流程前增加了两个关键阶段:
- 预处理阶段:分析项目依赖,根据规则文件选择适用的插桩规则
- 插桩阶段:按规则生成监控代码并注入到源码 AST 中,之后交给 Go 编译器正常编译
其核心技术包括:
- go:linkname:Go 语言内置指令,可将当前包中的函数链接到目标包命名空间,从而在不修改目标包源码的情况下调用其内部函数
- AST 操作:解析源码为抽象语法树,通过编程方式修改节点插入监控逻辑
- 规则驱动:通过 JSON 规则文件描述插桩行为,便于扩展新框架支持
针对不同框架的特性,插桩方式也有所区别:中间件注入(如 MCP、gRPC)、Hook 机制(如 Redis、Kafka)、直接函数插桩(如 OpenAI SDK)、结构体字段注入(如 database/sql)。这种规则驱动 + 多策略的设计既保证了通用性,又能针对具体框架采用最合适的插桩方式。