Mirdan
Mirdan
AI 代码质量编排器 — 通过运行本地智能层来处理分类、Lint、类型检查、测试运行和验证,从而节省 30-45% 的付费 AI 编码 Token,让 Claude Opus 等昂贵的模型专注于编写代码。
uv tool install mirdan # Install mirdan
mirdan llm setup # Auto-installs backend, downloads model, configures
mirdan init --claude-code # or --cursor
# Done. Quality enforcement + local intelligence is now automatic.适用于 Claude Code、Cursor IDE 和 Cursor CLI。可在 16GB 内存的笔记本电脑上运行。所有数据均保留在本地。
本地智能层(2.0 新增)
Mirdan 2.0 将琐碎工作卸载到您机器上运行的小型本地模型(Gemma 4)中。付费模型仅专注于复杂的推理和代码编写。
编码前:
分类 (Triage) — 对任务进行分类。琐碎任务(修复导入、格式化文件)永远不会触及付费模型。零 Token 消耗。
研究 (Research) — 在本地收集代码库上下文、库文档和项目规范(仅限 64GB+ 内存)。
编码后:
检查运行器 (Check Runner) — 在本地运行 ruff、mypy、pytest。LLM 解析输出,自动修复 Lint 问题,仅报告复杂的失败情况。
智能验证 (Smart Validation) — 64 条质量规则 + LLM 误报过滤、根本原因分组和修复建议。
自动修复 (Auto-Fix) —
mirdan check --smart --fix应用 LLM 生成的搜索/替换修复并进行验证。
硬件 | 运行内容 | Token 节省 |
16GB 笔记本 | Gemma 4 E4B Q3 — 分类、检查、验证、自动修复 | 30-45% |
32GB | Gemma 4 E4B Q3 — 相同功能,更多余量 | 35-50% |
64GB+ Apple Silicon | + Gemma 4 31B 用于提示词优化和研究 | 50-70% |
快速设置
mirdan llm setup # Detects hardware, installs backend, downloads model, configures
mirdan init --claude-code # or --cursor
mirdan llm status # Verify it's working一切都在本地运行。没有远程服务器。没有数据离开您的机器。
为什么选择 Mirdan?
AI 编码助手生成代码很快,但如果没有护栏,它们会产生垃圾代码 (slop):硬编码的密钥、SQL 注入、占位符函数、幻觉导入、裸 except 块,以及看起来正确但在生产环境中失败的代码。
Mirdan 通过在两个环节拦截您的 AI 工作流来解决此问题:
编码前 —
enhance_prompt使用质量要求、安全约束和框架特定标准来丰富您的任务,使 AI 从一开始就能生成更好的代码编码后 —
validate_code_quality捕获遗漏的问题:涵盖安全漏洞、AI 特定反模式和语言最佳实践的 64 条规则
安装后,它通过 IDE 钩子隐形运行。您只需像往常一样编码即可。
它能捕获什么
以下是 mirdan 在一段典型的 AI 生成代码中标记的内容:
API_KEY = "sk-proj-abc123456789" # SEC001: hardcoded API key
def get_users(user_id):
query = f"SELECT * FROM users WHERE id={user_id}" # SEC005 + AI008: SQL injection
result = eval(user_input) # PY001: code injection via eval()
data = requests.get(url, verify=False) # SEC007: SSL verification disabled
try:
process(data)
except: # PY003: bare except
pass结果: 得分 0.0/1.0,6 个错误,3 个警告。通过自动修复,mirdan 可自动解决其中的 5 个。
它为您的提示词添加了什么
当您要求 AI 助手“在 FastAPI 中创建一个带有 JWT 令牌的用户认证端点”时,mirdan 的 enhance_prompt 会检测到这涉及安全性并注入:
框架标准: “使用
Depends()和Annotated进行类型安全的依赖注入”安全约束: “检查是否没有硬编码的密钥或凭据”
质量要求: “所有请求体和响应模式均使用 Pydantic 模型”
验证步骤: “确保错误处理涵盖所有异步操作”
AI 得到的是结构化的指导而不是简单的提示词,从而在第一次尝试时就生成更好的代码。
快速开始
安装
uv tool install mirdan # Install mirdan
mirdan llm setup # Auto-installs LLM backend + downloads model
# Optional extras:
uv tool install 'mirdan[ast]' # + tree-sitter for TS/JS AST analysis
uv tool install 'mirdan[enterprise]' # + truststore for corporate SSL inspection
# Upgrade:
uv tool upgrade mirdan
# Or with pip:
pip install mirdan设置您的 IDE
mirdan init --claude-code # Claude Code: hooks, rules, skills, agents
mirdan init --cursor # Cursor: hooks, rules, AGENTS.md, BUGBOT.md
mirdan init --all # Both IDEs这将生成所有内容 — MCP 服务器配置、质量钩子、规则文件和代理定义。启用 LLM 后,钩子还会配置本地分类和检查运行器。初始化后,您的 IDE 会自动:
在编码任务前使用质量要求丰富提示词
在每次编辑后根据安全和质量规则验证代码
在任务完成前运行最终的质量门禁
从命令行使用
mirdan validate --file src/auth.py # Validate a file
mirdan validate --staged # Validate git staged changes
mirdan fix --file src/auth.py # Auto-fix violations (pattern-based)
mirdan check --smart # Run lint + typecheck + test with LLM analysis
mirdan check --smart --fix src/ # Run checks AND auto-fix with local LLM
mirdan gate # CI/CD quality gate (exit 0 or 1)
mirdan scan --dependencies # Check deps for known CVEs
mirdan scan --directory src/ # Discover codebase conventions
mirdan llm setup # Configure local LLM
mirdan llm status # Show LLM health, model, hardware
mirdan llm metrics # Token savings dashboard工作原理
Mirdan 是一个 MCP 服务器 — 它连接到 AI 编码助手(Claude Code、Cursor、Claude Desktop 或任何 MCP 客户端)并提供质量强制工具。
┌──────────────────────────────────────────────────┐
│ Your AI Assistant (Claude Code / Cursor / etc) │
│ │
│ 1. You type a coding task │
│ 2. Hook triages task via local LLM ────┐ │
│ 3. AI generates code with guidance │ │
│ 4. Hook runs lint/typecheck/test ◄─────┘ │
│ 5. AI fixes only complex issues │
│ 6. Quality gate passes → task complete │
└──────────────────────────────────────────────────┘
│ ▲
▼ │
┌──────────────────────────────────────────────────┐
│ Mirdan MCP Server + Local Intelligence Layer │
│ │
│ MCP Tools (unchanged): │
│ enhance_prompt → Quality requirements │
│ validate_code_quality → 64 rules + LLM enrich │
│ validate_quick → Fast security checks │
│ get_quality_standards → Language/framework ref │
│ get_quality_trends → Historical analysis │
│ scan_dependencies → CVE detection (OSV) │
│ scan_conventions → Convention discovery │
│ │
│ Local LLM (Gemma 4, runs on your machine): │
│ Triage → Classify tasks, save tokens │
│ Check Runner → Run ruff/mypy/pytest locally │
│ Smart Validator → FP filtering, root causes │
│ Auto-Fix → Search/replace code fixes │
│ HTTP Sidecar → <5ms hook integration │
└──────────────────────────────────────────────────┘验证规则
Mirdan 附带了涵盖 10 个类别的 64 条规则。无需外部服务 — 所有规则均在本地运行。
AI 质量 (AI001–AI008)
捕获 AI 生成代码特有模式的规则:
规则 | 捕获内容 |
AI001 | 占位符代码 — |
AI002 | 幻觉导入 — 不在标准库或项目依赖中的包 |
AI003 | 过度工程 — 对简单操作进行不必要的抽象 |
AI004 | 重复代码块 |
AI005 | 不一致的错误处理模式 |
AI006 | 在存在更轻量替代方案时使用不必要的重型导入 |
AI007 | 安全剧场 — 看起来安全但无法提供保护的模式 |
AI008 | 通过 f-string 注入 — 带有插值的 SQL、eval、exec、os.system |
安全性 (SEC001–SEC014)
规则 | 捕获内容 |
SEC001–003 | 硬编码密钥 — API 密钥、密码、AWS 密钥 |
SEC004–006 | SQL 注入 — 字符串拼接、f-string、模板字面量 |
SEC007 | SSL/TLS 验证被禁用 |
SEC008–009 | 通过字符串格式化进行的 Shell 命令注入 |
SEC010 | JWT 验证被禁用 |
SEC011–013 | 图数据库注入 — Neo4j Cypher, Gremlin |
SEC014 | 易受攻击的依赖项 — 具有已知 CVE 的包 |
语言特定
语言 | 规则 | 关键检查 |
Python | PY001–PY015 | eval/exec, 裸 except, 可变默认参数, 已弃用的类型提示, 不安全的 pickle/yaml, subprocess shell, 死代码导入, 不可达代码 |
JavaScript | JS001–JS005 |
|
TypeScript | TS001–TS005 | eval, Function 构造函数, @ts-ignore, |
Go | GO001–GO003 | 被忽略的错误, panic(), 通过 fmt.Sprintf 进行的 SQL |
Java | JV001–JV007 | String ==, 通用 Exception, System.exit, Runtime.exec, 不安全的反序列化 |
Rust | RS001–RS002 | .unwrap(), 空的 .expect() |
此外还有 ARCH001–003 / TSARCH001–004(函数长度、文件长度、嵌套深度、缺失返回类型),RAG001–002(分块重叠、已弃用的加载器)。
Python 规则 PY001–PY004 使用 基于 AST 的验证 — 消除了字符串和注释中的误报。安装 mirdan[ast] 后,TypeScript/JavaScript 架构检查将使用 tree-sitter 进行准确的函数长度、嵌套深度和返回类型分析。
32 条规则支持通过 mirdan fix 自动修复。
语言和框架支持
语言: Python, TypeScript, JavaScript, Go, Java, Rust
33 个框架标准 — mirdan 了解每种框架的惯用法、最佳实践和常见陷阱:
React, React Native, Next.js, Nuxt, Vue, SvelteKit, Astro, Flutter, Tailwind, FastAPI, Django, Express, NestJS, Echo, Gin, Spring Boot, Micronaut, Quarkus, Drizzle, Neo4j, Supabase, Convex, Pinecone, Qdrant, Milvus, Weaviate, ChromaDB, FAISS, LangChain, LangGraph, CrewAI, DSPy, tRPC
当 enhance_prompt 检测到框架时,它会注入框架特定的质量要求(例如,FastAPI 使用 Depends() 和 Annotated,Next.js 优先使用服务器组件)。
质量配置文件
配置文件在 8 个维度上调整执行级别。选择一个适合您项目的配置:
配置文件 | 安全性 | 架构 | 测试 | AI 垃圾代码 | 依赖安全 | 适用场景 |
default | 0.7 | 0.5 | 0.7 | 0.7 | 0.7 | 通用项目 |
startup | 0.7 | 0.3 | 0.5 | 0.8 | 0.5 | 快速迭代且有安全网 |
enterprise | 1.0 | 0.9 | 0.9 | 1.0 | 1.0 | 生产级企业代码 |
fintech | 1.0 | 0.8 | 1.0 | 1.0 | 1.0 | 金融级正确性 |
library | 0.8 | 0.9 | 0.9 | 0.8 | 0.8 | 公共 API 和包 |
data-science | 0.7 | 0.3 | 0.5 | 0.6 | 0.5 | 数据安全探索 |
prototype | 0.5 | 0.2 | 0.2 | 0.5 | 0.3 | 快速原型开发 |
量表:0.0–0.3 宽松 | 0.3–0.7 中等 | 0.7–1.0 严格
mirdan init --quality-profile enterprise
mirdan profile apply fintech # Change later
mirdan profile suggest # Let mirdan recommend oneIDE 集成
Claude Code
mirdan init --claude-code生成 .mcp.json、钩子、规则、7 个技能(/code, /debug, /review, /plan, /quality, /scan, /gate)和 5 个代理(quality-gate, security-audit, test-quality, convention-check, architecture-reviewer)。
钩子严格程度级别控制 mirdan 干预的积极程度:
级别 | 钩子 | 适用场景 |
MINIMAL | 2 (PostToolUse, Stop) | 低摩擦入门 |
STANDARD | 5 (+ UserPromptSubmit, PreToolUse, SubagentStart) | 日常开发 |
COMPREHENSIVE | 15 (完整生命周期,包括压缩、工作树) | 团队和生产环境 |
Cursor
mirdan init --cursor生成完整的 Cursor 2.x 集成:
规则 —
.cursor/rules/*.mdc(始终开启,安全、规划、调试、代理、语言特定)钩子 — 带有提示词类型 + 命令类型钩子的
.cursor/hooks.json,.cursor/hooks/*.sh脚本子代理 —
.cursor/agents/*.md(quality-validator, security-scanner, test-auditor, slop-detector, architecture-reviewer)技能 — 遵循 Agent Skills Standard 的
.cursor/skills/*/SKILL.md(code, debug, review, plan, quality, scan, gate)命令 —
.cursor/commands/*.md斜杠命令 (/code,/debug,/review,/plan,/quality,/scan,/gate)环境 — 用于云代理环境的
.cursor/environment.json配置 —
.cursor/mcp.json,AGENTS.md,BUGBOT.md
Cursor 有工具槽位限制。设置 MIRDAN_TOOL_BUDGET 来控制暴露哪些工具(2 = 仅验证,5+ = 所有工具)。
Claude Desktop / 任何 MCP 客户端
添加到您的 MCP 配置中:
{
"mcpServers": {
"mirdan": {
"command": "uvx",
"args": ["mirdan"]
}
}
}企业网络(Netskope, Zscaler, Artifactory 代理):传递 SSL 和模型下载的环境变量:
{
"mcpServers": {
"mirdan": {
"command": "uvx",
"args": ["mirdan"],
"env": {
"MIRDAN_HF_ENDPOINT": "https://artifactory.corp.com/hf",
"MIRDAN_HF_TOKEN": "your-artifactory-token",
"MIRDAN_SSL_CERT_FILE": "/path/to/corporate-ca-bundle.crt"
}
}
}
}企业部署
通过托管配置进行组织范围内的强制执行:
macOS: /Library/Application Support/ClaudeCode/managed-mcp.json
Linux: /etc/claude-code/managed-mcp.json
{
"mcpServers": {
"mirdan": {
"command": "uvx",
"args": ["mirdan"]
}
}
}CI/CD 集成
GitHub Actions
将此工作流添加到 .github/workflows/mirdan.yml:
name: Mirdan Quality Gate
on: [pull_request]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
- run: uv tool install mirdan
- run: mirdan gate用于 GitHub 代码扫描的 SARIF 导出
- run: mirdan export --format sarif > results.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarifPre-commit 钩子
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: mirdan
name: mirdan quality gate
entry: mirdan validate --staged --quick
language: system
types: [python]质量徽章
mirdan export --format badge > .mirdan/badge.json配置
mirdan init 生成 .mirdan/config.yaml。关键部分:
version: "1.0"
project:
name: "MyApp"
primary_language: "python"
frameworks: ["fastapi", "react"]
# Quality enforcement levels
quality:
security: "strict" # strict|moderate|permissive
architecture: "moderate"
documentation: "moderate"
testing: "strict"
# Or use a named profile (overrides quality section)
quality_profile: "default"
# Semantic validation and dependency scanning
semantic:
enabled: true
analysis_protocol: "security" # none|security|comprehensive
dependencies:
enabled: true
osv_cache_ttl: 86400 # 24 hours
scan_on_gate: true
fail_on_severity: "high" # critical|high|medium|low|none
# Score thresholds
thresholds:
severity_error_weight: 0.25
severity_warning_weight: 0.08
arch_max_function_length: 30
arch_max_file_length: 300
# Per-file threshold overrides (glob patterns)
file_overrides:
- pattern: "tests/**"
arch_max_function_length: 60
- pattern: "scripts/**"
arch_max_file_length: 500
# Hook behavior
hooks:
enabled_events: ["PreToolUse", "PostToolUse", "Stop"]
quick_validate_timeout: 5000
auto_fix_suggestions: trueLLM 配置位于 .mirdan.yaml(由 mirdan llm setup 写入):
llm:
enabled: true
backend: llamacpp # llamacpp (default) or ollama
model_keep_alive: 5m # Unload model after idle (saves RAM)查看完整的 LLM 配置参考 或运行 mirdan llm setup 进行自动配置。
高级功能
基于 AST 的验证
Python 规则 PY001–PY004 通过 ast 模块进行验证,消除了字符串中 eval/exec、注释中裸 except 等情况的误报。另外两条 AST 规则:
PY014 (dead-import) — 检测未使用的导入,尊重
TYPE_CHECKING块、__all__和别名导入PY015 (unreachable-code) — 检测
return/raise/break/continue之后的代码,跳过finally块
对于 TypeScript/JavaScript,安装可选的 ast 扩展以启用 tree-sitter 解析:
uv tool install 'mirdan[ast]'这提供了准确的函数长度、嵌套深度和缺失返回类型检测,而不是正则表达式近似。当未安装 tree-sitter 时,会优雅地回退到正则表达式。
全文件差异验证
当验证差异(通过钩子或 input_type="diff" 的 validate_code_quality)时,mirdan 会在可用时从磁盘读取完整文件。这使得需要全文件上下文的架构检查(函数长度、嵌套深度)成为可能。违规仅过滤到更改的行,文件范围规则(
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/S-Corkum/mirdan'
If you have feedback or need assistance with the MCP directory API, please join our Discord server