核心功能
Relay Knowledge CLI 是一款面向代码仓库的知识图谱与 GraphRAG 分析工具,通过本地 CLI 提供深度语义化代码查询能力。其核心功能围绕 repo query 与 repo software 两大命令体系展开:
代码检索能力(repo query)
支持八种查询模式:hybrid(混合语义)、symbol(符号名)、definition(定义定位)、references(引用追踪)、callers(调用方)、callees(被调用方)、imports(导入依赖)、sbom(软件物料清单)。特别适用于复杂调用链分析、跨模块依赖追踪及 API 使用模式识别。
软件图谱分析(repo software)
提供九种图谱切片:dependencies(依赖关系)、sdks(SDK/API 使用)、files(文件角色)、topics(主题发现)、relationships(跨域关系)、build(构建目标)、iac(基础设施即代码)、design(设计文档)、all(全景视图)。专为架构梳理、技术债务评估及代码地图生成设计。
特色功能
- 特性开关检测:独立的
repo feature-flags命令,识别配置驱动代码与灰度发布逻辑 - 影响分析:
repo impact支持基线对比,量化变更波及范围 - 混合检索:语义搜索 + 符号图遍历,避免传统 grep 的精确匹配局限
显著优势
1. 图谱优先架构:将代码库建模为可查询的知识图谱,支持多跳关系推理,远超文本搜索的线性局限
2. GraphRAG 原生设计:检索增强生成基于结构化代码关系,减少 LLM 幻觉
3. 多语言支持:通过统一的符号层抽象,兼容 Rust、Python、Go、TypeScript 等主流语言
4. 本地运行:支持完全离线索引与查询,数据不出境,满足合规要求
5. CLI 自动化友好:JSON 输出格式规范,便于 CI/CD 集成与脚本化分析
局限与风险
技术局限
- 索引开销:首次全量索引耗时较长,大型仓库需权衡 freshness 策略
- glibc 兼容性:Linux 二进制要求 glibc 2.31+,旧系统需源码编译
- 调用链深度:当前仅暴露单跳调用边(one-hop),复杂调用链需手动迭代展开
使用约束
- 非实时性:依赖预构建索引,无法查询未索引的最新代码
- 配置敏感度:特性开关检测依赖提取规则,新增规则后需重新索引
- Windows/POSIX 隔离:禁止跨 shell 边界执行二进制(如 WSL 调用 Windows exe)
适合人群
- 架构师与 Tech Lead:进行系统依赖分析、技术债务评估与重构规划
- 代码审查者:快速理解跨模块调用关系与变更影响范围
- DevOps/SRE:追踪基础设施代码与设计文档的关联图谱
- AI 辅助开发用户:为 LLM 提供结构化代码上下文,替代简单的文件切分策略
安全风险
| 维度 | 评估 |
|------|------|
| **数据安全** | S+:纯本地运行,无云服务依赖;支持临时目录隔离测试环境 |
| **供应链** | A:官方 GitHub Release + crates.io 双渠道;建议验证校验和 |
| **执行安全** | B:自动解析并执行二进制,需确保路径可信;文档明确禁止 MCP 协议滥用 |
| **信息泄露** | S:索引文件可能含敏感代码结构,需控制 `RELAY_KNOWLEDGE_HOME` 权限 |
关键风险提示:
- 代理配置需显式声明,避免敏感流量经未授权代理
- 禁止用于 MCP 协议配置,防止与 Agent 协议层混淆
- 测试场景强制要求
RELAY_KNOWLEDGE_HOME临时目录,避免污染生产索引