mcpField
C
codemore

codemore

本地服务
github.com/abhinavteja123开发工具215 周前更新

关于 codemore

CodeMore 是面向编码 Agent 的静态分析器,将代码问题整理为包含修复建议和验证条件的机器可读报告。它提供 CLI、MCP 服务、VS Code 扩展和 GitHub Action,供 Agent 或 CI 检查并处理发现项。

主要功能

  1. 01检测安全与代码质量问题
  2. 02输出定位到文件和行列的报告
  3. 03提供修复模板与验证条件
  4. 04通过 Agentic 循环生成并验证修复
  5. 05支持外部分析器和 CI 门禁

适用场景

  1. 01让编码 Agent 读取并修复扫描结果
  2. 02在 CI 中阻止新出现的严重问题
  3. 03为代码审查提供机器可读发现项
  4. 04用基线管理已有代码库的问题

MCP 相关

MCP 服务向客户端提供 scan_project、scan_file、explain_issue、suggest_fix、apply_fix 和 validate_fix 工具,用于扫描项目、分析问题并执行及验证修复。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"abhinavteja123-codemore": {
"command": "npx",
"args": [
"-y",
"codemore"
]
}
}
}
启动命令npx -y codemore

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcodemore0.2.8

工具

6

收录的工具列表 · 更新于 2 周前

参数类型必填说明
packsarray否限制为指定的 pack(例如 ["vibe-supabase"])。默认值:所有已注册的 pack。
rootPathstring是项目根目录的绝对路径或相对于工作区的路径。
frameworksarray否附加到每个文件上下文的框架提示(例如 ["supabase","next.js"])。
enableExperimentalboolean否包含 lifecycle=experimental 中的规则。默认值为 false(与 CLI 一致)——如果需要更全面但噪声更多的覆盖范围,请设为 true。截至 v0.2.1,经过校准的目录属于 beta 级别;experimental 中包含仍待调整精确度的规则(例如 core-quality-duplicate-string)。

详细介绍

图片

CodeMore

AI Agent 可读取的静态分析器。

AI Agent 快速交付代码,也快速引入漏洞。CodeMore 会扫描代码,然后将机器可读的报告交给编写这些代码的 Agent,其中包含确切的修复方案和验证标准。Agent 会自行修复发现的问题。

网站 · 文档 · 规则目录 · 报告架构 · 更新日志

npm 许可证:MIT 规则 适配器 审计 BLOCKER 真阳性率

npx codemore@latest scan .

64 条原生规则 · 8 个外部适配器 · 命令行 · MCP 服务 · VS Code 扩展 · GitHub Action — 一份报告,在所有界面上逐字节一致。


目录


为什么选择 CodeMore

AI 辅助编程导致的漏洞发生率已得到测量,并且持续上升:

发现来源
45% 的 AI 生成代码存在 OWASP Top-10 漏洞Veracode 2025/26
扫描的 1,072 个氛围编程网站中,98% 至少存在 1 个安全缺陷Symbiotic
70% 经审计的 Lovable 应用在交付时禁用了 Supabase RLSDEV
AI 工具辅助提交的密钥泄漏率是基准水平的 2 倍GitGuardian SOSS 2026
每月 35 个 CVE 归因于 AI 生成代码(1 月时为每月 6 个)2026 年 3 月

现有扫描器(SonarQube、DeepSource、Snyk)面向坐在仪表板前的人类审查者。但这些代码并非由人类编写——而编写代码的大模型完全有能力修复自己的漏洞,前提是报告的格式适合机器读取。

这正是 CodeMore 的切入点。CodeMore 不是又一个 SAST 仪表板。它是扫描器与编码 Agent 之间的报告约定:每条发现都包含一个带补丁模板的 suggestedFix 和明确的 verificationCriteria——不只是“这里有个问题”,而是“这里有确切的方法来确认你已修复问题”。

发现漏洞的 Agent 也能编写修复方案——前提是它能读取报告。


快速开始

命令行
npx codemore@latest scan .

在终端中打印摘要。添加 --json 可将完整的报告输出到 stdout,或添加 --out codemore-report.json 将报告写入磁盘:每条发现都标注了 file:line:column,并附带规则引用、修复模板和验证标准。将报告传递给 Agent,看看它如何逐一修复问题。

