mcpField
N
Nahuali

Nahuali

本地服务
github.com/Arakiss记忆与知识32 周前更新

关于 Nahuali

Nahuali 是面向需要在使用记忆前核查证据与完整性的 Agent 和操作者的本地优先记忆引擎。它提供确定性的信任判定、可检查的历史记录和可移植的声明凭证,并明确说明其能力边界。

主要功能

  1. 01记忆关联支持证据
  2. 02确定性信任判定
  3. 03仅追加的哈希链历史
  4. 04可离线验证的声明凭证
  5. 05CLI、TUI、HTTP API 和 Rust crate

适用场景

  1. 01使用回忆事实前核查证据
  2. 02检查冲突与过时记忆
  3. 03离线验证声明凭证

MCP 相关

Nahuali 提供 stdio MCP 服务,供通过 MCP 工具集成的宿主使用。它与 CLI 使用相同的确定性引擎和信任语义。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"arakiss-nahuali": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/arakiss/nahuali-mcp:0.8.0-beta.14"
]
}
}
}
启动命令docker run -i --rm ghcr.io/arakiss/nahuali-mcp:0.8.0-beta.14

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/arakiss/nahuali-mcp:0.8.0-beta.14

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Nahuali

Agent 在信任记忆之前,可以先检查它。

Nahuali 正在探索有证据支持的决策,并将一项缺乏支持的更新留待审核

从空白记忆到有证据支持的回忆:Nahuali 会展示哪些内容已可使用,并暂停仍需审核的内容。

测试 最新发布系列:0.8 beta 经 Sigstore 签名的发布制品 FSL-1.1-MIT 许可证

记忆检索通常从一个问题开始:哪些上下文看起来相关? Nahuali 还会分别呈现另外四个问题:

  • 哪条观察支持这段记忆?
  • 有什么内容与它冲突,或会使它过时?
  • 当前记录历史检查是否通过?
  • 现有证据和健康检查是否支持使用此结果?

最终得到的是一款本地优先的记忆引擎,具备确定性的信任判定、防篡改的记录历史和可移植证据。其核心无需模型、账户、API 密钥、托管服务或 Docker。

60 秒快速体验

安装 macOS 或 Linux 二进制文件。安装程序需要匹配的 SHA-256 文件;以下固定路径还可以要求提供其 Sigstore 绑定包。

curl -fsSLo /tmp/nahuali-install.sh \
  https://raw.githubusercontent.com/Arakiss/nahuali/main/scripts/install.sh
sh /tmp/nahuali-install.sh
export PATH="$HOME/.nahuali/bin:$PATH"

在终端中运行 nahuali --version,即可看到真实的蜥蜴精灵图在构建标识旁动起来。当命令输出被捕获或重定向时,它会输出 Agent、安装检查和基准测试工具所需的稳定 nahuali <semver> 行。

记录一条观察,从中推导出一项主张(--source-last 会引用刚记录的事件),并在回忆时要求提供证据:

nahuali remember "Lena owns the release notes" --mention Lena --tag product
nahuali claim Lena owns "release notes" --source-last --confidence 0.92
nahuali recall "Who owns the release notes?" --authority --require-evidence
nahuali explore

nahuali explore 不只是一个记录浏览器。它会同时展示三个彼此独立的问题:

维度解答的问题
MEMORY这段记忆是否有足够支持,可以使用?
HISTORY此存储的记录历史检查是否通过?
EXTERNAL是否已将此状态与存储在此存储之外的授权参考进行比对?

按 / 搜索所有显示的记忆项字段,按 Tab 按记忆类型筛选,再按 j/k 检查结果背后的证据。蜥蜴会守护记忆,并随其状态变化。在 macOS 上使用 Ghostty 的真实窗口运行 scripts/render-readme-tui-gif.sh,即可重新生成上方的 GIF;不会用保真度较低的文本备用版本替换 README 的规范资源。

