betovildoza/Architect_compass

GitHub: betovildoza/Architect_compass

这是一个无需安装的Python脚本,能通过正则表达式映射多技术栈项目的依赖关系,检测死文件并生成结构健康评分,从而辅助技术审计。

Stars: 0 | Forks: 0

# 🧭 Architect's Compass [![Python](https://img.shields.io/badge/Python-3.8+-3776AB?style=flat-square&logo=python&logoColor=white)](https://python.org) [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey?style=flat-square&logo=github&logoColor=white)](https://github.com/betovildoza/Architect_Compass) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) [![Stack-Agnostic](https://img.shields.io/badge/Stack-Agnostic-orange?style=flat-square&logo=atom&logoColor=white)](https://github.com/betovildoza/Architect_Compass) [![No Install](https://img.shields.io/badge/No%20Install-Required-2ecc71?style=flat-square&logo=checkmarx&logoColor=white)](https://github.com/betovildoza/Architect_Compass) **面向长期项目和多技术架构的技术审计。** 检测死文件,通过文件身份映射依赖关系,并生成结构健康评分 — 无需触碰你的代码。 ## 为什么选择 Architect's Compass? 当你同时管理多个项目 — WordPress、Next.js、AI Agent、APIs — 时,文件树难免会充斥旧版本、备份和离线组件,没人知道它们是否仍然重要。 通常的应对方案是手动遍历项目或依赖记忆。这两种方式都难以扩展。 Architect's Compass 提供了一种不同的方式:**运行一个脚本,几秒钟内即可获得存活、孤立以及应当删除内容的完整地图。** 它完全在本地运行。无需安装或外部依赖。不会修改项目的任何文件 — 所有智能数据都保存在一个隐藏文件夹 `.map/` 中,你可以选择忽略或将其提交。 有时候,最有用的东西也往往是最不显眼的。 ## ✨ 特性 | Feature | 描述 | |---|---| | 🗺️ Atlas JSON | 位于 `.map/atlas.json` 的完整技术报告 | | 💀 孤儿检测 | 识别未检测到逻辑连接的文件 | | 🔁 反重复 | 检测同一组件的多个版本(`v1`、`_old`、`_backup`) | | 📡 连接图 | 包含组件间 inbound/outbound 流向的 `.dot` 图 | | 📈 健康评分 | 基于项目结构清理度的 0–100% 指标 | | 📓 历史日志 | 记录每次执行时的评分演变 | | 🧩 技术栈无关 | 基于 Regex 的引擎 — 适用于任何语言或框架 | | 🪟 隐身模式 | 不在工作树中生成文件;所有内容存入 `.map/` | ## 🔬 核心能力 **🔍 身份统一** 引擎在分析 imports 之前会先索引项目中的所有文件。如果发现 `from services.monitor import X`,它知道这是指物理文件 `services/monitor.py` — 并将该路径作为图中的节点。无重复,无幽灵节点。 **🛡️ 动态健康审计** 评分(0–100%)根据文件总数与至少有一个检测到连接的文件之间的关系计算。孤立文件会降低评分。重复文件也会。 **📂 分层配置** Compass 接受全局 `mapper_config.json`(位于工具文件夹)或每个项目中 `.map/mapper_config.json` 的本地配置。本地配置优先,允许在不触及基础配置的情况下按项目定义技术栈。 **🕸️ 干净的可视化导出** `.dot` 图仅包含业务逻辑。环境文件夹(`.venv`、`node_modules`、`__pycache__`)默认被排除,将原本的外部库“蜘蛛网”转变为真实架构的可读地图。 ## 📊 生成的输出 在项目根目录下运行 Compass 时,会创建包含三个文件的 `.map/` 文件夹: **`atlas.json`** — 完整报告。包括: ``` { "generated_at": "2025-06-15 14:32:10", "project_name": "mi-proyecto", "identities": [{ "tech": "WordPress-Development", "confidence": 90 }], "summary": { "total_files": 84, "relevant_files": 31 }, "connectivity": { "inbound": [...], "outbound": [...] }, "audit": { "structural_health": 87.5, "warnings": [ { "type": "ORPHAN", "file": "utils/old_helper.js", "description": "..." }, { "type": "AMBIGUITY", "files": ["api.php", "api_v2.php"], "description": "..." } ] } } ``` **`connectivity.dot`** — Graphviz 格式的依赖图。将其粘贴到 [GraphvizOnline](https://dreampuf.github.io/GraphvizOnline) 即可可视化。 ![connectivity 截图](/connectivity.dot.jpg) **`feedback.log`** — 执行历史记录,包含按日期统计的评分和统计信息。 ## ![feedback 截图](/feedback.log.jpg) ## 🚀 安装 无需安装。只需在系统中安装 Python 3.8+。 ``` # 克隆或将 repo 下载到工具文件夹 git clone https://github.com/betovildoza/Architect_compass C:\DevTools\ArchitectCompass # 复制示例 config cp mapper_config.example.json mapper_config.json ``` 编辑 `mapper_config.json` 以调整定义以适应你的技术栈(见配置章节)。 ### 快速使用 ``` # 导航到要审计的项目根目录 cd C:\Projects\mi-proyecto # 运行 script python C:\DevTools\ArchitectCompass\architect_compass.py ``` ### 使用环境变量自动化(Windows) 将以下文件保存为与脚本同文件夹下的 `compass.bat`: ``` @echo off set SCRIPT_PATH="C:\DevTools\ArchitectCompass\architect_compass.py" if exist %SCRIPT_PATH% ( python %SCRIPT_PATH% ) else ( echo [ERROR] No se encontro el motor en %SCRIPT_PATH% echo Revisa la ruta en compass.bat ) pause ``` 然后将该文件夹添加到系统 **PATH** 中: `环境变量 → Path → 编辑 → 新建 → 粘贴路径` 之后,在任何终端的项目根目录下: ``` compass ``` ## ⚙️ 配置 工具的强大之处在于 `mapper_config.json`。它包含两个主要部分: **`basal_rules`** — 适用于所有项目的全局规则: - `ignore_folders`:扫描器完全忽略的文件夹 - `text_extensions`:进行深度分析的文件扩展名 - `network_triggers`:指示网络调用的模式 - `persistence_triggers`:指示访问持久化数据的模式 **`definitions`** — 按技术的技术栈定义。每个条目允许 Compass 识别该技术并映射其连接性: ``` { "name": "Mi-Stack-Custom", "priority": 10, "indicators": { "files": ["config.custom"], "folders": ["src/logic"], "patterns_in_files": ["mi_init_function\\("] }, "patterns": { "inbound": ["on_request\\(", "register_handler\\("], "outbound": ["call_external_api\\(", "write_to_db\\("] } } ``` `mapper_config.example.json` 文件包含可直接使用的定义:**PHP Backend**、**Vanilla Frontend** 和 **WordPress**。 ## 🛠️ 技术栈 **Runtime** - Python 3.8+ **Dependencies** - 仅标准库(`os`、`json`、`re`、`pathlib`、`datetime`) **Outputs** - JSON (atlas) - Graphviz DOT (connectivity graph) - Plain text (historical log) ## 🗂️ 仓库结构 ``` ArchitectCompass/ ├── architect_compass.py # Motor principal ├── mapper_config.example.json # Configuración de referencia ├── compass.bat # Launcher para Windows con PATH └── README.md ``` ## ⚠️ 需要注意的行为 ### 文件名中的特殊字符 身份解析引擎会在文件注册中查找之前清理捕获的路径。允许的字符集为:字母、数字、`. / _ -`。 如果被审计的项目包含超出该字符集的文件(例如:`@`、`$`、`~`、空格),这些字符将被静默删除,文件可能无法正确解析 — 在图中显示为无连接节点。 **症状:** 指向与真实文件不匹配名称的箭头(“幽灵节点”)。 **解决方案:** 检查 `architect_compass.py` 中 `_resolve_identity` 内的 regex,并将必要的字符添加到允许集中。 ### 本地配置行为(`.map/mapper_config.json`) 本地配置**不会替换**全局配置 — 而是**扩展**它们: - `basal_rules`:本地的键会覆盖全局中同名的键。 - `definitions`:如果本地定义的 **`name`** 与全局定义的相同,则完全替换它。如果是新名称,则添加到列表中。 这意味着要向已在全局中定义的技术(例如:WordPress)添加模式,必须将完整定义复制到本地并进行修改 — 仅放置新模式是不够的。 ## 📜 许可证 本软件在 MIT 许可证下分发。 详情请参阅 `LICENSE` 文件。 *由 [Alberto Vildoza](https://github.com/betovildoza) 维护。*
标签:Homebrew安装, Python, WebSocket, 云安全监控, 代码健康, 代码维护, 依赖分析, 多技术栈, 孤立文件检测, 技术债务, 数字取证, 文件清理, 文件管理, 无依赖, 无侵入式, 无后门, 本地工具, 架构分析, 死代码检测, 自动化脚本, 逆向工具, 静态分析, 项目重构