npm install -g codemore                        # once — or prefix each command below with `npx codemore@latest`
codemore update                                # global install pinned an old version? this pulls latest
codemore scan . --fail-on BLOCKER              # CI gate: non-zero exit on any BLOCKER
codemore scan . --external-tools ruff,biome    # opt in to external tools
codemore scan . --external-tools all           # ruff · golangci-lint · clippy · biome · bandit · gitleaks · npm-audit · pip-audit
codemore scan . --format sarif --out codemore.sarif   # GitHub code scanning (upload-sarif)
codemore fix . --rule <id> --write             # agentic fix loop from the CLI (needs an LLM API key)
codemore baseline create                       # adopt on an existing repo without drowning in legacy findings
MCP 服务 — Cursor、Claude Code、Codex、Claude Desktop
npx codemore mcp                              # print config snippet + every client's config path
npx codemore mcp install --client cursor      # merge into existing config (backs up first, --dry-run supported)
手动配置片段
{
  "mcpServers": {
    "codemore": {
      "command": "npx",
      "args": ["-y", "codemore@latest", "serve-mcp"]
    }
  }
}

提供 6 个工具:scan_project · scan_file · explain_issue · suggest_fix · apply_fix · validate_fix。

各客户端的设置方法、确切配置路径和已验证的握手证据(Claude Code、Cursor、Claude Desktop、Codex CLI):docs/ide-matrix.md。

VS Code 扩展

从 VS Code Marketplace(Extensions → 搜索 "CodeMore" → Install)安装 CodeMore,或自行构建 VSIX:

npm run vsce:package                             # builds codemore-<version>.vsix
code --install-extension codemore-<version>.vsix

提供行内诊断;代码操作快速修复会调用 Agent 工作流(规划 → 生成 → 验证 → 重试,最多 3 次)。

GitHub Action
# .github/workflows/codemore.yml
on:
  pull_request:
    branches: [main]
jobs:
  scan:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
      - uses: abhinavteja123/codemore@v1
        with:
          fail-on: BLOCKER

PR 评论机器人;只有发现相较于已提交的 .codemore-baseline.json 而新增的问题时,才会导致构建失败。完整的安全门配置可直接复制粘贴,通过 CodeMore + Ruff + Biome + Bandit + Gitleaks + npm-audit + pip-audit + Checkov 串联各项检查,见 templates/.github/workflows/codemore-security-gate.yml(操作指南)。

Web Scanner(托管版)

在 codemore.tech 登录,粘贴公开的 GitHub URL 或上传 ZIP——同样的报告、同样的指纹,无需安装。


检测内容

64 条原生规则,涵盖 6 个规则包,每条规则都对应一类有真实案例佐证的事件——并非假设场景:

规则包规则数亮点
core-security22SQL 注入(字符串拼接)、路径遍历、弱加密、不安全反序列化、eval、Shell 注入、TLS 未启用、硬编码密钥模式、硬编码密码(B105 类)、SSRF、密钥写入日志、大模型输出流入 eval/exec/SQL 接收点、提示词注入接收点、数据库写入操作缺少 WHERE、幻觉导入
core-quality21未使用的变量/导入/导出、圈复杂度、无效条件、遗留的 console/打印语句、异步函数中没有 await、不可达代码、宽松相等比较、as any、滥用非空断言
vibe-frontend9XSS(dangerouslySetInnerHTML)、携带凭证的 CORS、缺少速率限制、缺少 Cookie 标志、文件上传验证、缺少输入验证——CORS、Cookie 标志和输入验证均提供 TS + Python(Flask/FastAPI)规则
vibe-secrets4公开环境变量泄漏(NEXT_PUBLIC_* / VITE_* / REACT_APP_*)、硬编码 JWT、MCP 配置密钥、CI/CD YAML 密钥
vibe-auth5BOLA(TS + Python)、缺少会话/身份验证检查(TS + Python)、身份验证逻辑反转
vibe-supabase3RLS 未启用、RLS 规则过于宽松(USING (true))、匿名密钥被打包进客户端