运行 nahuali demo,即可听取讲解,以非修改方式了解 Nahuali 如何检测特定的原位记录变更,并防止缺乏支持的记忆驱动行动。演示会说明哪些变更需要依赖外部保留的参考,而不能只依靠实时存储。

Nahuali 适用场景

当 Agent 需要本地或由操作员控制的记忆,并且使用结果的决策必须具备证据、健康信号和明确的完整性限制时,适合选择 Nahuali。它尤其适合作为重要记忆的可靠性层,而不是取代所有检索系统。

如果主要需求是托管运行、广泛的框架生态,或公开披露的 LoCoMo/LongMemEval 答案质量结果,请选择成熟的、以回忆为优先的平台或托管记忆平台。目前,Nahuali 不声称在这些方面领先。应用也可以将其他检索系统与 Nahuali 的证据和治理检查结合使用。

Nahuali 检查的内容

证据是记忆的一部分

观察是第一类事件。声明、关系、流程和意图都可以指向支持它们的事件。回忆可以拒绝缺少这条路径的结果,而不是用肯定的措辞来填补空白。

判定与相关性保持分离

考虑权威性的回忆会给出四种确定性判定之一:

判定含义
certify现有检查支持依据所附证据使用该内容。
advisory可作为线索,但未经限定还不能作为事实重复。
warn证据、时效性或存储健康问题需要核实。
block在冲突解决之前,不得依据该记忆采取行动。

certify 判定既不能证明真实性,也不能证明作者身份。它表示现有证据和内容健康检查均已通过;请分别检查 HISTORY 和 EXTERNAL,以查看内部历史检查和可选的外部比对。Nahuali 将这些限制保留为机器可读信息,而不是隐藏在文档中。

历史可供检查

权威账本仅追加写入,并通过哈希链连接。Merkle 包含证明和一致性证明使验证更精简;Ed25519 检查点则依据外部操作员策略,将树大小、根哈希、链尖端、来源和账本沿袭绑定在一起。

Nahuali 不是区块链。它采用 RFC 9162 中标准化的透明日志原语,不会将私有记忆发布到公共网络,也不要求达成共识。独立见证方共同签名是未来计划,并非当前声称具备的能力。

单条声明可随附凭证传递

可移植的声明凭证仅包含所选声明、其证据事件、可选的来源信封、它们的 Merkle 包含路径,以及一个已签名的检查点。验证在线下进行,并且需要使用单独持有的策略:

CLAIM_ID="$(nahuali data --json | jq -r '.claims[-1].id')"
nahuali receipt-export \
  --claim-id "$CLAIM_ID" \
  --checkpoint checkpoint.json \
  --policy policy.json \
  --output claim-receipt.json

nahuali receipt-verify claim-receipt.json --policy policy.json

验证器会分别报告 receipt_integrity 和 content_authority。账本承诺绝不意味着所记述的陈述为真、其作者身份真实,或外部来源仍包含相同字节。

离线凭证验证只检查所选信封、其 Merkle 路径、溯源链接和检查点授权。它信任获授权的签名者对该根哈希的承诺;不会重放或验证完整的账本前缀。要进行更强的检查,请将账本与 checkpoint-verify 配合使用。凭证包含所选记忆的原文,应作为敏感数据处理,默认不应公开。

专为 Agent 打造,由人类操作

CLI 是权威接口。TUI、stdio MCP 服务、本地 HTTP API 和 Rust crate 都使用同一个确定性引擎:

接口用途参考
nahuali可运行 Shell 的 Agent、脚本、持续摄取、检查、恢复、回执和 TUICLI
nahuali-mcp提供 MCP 工具、但无法直接运行本地命令的宿主MCP
nahuali-api使用 OpenAPI 契约的本地 HTTP 集成HTTP API
nahuali-core在 Rust 中嵌入引擎Core

