PashaSchool/faultlines

GitHub: PashaSchool/dynvo

一款基于 git 历史和代码结构分析代码库特性健康度与缺陷热点的代码智能工具,同时为 AI 编程智能体提供精准的 MCP 上下文服务。

Stars: 0 | Forks: 0

Faultlines — Codebase intelligence for teams and AI agents
**Faultlines 将原始的 git 历史记录转变为你仓库中每个*特性*和*用户流程*的实时映射图 —— 包含缺陷热点、测试覆盖率,以及你的 AI 编程智能体真正需要的精准上下文。** 无需 Jira。无需注解。无需手动标记。只需 `git log` 和你的代码。 [![PyPI](https://img.shields.io/pypi/v/faultlines?color=6E56CF&label=pip%20install%20faultlines)](https://pypi.org/project/faultlines/) [![Python](https://img.shields.io/pypi/pyversions/faultlines?color=6E56CF)](https://pypi.org/project/faultlines/) [![License: MIT](https://img.shields.io/badge/License-MIT-6E56CF.svg)](LICENSE) [![MCP](https://img.shields.io/badge/MCP-ready-6E56CF)](https://modelcontextprotocol.io) [![Downloads](https://img.shields.io/pypi/dm/faultlines?color=6E56CF)](https://pypi.org/project/faultlines/) [**网站**](https://faultlines.dev) · [**快速开始**](#-quick-start) · [**面向 AI 智能体**](#-built-for-ai-coding-agents) · [**工作原理**](#-how-it-works) · [**版本发布**](https://github.com/PashaSchool/faultlines/releases)
## 问题所在 每位工程师在面对新代码库时都会发现同样的情况: 你的 **issue 跟踪器**并不了解实情——里面满是一厢情愿的工单。 **静态分析**只看得到导入,却看不到意图。 而你的 **AI 智能体**只是简单地 `grep` 15 个文件,并在不断猜测中耗尽你的上下文窗口。 答案其实一直就在你的 **git 历史记录**中。Faultlines 帮你读取它们。 ## Faultlines 能做什么 ``` $ faultlines ./my-app ✓ 472 commits analysed · 1,284 files mapped FEATURE HEALTH COVERAGE HOTSPOTS FLOWS ───────────────────────────────────────────────────────── Billing & Subscriptions 62 48% 3 7 Authentication 88 91% 0 4 Document E-Sign 41 ⚠ 22% 5 9 Team & Permissions 79 66% 1 5 … → Highest blast radius: src/payments/charge.ts (touches 4 features) → Riskiest flow: e-sign/finalize (low coverage · 5 recent bug-fixes) ``` **双层特性映射图**: - **开发者特性** —— 基于代码,也就是你的工程师实际工作的单元。 - **产品特性** —— 这些单元最终汇总构成的面向客户的能力。 ……每一个都被拆解为**流程**(真实的用户旅程),经过评分,将责任归属精确到**函数和代码行范围**,并提供给人类*以及* AI 智能体。 ## 功能 - **特性与流程检测** —— 源自 git 历史 + 代码结构,适用于**任何技术栈**(Next.js、Rails、Django、FastAPI、Express、Spring、Laravel、Phoenix 等)。 - **缺陷热点与健康评分** —— 在系统告警之前,提前发现正在腐化的代码。 - **行为测试覆盖率** —— 针对*每个用户流程*的覆盖率,即使没有 `lcov` 也能从历史记录中推断。 - **变更影响 / 爆炸半径** —— “如果我修改了这些文件,这里是会受影响的内容,以及需要添加的审查者。” - **符号级归属** —— 针对每个流程的函数、类和**代码行范围**,而不仅仅是文件列表。 - **所有权与巴士因子** —— 谁在维护每个特性,以及知识集中在哪些极其危险的地方。 - **面向 AI 智能体的 MCP 服务器** —— 13 个具有类型的工具,供你的编程智能体直接调用,而无需进行 grep。 - **运行时叠加层** —— 将 **Sentry** 错误和 **PostHog** 使用情况映射到特性上(查看哪些特性实际上发生了故障并被使用)。 - **本地优先与隐私保护** —— 在你的机器上运行;你的源代码根本不需要离开本地。 ## 快速开始 ``` pip install faultlines # 扫描 repo。直接使用 `faultlines ` 运行扫描 pipeline —— # flows 和 symbol 级别的归属默认包含在内。 faultlines /path/to/your/repo ``` Faultlines 是**确定性优先**的:特性/流程的结构来自于你的代码和 git 历史,不需要 LLM。设置 `ANTHROPIC_API_KEY` 后,一个 **Haiku** 处理过程会自动添加人类可读的名称并进行流程检测——无需额外标志。使用 `--model haiku|sonnet|opus`(默认值:`haiku`)选择模型: ``` export ANTHROPIC_API_KEY=sk-ant-... faultlines /path/to/your/repo --model sonnet ``` 这会将带有版本信息的**特性映射 JSON** 写入 `~/.faultline/`。你可以探索它、在不同运行之间进行对比、将其交付到 CI,或者直接将其交给你的 AI 智能体(见下文)。 ## 为 AI 编程智能体而生 这就是切入点。安装配套的 MCP 服务器,你的智能体就不会再盲目猜测了: ``` # 一次性运行,无需安装(推荐) uvx faultlines-mcp # 或者安装它 pip install faultlines-mcp ``` ``` // ~/.cursor/mcp.json (or: claude mcp add faultlines -- faultlines-mcp) { "mcpServers": { "faultlines": { "command": "faultlines-mcp" } } } ``` 现在 Cursor / Claude Code / Cline / Windsurf 可以调用 **13 个工具**: | | 工具 | |---|---| | **发现** | `list_features` · `find_feature` · `get_repo_summary` | | **文件与符号** | `get_feature_files` · `get_flow_files` · `find_symbols_in_flow` · `find_symbols_for_feature` | | **风险与影响** | `get_hotspots` · `get_feature_owners` · `analyze_change_impact` · `get_regression_risk` | | **运行时** | `get_feature_errors` (Sentry) · `get_feature_pageviews` (PostHog) | ## 指标 —— 以及它们为何重要 | 指标 | 它告诉了你什么 | 为什么值得关注 | |---|---|---| | **健康评分** | 代码变动、缺陷修复、覆盖率和所有权的综合体现 | 用一个数字来评估接下来该重构什么 | | **缺陷修复率** | 修复缺陷的提交所占的比例 | 高 = 脆弱、容易出缺陷的代码 | | **代码变动** | 某个特性被修改的频率 | 热点检测;不稳定性的信号 | | **影响评分** | 结构性爆炸半径 − 覆盖率 | 此处的更改实际上会危及哪些部分 | | **覆盖率** | **每个流程**的行为测试覆盖率 | 找出未经测试的用户旅程,而不仅仅是未测试的代码行 | | **所有权 / 巴士因子** | 谁掌握了知识 | 在核心人员离职前发现单点故障 | ## 工作原理 ``` git history ─┐ ├─▶ deterministic extractors ─┐ code/config ─┘ (routes · MVC · schema · │ package · stack patterns) ├─▶ feature & flow map │ + metrics + symbols Haiku pass · naming + flows (key set) ─┘ │ ▼ feature-map JSON ──▶ CLI · CI · dashboard · MCP ``` **确定性优先。** 其结构来源于你的路由约定、配置、schema 以及 git 的共同变更模式——不需要 LLM。当设置了 `ANTHROPIC_API_KEY` 时,一个 Anthropic(默认为 Haiku,使用 `--model sonnet|opus`)处理过程会自动添加人类可读的名称并进行流程检测。输出的是一个单一且带有版本号的 JSON——这是每个使用者都会读取的稳定契约。 ## 集成 - **GitHub** —— 在 diff 涉及的确切特性上提供 PR 评论,包含风险、覆盖率缺口和运行时信号。 - **Sentry** —— 将生产环境错误映射到特性。 - **PostHog** —— 每个特性的实际使用情况和流量。 - **Slack** —— 每周汇总最高风险、覆盖率缺口和热点。 ## 为什么不直接用…… - **…grep / 阅读文件?** 会消耗上下文,并且会遗漏静态分析无法看到的跨边界、运行时和历史的耦合关系。 - **…SonarQube / linter?** 对于代码行级别的问题很棒;但对*特性*、*流程*和*爆炸半径*视而不见。 - **…你的 issue 跟踪器?** 描述的是意图,而非现实。Faultlines 的基础是代码和历史记录真正表达的内容。 Faultlines 是唯一能够将**结构 + git 历史 + 运行时**结合到一个映射图中——并将其提供给你的 AI 智能体的层。 ## 路线图 - [x] 在任何技术栈上实现双层特性/流程映射 - [x] 行为测试覆盖率与健康评分 - [x] 符号级归属 - [x] MCP 服务器(13 个工具)—— 本地 · 托管 · VPC - [x] Sentry + PostHog 运行时叠加层 - [x] 每次提交时进行增量、亚秒级的重新扫描 - [x] 支持更多智能体与 IDE 的原生插件 ## 许可证 MIT —— 详见 [LICENSE](LICENSE)。
如果 Faultlines 帮助你(或你的智能体)更快地了解了某个代码库,请**[为本仓库点 Star](https://github.com/PashaSchool/faultlines)**。 专为工程师及与他们并肩工作的 AI 智能体而打造 · [faultlines.dev](https://faultlines.dev)
标签:AI编程助手, Git分析, MCP, Python, SOC Prime, 代码库智能, 代码质量分析, 开发工具, 无后门, 逆向工具