8 个外部适配器(默认关闭,可通过 --external-tools 启用):ruff · golangci-lint · clippy · biome · bandit · gitleaks · npm-audit · pip-audit。检测结果使用命名空间 ext:<tool>:<rule-id>——不会与原生规则冲突;如果缺少二进制文件,则会静默跳过,不会导致崩溃。

遍历器能检测到 .gitignore 隐藏的问题。 开发者通过将泄露密钥的文件加入 gitignore 来“隐藏”它时,大多数扫描器就无法再看到该文件——但文件仍在磁盘、tar 包和 Docker 镜像中。即使文件被 gitignore,CodeMore 也始终会扫描名称具有密钥特征的文件(.env*、*.pem、*.key、firebase-adminsdk*.json、credentials.json、.npmrc、.pypirc,等等)。审计正是通过这种方式发现了真实生产环境中的 OpenAI 密钥、Google API 密钥和 Firebase 管理员 SDK 凭据,而其他工具却未能发现。使用 --respect-gitignore-fully 可选择不执行此行为。

各规则的文档:docs/rules——共 64 页,每条规则一页。


报告就是产品

每个界面都会生成相同的、架构稳定的 codemore-report.json — 每次发布都会通过 test/parity.test.ts 验证,确保字节完全一致(时间戳和实例 ID 除外):

CLI    : issues=224  BLOCKER=5  fingerprint=sha256:7f95f2c62e0d3ecea6f23…
MCP    : issues=224  BLOCKER=5  fingerprint=sha256:7f95f2c62e0d3ecea6f23…
Daemon : issues=224  BLOCKER=5  fingerprint=sha256:7f95f2c62e0d3ecea6f23…

一个核心,四种界面。 架构就是 API;各个界面可以互换。

完整报告示例 — codemore-report.json v1.0.0
{
  "schemaVersion": "1.0.0",
  "tool":    { "name": "codemore", "version": "0.3.0" },
  "project": { "root": ".", "framework": "next.js", "language": "typescript",
               "fingerprint": "sha256:7f95f2c62e0d3ecea6f23…" },
  "summary": {
    "issuesTotal": 42,
    "bySeverity":  { "BLOCKER": 2, "CRITICAL": 5, "MAJOR": 15, "MINOR": 18, "INFO": 2 },
    "byCategory":  { "security": 12, "bug": 7, "…": "…" },
    "filesAnalyzed": 87,
    "linesOfCode":   12450,
    "technicalDebtMinutes": 1840
  },
  "issues": [
    {
      "id":          "vibe-supabase-rls-disabled",
      "ruleVersion": "1.2.0",
      "instanceId":  "01HZ…",
      "severity":    "BLOCKER",
      "confidence":  0.95,
      "category":    "security",
      "title":       "Supabase table has no RLS policy",
      "evidence": {
        "file": "supabase/migrations/001_init.sql",
        "line": 14, "column": 1, "endLine": 14, "endColumn": 60,
        "snippet": "create table profiles (id uuid primary key, …);",
        "matchedPattern": "create-table-without-rls"
      },
      "whyItMatters": "Public Supabase client can read/write all rows. 70 % of Lovable apps leak data through this.",
      "citation":     "https://codemore.tech/rules/vibe-supabase-rls-disabled",
      "suggestedFix": {
        "type":             "code-patch",
        "instructions":     "Add `ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;` plus at least one policy scoped to authenticated users.",
        "patchTemplate":    "…",
        "verificationCriteria": [
          "Migration contains ALTER TABLE … ENABLE ROW LEVEL SECURITY",
          "At least one CREATE POLICY exists for the table",
          "Re-scan no longer reports vibe-supabase-rls-disabled for this file"
        ]
      },
      "suppression": {
        "available": true,
        "directive": "// codemore-ignore: vibe-supabase-rls-disabled",
        "scope":     "same-line | next-line | file"
      }
    }
  ],
  "agentInstructions": {
    "preamble":     "You are fixing issues found by CodeMore. Apply patches one issue at a time. After each, request re-scan via validate_fix.",
    "orderingHint": "blockers → criticals → majors",
    "doNotTouch":   ["node_modules/**", "*.lock", ".env*"],
    "stopOn":       "first-validator-failure"
  },
  "meta": {
    "rulesEnabled": 64,
    "packsLoaded":  ["core-security", "core-quality", "vibe-supabase", "…"],
    "scanDurationMs": 4321
  }
}

