Neuro-Cognitive Engine
NCE — Neuro-Cognitive Engine
一个面向 AI 代理的多租户记忆与推理基座,并在此基础上构建了一套业务引擎。
经营业务的代理需要记住事物,而且这些记忆必须正确:限定在正确的租户范围内、可追溯到来源、并且不可能被悄悄破坏。NCE 正是提供这一能力的层,外加使用它的垂直引擎——采购、销售、项目、经济、库存及其他。
使用 Python 构建,运行于 Postgres、MongoDB、Redis 和 MinIO 之上。通过 MCP(JSON-RPC 2.0)和 REST 暴露。
这里实际有什么
| 103,762 行 |
测试文件 | 391 |
已注册的 MCP 工具 | 115 |
数据库迁移 | 48 |
在 main 上有代码的垂直引擎 | 11 |
文档页面 | 114 — 在此阅读 |
架构决策记录 | 8 |
每次拉取请求的 CI 作业 | 5 |
数字是从代码树中统计出来的,而非估算。工具数量由测试(tests/test_tool_registry.py)断言,因此除非构建失败,否则它不可能与现实脱节。
值得关注的部分
租户隔离由数据库强制实施,而非依赖约定。 每个租户作用域的表都带有 ENABLE + FORCE ROW LEVEL SECURITY,并带有一个基于 namespace_id 的策略。应用代码还会额外显式过滤,因为超级用户连接会绕过 FORCE RLS,而忘记这一点的测试说明不了任何问题。如果新增了任何租户表但未注册,tests/test_rls_catalog.py 将使构建失败。
写入权限默认为拒绝。 各引擎不互相写入数据。nce/config_data/node-ownership.json 将 (node_type, transition) → owning engine 映射,并且 assert_owner 会在写入位置拒绝任何未注册的内容。所有权可以按转换(transition)而非仅按节点划分:采购订单行的 ORDERED 状态属于 Procurement,DELIVERED 属于 Warehouse,INSTALLED 属于 Field Tech,同一个守卫表达了这三种情况。
审计日志在数据库层面是只追加的。 event_log 具有 WORM 触发器;UPDATE 和 DELETE 被撤销,而不仅仅是避免使用。
自主性是受限的。 写世界的工具默认为仅限人工确认,携带幂等键,并写入审计日志。它们前面设有价值和数量上限、允许列表和紧急停止开关。重放操作是空操作(no-op),而不是第二次写入。
资金和成本永远不离开系统。 允许列表字段投影器(project(node, surface))控制什么能到达外部表面。利润率和成本不在任何允许列表上。
生成的文本是有依据的。 文本内容由图中已有的事实组装而来,每条声明都链接到其来源节点,而不是事后检查的自由生成。
数据可以同时来自两个系统。 一个按命名空间的解析器决定某个函数是从 Dynamics 365、从 NCE、还是同时从两者读取,并在两者不一致时记录分歧——这样在承诺迁移之前就可以对迁移进行评估。
垂直引擎
有 11 个引擎在 main 上拥有代码。每个引擎拥有自己的表、自己的节点类型,并与其他引擎之间有文档化的边界。
procurement · product · agreements · vendors · sales · system_design · project · economy · inventory · dynamics365 · diagnostics
引擎套件规划为 17 个。它正在增量构建,尚未完成;请参阅下面的状态。
它是如何构建的
引擎套件并非一次性手工编写。它是以一系列小单元的方式构建的——计划了 229 个,每个单元只关注一件事,每个单元都在自己的分支和提交中——并且每个单元在通过独立的对抗性审查后才会被接受。
审查由与编写代码不同的模型实例完成,具体指令是尝试破坏它,并在不确定时默认拒绝。这一点已经反复证明其重要性:
一个库存变动变更在权威事务内部编写了一个图投影。它在同一两个地点之间的任何双向流量上都会死锁,100% 的尝试都会如此。Lint 通过,类型检查通过,测试套件全绿。审查发现了这个问题,修复方法是将行写入和投影都按规范键排序。
一个事件总线变更会将事件标记为已成功发布,同时却悄悄丢弃它们,因为一个处理器记录日志后返回,而不是抛出异常。审查在代码发布前两次拒绝了它。
一个断言十进制精度规则的测试被发现无论是否应用该规则都会以完全相同的方式通过,因为它唯一的测试夹具在两条路径下都以相同方式取整。
反复出现的教训是,绿色测试套件所说明的并不像表面上那么多。失败的属性通常是 docstring 最有信心断言、而实际上没有测试能够区分的属性。
运行它
cp .env.example .env # fill in the values
make local-up # Postgres, MongoDB, Redis, MinIO via docker compose
make lint typecheck # ruff + mypy
pytest -m "not integration" # unit tests, no database required
pytest -m integration # requires the stack above当没有可用的数据库时,集成测试会跳过而不是失败。带有跳过测试的绿色退出码并不表示通过——请检查计数。
文档
完整文档发布在 sindrehaugen.github.io/neuro-cognitive-engine ——架构、八条架构决策记录、各引擎的管理员和用户指南、共享核心参考,以及 MCP 工具手册。
值得从头阅读的:
Architecture ——四数据库技术栈及各层之间的位置关系
Shared core ——实体解析、所有权、自主性治理、脱敏
Multi-tenancy ——
FORCE ROW LEVEL SECURITY是如何应用的MCP tool cookbook ——工具表面,以及门控标志
ADRs ——决策及其权衡取舍
布局
nce/ engine core: memory, graph, RLS, autonomy, signing, replay
nce/vertical_modules/ the business engines
nce/migrations/ idempotent SQL, re-applied on boot under an advisory lock
tests/ 391 files; integration tests marked and CI-wired
docs/ source for the published documentation
go/ launcher and hardware detection
trimcp-infra/ Terraform for AWS and GCP
deploy/ compose stacks and container images状态
正处于积极开发中。十七个引擎中有十一个在 main 上拥有代码;第十二个正在进行中。核心基础层——租户隔离、所有权、自主性治理、审计日志、签名、重放——已经完成,并被其上的引擎使用。
本仓库的发布旨在展示架构和工程方法。它不是一个打包产品,也没有支持承诺。
许可证
专有。保留所有权利。发布供审查;未授予复用许可。
Sindre Løvlie Haugen · github.com/sindrehaugen
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
MCP-native Trust Infrastructure for AI Agents. Persistent encrypted memory with Trust Quotient.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sindrehaugen/neuro-cognitive-engine'
If you have feedback or need assistance with the MCP directory API, please join our Discord server