Repolode
redhat-et

redhat-et/ripwire

一个零依赖的 C++23 命令行工具和 MCP 服务器,为编程代理提供排序后的代码地图,并检查修改的影响范围、需运行的测试和质量退化。

Star
2,464
Fork
158
未关闭 Issue
70
最近提交
6小时前

这是什么?

ripwire 是面向编程代理的命令行工具和 MCP 服务器。代理读取仓库之前,可以先运行 ripwire 获得排序后的确定性调用图,包括主要子系统、入口点、最重要的符号及其调用者。--for、--expand、--callers、--path 等查询会在指定 token 预算内返回精简结果,减少反复 grep 和整文件读取。

修改代码后,同一工具会报告改动的影响范围、覆盖相关代码的测试、只列出退化项的质量差异、遗漏的同步修改文件,以及公开符号的接口变化。不确定的结果会被明确标注,例如置信度或 HTML 图中的虚线边;输出被截断时,会给出取回剩余内容的下一条命令。

项目使用 C++23 编写,没有运行时依赖,通过 tree-sitter 支持 Rust、Python、Go、TypeScript、Java 等多种语言。安装只需一行 shell 命令,并可为 Claude Code、Codex、Cursor、Gemini 等代理配置技能。

核心功能

  • 01生成排序后的确定性仓库地图,列出子系统、入口点和关键符号。
  • 02回答具体查询,如某个概念在哪里处理、谁调用了某函数、某函数的函数体是什么。
  • 03修改后报告影响范围、覆盖改动代码的测试以及质量退化项。
  • 04对不确定的调用边和被截断的输出做明确标注,不把猜测当作事实。
  • 05以单个 C++ 二进制文件发布,无运行时依赖,也可作为 MCP 服务器运行。

适用场景

  • 让编程代理在陌生的大型仓库中快速建立上下文,再开始修改代码。
  • 提交 PR 前确认该运行哪些测试,以及改动可能影响哪些其他代码。
  • 审查 diff,查找分散修改和遗漏的同步文件。
  • 生成独立 HTML 调用图,按复杂度或变更频率着色观察代码结构。

快速上手

  1. 1

    使用 README 中的一行安装脚本安装 ripwire

  2. 2

    将安装目录添加到 PATH

    export PATH="$HOME/.local/bin:$PATH"
  3. 3

    在你的仓库中运行 ripwire,并描述你要做的修改

    ripwire . --for="<the change you are about to make, in words>"

使用前须知

  • 快速安装方式会通过管道将远程脚本交给 bash 执行,如有顾虑请先审查脚本内容。

标签

常见问题

ripwire 是什么?
一个零依赖的 C++23 命令行工具和 MCP 服务器,为编程代理提供排序后的代码地图,并检查修改的影响范围、需运行的测试和质量退化。 ripwire 是面向编程代理的命令行工具和 MCP 服务器。代理读取仓库之前,可以先运行 ripwire 获得排序后的确定性调用图,包括主要子系统、入口点、最重要的符号及其调用者。--for、--expand、--callers、--path 等查询会在指定 token 预算内返回精简结果,减少反复 grep 和整文件读取。
ripwire 可以免费使用吗?用的什么许可证?
ripwire 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
ripwire 还在维护吗?
活跃维护中。ripwire 最近一次提交是在 2026年10月22日。
ripwire 适合用来做什么?
让编程代理在陌生的大型仓库中快速建立上下文,再开始修改代码。 提交 PR 前确认该运行哪些测试,以及改动可能影响哪些其他代码。 审查 diff,查找分散修改和遗漏的同步文件。 生成独立 HTML 调用图,按复杂度或变更频率着色观察代码结构。
ripwire 怎么安装和运行?
使用 README 中的一行安装脚本安装 ripwire 将安装目录添加到 PATH: export PATH="$HOME/.local/bin:$PATH" 在你的仓库中运行 ripwire,并描述你要做的修改: ripwire . --for="<the change you are about to make, in words>"
在哪里获取 ripwire?
源代码和安装说明在 GitHub 上:https://github.com/redhat-et/ripwire

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目