架构的唯一事实来源:shared/report/schema.json。重大变更会提升 schemaVersion 主版本,并附带迁移指南。


Agentic 修复循环

apply_fix 会运行一个四阶段循环,每个发现最多重试 3 次 — 首次通过后即终止,并且绝不会悄悄保留未通过的补丁:

detect  ──►  plan  ──►  generate  ──►  validate
                                          │
                                          ├──► (fail) → re-plan, retry (≤ 3)
                                          └──► (pass) → apply patch · next finding
  • agenticFixer.ts — 编排器;读取发现项、规则引用和框架上下文
  • validatorHarness.ts — 在临时目录副本中应用补丁、重新运行规则、重新运行文件范围内的测试,并返回 pass | fail 及诊断信息
  • LLM 提供商插件:OpenAI · Anthropic · Gemini · 本地,可通过工作区设置(VS Code)或 CODEMORE_LLM_PROVIDER 环境变量(CLI)配置

诚实衡量准确性

合成基准测试会说谎,真实代码库不会。每次发布都会针对真实项目进行审计,并公布数据 — 包括不理想的数据。

2026-07-07 审计(完整报告)— 7 个代码库(Python 应用、135 万行代码的 TS 单体仓库、多语言 Rust、带合成真实结果的应用、自扫描):检测出 100% 的植入漏洞,在生产环境 .env 中发现了一个真实的 OpenAI 密钥,BLOCKER 真阳性率约为 90%;修复四类误报后,自扫描噪声减少了 85%。

2026-06-12 审计(完整报告)— 10 个真实代码库,BLOCKER 总体 真阳性率约为 85%,高于 DeepSource 的生产环境门槛 ≥ 75%:

各项目结果
项目发现项BLOCKER 项真阳性率备注
EchoVault12210100%真实的 Supabase RLS 配置漏洞
ProofSnap1344100%
AImentor2245100%被 .gitignore 隐藏的真实 OpenAI 密钥
Hackathonnn1293100%
shopsec1135100%
Senti1558100%
open-design8,615101~80%
Gen ai63475%真实的 Firebase admin SDK 凭据
codemore self282617%有意设置的落地页演示数据
合计(不含自身)9,755140~85%
在 CI 中强制执行的质量门槛
  • 在包含 128 个样例的回归测试套件中,真阳性率和误报率均为 100% — 每条规则在 corpus/rules/<rule-id>/{tp,fp}/ 下至少包含一个真阳性样例和一个误报样例
  • 生命周期门控:规则依次处于 experimental → beta → stable 阶段;晋升需要样例对,以及通过可选遥测获得的真实误报率证据;低于精确率门槛的规则会由 --enable-experimental 控制启用,或以较低置信度发布,以便 Agent 降低对其结果的权重
生命周期默认状态晋升门槛
experimental默认关闭一对样例
beta默认开启≥ 3 对样例 + 14 天误报率 < 15%
stable包含在默认规则包中发布30 天误报率 < 5% + 参考应用无问题
deprecated发出警告,并在下一个主版本中移除—

CodeMore 无法检测的内容

这些内容有意不纳入范围 — 静态分析无法对此做出判断,Agent 也无法根据源代码差异自动修复。规则遵循的原则是:“能由 Agent 采取行动的,才算规则”:

弱密码策略 · 审计日志完整性 · 业务逻辑缺陷 · 竞态条件 · 开放的 S3/GCS 存储桶 · DAST 发现项 · 是否启用 MFA。

完整列表及说明见:docs/limitations.md。针对这些问题,请将 CodeMore 与 OWASP ZAP、Burp Suite、checkov 或身份提供商的合规性控制面板搭配使用。


遥测 — 仅限主动选择