对于基于终端的 Agent 工作负载,优先使用 CLI。它是直接、可编写脚本的 接口,支持批量命令,无需经过 MCP 工具调用往返,并且每次调用都会明确 指定确切的数据库和 JSON 契约。MCP 是为集成边界在于工具协议的客户端 提供的适配器。两个接口具有相同的信任语义;选择 CLI 并不会绕过验证。嵌入式 存储同一时间只能由一个进程持有:简短的 CLI 命令会排队等待(等待时间受 NAHUALI_STORE_LOCK_TIMEOUT_MS 限制,默认为 30 秒),但运行中的 MCP 服务、HTTP API 或 TUI 会在整个运行期间持有存储。需要由多个独立的长期运行 进程共享访问时,请使用远程 SurrealDB(--store ws://…)。

运行 nahuali init,即可在受支持的位置安装捆绑的 Agent 技能,并输出 原生 MCP 配置。Nahuali 也以 io.github.Arakiss/nahuali 的形式发布在官方 MCP Registry 中。原生和容器 配置请参阅 MCP 入门指南。

HTTP API 按设计不进行身份验证,不得暴露给不受信任的网络。

存储与恢复

SurrealDB 中的 memory_record 是事实来源。当前记忆视图、 图表、快照和语义向量都是派生数据,可重建。

  • 普通写入会追加一条账本事件,更新内存视图,将期望的图与最近一次验证通过的图投影进行比较,并且只写入新增或已更改的行。不再存在的行会被移除。
  • 如果无法信任已存储的投影检查点、架构版本、错误状态或内容清单,Nahuali 会清除派生图,并根据账本重建。恢复过程绝不会改写权威历史记录。
  • 嵌入式 SurrealKV 是无需服务的默认选项。
  • 远程 SurrealDB 支持有意共享的部署。
  • 无需 Qdrant 或嵌入模型即可进行词法召回。
  • Qdrant 和本地嵌入是可选的语义层。
  • 图投影 v2 会隔离并发重建,并为每个由账本派生的投影表验证规范化内容清单,而不仅仅检查行数。当重建正在进行,或清单、架构版本或账本最新位置发生偏移时,依赖 SurrealDB 投影的实体、时间线、待处理工作和健康状态读取都会以失败关闭的方式拒绝读取。
  • 语义验证器会在信任派生层之前检测向量索引偏移。
  • 备份恢复会重放账本并重建派生状态。

嵌入式存储同一时间只能由一个进程持有。第二个进程会通过有界退避等待锁,因此并行执行的短命令会排队,而不是失败;如果超过 NAHUALI_STORE_LOCK_TIMEOUT_MS,进程会明确报错,而不会无限期等待或冒并发写入的风险。--store <PATH|URL> 用于选择存储位置;--database <NAME> 用于选择其中的数据库。

nahuali forget <id> --reason ... 会按 ID 擦除记忆,并保留可审计的记录: 记录该记忆(以及由它派生的记忆)的账本记录会变为经过编辑的存根,保留哈希链的可验证性;同时会生成 memory_forgotten 记录,说明请求者、请求时间和原因。此操作不会影响备份、导出、回执或尚未重建的语义索引。具体限制请参阅 GDPR 立场说明。

证据与评估限制

基于适配器的 Agent Memory Trust Benchmark 专为跨产品评估而设计,将来源追溯、拒绝回答、矛盾、过时、非变更式检查和篡改检测作为独立案例。仓库中保存的结果是 Nahuali 的一手证据,而非独立比较。 检索基准测试公开了经过版本固定的 24 条记忆、12 条查询语料中的每个排名项和延迟样本。

仓库中保存的 0.8.0-beta.9 结果是一手、版本匹配的源码构建结果。这些结果与二进制文件的 SHA-256 和源码修订版本绑定,但并不声称对应已发布的发行归档。新的已发布版本结果还必须与发布标签、目标平台、归档名称、归档摘要以及确切的二进制文件匹配,具体通过 scripts/verify-benchmark-artifact-identity.py 验证。

小型检索语料是回归门槛,不代表最先进水平,也不能替代 LoCoMo 或 LongMemEval。更全面的仓库内治理套件涵盖了信任相关的故障类别。运行受控 Beta 门槛:

bash scripts/verify-controlled-beta.sh

维护者可以单独验证所需的 GitHub 仓库设置:

NAHUALI_VERIFY_GITHUB_SETTINGS=1 bash scripts/security-supply-chain-check.sh

Beta 阶段限制

  • 证据证明的是可追溯性,而非事实真实性。
  • 可信检查点证明的是已提交的账本状态,而非独立时间。
  • 要检测回滚或完全重新链接的历史记录,必须保留外部检查点和策略。
  • 范围标签用于整理上下文;它们不是访问控制边界。
  • 自检会提出待办工作,但绝不会自主改写记忆。
  • forget 会从存储及其衍生层级中移除内容,但不会移除更早创建的副本;这并不能证明内容已被彻底清除。
  • 不包含账户、托管同步、账单和托管控制平面。
  • API 和存储行为在 1.0 之前仍可能发生变化。

使用不可替代的数据前,请阅读 BETA.md;在将判定结果视为授权边界前,请阅读完整的信任模型。

安装固定版本的发行版

上方的简易安装程序始终要求提供匹配的 SHA-256 资源文件。若要安装固定版本并同时要求 Sigstore bundle,请选择一个发行标签,并运行同一标签中的安装程序:

VERSION=vX.Y.Z-beta.N
curl -fsSLo /tmp/nahuali-install.sh \
  "https://raw.githubusercontent.com/Arakiss/nahuali/${VERSION}/scripts/install.sh"
NAHUALI_VERSION="$VERSION" NAHUALI_REQUIRE_SIGSTORE=1 \
  sh /tmp/nahuali-install.sh

此方式需要 cosign;如果无法验证归档校验和、签名身份或 bundle,则会停止。确切的身份、来源证明、SBOM 和手动验证方式,请参阅发行版验证。

更新通知

当有适用于你平台的更新版本时,nahuali briefing 和 nahuali session-resume 的人类可读输出会以一行通知结尾:

Update available: X.Y.Z-beta.N (you have X.Y.Z-beta.M) · https://github.com/Arakiss/nahuali/releases/tag/vX.Y.Z-beta.N

这是 Nahuali 自行发起的唯一网络请求。它会匿名调用一次 GET https://api.github.com/repos/Arakiss/nahuali/releases,最多每 24 小时一次,超时时间为 1.5 秒。它不会发送任何记忆内容、存储路径或标识符;按照 GitHub 的要求,User-Agent 标头仅包含 Nahuali 版本。检查结果(包括失败的尝试)会缓存在 $NAHUALI_HOME/update-check.json(默认路径为 ~/.nahuali)中。此通知不会出现在 --json 输出、其他命令、MCP 或 HTTP API 中;Nahuali 也绝不会自行安装任何内容。nahuali update-check 会立即检查并打印固定版本的安装命令。

设置 NAHUALI_NO_UPDATE_CHECK=1 可禁用所有更新检查,包括 update-check。如果设置了 CI,也会跳过自动检查。

从源码构建

cargo build --workspace
cargo test --workspace
cargo install --path crates/nahuali-cli --locked

仅在使用可选的远程开发技术栈和 Qdrant 时才需要 Docker。

深入了解

问题和设计反馈请提交至 GitHub Discussions。Bug 报告和 基准测试贡献请使用结构化的 issue 模板。

许可证

Nahuali 采用 FSL-1.1-MIT 源代码可用许可证,即 Functional Source License 1.1 with an MIT future grant。你可以出于许可允许的目的查看、使用、复制、修改、可自托管并重新分发。不得将当前代码作为竞争性商业产品或服务提供;每个已发布版本会在两年后转为 MIT 许可证。 该许可证不妨碍他人独立重新实现本产品的理念。请阅读实用的许可常见问题;许可证文本仍是具有约束力的依据。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。