关于 garuda
Garuda 是面向使用 AI 编码助手团队的变更治理 MCP 服务,可分析代码影响、按架构规则检查修改,并将保存的检查结果记录在防篡改日志中。
主要功能
- 01代码依赖影响分析
- 02提取并检查架构规则
- 03提供 ALLOW、WARN、REVIEW 或 BLOCK 判定
- 04区分新增问题与既有问题
- 05保存检查结果的防篡改记录
适用场景
- 01在 AI 修改代码前检查依赖
- 02阻止违反架构规则的变更
- 03审查不同指标公式之间的差异
- 04保留变更检查的审计记录
MCP 相关
`garuda-mcp` 通过标准输入输出运行,为支持 MCP 的助手提供 54 个工具和 6 项技能,包含只读操作和状态变更操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e DATABASE_URL -e GARUDA_WORKSPACE ghcr.io/myshra777-ai/garuda-mcp:1.9.11DATABASE_URL密钥PostgreSQL connection URL for the Garuda graph and ledgerGARUDA_WORKSPACEWorkspace name to govern本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/myshra777-ai/garuda-mcp:1.9.11stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Garuda
AI 可以编写代码。Garuda 确保更改符合你的系统要求。
为 AI 编写的代码提供变更控制。
正在带领工程团队? 两分钟了解商业价值 →
这是什么?
你让 AI 助手(Claude Code、Cursor、Codex……)修改代码。它运行正常,测试也通过了。 但它是否悄悄绕过了服务层、违反了团队去年商定的规则,或更改了财务团队依赖的数字?
你的助手擅长编写代码。但它不会自动了解团队做出的每项决策、系统中依赖这段代码的每个部分,或必须始终遵守的每条规则。
Garuda 是一个安全检查机制,位于 AI 助手与代码库之间:
- 编辑之前,Garuda 会告知助手哪些部分依赖这段代码,以及适用哪些规则。
- 编辑之后,Garuda 会根据规则检查更改,并给出允许、警告、审核或阻止的结论,同时提供清晰的修复说明。
- 已保存的决策会封存到防篡改日志中,以便你日后证明检查过什么,以及何时检查。
了解影响。执行规则。留存证据。
支持 Go、Python 和 TypeScript,更多语言即将推出。
从头到尾看一次变更
假设助手收到任务,要为支付处理程序添加一项功能。
- 它先询问 Garuda。 Garuda 回复:“还有 12 个部分依赖这里的代码。这是高风险代码。规则:支付处理程序不得直接访问数据库。”
- 助手进行编辑。 匆忙之中,它直接从处理程序调用数据库。
- Garuda 检查更改。 它发现违反了规则,给出阻止结论,并准确告诉助手应将什么移到哪里。
- 助手修复问题。 第二次检查给出允许结论。
- 结果已保存。 你会得到一份之后可以查阅的记录。
Garuda 还会区分此次更改引入的问题与原本就存在的问题。你不必先清理多年来积累的旧代码才能继续推进。你只需对新出现的问题负责。
Garuda 会像编译器一样读取 Go,因此结果可重复。Python 和 TypeScript 则根据代码结构进行读取,准确度不错,但分析不够深入(参见Garuda 不会做什么)。
开始体验(约 10 分钟)
1. 安装 · 3 分钟
git clone https://github.com/myshra777-ai/garuda.git
cd garuda
./setup.sh
setup.sh 会启动本地 PostgreSQL 数据库,将工具构建到 bin/,并启动仪表板。
最后会显示登录信息。Windows 用户请使用 setup.ps1。
只想先看看?npx garuda-guard demo 无需数据库即可运行下方的演示(需要 Node 18 或更高版本)。
想让 AI 助手帮你完成?复制适用于 ChatGPT、Claude、Codex 或 Cursor 的提示词。
想用一行命令?curl -fsSL https://raw.githubusercontent.com/myshra777-ai/garuda/main/install.sh | bash 可以完成相同操作。
(和任何通过管道传入 shell 的安装程序一样,请先阅读脚本。)
2. 观看它捕获三个预设缺陷 · 1 分钟
./bin/garuda demo
这会构建一个微型的虚拟支付服务,其中故意埋入了三个问题,然后使用 Garuda 的分析器进行分析,并列出 Garuda 专门用于捕获的问题。无需数据库:
| 预设问题 | 重要性 |
|---|---|
| 支付处理程序直接与数据库交互 | 绕过了本应负责保护资金流转的层 |
使用 float64 计算金额,并且有一份报告的数值偏差 10 倍(48 Cr 与 4.8 Cr) | 数值悄然出错 |
| 存储层导入了支付层 | 依赖方向错误 |
你会看到每个问题、对应的确切文件和行号,以及一段简短的“修复方法”,AI 助手可以据此操作。
此服务和其中的三个问题都是为演示虚构的;演示只是列出这些问题,并不会检测它们。若要在真实代码中进行真实检测,请完成步骤 1,并在步骤 4 中运行 garuda check。Windows 用户请运行 .\bin\garuda.exe demo。
3. 打开仪表板 · 2 分钟
前往 **http://localhost:8080/login**,使用 setup.sh 打印出的登录信息登录。
仪表板首页会引导你完成五个步骤。以下是每个步骤的作用:
添加自己的项目。 点击 New Workspace,粘贴 GitHub 链接或文件夹路径,Garuda 就会为你读取代码。
清晰查看系统结构。 Garuda 不会展示一张错综复杂的大图,而是显示你所关注对象周围的小范围关联:谁调用它,以及它调用了什么。
将书面决策转化为强制规则。 添加设计文档或决策记录(ADR)。Garuda 会提取其中的“必须”和“禁止”条目,并将它们关联到对应代码。还没有文档?它会根据你的代码起草一套规则,供你审核。
发现彼此矛盾的数值。 如果两个团队用不同方式计算同一项指标,或者一个查询除以 1e7,另一个却除以 1e8,Garuda 会帮你对照这两个版本,展示它在代码中找到的公式,并请人来判断哪个才正确。它不会猜测。
了解各项信号。 每个徽标都有固定含义:
| 你看到的内容 | 含义 |
|---|---|
| ALLOW / WARN / REVIEW / BLOCK | 对变更的判定。BLOCK 会阻止变更,并告知助手如何修复。 |
| SUPPORTED | 在已检查的范围内,证据支持此声明。可以放心依赖。 |
| UNVERIFIED | 在代码或文档中发现,但尚未确认。这不代表错误。 |
| CONTRADICTED | 证据与你写下的规则或声明相冲突。 |
| HIGH / MEDIUM / LOW tier | 有多少内容依赖这段代码。高等级代码受到保护,不会被 AI 悄然改写。 |
4. 将它指向你自己的代码 · 3 分钟
cd /path/to/your/project
/path/to/garuda/bin/garuda init . --wizard # five short questions
/path/to/garuda/bin/garuda rulebook generate # drafts rules from your code
/path/to/garuda/bin/garuda check . --diff HEAD # checks what you just changed
不确定从哪些规则开始?选择一套现成规则:garuda init . --template layered(也可以选 hexagonal、microservices、no-circular-imports、financial、zero-trust-auth、ai-agent-safety、pii-gdpr-hipaa、idempotent-mutations 或 all)。这些规则位于 policies/templates/。
如果你正在从 ArchUnit、Dependency-Cruiser 或 Import Linter 迁移?garuda import --from archunit --input <file> 可以转换你现有的规则。
如果发现异常,请运行 ./bin/garuda doctor。它会检查你的数据库、迁移和钩子,并告知问题所在。
将其接入 AI 助手
garuda init 会自动为 Claude Code、Claude Desktop 和 Cursor 完成设置。若要将其作为插件安装:
| 工具 | 操作方法 |
|---|---|
| Claude Code | /plugin marketplace add myshra777-ai/garuda 然后运行 /plugin install garuda@garuda |
| OpenAI Codex | codex plugin marketplace add myshra777-ai/garuda |
| Cursor | 运行 garuda init;它会将规则和 MCP 设置写入项目(.cursor-plugin/ 中包含插件清单) |
| 任何支持 MCP 的工具 | 通过标准输入/输出运行 garuda-mcp(示例配置) |
该插件需要 garuda-mcp 程序和数据库,因此请先完成上面的第 1 步。
助手将获得:54 个工具(41 个只读工具,13 个可更改状态的工具)和 6 个技能,即告诉助手何时使用这些工具的简短操作指南:
| 技能 | 助手何时使用 |
|---|---|
pre-edit-governance | 修改代码之前:继续、修改,还是询问人工? |
change-impact | 谁会调用它,影响会扩散到多大范围? |
post-edit-verification | 编辑之后:此差异中是否出现了新的违规? |
violation-repair | 更改被拦截;修复问题,同时避免破坏其他内容 |
architecture-review | 实际代码是否符合文档中描述的设计? |
evidence-verification | 这项主张是否有代码支持,凭据是否真实? |
检查每个拉取请求
助手表现良好只是一种期望。拉取请求检查则是一条规则。添加 GitHub Action,即可为每个拉取请求给出判定:
- 运行摘要中会显示判定(ALLOW、WARN、REVIEW 或 BLOCK)和凭据哈希,并附上一行命令,供你在本机重现结果;
- BLOCK 会使检查失败;
- 使用现成的工作流
.github/workflows/garuda-gate.yml,还会在拉取请求中收到判定评论,并在 GitHub 的 Security 选项卡中看到检查结果; - 可通过
garuda check --notify-slack/--notify-teams选择接收 Slack 或 Teams 提醒。
从 docs/GITHUB_MARKETPLACE_STRATEGY.md 复制可直接粘贴的代码片段,或直接使用 action.yml。
还需完成一步才能真正生效: 在仓库中前往 Settings → Rules(或 Branches),将 Garuda 检查设为必需的状态检查。在完成此操作之前,失败的检查只是一条警告,其他人仍可绕过它进行合并。
Garuda 不会做什么
我们希望你能信任本页的其他内容。
- 它不是束缚助手的牢笼。 Garuda 会为助手提供上下文并拦截不良更改,但助手可以忽略建议,钩子也可以关闭。唯一不可跳过的检查,就是上面提到的必需拉取请求检查。
- Garuda 对 Go 的理解比对 Python 和 TypeScript 更深入。 Go 代码会通过编译器自身的类型信息进行读取。Python 和 TypeScript 则按代码结构读取,这对导入、调用和分层的分析是准确的,但无法解析所有类型。
- 并非每项检查都会自动存储。 只有保存检查结果后,该结果才会被封存到防篡改日志中。日志能证明记录之后未被更改,但不能证明分析是完整的。
- 数字不匹配工具旨在帮助人工判断。 它们会将你指定的公式和值排列在一起,但不会自动理解公司中的所有财务计算。演示中
48 Cr与4.8 Cr的对比是刻意设置的示例。 - 本页的数字来自特定版本。 有关测量内容、对象和时间,请参阅
EVIDENCE.md。
适用对象
已经大量使用 AI 编码助手,并在有严格规则的真实代码库中工作的团队:例如不得跳过的层级、数据访问限制、安全要求或资金处理要求。如果你无法亲自审查 AI 编写的每一项更改,Garuda 就适合你。
免费版和付费版
以上所有功能都在本地运行,且免费开源(Apache 2.0)。托管和多团队功能(组织内共享策略、单点登录、长期审计存储)计划纳入付费版。
了解更多
QUICKSTART.md:同样的上手流程,提供更多详情docs/TALON.md:前后检查的工作方式docs/DASHBOARD_WALKTHROUGH.md:仪表板的每个页面docs/DATA_AND_LOGIC_AUDIT_GUIDE.md:数值不匹配检查docs/adr/:Garuda 本身背后的决策docs/LISTING_GUIDE.md:本项目在插件和 MCP 目录中的收录方式INSTALL.md·docs/API.md·EVIDENCE.md·SECURITY.md·CONTRIBUTING.md
让 AI 快速行动,同时掌控它所做的更改。
根据 Apache 2.0 许可证发布。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。