默认关闭。使用 --telemetry 按扫描启用。收集内容:工具版本、经过哈希处理的项目指纹、表面、规则触发事件。**绝不收集:**文件路径、内容、片段、证据文本——端点会强制执行 Zod strict() schema,并拒绝任何包含这些键的负载,返回 HTTP 400。负载上限为 64 KB,按指纹进行速率限制,RLS 禁止所有读取。


架构

codemore/
├── shared/                       ← one brain, shared across all surfaces
│   ├── packs/                    ← 64 rule modules across 6 packs
│   ├── rules/                    ← registry, lifecycle gating, suppression, AST helpers (TS + Python)
│   └── report/                   ← codemore-report.json v1.0.0 schema + types + writer
├── daemon/
│   ├── cli/                      ← CLI entry · walker · ignore resolver · baseline diff
│   ├── mcp/                      ← MCP server (6 tools)
│   ├── external/                 ← 8 opt-in adapters, fail-loud parsers
│   ├── services/                 ← agentic fixer · validator harness · scan orchestrator
│   └── llm/                      ← OpenAI · Anthropic · Gemini · local provider plug-ins
├── src/                          ← VS Code extension (forks daemon, renders diagnostics)
├── web/                          ← Next.js: landing · dashboard · docs · /api/telemetry
├── corpus/rules/<id>/{tp,fp}/    ← 64 TP/FP fixture pairs, 1:1 with the rule catalog
├── docs/                         ← schema · limitations · security-gate · 64 per-rule pages
└── templates/                    ← copy-paste GitHub Action workflows

一个核心(shared/)、四种外壳(CLI、MCP、扩展、Action)、一种报告 schema——靠一致性测试确保名副其实,而不是靠口号。


开发

git clone https://github.com/abhinavteja123/codemore
cd codemore
npm ci                                         # postinstall skips binary downloads in dev automatically

npx tsc -p tsconfig.publish.json               # type-check the publishable surface
npm run test:unit                              # unit tests (mocha + ts-node)
npx mocha --require ts-node/register test/parity.test.ts   # surface-parity proof

node cli.js scan corpus/rules/vibe-no-rate-limit/tp --json --enable-experimental

cd web && npm ci && npm run dev                # landing + dashboard + docs → localhost:3000

VS Code 扩展:在 VS Code 中按 F5,或运行 npm run watch + code --extensionDevelopmentPath=.


贡献

有两种方式:

  1. 新增规则 — 阅读 CONTRIBUTING-RULES.md。PR 机器人会审核每项提交:规则模块 + TP 夹具(必须触发)+ FP 夹具(不得触发)+ 文档页面 + Pack 注册。机器人是第一位审核者;通过后由人工审核。
  2. 其他所有内容(CLI、MCP、扩展、守护进程、Web、文档)— 阅读 CONTRIBUTING.md。

提交 PR 前:

npx tsc -p tsconfig.publish.json           # type-check
node scripts/validate-rule-pr.js           # rule-PR bot equivalent (must report "passed")
node scripts/measure-accuracy.js           # corpus regression (must stay 100% TP / 100% FP)
npm run test:unit                          # full unit suite

发现误报?提交规则误报报告 — 误报报告会直接进入 beta→stable 晋级流程。

安全问题:请勿提交公开问题 — 请使用 GitHub 的私密漏洞报告流程(SECURITY.md)。


路线图

  • MCP 注册表上架(VS Code Marketplace:已上线)
  • 演示视频:打开一个真实的氛围编程应用,执行扫描,将报告交给 Claude Code,观察每个 BLOCKER 都被解决
  • 针对 50 个应用的基准研究并发布数据集 — 已上线:benchmark/REPORT.md(50 个 AI 构建的代码库中,40% 至少有 1 个 BLOCKER;经过如实的误报分类后为 24%)
  • 基于遥测数据自动降级规则 — 已上线:每晚运行 auto-demote-rules.yml,当某条规则的误报率超过 10% 时创建审核问题
  • JetBrains 插件 · 跨语言污点跟踪(研究中)

详情:docs/roadmap.md。


许可证

MIT — 详见 LICENSE。CodeMore 从第一行代码起就是开源项目,并将始终如此。它的核心优势是报告契约,而非把关。


供 AI Agent 读取的静态分析器。

网站 · 文档 · 规则 · Schema · npm · 行为准则

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。