nareshtammineni01/crossctx

GitHub: nareshtammineni01/crossctx

一款基于静态源码分析的服务依赖映射与架构洞察工具,解决微服务黑盒与文档过时问题。

Stars: 1 | Forks: 0

# CrossCtx **立即发现隐藏的服务依赖关系。** [![实时演示](https://img.shields.io/badge/Live%20Demo-Try%20it%20now-58a6ff?style=for-the-badge&logo=github)](https://nareshtammineni01.github.io/crossctx/) ``` npx crossctx scan ./services ``` ``` 🔍 CrossCtx Results ───────────────────────────────────────────── ✔ 7 services detected ✔ 42 endpoints mapped ✔ 18 cross-service calls found Top dependencies: - order-service → payment-service - order-service → inventory-service - payment-service → user-service ⚠️ Insights: - order-service has high fan-out (calls 4 services) - user-service is a critical dependency (used by 3 services) - 2 unresolved service calls detected Next steps: crossctx graph # open interactive dependency graph crossctx insights # full architecture analysis crossctx blame # impact analysis for a service crossctx export # save JSON / Markdown ``` 无需配置。无需仪器化。无需在集群中运行代理。 CrossCtx 直接读取您的源代码,并告诉您服务实际是如何连接的。 ## 快速参考 ``` # 扫描你的服务并输出摘要 npx crossctx scan ./services # 生成交互式 HTML 依赖关系图 npx crossctx graph ./services -o service-view-map.html # 从之前的扫描中打开图形(无需重新扫描) npx crossctx graph --input crossctx-output.json -o service-view-map.html # 架构分析 — 循环依赖、高扇出、风险 npx crossctx insights ./services # 爆炸半径 — 如果此服务宕机会有什么损坏? npx crossctx blame PaymentService # 追踪每个端点的跳转 npx crossctx trace /api/orders # 检测破坏性 API 变更(非常适合 CI) npx crossctx diff baseline.json # 将扫描结果导出为 JSON 和 Markdown npx crossctx export --format all # 避免每次手动输入路径 npx crossctx init # creates .crossctxrc.json npx crossctx scan # reads paths from config ``` ## CrossCtx 的功能 CrossCtx 扫描您的代码并: - 自动检测服务 - 提取 API(控制器、端点) - 理解请求/响应负载 - 映射跨服务调用 - 构建完整的调用链 - 识别架构风险 全部来自源代码 — 无需 OpenAPI。 ## 为什么要使用 CrossCtx? 微服务难以全面理解: - *“什么调用了这个 API?”* - *“如果我修改这个,什么会断裂?”* - *“这些服务实际是如何连接的?”* 文档会过时。图表会撒谎。部落知识无法扩展。 **CrossCtx 读取您的代码并告诉您真相。** ## 安装 ``` npm install -g crossctx ``` 或者无需安装直接运行: ``` npx crossctx scan ./services ``` ## 截图 [![引导入口 — 选择概览、风险、追踪或探索](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/19df462386134538.png)](https://nareshtammineni01.github.io/crossctx/) *引导入口覆盖层 — 打开时选择您的意图* [![洞察面板 — 循环依赖和风险警告](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fd328cd917134542.png)](https://nareshtammineni01.github.io/crossctx/) *洞察面板 — 图形中高亮的循环依赖、高扇出和爆炸半径警告* [![带有调用链和 AI 上下文构建器的端点详细面板](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fd53253229134545.png)](https://nareshtammineni01.github.io/crossctx/) *端点详细面板 — 完整调用链、请求/响应形状和一键 AI 上下文复制* ## 命令 ### `crossctx scan` — 起点 ``` crossctx scan ./order-service ./payment-service ./user-service ``` 自动检测语言,映射端点和跨服务调用,并显示纯英文摘要。支持 TypeScript、Java、Python、Go、C#、gRPC 和 GraphQL — 无需配置。 使用 `crossctx init` 设置 `.crossctxrc.json`,这样就无需重复路径: ``` crossctx init # creates .crossctxrc.json crossctx scan # reads paths from config ``` ### `crossctx graph` — 可视化依赖关系图 ``` # 基础模式 — 在当前目录输出 crossctx-graph.html crossctx graph ./order-service ./payment-service ./user-service # 自定义输出文件名(使用 -o 指定保存位置) crossctx graph ./services -o service-view-map.html # 扫描多个目录,保存到子文件夹 crossctx graph ./order-service ./payment-service -o ./output/service-view-map.html # 过滤低置信度边以获得更清晰的图形 crossctx graph ./services -o service-view-map.html --min-confidence 0.7 ``` 生成自包含的交互式 HTML 文件。在任何浏览器中打开 — 无需服务器。 [![CrossCtx 引导入口覆盖层 — 选择概览、风险、追踪或探索](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/19df462386134538.png)](https://nareshtammineni01.github.io/crossctx/) **图形功能:** - **引导入口** — 打开时选择意图:系统概览、查找风险服务、追踪 API 或自由探索 - **焦点模式** — 概览 / 依赖 / 风险 / 调试工具栏更改图形着色和行为 - **风险模式** — 节点按扇出严重程度以红/橙/绿色着色 - 服务视图和控制器视图 - 最小置信度滑块 — 实时过滤嘈杂边 - 服务筛选芯片 — 隔离单个服务及其连接 - 端点详细面板 — 请求/响应形状、完整调用链树 - 调用链动画 — 逐步跳转遍历 或者使用之前保存的扫描输出跳过重新扫描: ``` crossctx graph --input crossctx-output.json ``` ### `crossctx insights` — 架构分析 ``` crossctx insights ./services ``` 运行完整分析并通过以下方式呈现: ``` ⚡ Architecture Insights ───────────────────────────────────────────── ✖ Circular dependency: order-service ↔ payment-service These services form a dependency cycle... ⚠️ High fan-out: order-service calls 4 services Consider introducing an orchestrator or API gateway... ⚠️ High-risk service: auth-service is called by 6 services An outage here has wide blast radius... ℹ️ 12 outbound calls could not be mapped Add service URL hints or include all service dirs in scan... ``` 如果发现关键问题(循环依赖),退出代码为 1 — 适用于 CI。 洞察也直接显示在图形中 — 点击右侧面板中的 **Insights** 标签查看所有警告,并点击任何洞察以突出显示受影响的服务: [![CrossCtx 图形显示带有循环依赖和风险警告的洞察面板](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fd328cd917134542.png)](https://nareshtammineni01.github.io/crossctx/) ### `crossctx blame` / `crossctx impact` — 影响分析 ``` crossctx blame PaymentService # 或 crossctx impact PaymentService ``` ``` 💥 Blast radius: PaymentService ───────────────────────────────────────────── If PaymentService goes down: Direct callers (2): ✖ order-service will break ✖ checkout-service will break Transitively affected (1): ~ api-gateway (indirect) Total impact: 3 service(s) affected ``` 适用于值班准备、事件响应和变更审查。 ### `crossctx trace` — 可视化调用链 ``` crossctx trace /api/orders ``` ``` 🔎 Trace: POST /api/orders order-service → payment-service (POST /api/charge) → stripe-adapter (POST /v1/charges) → inventory-service (PUT /api/stock/:id) ``` 逐服务查看调用某个端点时发生的一切。 ### `crossctx explain` — 为 ChatGPT / AI 复制上下文 ``` crossctx explain /api/orders ``` 生成可立即粘贴到 ChatGPT 或任何 LLM 的上下文块 — 包括端点的调用链、请求/响应架构以及它触及的服务。自动复制到剪贴板。 ``` Copied to clipboard ✅ Includes: - full call chain - request/response schema - dependent services ``` AI 上下文构建器也内建在图形中 — 点击任何端点查看其完整详细信息并点击 **Copy context**: [![CrossCtx 图形显示端点详细面板及调用链和 AI 上下文构建器](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fd53253229134545.png)](https://nareshtammineni01.github.io/crossctx/) ### `crossctx export` — 保存输出文件 ``` crossctx export --format all # JSON + Markdown crossctx export --format markdown # Markdown only crossctx export --format json # JSON only ``` 或者从保存的扫描中导出: ``` crossctx export --input crossctx-output.json --format all ``` ### `crossctx diff` — 检测破坏性变更 ``` crossctx diff baseline.json ``` 比较两次扫描并报告新增、移除和变更的端点。检测到破坏性变更时退出代码为 1 — 适用于 CI 防护。 ``` # 在 CI 中:在 main 分支保存基线,在 PR 中比较 crossctx scan ./services --output baseline.json crossctx diff baseline.json ``` ## 实际用例 **“为什么这个端点失败了?”** → `crossctx trace /api/orders` — 秒级查看其调用的每个下游服务。 **“修改这个会有什么影响?”** → `crossctx blame ` — 修改前进行影响分析。 **“这个系统是如何工作的?”** → `crossctx scan` + `crossctx graph` — 第一天就获得可视化与结构化理解。 **“向 ChatGPT 解释这段代码库”** → `crossctx explain /api/orders` — 将完整调用链和架构复制到剪贴板,粘贴即用。 ## 语言与协议支持 | 语言 | 框架 | 入站 | 出站 | DTO | |---|---|---|---|---| | TypeScript | NestJS, Express | ✅ | axios, fetch, HttpService, got | class-validator, Swagger 注解 | | Java | Spring Boot | ✅ | RestTemplate, WebClient, FeignClient | POJO 类、records | | C# | ASP.NET Core | ✅ | HttpClient, IHttpClientFactory, Refit | 类、位置记录 | | Python | FastAPI, Django REST, Flask | ✅ | httpx, requests, aiohttp | Pydantic, DRF 序列化器 | | Go | Gin, Chi | ✅ | net/http, go-resty | 结构体 | | gRPC | 任意语言 | ✅ | .proto 文件解析 | 消息类型 | | GraphQL | 任意语言 | ✅ | 架构解析 | 类型定义 | 检测到 OpenAPI/Swagger 规范时也会扫描并用于增强输出。 ## 配置(可选) ``` crossctx init ``` 创建 `.crossctxrc.json`: ``` { "paths": ["./order-service", "./payment-service"], "format": "all" } ``` 然后无需重复路径即可运行任何命令: ``` crossctx scan ``` ## 输出 | 格式 | 文件 | 描述 | |---|---|---| | **JSON** | `crossctx-output.json` | 便于自动化和 AI 工具处理的结构化数据 | | **Markdown** | `crossctx-output.md` | 适用于提示词和文档的 LLM 友好摘要 | | **图形** | `crossctx-graph.html` | 自包含的交互式 HTML 文件 | ## 示例 该仓库附带八个示例微服务,涵盖所有支持的语言: ``` cd examples crossctx scan ``` ``` crossctx graph crossctx insights crossctx blame analytics-service ``` ## 性能 设计为足够快以适用于 CI(在 M2 MacBook Pro、Node.js 20 上进行基准测试): | 数据集 | 服务 | 文件 | 耗时 | |---|---|---|---| | 8 种混合语言服务 | 8 ~120 | ~2 秒 | | 10 个 TypeScript/NestJS 服务 | 10 | 160 | ~3 秒 | | 50 个 TypeScript/NestJS 服务 | 50 | 800 | ~12 秒 | ## 工作原理 CrossCtx 遵循四阶段流水线 — **检测 → 解析 → 解析 → 渲染**: **检测** — 通过标记文件(`package.json`、`pom.xml`、`go.mod` 等)识别每个项目文件夹的语言和框架,并带有置信度评分。 **解析** — 直接从源代码提取控制器、端点、HTTP 方法、路径、请求/响应形状以及出站调用。无需 OpenAPI 规范。 **解析** — 使用五层策略将出站调用映射到目标服务:命名客户端(FeignClient、IHttpClientFactory)→ 主机名匹配 → 环境变量启发式 → URL 片段匹配 → 路径匹配。 **渲染** — 生成钩子摘要、洞察、JSON、Markdown 和交互式 HTML 图形。 ## 插件接口 通过社区插件接口添加对自定义语言或框架的支持: ``` { "paths": ["./my-service"], "plugins": ["crossctx-plugin-ruby"] } ``` 参见 [CONTRIBUTING.md](CONTRIBUTING.md) 了解插件 API。 ## CI 集成 ``` # .github/workflows/crossctx.yml - name: Check for breaking API changes run: | crossctx scan ./services --output current.json crossctx diff baseline.json current.json ``` 提供 [Docker 镜像](docs/docker-ci.md) 和 [GitHub Action](action.yml),实现零安装 CI 使用。 ## 路线图 - **v0.3** ✅ — gRPC、GraphQL、数据库使用检测、共享库检测、单体仓库发现 - **v1.0** ✅ — 稳定的 JSON 架构、插件接口、`diff` 子命令、Docker、性能基准 - **v2.0** ✅ — `scan`、`graph`、`insights`、`blame`、`explain`、`export` 子命令;架构洞察层 - **v2.x** — PR 影响分析 GitHub Action、VS Code 扩展、监听模式洞察 参见 [ROADMAP.md](ROADMAP.md) 了解完整计划。 ## 贡献 参见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [MIT](LICENSE)
标签:API映射, CI集成, CMS安全, DevOps工具, GNU通用公共许可证, JavaScript, JS文件枚举, MITM代理, Node.js, Python工具, SEO: 代码扫描, SEO: 依赖图, SEO: 服务依赖, SEO: 架构分析, SEO: 隐藏依赖, TypeScript, WebSocket, 二进制发布, 云安全监控, 依赖关系发现, 依赖分析, 依赖图, 关键依赖识别, 安全插件, 开源工具, 性能分析, 断点分析, 无代理, 无配置, 日志审计, 服务依赖, 服务拓扑, 架构可视化, 自动化攻击, 跨服务调用, 逆向工具, 静态分析, 风险分析, 高扇出检测