Maguyva 的 C 支持:面向系统与嵌入式代码的调用图
在 C 里,调用图就是架构。智能体应当先读懂它,再动手修改。
扩展名
.c, .h
在 C++ 中,名字并不唯一。send 可能是一个自由函数,又是三个类的成员,还是第四个类中的重写。命名空间、模板以及类外定义(例如 .cpp 文件中的 Socket::send)会把一个类型拆散到许多文件中。文本搜索会返回所有匹配,却不会告诉智能体一次调用究竟到达了哪一个。
Maguyva 在索引类、成员和调用时会附上它们的所属者,让智能体在修改之前就能沿着真实的结构前进。
Maguyva 覆盖常见的 C++ 源文件和头文件扩展名,包括 .cpp、.cc、.cxx、.hpp、.hh 和 .hxx。类、结构体和函数都会被提取,像 void Socket::send() 这样的类外定义会归属到其所属的类和命名空间。虚成员会被记录,模板参数也是签名的一部分。
接收者类型推断会跟踪参数、局部声明、字段、基于范围的 for 循环和 auto,并能看穿 unique_ptr、shared_ptr 和 optional,因此像 conn->send() 这样的调用可以解析到正确的类。基类子句会转化为继承关系,new 表达式计为实例化。
与 C 相同的导出宏和注解宏屏蔽同样适用。约 273 个标准库名称(std::cout、std::endl、printf 等)会从关系中过滤掉。图谱记录调用、头文件包含、继承、重写、实例化、类型引用、读写以及 throw 边。
Renderer::draw,谁在调用它?”(dependency_search)OrderBook::match 及其所有调用方。”(find_symbol)get_task_context).h 同时出现在 C、C++ 和 Objective-C 的扩展名列表中,因此在 C 与 C++ 混合的代码树中,头文件由这些配置共享。std:: 的用法请使用 text_pattern_search。最适合场景
智能体工作流
引擎细节
常用 MCP 入口工具
需要定义和调用方时,用 `OrderBook::match` 这样的限定名来查找。
在修改签名之前,对基类或虚方法使用它,找出重写和调用方。
适用于“解释一条行情消息是如何到达策略引擎的”这类提示词。