零代码 6 小时构建零幻觉 MCP 规则裁决 AI Agent
- 作者

- 姓名
- Nino
- 职业
- Senior Tech Editor
在黑客松及敏捷软件开发中,团队的主要瓶颈往往集中在编写模版代码、排查语法错误或应对大语言模型(LLM)不可预测的非确定性输出上。在构建 AERO-KIT——一个旨在解决复杂工业与法律规则冲突的确定性 Model Context Protocol (MCP) Agent 项目时,开发范式发生了彻底变革。整个开发过程没有人工编写一行应用层代码。
开发者完全转变为首席架构师与系统指挥官的角色,而具体的文件输出、测试用例构建与配置调试,则交由精密编排的 AI 工具栈协同完成。在实际落地中,通过使用像 n1n.ai 这样的统一模型聚合平台,可以高效调度不同性能优势的 LLM 接口,大幅提升系统构架与代码生成的精准度。
本文将深度拆解该系统的架构设计、数据建模方案及确定性 MCP Guardrails 机制,展示如何在 6 小时内快速搭建出一款零幻觉的规则裁决 Agent。
为什么传统 Vector RAG 无法应对严苛的规则裁决
在涉及法规、标准及工程规范的裁决场景中,基于向量相似度搜索(Vector RAG)的常规 AI Agent 常常会出现严重的“幻觉”现象。
思考以下典型的规则冲突案例:
- 基础规则 (ID: R-101):“组件 A 的最高允许运行温度为 75°C。”
- 勘误/修正案 (ID: E-502,优先级 3):“在高压环境下,组件 A 的最高允许运行温度降至 60°C,本条款优先于规则 R-101。”
传统向量搜索 (语义相似度匹配)
│
├── 规则 R-101 (75°C) ── 余弦相似度: 0.89 ──┐
│ ├──> 产生冲突!LLM 选择折中或随机猜测 (如输出 67.5°C 或误采纳 R-101)
└── 勘误 E-502 (60°C) ── 余弦相似度: 0.88 ──┘
当用户查询高压环境下组件 A 的安全温度时,向量检索系统将两段文本转化为向量。由于两段文字语义高度重合(均讨论组件 A 的温度限制),其余弦相似度分数极其接近。向量检索将这两段存在逻辑矛盾的上下文同时送入 LLM 窗口,导致 LLM 产生如下严重问题:
- 数值折中幻觉:机械地计算中间值(如回答 67.5°C)。
- 权威倒置:因基础规则与用户关键词更匹配而误用已作废的旧条款。
- 输出不确定:相同问题在不同请求中给出截然不同的裁决结果。
AERO-KIT 彻底放弃了依赖概率匹配的向量相似度搜索,转向将知识图谱化,托管于 Sanity Content Lake,并借助 Model Context Protocol (MCP) 实现严格的确定性图遍历。
系统整体架构:零代码多 Agent 协同体系
为了在不手动编写代码的前提下保证 Agent 的严谨性,系统在架构上分化为三大核心层级:战略指挥层、本地执行引擎与结构化知识湖。
+-----------------------------------------------------------------------+
| 首席架构师 (人类开发者) |
| 提供设计意图、边界条件与声明式规范 |
+-----------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------+
| 战略大脑与任务编排层 |
| 通过 n1n.ai 调用 Gemini 1.5 Pro / Claude 3.5 |
| - 制定结构化 Schema 数据模型 |
| - 生成确定性 GROQ 图查询逻辑 |
| - 设定严格的反幻觉 Guardrails 指令集 |
+-----------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------+
| 本地自动化执行引擎 |
| OpenCode (Big Pickle) |
| - 自动输出配置文件、接口代码与测试脚本 |
| - 执行 Node.js 自动化测试套件 (node --test) |
+-----------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------+
| 结构化知识图谱 Lake |
| Sanity Content Lake |
| - 严格关联的数据类型: policyOrRule, errataOrAmendment |
| - 通过 GROQ 与确定性 MCP 端点进行逻辑遍历 |
+-----------------------------------------------------------------------+
在接入大模型 API 时,选择 n1n.ai 能够帮助开发者以极低延迟连接全球主流模型,确保逻辑推理与自动化代码生成环节的高可用性与稳定输出。
第一步:Sanity Content Lake 结构化数据建模
与其将非结构化文档直接切片存入向量数据库,AERO-KIT 在 Sanity 中构建了强类型的关联数据模型。
核心 Schema 设计
系统定义了三种核心文档类型:
policyOrRule:存储基础规则条款、适用范围及初始标准参数。errataOrAmendment:包含指向目标规则的强关联引用(targetRuleRef)、生效条件及整数型优先级字段(precedenceLevel)。resolutionCase:存储历史人工裁决案例,用于审计与边界判定。
以下是由战略 Agent 自动生成的声明式 Schema 定义示例:
// Schema 定义: errataOrAmendment.js
export default {
name: 'errataOrAmendment',
title: 'Errata or Amendment',
type: 'document',
fields: [
{ name: 'title', type: 'string', title: 'Title' },
{ name: 'amendmentCode', type: 'string', title: 'Amendment Code' },
{
name: 'targetRuleRef',
type: 'reference',
to: [{ type: 'policyOrRule' }],
title: 'Target Base Rule'
},
{
name: 'precedenceLevel',
type: 'number',
title: 'Precedence Level (Higher overrides lower)'
},
{ name: 'conditionContext', type: 'string', title: 'Condition Context' },
{ name: 'updatedValue', type: 'string', title: 'Updated Normative Value' }
]
}
第二步:基于 GROQ 的确定性 MCP 逻辑遍历
Model Context Protocol (MCP) 允许 LLM 以标准化的方式安全调用外部工具。AERO-KIT 并没有让大模型自由检索文本,而是向 Agent 暴露了固化的 MCP 工具,该工具在后台执行针对 Sanity 的 GROQ(Graph-Relational Object Queries)查询。
当用户提问:“在高压环境下组件 A 的最高允许运行温度是多少?” 时,Agent 会触发 MCP 工具执行如下 GROQ 逻辑:
*[ _type == "policyOrRule" && component == "Component A" ] {
_id,
ruleCode,
baseValue,
"amendments": *[
_type == "errataOrAmendment" &&
references(^._id) &&
conditionContext match "high-pressure"
] | order(precedenceLevel desc) {
amendmentCode,
precedenceLevel,
updatedValue,
conditionContext
}
}
逻辑裁决执行路径
图数据库引擎在底层完成如下图遍历:
- 精确定位基线规则
R-101。 - 沿图边检索所有指向
R-101的errataOrAmendment修正案节点。 - 按上下文(
high-pressure)过滤并根据precedenceLevel降序排列。 - 直接返回包含基线值与最高优先级修正值的确定性 JSON 载荷。
由于冲突裁决是在数据库引擎层而非 LLM 上下文中计算出来的,因此从根本上消除了混淆与幻觉。
第三步:零幻觉 Guardrails 与 Skills 方法论
为了保证 Agent 在任何情况下都不会伪造数据,系统提示词必须作为严格的运行时契约。参考工程团队的测试规范(如 testComplet 与 fixe-de-bug),Agent 被赋予了强制性的执行策略:
### 系统执行契约:确定性规则裁决规范
1. 零猜想原则 (NO GUESSING POLICY):
当查询得到的规则数据存在歧义,且没有更高优先级的 `errataOrAmendment` 节点明确解除冲突时,你必须直接返回: "UNRESOLVED_CONTRADICTION" 并列出冲突文档 ID。严禁拼接或推算中间数值。
2. 强制引用原则 (MANDATORY CITATION POLICY):
回答中给出的每一个参数,必须明确附带 `groq_query` MCP 工具返回的准确 `_id` 与 `precedenceLevel`。
3. 边界拒绝原则 (OUT-OF-BOUNDS BOUNDARY):
若用户查询的实体在 Sanity Content Lake 中不存在,必须立即拒绝回答,不得借助 LLM 预训练知识进行补全。
方案对比:传统 Vector RAG vs. 确定性 MCP 图查询
| 评估维度 | 传统 Vector RAG | 确定性 MCP 图查询 (AERO-KIT) |
|---|---|---|
| 检索机制 | 向量余弦相似度计算 | GROQ 强类型图遍历 |
| 冲突处理 | 容易混淆失效;机械拼接冲突片段 | 根据 precedenceLevel 确定性裁决 |
| 引用精准度 | 粗粒度(文本切片级别) | 极精准(Sanity 节点 ID 与版本) |
| 幻觉风险 | 较高(尤其是数值范围与边界问题) | 数学意义上的零幻觉(受 Schema 约束) |
| 检索延迟 | 中等(需生成 Embedding + 向量索引检索) | 极低(Direct Database Query < 50ms) |
| ** Token 成本** | 高(需要将大段未过滤文本塞入上下文) | 极低(精确提取结构化 JSON 载荷) |
在构建复杂的 Agent 系统时,稳定、高性能的模型 API 基础设施至关重要。借助 n1n.ai 提供的高可用 API 路由,开发者可以轻松实现多模型备用机制,确保关键 MCP 工具调用在并发高峰期依然保持稳定性。
第四步:自动化 Node.js 测试套件验证
为验证系统的可靠性,本地纳米引擎(OpenCode)根据架构指令自动生成了独立的自动化集成测试套件(node --test),对 MCP 工具的返回值进行断言检验。
import test from 'node:test';
import assert from 'node:assert/strict';
import \{ executeMcpQuery \} from './mcpClient.js';
test('TEST 2: 基于优先级的确定性冲突裁决', async (t) => \{
const result = await executeMcpQuery(\{
query: "高压环境下组件 A 的最高温度是多少?