负面示例内存MCP服务器
将团队的知识、政策和安全准则嵌入人工智能生成的代码中——在提示阶段,而不是在代码审查的下游。
一个PostgreSQL支持的模型上下文协议(MCP)服务器,存储编码反模式、过去的错误、策略要求和团队约定,然后在计划阶段(在编写任何代码之前)显示它们。对抗性法官根据团队积累的知识对每个计划进行批评,将执行从管道的尾部转移到头部。
核心观点: AI代理已经 *知道* 训练数据中的安全模式。它们只是默认使用更简单、更常见的路径。这个系统 *力量* 他们应用他们所知道的东西——这和代码审查员所做的一样,只是它发生在代码存在之前。
______________________________________________________________________
为什么存在
每个工程团队都在积累知识——编码标准、安全策略、隐私要求、架构护栏,以及过去事件中来之不易的教训。今天,这种知识被强制执行 迟:
- 通过 代码审查 编写代码后
- 通过 静态分析 在它被承诺之后
- 通过 安全审计 释放前
- 通过 生产事故 部署后
当AI编码代理进入画面时,问题就会加剧。该经纪人不参加单口相声,不吸收团队文化,每次都会重新开始。它有广泛的培训知识,但不知道是哪种模式 *这个特殊的团队* 已决定不可接受,哪些隐私法规适用于 *这* 代码库,或者出于特定原因做出的架构决策。
此服务器为AI代理提供团队的故障记忆。 在编写代码之前,查询反模式数据库。在决定一个计划之前,先通过对抗性法官。你的编码标准、安全策略和经验教训在创建的那一刻就成为了积极的执行,而不是最后的关卡。
方法是 领域无关它适用于任何涉及指导方针、隐私、安全或团队惯例的代码库:金融科技、医疗保健、政府、企业SaaS、基础设施、开源库——任何有人在代码审查中说“我们在这里不是这样做的”的地方。
______________________________________________________________________
第一阶段的主要发现
第一阶段进行了一个对照实验:两个相同的Claude.ai代理,相同的任务,相同的能力。唯一的变量是访问负记忆MCP工具。这是我们学到的。
1.问题是执法,而不是教育
这两个代理都是具有相同训练数据的同一模型。基线 *知道* 那 Decimal 对于货币来说是正确的,交易应该是原子的,连接需要池限制。无论如何,它默认为更简单的模式。MCP代理是 被迫的 法官以具体的反模式为由,驳回了这一违约行为。该系统的价值不在于为代理人提供新知识,而在于 将现有知识转化为强制行为.
2.团队知识可以在提示阶段嵌入
35种种子反模式代表了每个团队积累的规则:“不要用浮点数来赚钱”,“始终在类型检查之外进行验证”,“对多租户数据使用复合索引”。传统上,这些规则存在于风格指南、维基页面和审阅者负责人中。该系统使它们可搜索、可引用,并在计划触及相关区域时自动显示-- 在概念阶段,在生成任何代码之前。
3.紧凑的负记忆胜过广泛的正知识
35个条目在一个任务中发现了8个缺陷。捕获了能够访问整个互联网价值培训知识的基线代理 0 --不是因为它不知道更好,而是因为没有什么促使它应用它所知道的。一套小的、精心策划的“永远不要这样做”规则在防止错误方面比大量的“如何正确地做”更有效
4.成本质量权衡非常有利
3倍延迟 和 4个输入令牌 生产 发现8个缺陷 预交付与0。对于任何涉及安全、隐私或合规性的代码库,单个逃逸缺陷的成本——数据泄露、财务精度错误、政策违规——都使额外的代币相形见绌。
5.异质法官消除了自我审查偏见
使用GPT-5.2来批评克劳德的计划,而不是克劳德批评自己,可以防止该模型合理化其自身的违约。类似于真正的团队不允许开发人员审查自己的代码。
6.两层批评自然而然地出现了
部署的系统演变为 快速法官 (约30秒,捕获与数据库的明显模式匹配)加 深度分析 (约42秒,使用推理令牌来应对微妙的架构风险)。法官发现了2个风险;深入分析浮出水面 12更多这反映了高级工程师的快速扫描和彻底的设计审查是如何相辅相成的。
7.数据库操作实际上是免费的
seed_from_stack (50ms), get_risk_profile (7ms), validate_antipattern (5ms)。所有延迟都来自AI API调用。知识存储和检索层可以被主动调用,而不会产生有意义的开销。
8.可追溯性是一个具有巨大价值的附带好处
MCP增强代码在其标题注释中包含反模式ID,在每个防御性编码决策和激励它的团队知识之间建立了直接联系。使代码审查更快,审计更简单,并建立了机构记录。
9.该方法与领域无关
安全政策、隐私法规(GDPR、HIPAA、PCI-DSS)、团队惯例、架构护栏、部署约束——今天存在于维基页面或审阅者记忆中的任何规则都可以被编码为反模式,并在提示阶段强制执行。该测试使用了支付webhook,但该机制适用于任何代码库。
10.脚踏实地的法官防止产生幻觉
法官可以 仅 引用数据库中存在的反模式。它不能制造风险。当它标记某些东西时,它指向一个特定的、有记录的、团队验证的模式,而不是通用的人工智能焦虑。这是你团队正在应用的知识,而不是模型推测。
______________________________________________________________________
理论基础
该系统建立在认知和机器学习研究的三个支柱之上:
1.硬否定假说
对比学习研究(Robinson等人,2021)表明,“硬否定”——决策边界附近的例子——提供了一种 学习信号增加6.7倍 与随机阴性相比。在编码中,硬否定不是语法错误,而是一个微妙的架构陷阱(例如,特定驱动程序模式中的竞争条件)。
- 信息密度:负面例子有 10-20倍更紧凑 (约25个令牌)比正向实现示例(约300个令牌)
2.召回识别(RPD模型)
基于Gary Klein的识别启动决策(RPD)模型,人类专家做出 87%的决策是通过模式识别做出的 而不是分析比较。该系统为代理人提供了具体的历史陷阱来触发“识别”,这在认知上比要求模型从头开始“回忆”一般最佳实践更有效。
3.正交缺陷分类(ODC)
该架构采用IBM ODC分类法,将缺陷分为13种独立类型(例如,分配、检查、算法、定时、接口)。这允许系统为代码模块生成“风险简介”,识别代理推理随时间推移的系统性弱点。
______________________________________________________________________
实证验证:异步Webhook测试
为了验证这一假设,两个相同的 Claude.ai 代理的任务是构建一个用于支付处理的Python/MongoDB webhook服务。这两个代理具有相同的功能和模型,唯一的区别是 代理2可以访问负记忆MCP工具,而代理1没有。
任务和“隐形Bug”陷阱
这项任务有三个陷阱,旨在利用常见的代理默认值——团队指南和代码审查标准通常会发现的问题:
- 非原子更新 --诱使代理获取/修改/保存到内存中
- 缺少识别能力 --未能使用唯一的交易ID
- 交易边界失败 --在成功写入数据库之前更新日志
并排质量比较
| 维度 | 克劳德(基线) | 克劳德(负记忆) | 获胜者 |
|---|---|---|---|
| Idempotency机制 | 唯一索引+ DuplicateKeyError | 相同,但由反模式db561708 | MCP证明 |
| 原子性 | 交易作为可选变体提供 | 交易是 默认 路径 | MCP |
| 货币处理 | 生的 float(amount) --IEEE-754漂移风险 | Decimal 到整数分(wallet_balance_cents) | MCP |
| 金额验证 | 仅进行类型检查(float() 铸造) | 正面检查+ Decimal 解析+拒绝否定 | MCP |
| 背压 | 无--无限并发 | asyncio.Semaphore(50) + 429 + Retry-After 标题 | MCP |
| 有效载荷不匹配检测 | 无 | 已存储SHA-256哈希值;在副本(409)上进行比较 | MCP |
| 多供应商安全 | 单身 transaction_id index | 复合指数 (provider, transaction_id) | MCP |
| 独立回退 | 插入然后更新,部分故障不恢复 | 钱包故障回滚幂等性记录 | MCP |
| 健康检查 | 没有 | /health 使用DB ping | MCP |
| Mongo客户端调优 | 默认电机设置 | 显式超时、池大小、, retryWrites | MCP |
| 车身尺寸限制 | 默认值(1 MiB) | client_max_size=64KiB (webhooks很小) | MCP |
| 代码文档 | 良好的文档字符串 | 文档字符串+标头中的反模式可追溯性 | MCP |
裁决:MCP增强了Claude,使其实现了更有意义的生产就绪。基线克劳德有权 *骨架* 但错过了 8混凝土硬化措施 负面记忆工具浮出水面。
工具使用审计
基线克劳德(无MCP): 2次工具调用
| 工具 | 目的 |
|---|---|
create_file | 编写webhook_service.py |
present_files | 与用户共享 |
克劳德与负记忆MCP: 9工具调用
| 工具 | 目的 |
|---|---|
seed_from_stack | 检测技术栈——发现1个关键反模式 |
search_antipatterns | 深入搜索金融科技/支付模式 |
critique_plan | 对实施计划的对抗性审查-- 批准 |
deep_analysis | 详尽的边缘案例分析——揭示了12个风险 |
validate_antipattern | 已确认的反模式相关性(置信度0.95至1.0) |
create_file | 编写强化的webhook_service.py |
present_files | 与用户共享 |
成本与质量的权衡
| 度量 | 基线克劳德 | 克劳德+负记忆 | 德尔塔 |
|---|---|---|---|
| 工具调用 | 2 | 9 | +7个电话 |
| MCP网络呼叫 | 0 | 5 | +5个外部呼叫 |
| 输入令牌(est。) | ~2K | ~8K | ~4x |
| 输出令牌(est。) | ~4K | ~6K | ~1.5倍 |
| 延迟(估计) | 约8-12s | 约25-40s | 约慢3倍 |
| 交付前发现的缺陷 | 0 | 8项硬化措施 | 质量显著提升 |
| 可审计性 | 无 | 反模式ID的完全可追溯性 | 在审查中更容易证明 |
实际MCP服务器日志(来自Claude的会话)
以下是Claude会话期间(太平洋时间下午1:39/世界协调时间2026年2月27日21:39)MCP服务器捕获的真实工具调用日志:
TIMESTAMP (UTC) TOOL DURATION
--------------------------------------------------------------
2026-02-27T21:39:10.698Z search_antipatterns 15,045ms
2026-02-27T21:39:10.776Z seed_from_stack 50ms
2026-02-27T21:39:10.802Z get_risk_profile 7ms
2026-02-27T21:39:25.819Z search_antipatterns 15,011ms
2026-02-27T21:39:25.832Z validate_antipattern 5ms
2026-02-27T21:39:41.395Z interview_developer 15,560ms
2026-02-27T21:40:11.987Z critique_plan 30,585ms
2026-02-27T21:40:53.819Z deep_analysis 41,824ms
--------------------------------------------------------------
TOTAL SERVER-SIDE PROCESSING 118,087ms实测成本明细:
| 资源 | 实际值 |
|---|---|
| MCP服务器处理总量 | 118.1秒 |
| 最长单次通话 | deep_analysis 41.8秒(带有推理令牌的OpenAI GPT-5.2) |
| 法官批评 | 30.6s——识别出2个风险,风险评分0.85,判定: 拒绝 |
| 混合搜索呼叫 | 每个约15秒(pgvector+全文,RRF评分) |
| 快速通话 | seed_from_stack (50ms), get_risk_profile (7ms), validate_antipattern (5ms) |
| 会话跨度 | 21:39:10至21:41:45 UTC(约2.5分钟挂钟) |
底线:3倍的延迟和4倍的令牌捕获了基线附带的8个具体缺陷,包括一个关键的货币精度错误(float 为了钱)和重试风暴下的零背压。这两个代理都是同一个Claude.ai模型。基线 *知道* 安全方法,但默认为“简单”路径。MCP代理是 *被迫的* 由法官引导至安全路径。 反模式内存检索是一种覆盖默认模型行为的强制机制。______________________________________________________________________
架构:8阶段对抗工作流程
该系统被实现为自定义MCP服务器,作为任何AI代理(Claude、GPT-5、DeepSeek)访问故障存储器的“USB-C端口”。
1. Initial Plan Agent generates implementation strategy
|
v
2. Negative Query Plan embedded and searched against anti_patterns table
|
v
3. Hybrid Search (RRF) Reciprocal Rank Fusion combines semantic (vector)
| and keyword (tsvector) scores
v
4. THE JUDGE Specialized Verifier LLM identifies specific risks
| by citing IDs from matched anti-patterns
v
5. Pre-Mortem Judge assumes project has already failed,
| works backward to identify causes
v
6. Plan Refinement Agent must address every flagged risk until
| Judge grants "Approve" status
v
7. Deep Analysis Extended thinking with reasoning tokens for
| complex architectural decisions
v
8. Code Generation Implementation begins only with "Immunized" plan______________________________________________________________________
特性
- 8个MCP工具 用于反模式管理、计划批判、风险分析和深入分析
- 可流式HTTP传输 在
/mcp具有状态会话管理的端点 - 多角色人工智能提供者系统 --独立配置的提供者、评判者和嵌入者角色
- 延伸思维 通过人类思维块和OpenAI推理令牌
- 混合搜索 将pgvector相似度+全文搜索与互序融合相结合
- Web仪表板 有6个选项卡用于监视、配置和17个健康检查
- 35种种子反模式 跨安全(10)、性能(8)、架构(7)、数据库(6)和DevOps(4)
多角色人工智能提供者系统
每个AI功能都可以独立使用不同的提供者和模型:
| 角色 | 默认提供者 | 默认模型 | 目的 |
|---|---|---|---|
| 提供者 | 人类学 | claude-sonnet-4-5-20250929 | 一般完成、技术栈提取、访谈分析 |
| 法官 | OpenAI | gpt-5.2 | 对抗性计划批判,具有扩展思维的深入分析 |
| 嵌入 | Anthropic | claude-sonnet-4-5-20250929 | 反模式语义相似性搜索 |
通过环境变量或仪表板的设置和按键选项卡进行配置。
MCP流式HTTP传输
服务器使用 可流式传输的HTTP 交通工具(非stdio),可在以下网址访问 /mcp:
| 方法 | 终点 | 目的 |
|---|---|---|
POST | /mcp | 初始化会话,发送工具调用 |
GET | /mcp | 服务器发起的消息的SSE流 |
DELETE | /mcp | 关闭MCP会话 |
会话使用具有30分钟TTL和自动清理的UUID标识符。
______________________________________________________________________
快速开始
先决条件
- Node.js 20+
- PostgreSQL 16+及其扩展:
uuid-ossp,pgvector,pg_trgm - 至少一个API密钥:Anthropic(推荐)和/或OpenAI
Replit
- 将此存储库导入Replit
- 在“答复机密”面板中设置机密:
- DATABASE_URL --PostgreSQL连接字符串(由Replit自动设置) - ANTHROPIC_API_KEY -无烟煤API键 - OPENAI_API_KEY -OpenAI API密钥(可选,用于法官角色)
- 单击运行--它将自动构建和启动
本地开发
# 1. Install dependencies
npm install
# 2. Set environment variables
export DATABASE_URL="postgresql://user:password@localhost:5432/negative_memory"
export ANTHROPIC_API_KEY="sk-ant-your-key"
export OPENAI_API_KEY="sk-your-key" # optional
# 3. Set up the database schema
npm run setup-db
# 4. Load seed data (35 anti-patterns)
npm run seed
# 5. Build and start
npm run build
npm startMCP客户端配置
对于使用HTTP传输的Claude Desktop或其他MCP客户端:
{
"mcpServers": {
"negative-memory": {
"url": "http://localhost:5000/mcp",
"transport": "streamable-http"
}
}
}______________________________________________________________________
工具(共8个)
1. seed_from_stack
分析项目描述以检测技术并返回匹配的反模式。
{ "project_description": "FastAPI app with PostgreSQL for healthcare billing" }2. search_antipatterns
针对与特定任务相关的反模式的混合搜索(矢量+全文)。
{
"query": "implement user authentication with JWT tokens",
"tech_stack": ["python", "fastapi"],
"severity_filter": ["critical", "high"]
}3. add_antipattern
通过自动嵌入生成将新的反模式添加到数据库中。
{
"category": "security_vulnerability",
"subcategory": "session_fixation",
"severity": "high",
"title": "Session Fixation After Login",
"description": "Not regenerating session ID after authentication.",
"root_cause": "Session management library defaults to preserving session ID.",
"bad_code": "session['user'] = user_id",
"good_code": "session.regenerate()\nsession['user'] = user_id",
"detection_hint": "Check login handlers for session.regenerate().",
"prevention_strategy": "Always regenerate session ID after privilege escalation.",
"tech_stack": ["python", "javascript"]
}4. critique_plan (法官)
提交一份针对反模式数据库的对抗性批评编码计划。
{
"task_description": "Build patient data API endpoint",
"plan": "1. Create GET /patients endpoint\n2. Query database\n3. Return JSON",
"tech_stack": ["python", "fastapi", "postgresql"]
}回报:风险评分、具有匹配反模式的单个风险、判断(批准/修订/拒绝)和修复建议。
5. get_risk_profile
获取模块或技术领域的风险总结。
{ "tech_stack": ["python", "postgresql"], "domains": ["healthcare"] }6. validate_antipattern
开发人员确认或拒绝反模式的相关性。
{ "antipattern_id": "uuid-here", "is_relevant": true, "developer_notes": "Hit this exact issue" }7. interview_developer
分两个阶段进行结构化故障知识提取(生成问题,然后处理响应)。
{ "phase": "generate_questions", "tech_stack": ["python", "fastapi"], "domains": ["healthcare"] }8. deep_analysis
具有可配置深度级别的扩展思维分析。使用Anthropic思维块或OpenAI推理令牌进行深度架构推理。
{
"task": "Review this database query pattern for security issues",
"context": "const result = await pool.query(`SELECT * FROM users WHERE email = '${email}'`);",
"tech_stack": ["node", "postgresql"],
"depth": "deep"
}深度级别: standard (10K个思考令牌), deep (20K), exhaustive (50K)。
______________________________________________________________________
Web仪表板
仪表板在端口5000上运行,有6个选项卡:
| 选项卡 | 说明 |
|---|---|
| 概述 | 状态卡、类别/严重性图表、顶部模式 |
| 设置和按键 | 多角色提供者/模型配置、环境状态、MCP端点 |
| MCP工具 | 所有8个带有描述和参数模式的工具卡 |
| 反模式 | 所有反模式的可过滤/可搜索表 |
| 法官塞申斯 | 带有风险评分的计划评论历史 |
| 健康检查 | 跨4组(数据库、搜索、工具、人工智能)的17个系统测试 |
______________________________________________________________________
路线图:下一阶段
第一阶段证明了该机制的有效性。路线图现在侧重于使内存自我增长、更快,并嵌入团队的日常工作流程中。 欢迎各阶段的社区捐款 --看 贡献 在......下面
第二阶段:自我成长记忆——自动捕获管道
状态: 设计完成,实施尚未开始 目标: 内存应该从现有的开发生命周期中自动增长,而不需要手动管理。
| 捕获来源 | 工作原理 | 反模式信心 | |||
|---|---|---|---|---|---|
| 静态分析(SARIF) | 解析SonarQube、CodeQL、Bandit、Ruff、Semgrep的输出。将特定于工具的规则ID映射到CWE类别。 | 0.85 | |||
| CI/CD故障 | GitHub操作 workflow_run 事件与 conclusion=failure.分析日志以了解错误上下文、受影响的文件、故障类别。 | 0.70 | |||
| Git分析 | 检测已恢复的提交(^Revert),修复提交(`fix | fixes | closes | resolves`),调试会话(在10分钟窗口内快速连续提交相同的文件)。 | 0.65 |
| 代码审查反馈 | pull_request_review webhook事件 state=changes_requested.通过关键字匹配+嵌入相似度从评论者评论中提取反模式。 | 0.75 |
每个自动捕获的条目都以较低的置信度开始,需要 开发人员验证 (validate_antipattern)有待提升。预计增长: 前3个月内200-500次参赛 积极使用。
寻求以下方面的帮助:
- \[\]SARIF解析器实现(GitHub Action或独立)
- \[\]用于CI/CD故障事件的GitHub webhook接收器
- \[\]用于还原/修复/调试检测的Git日志分析器
- \[\]PR审查意见提取管道
第三阶段:反模式关系——因果链
状态: 未开始 目标: 理解 *为什么* 失败不仅会发生 *什么* 他们是。
添加具有键入边的图形层: caused_by, similar_to, recurrence_of, same_root_cause.通过连接表和递归CTE实现,不需要单独的图形数据库。
这使得:
- 因果链遍历:“这类失败背后的根本原因是什么?”
- 爆炸半径分析:“当这种模式出现时,还有什么会出错?”
- 决策反馈回路:将反模式与架构决策联系起来,看看哪些设计选择会产生哪些下游后果。
寻求以下方面的帮助:
- \[\]关系模式设计和迁移
- \[\]用于链遍历的递归CTE查询
- \[\]用于在仪表板中可视化反模式图的UI
第4阶段:多项目范围界定
状态: 未开始 目标: 组织在团队之间共享机构知识,同时保持项目特定惯例的独立性。
三层反模式:
| 层级 | 范围 | 示例 |
|---|---|---|
| 全球 | 无处不在 | SQL注入、硬编码秘密、缺少输入验证 |
| 技术 | 适用于匹配堆栈 | PostgreSQL时间戳陷阱、FastAPI异步脚枪、React状态错误 |
| 项目特定 | 该团队的规则 | “我们使用整数分而不是十进制”,“所有端点都需要X-Request-ID标头” |
搜索查询在所有三个层次上呈扇形展开,项目特定的结果排名最高。
寻求以下方面的帮助:
- \[\]项目/组织范围界定模型
- \[\]分层搜索,排名提升
- \[\]用于管理跨项目模式的管理UI
第五阶段:搜索性能优化
状态: 瓶颈已识别 目标: 亚秒级混合搜索(目前每次呼叫约15秒)。
约15s的延迟主要由嵌入生成API往返(使用Claude作为嵌入的解决方法)决定。三个优化:
| 优化 | 预期影响 | 复杂性 |
|---|---|---|
专用嵌入模型 (航海AI voyage-3 或OpenAI text-embedding-3-large) | 嵌入速度快10-50倍,搜索相关性更好 | 中等 |
| 预先计算的嵌入缓存 | 消除对重复/类似查询的API调用 | 低 |
| HNSW/IVFLat参数整定 | 在尺度上更快的近似最近邻 | 低 |
寻求以下方面的帮助:
- \[\]嵌入提供者抽象(将Claude替换为专用模型)
- \[\]查询基于相似性的缓存命中率嵌入缓存
- \[\]不同数据库大小下搜索延迟和召回的基准套件
第6阶段:纵向测量
状态: 未开始 目标: 证明该系统在几个月内减少了错误,而不仅仅是在一次测试中。
跟踪实际使用时间过长的指标:
| 度量 | 它衡量什么 | 成功信号 |
|---|---|---|
| 复发率 | 新计划中出现相同反模式的频率 | 每种模式趋向于零的趋势 |
| 首次通过批准率 | 法官在首次提交时批准的计划 | 随着时间的推移而增加 |
| 代币节省 | 计划+批评成本与估计调试成本 | 发现约3个缺陷后的净正值 |
| 内存ROI | 系统维护成本与防止缺陷的成本 | 对合规性敏感的代码库非常有利 |
寻求以下方面的帮助:
- \[\]指标收集和仪表板集成
- \[\]基线测量方法
- \[\]前后对比统计分析框架
阶段7:自动工作流集成
状态: 未开始 目标: 每个任务都会自动运行在负内存中,无需手动调用工具。
将工作流嵌入代理的系统提示中(CLAUDE.md, .cursorrules或同等):
| 触发器 | 动作 |
|---|---|
| 项目初始化 | seed_from_stack --将相关的反模式加载到上下文中 |
| 代码生成之前 | critique_plan --每个计划都会受到对抗性的审查 |
| 调试会话后 | add_antipattern --记录故障以备下次使用 |
| 代码审查被拒绝后 | add_antipattern --提取审阅者的反馈作为模式 |
记忆随着每次失败而增长。每一个未来的计划都要与过去的每一次失败进行核对。在快速阶段持续加强团队知识。
寻求以下方面的帮助:
- \[\]Claude Code、Cursor、Windsurf、Cline的系统提示模板
- \[\]调试会话的自动捕获挂钩
- \[\]不同MCP客户端的集成指南
______________________________________________________________________
环境变量
必需的
| 变量 | 描述 |
|---|---|
DATABASE_URL | PostgreSQL连接字符串 |
ANTHROPIC_API_KEY | Anthropic API密钥(提供程序和嵌入的默认密钥) |
可选的
| 变量 | 描述 | 默认值 |
|---|---|---|
OPENAI_API_KEY | OpenAI API密钥(Judge默认) | - |
AI_PROVIDER | 提供者角色: openai 或 anthropic | anthropic |
PROVIDER_MODEL | 提供者角色模型 | claude-sonnet-4-5-20250929 |
JUDGE_PROVIDER | 评委角色: openai 或 anthropic | openai |
JUDGE_MODEL | 法官角色模型 | gpt-5.2 |
EMBEDDING_PROVIDER | 嵌入角色: openai 或 anthropic | anthropic |
EMBEDDING_MODEL | 角色嵌入模型 | claude-sonnet-4-5-20250929 |
______________________________________________________________________
项目结构
src/
├── index.ts # MCP server factory, tool definitions
├── db/
│ ├── connection.ts # PostgreSQL pool management
│ ├── migrations.ts # Schema setup runner
│ ├── schema.sql # Full DDL (tables, indexes, functions)
│ ├── seed.sql # 35 anti-pattern seed entries
│ └── run-seed.ts # Seed runner with embedding generation
├── services/
│ ├── ai-provider.ts # Multi-role provider abstraction
│ ├── claude-reasoning.ts # Judge system prompt + API calls
│ ├── embedding.ts # Embedding generation (AI + hash fallback)
│ ├── hybrid-search.ts # RRF hybrid search (vector + full-text)
│ └── stack-parser.ts # Technology stack detection
├── tools/
│ ├── seed-from-stack.ts # Tool 1: Detect stack + matching patterns
│ ├── search-antipatterns.ts # Tool 2: Hybrid search
│ ├── add-antipattern.ts # Tool 3: Add anti-pattern
│ ├── critique-plan.ts # Tool 4: THE JUDGE
│ ├── get-risk-profile.ts # Tool 5: Risk summary
│ ├── validate-antipattern.ts # Tool 6: Developer validation
│ ├── interview-developer.ts # Tool 7: Failure interview
│ └── deep-analysis.ts # Tool 8: Extended thinking analysis
└── types/
└── index.ts # TypeScript interfaces
dashboard/
├── server.ts # Express server (port 5000) + MCP HTTP
└── public/
├── index.html # Dashboard SPA
├── styles.css # Dark theme styling
└── app.js # Frontend JavaScript数据库模式
- 反模式 --35个条目,包含1024个dim嵌入、全文搜索向量、严重性级别、技术栈(安全性=10,性能=8,架构=7,数据库=6,devops=4;严重性:高=14,中=14,严重=6,低=1)
- 规划_会议 --计划对结果生命周期跟踪进行批评的任务
- 面试回复 --与生成的反模式相关的开发人员面试答案
- 工具_职业 --带有计时数据的所有MCP工具调用的审计日志
命令
| 命令 | 描述 |
|---|---|
npm run build | 编译MCP服务器和仪表板 |
npm run build:mcp | 仅编译MCP服务器 |
npm run build:dashboard | 仅编译仪表板 |
npm run setup-db | 运行架构迁移 |
npm run seed | 加载35个反模式种子条目 |
npm run test-mcp | 运行MCP端点测试套件 |
npm run test-task | 运行假设整合测试 |
npm start | 启动仪表板+MCP服务器 |
测试
# Run MCP protocol and tools test suite (12 tests covering protocol, sessions, DB tools, AI tools)
npm run test-mcp
# Run hypothesis test (flawed plan with 7 known anti-patterns, measures Judge detection rate)
npm run test-task______________________________________________________________________
贡献
该项目正在积极开发中 非常欢迎捐款无论你是人工智能研究人员、平台工程师,还是厌倦了在代码审查中发现同样的错误的人,都有一些有意义的工作要做。
从哪里开始
| 兴趣 | 好的第一个问题 |
|---|---|
| AI/ML | 专用嵌入提供商(第5阶段),判断快速工程,多模型基准测试 |
| 后端 | SARIF摄取管道(第2阶段)、反模式关系模式(第3阶段)、搜索缓存 |
| DevOps/CI | GitHub Actions webhook接收器、CI故障捕获、git日志分析器 |
| 前端 | 仪表板改进、反模式图可视化、指标仪表板 |
| 安全 | 针对OWASP、CWE、PCI-DSS、HIPAA、SOC 2合规性的新反模式贡献 |
| 文档 | Claude Code、Cursor、Windsurf、Cline、VS Code的集成指南 |
如何做出贡献
- 先打开一个问题 --描述你想构建什么以及它与哪个阶段相关
- 叉子和树枝 --从以下位置创建要素分支
main - 测试 --奔跑
npm run test-mcp并确保所有12项测试通过 - 公关 --参考问题并描述发生了什么变化以及原因
贡献反模式
最有价值的贡献之一是 从您的域中添加反模式。如果您的团队有规则、政策或来之不易的经验教训,应在提示阶段执行,则它们属于此数据库:
{
"category": "your_category",
"severity": "critical|high|medium|low",
"title": "Short descriptive name",
"description": "What goes wrong and why it matters",
"root_cause": "Why agents default to the wrong pattern",
"bad_code": "// The pattern that looks right but isn't",
"good_code": "// The correct approach",
"prevention_strategy": "How to avoid this",
"tech_stack": ["relevant", "technologies"]
}我们特别需要反模式的领域:
- 医疗保健(HIPAA、HL7、PHI处理)
- 金融服务(PCI-DSS、SOX、货币精度)
- 政府(FedRAMP、NIST 800-53、无障碍)
- 安全性(OWASP Top 10、CWE Top 25、零信任)
- 云/基础设施(Kubernetes、Terraform、IAM)
- 移动(平台指南,离线优先模式)
- 测试(片状测试模式、测试隔离、覆盖陷阱)
分享您的经验
如果你在团队中部署了这个,我们想听听会发生什么:
- 你添加了哪些反模式? 你的团队编码了哪些领域知识?
- 法官抓到代码审查会抓到的东西了吗? 多久?
- 首次通过的批准率是多少? 随着时间的推移,情况是否有所改善?
- 缺少什么? 这对你的工作流程有什么帮助?
______________________________________________________________________
参考文献
- Robinson,J.等人(2021)。“硬阴性样本的对比学习。”ICLR。
- 克莱因,G.(1998)。《权力的来源:人们如何做出决定》,麻省理工学院出版社。
- Chillarege,R.等人(1992)。“正交缺陷分类”。IEEE软件工程学报。
- Shinn,N.等人(2023)。“反射:言语强化学习的语言代理”。NeurIPS。
- 赵A.等人(2024)。“实验:法学硕士代理人是体验式学习者。”AAAI。
- 梁等(2023)。“通过多主体辩论鼓励大型语言模型中的发散思维。”
- 熊等(2025)。“当原始数据占主导地位时:大型语言模型嵌入在医学机器学习应用的数值数据表示中有效吗?”
许可证
麻省理工学院
