关于 codemore
CodeMore 是面向编码 Agent 的静态分析器,将代码问题整理为包含修复建议和验证条件的机器可读报告。它提供 CLI、MCP 服务、VS Code 扩展和 GitHub Action,供 Agent 或 CI 检查并处理发现项。
主要功能
- 01检测安全与代码质量问题
- 02输出定位到文件和行列的报告
- 03提供修复模板与验证条件
- 04通过 Agentic 循环生成并验证修复
- 05支持外部分析器和 CI 门禁
适用场景
- 01让编码 Agent 读取并修复扫描结果
- 02在 CI 中阻止新出现的严重问题
- 03为代码审查提供机器可读发现项
- 04用基线管理已有代码库的问题
MCP 相关
MCP 服务向客户端提供 scan_project、scan_file、explain_issue、suggest_fix、apply_fix 和 validate_fix 工具,用于扫描项目、分析问题并执行及验证修复。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| packs | array | 否 | 限制为指定的 pack(例如 ["vibe-supabase"])。默认值:所有已注册的 pack。 |
| rootPath | string | 是 | 项目根目录的绝对路径或相对于工作区的路径。 |
| frameworks | array | 否 | 附加到每个文件上下文的框架提示(例如 ["supabase","next.js"])。 |
| enableExperimental | boolean | 否 | 包含 lifecycle=experimental 中的规则。默认值为 false(与 CLI 一致)——如果需要更全面但噪声更多的覆盖范围,请设为 true。截至 v0.2.1,经过校准的目录属于 beta 级别;experimental 中包含仍待调整精确度的规则(例如 core-quality-duplicate-string)。 |
详细介绍
CodeMore
AI Agent 可读取的静态分析器。
AI Agent 快速交付代码,也快速引入漏洞。CodeMore 会扫描代码,然后将机器可读的报告交给编写这些代码的 Agent,其中包含确切的修复方案和验证标准。Agent 会自行修复发现的问题。
npx codemore@latest scan .
64 条原生规则 · 8 个外部适配器 · 命令行 · MCP 服务 · VS Code 扩展 · GitHub Action — 一份报告,在所有界面上逐字节一致。
目录
- 为什么选择 CodeMore
- 快速开始 — 命令行 · MCP 服务 · VS Code · GitHub Action · 托管版
- 它能检测什么
- 报告就是产品
- Agent 式修复循环
- 准确性:诚实衡量
- CodeMore 无法检测的内容
- 架构
- 开发 · 参与贡献 · 许可证
为什么选择 CodeMore
AI 辅助编程导致的漏洞发生率已得到测量,并且持续上升:
| 发现 | 来源 |
|---|---|
| 45% 的 AI 生成代码存在 OWASP Top-10 漏洞 | Veracode 2025/26 |
| 扫描的 1,072 个氛围编程网站中,98% 至少存在 1 个安全缺陷 | Symbiotic |
| 70% 经审计的 Lovable 应用在交付时禁用了 Supabase RLS | DEV |
| 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-security | 22 | SQL 注入(字符串拼接)、路径遍历、弱加密、不安全反序列化、eval、Shell 注入、TLS 未启用、硬编码密钥模式、硬编码密码(B105 类)、SSRF、密钥写入日志、大模型输出流入 eval/exec/SQL 接收点、提示词注入接收点、数据库写入操作缺少 WHERE、幻觉导入 |
core-quality | 21 | 未使用的变量/导入/导出、圈复杂度、无效条件、遗留的 console/打印语句、异步函数中没有 await、不可达代码、宽松相等比较、as any、滥用非空断言 |
vibe-frontend | 9 | XSS(dangerouslySetInnerHTML)、携带凭证的 CORS、缺少速率限制、缺少 Cookie 标志、文件上传验证、缺少输入验证——CORS、Cookie 标志和输入验证均提供 TS + Python(Flask/FastAPI)规则 |
vibe-secrets | 4 | 公开环境变量泄漏(NEXT_PUBLIC_* / VITE_* / REACT_APP_*)、硬编码 JWT、MCP 配置密钥、CI/CD YAML 密钥 |
vibe-auth | 5 | BOLA(TS + Python)、缺少会话/身份验证检查(TS + Python)、身份验证逻辑反转 |
vibe-supabase | 3 | RLS 未启用、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 项 | 真阳性率 | 备注 |
|---|---|---|---|---|
| EchoVault | 122 | 10 | 100% | 真实的 Supabase RLS 配置漏洞 |
| ProofSnap | 134 | 4 | 100% | |
| AImentor | 224 | 5 | 100% | 被 .gitignore 隐藏的真实 OpenAI 密钥 |
| Hackathonnn | 129 | 3 | 100% | |
| shopsec | 113 | 5 | 100% | |
| Senti | 155 | 8 | 100% | |
| open-design | 8,615 | 101 | ~80% | |
| Gen ai | 63 | 4 | 75% | 真实的 Firebase admin SDK 凭据 |
| codemore self | 282 | 6 | 17% | 有意设置的落地页演示数据 |
| 合计(不含自身) | 9,755 | 140 | ~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=.
贡献
有两种方式:
- 新增规则 — 阅读
CONTRIBUTING-RULES.md。PR 机器人会审核每项提交:规则模块 + TP 夹具(必须触发)+ FP 夹具(不得触发)+ 文档页面 + Pack 注册。机器人是第一位审核者;通过后由人工审核。 - 其他所有内容(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 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。