Engram MCP
AI编码代理的图形感知安全网。
Engram是生产级 模型上下文协议 用Rust编写的服务器,让AI代理对真实的代码库有深入的结构理解——不仅是代码说了什么,还有它的各个部分是如何关联的,它们是如何随着时间的推移一起变化的,以及以前发生了什么。
连接Engram一次,任何支持MCP的代理(Claude Desktop、Claude Code、Codex、您自己的SDK客户端)都会获得该项目的循证图片:类型化知识图、全文和语义搜索、git时态智能、由还原提交构建的免疫系统、每个文件的编码约定,以及一个十门预提交审查,该审查可以阻止带有收据的破坏性编辑。
- 默认情况下为确定性。 核心工具——图遍历、搜索、时间耦合、提交前审查、免疫检查、秘密扫描——不调用LLM。您可以完全离线运行Engram。
- 语言意识。 Rust、Python、Go、Java、C、C++、C#、VB.NET、TypeScript、JavaScript的树型解析器,以及ASP的一流处理。NET Web窗体(ASPX/ASCX/Master)和经典ASP。
- 每个项目,每个代理。 每个项目都有自己的索引;每个查询的范围由
project_id无跨项目泄漏。 - 仅附加和防撞。 基于生成的索引、Blake3指纹、Redb支持的持久检查点、具有自动修复功能的完整性哨兵。
______________________________________________________________________
Engram为什么存在
没有代码库上下文的LLM编码代理是危险的:它们会产生API幻觉,错过跨文件依赖关系,重新引入上个季度恢复的模式,并悄无声息地破坏共享状态。
将原始文件读入提示符并不能解决这个问题。500k线路项目不适合。即使这样做了,代理也看不到git历史记录,看不到爆炸半径,看不见哪些文件总是一起变化,也看不见 DeleteAllOnSubmit 三个月前,由于它绕过了多租户范围,这一做法被撤销了。
Engram通过以下方式解决了这个问题 建设与坚持 代理需要的上下文:
| 问题 | Engram如何解决 |
|---|---|
| 代理发明方法签名 | 每个函数、类和调用边的类型图——按名称或FQN查询 |
| 特工接触到高爆炸半径文件 | compute_blast_radius 返回1-10分的传入/传出/下游计数 |
| 代理重新引入了一种恢复模式 | 免疫系统将每个恢复的差异作为反模式进行索引; immune_check 为新代码打分 |
| 代理更改文件,但不更改其耦合伙伴 | 时间耦合跟踪git历史中一起更改的文件 |
| 代理发送回归 | pre_commit_review 在提交之前,对分阶段的差异运行10个确定性门 |
| 代理在5000个文件的遗留代码库中丢失 | get_codebase_overview, generate_migration_blueprint, analyze_full_project_migration |
______________________________________________________________________
旗舰功能-- pre_commit_review
十个确定性门在统一的diff(原始文本, staged, unstaged, head,或a .patch 路径),并发布具有具体证据和修复建议的严重性排名结果。没有LLM电话。典型运行时间:\ Project lifecycle — index, update, list, info, health, repair, delete, watch
| 工具 | 目的 |
|---|---|
index_project | 本地目录的初始索引 |
update_project | 更改文件的增量重新索引 |
list_projects · project_info · project_health | 检查 |
repair_project | 有针对性的索引修复(full / graph_only / tantivy_only / vector_only) |
delete_project | 删除项目及其存储的数据 |
watch_project · unwatch_project | 文件系统更改时自动重新索引 |
Search — hybrid, vector, graph, symbol, error-stack
| 工具 | 目的 |
|---|---|
search_memory | 带有RRF、MMR和滤波器的混合FTS+矢量 |
vector_search | 过采样+MMR的纯语义向量搜索 |
get_chunk | 获取块ID的内容 |
graph_search | 混合文本+符号匹配,边缘扩展 |
find_symbol_references | 符号在所有边缘类型中的传入/传出边缘 |
get_codebase_overview | 语言、符号、边缘类型分布、PageRank、DB表、状态键、时间耦合、死代码 |
analyze_error_stack | 具有帧增强搜索的多语言结构化堆栈跟踪解析器 |
Knowledge graph — query, traverse, impact, blast radius, patterns
| 工具 | 目的 |
|---|---|
query_graph_nodes · find_references · traverse_graph | 核心图操作 |
impact_analysis | 估计文件或符号更改时会发生什么中断 |
ast_dependency_graph | BFS带边缘类型过滤器,最多12跳,树或JSON输出 |
compute_blast_radius | 焊缝候选和每个节点风险等级的风险评分为1-10 |
detect_design_patterns | 结构模式检测(存储库、工厂、Singleton…) |
Git & temporal intelligence
| 工具 | 目的 |
|---|---|
index_git_history · ingest_zip_history | 提交历史索引 |
search_history | 使用结构化元数据搜索提交消息/差异 |
analyze_temporal_couplings | 经常一起更改的文件 |
analyze_reverts | 检测恢复,生成反模式规则,索引恢复的差异 |
Review & safety
| 工具 | 目的 |
|---|---|
pre_commit_review | 带有判定徽章和CI稳定发现ID的十门确定性差异审查 |
immune_check | 反模式指数得分代码(混合FTS+向量,可配置阈值) |
anti_pattern_guard | 模式匹配与反向提交提取和补救指导 |
autonomous_decision_gate | 8门强制流水线,用于自动编辑;回报 allow / deny / abstain |
evaluate_safety | 拟议编辑的安全政策检查 |
check_edit_safety | 按方法绿色/黄色/红色判定 |
Database & schema
| 工具 | 目的 |
|---|---|
get_table_schema | DDL、列、FK关系、代码引用 |
trace_state_usage | 会话/ViewState/Application/Cache的读写器 |
trace_ui_event · trace_ui_action | ASPX页面→ 控制→ 代码后置→ SQL跟踪 |
get_instrumentation_pack · generate_instrumentation_code | 运行时跟踪代码生成 |
get_sp_details · list_triggers | 存储过程深度分析、触发器检测 |
Migration (ASP.NET WebForms → modern)
| 工具 | 目的 |
|---|---|
analyze_full_project_migration | 一次呼叫完整的项目分析,生成全面的报告 |
generate_migration_blueprint | BFS上下文编译成9节迁移档案 |
generate_migration_plan | 依赖性有序的波浪,带有接缝、合约测试、适配器、回滚剧本 |
generate_migration_scaffold | 基于真实业务逻辑的HTTP/React/Angular组件生成 |
generate_strangler_fig_config | YARP反向代理+功能标志+Polly弹性 |
generate_characterization_tests | NUnit/xUnit/MST测试特性测试 |
suggest_state_migration · suggest_migration_order | 根据关键州建议;卡恩分类的移民浪潮 |
map_validation_controls · map_auth_config · map_page_lifecycle · map_ajax_regions | 按关注点迁移映射 |
analyze_viewstate_deps · trace_data_flow · get_migration_dossier · check_migration_coverage | 深度文件分析 |
update_migration_status · get_migration_progress | 独立的Redb支持的迁移跟踪器 |
Cognitive & reasoning
| 工具 | 目的 |
|---|---|
dream_project · trigger_rem_cycle | 将共现聚类到Insight节点中 |
analyze_file_coding_style | 从git历史中提取每个文件的约定 |
analyze_business_logic · query_business_logic | 带验证门的LLM驱动方法级分析 |
suggest_migration_boundaries | LLM+确定性边界建议与跨集群依赖性分析 |
Access layer (per-method)
| 工具 | 目的 |
|---|---|
get_method_info · get_full_method_body · get_method_edit_context | 精确的方法上下文检索 |
get_page_context · prepare_implementation_context | ASPX页面/实现上下文 |
validate_generated_code · validate_sql_fragment | 预提交代码和SQL验证 |
find_tests_for_method · find_dead_methods · check_edit_safety | 发现和安全检查 |
Memory bank & repo rules
| 工具 | 目的 |
|---|---|
update_memory_bank · list_memory_bank · read_memory_bank · delete_memory_bank | 持久性代理注释 |
add_repo_rule · list_repo_rules · delete_repo_rule | 注入到块读取中的文件模式匹配规则 |
Observability & operations
| 工具 | 目的 |
|---|---|
get_metrics | 服务器范围的指标(作业延迟、队列深度、漂移、内存、安全性……) |
check_integrity | 跨店一致性检查,可选自动修复 |
get_memory_budget · get_checkpoint_status | 资源和恢复状态 |
benchmark_retrieval | NDCG@10 / Recall@10/MRR检索质量门 |
get_extraction_confidence | 信号加权提取置信度评分 |
incremental_indexing_gc · dedicated_antipattern_index | 卫生指数 |
get_job_status · list_jobs · cancel_job | 后台作业控制 |
export_capture_pack | 导出zip以供离线代理使用 |
______________________________________________________________________
建筑
engram_core/ Core types, config, security boundary, Redb registry
engram_index/ Tantivy FTS + LanceDB vectors + DocStore + hybrid search
engram_graph/ Redb-backed graph store + BFS / PageRank algorithms
engram_git/ libgit2 walker, temporal coupling, revert detection
engram_ml/ Dreaming engine, embedders, style mimicry, immune system
engram_server/ MCP server (rmcp), tool handlers, background actors存储层
| 层 | 技术 | 目的 |
|---|---|---|
| 注册表 | Redb | 项目、作业、内存库、仓库规则、元数据 |
| Graph | Redb | 节点、边、复合键邻接表、二进制码 |
| 全文索引 | Tantivy | 命名空间搜索(代码、历史、反模式) |
| 矢量索引 | LanceDB | 语义嵌入,可选 |
| DocStore | Redb | 文件指纹,块到文件映射 |
| 检查点 | 红色 | 防撞作业阶段跟踪 |
| 迁移进度 | Redb | 每个文件的迁移状态 |
背景演员
- 梦想家 --共现聚类→ 洞察力生成
- 免疫因子 --git恢复收割→ 反模式索引
- 观察者 --目录监视→ 增量重新索引
- GC调度器 --孤立作业清理
- 诚信哨兵 --具有可配置自动修复功能的跨商店一致性检查
- 内存预算监视器 -具有CAS分配和背压的每个子系统软/硬限制
______________________________________________________________________
配置参考
完整的YAML:
# Required
allowed_roots:
- /home/user/projects
data_dir: /home/user/.engram-data
# Embedding backend
embedding_backend: local # "local" | "ollama" | "openai"
embedding_model: nomic-embed-text
ollama_url: http://localhost:11434
openai_api_key: sk-...
openai_api_base: https://api.openai.com/v1
# LLM backend for cognitive features (optional — everything except `dream`,
# `analyze_business_logic`, `suggest_migration_boundaries` works without it)
llm_backend: none # "none" | "ollama" | "openai" | "openrouter"
llm_provider: openrouter
llm_model: llama3.2
llm_ollama_url: http://localhost:11434
llm_openai_api_key: sk-...
llm_http_referer: https://your-app.example
# Limits
max_project_files: 100000
max_project_bytes: 5368709120 # 5 GiB
max_chunks_per_file: 2000
max_concurrent_jobs: 2
max_commits_per_watch: 50
# Safety & ADP
safety_policy_enabled: true
safety_min_confidence: 0.7
safety_min_coverage: 0.6
adp_enabled: true
adp_min_extraction_confidence: 0.5
adp_max_blast_radius: 6
adp_rollout_phase: shadow # shadow | advisory | guarded | autonomous
adp_kill_switch: false # emergency kill-switch → forces every verdict to deny项目类型
| 键入字符串 | 语言 | 键的额外扩展名 |
|---|---|---|
rust | 生锈 | rs, toml |
python python py, ipynb | ||
typescript | TS/JS | ts, tsx, js, jsx |
java Java java, xml, gradle | ||
go | 去吧 | go, mod |
dotnetwebformscs | C#ASP。NET Web窗体 | cs, aspx, ascx, master, config, sln, csproj, sql, rdlc |
dotnetwebformsvb | VB.NET ASP。NET Web窗体 | vb, aspx, ascx, master, config, sln, vbproj, sql, rdlc |
任何未知类型都会退回到一个广泛的默认值,涵盖公共源代码+配置扩展。
______________________________________________________________________
代理提示示例
定向
Give me a codebase overview for project "myapp". Then run pre_commit_review on
the staged diff.安全重构
Before I refactor UserRepository.cs in project "myapp":
1. Run impact_analysis for this file
2. Run compute_blast_radius
3. Find all temporal couplings so I know which files to change together
4. Show me the top 5 reverted commits that touched this file提交前审查
Run pre_commit_review on the unstaged diff for project "myapp" with
output_json: true, then summarise the CRITICAL and WARNING findings.遗留系统现代化
Run analyze_full_project_migration on project "myapp-legacy".
Share the cross-cutting summary and the top 3 files by migration risk.防图案保护
Here's code I'm about to commit. Run immune_check on it against project "myapp"
with file_path="Site/App_Code/dal/orders.vb":
[paste code]______________________________________________________________________
安全模型
- 路径限制。 所有文件访问都经过验证
allowed_roots.通过符号链接逃逸的路径,..,或拒绝正统化技巧。 - 项目ID验证。 仅限于
[A-Za-z0-9_-]{1,128}在处理程序边界处。 - 单作者语义。 每个项目的互斥体串行化并发索引更新。
- 没有shell执行。 每个git操作都直接使用libgit2;不会生成任何子进程。
- 编辑输出中的秘密。
pre_commit_review指纹与秘密相匹配——原始价值在调查结果中从未得到回应。 - 在完整性方面失败关闭。 FTS监视器处于故障关闭状态(没有无声降级);完整性哨兵检测跨存储漂移并可以自动修复。
______________________________________________________________________
文档
docs/ARCHITECTURE.md--系统设计和组件交互docs/DATA_MODEL.md--存储层模式docs/TOOL_CONTRACT.md--完整刀具参数参考docs/COGNITIVE_PIPELINES.md--做梦、免疫系统、风格分析docs/GENERATION_MODEL.md--仅附加生成语义docs/DEVELOPER_SPEC.md--贡献和内部docs/ROADMAP.md--计划特征
______________________________________________________________________
许可证
该项目已获得许可 PolyForm非商业许可证1.0.0 (PolyForm-Noncommercial-1.0.0).
- PolyForm Noncommercial 1.0.0允许非商业用途——个人、爱好、学习、研究。
- 商业、商业或营利性使用需要单独的书面商业许可证。
- 在内部、产品开发、SaaS、服务或任何创收工作中使用此代码的公司必须获得商业许可证。
看 LICENSE 对于完整的条款和 COMMERCIAL-LICENSE.md 商业使用通知。
