chunxiaoxx/nautilus-compass · 上手攻略
- 仓库:chunxiaoxx/nautilus-compass
- 链接:https://github.com/chunxiaoxx/nautilus-compass
- 分类:agent / rag / evaluation / llm-infra
- 作者:spark
- 更新:2026-10-24
一、它是什么
nautilus-compass 是一个 Agent 的「记忆层 + 可靠性层」,由 Nautilus Platform 维护,主语言 Python。它不是又一个提示词框架,而是以 MCP 插件 的形式插进你的 Agent 宿主(Claude Code / Claude Desktop / Cursor / Cline / Continue.dev / Zed),在 Agent 每次行动前后做三件事:回忆、漂移检测、画像聚合。
它由三条相互独立的能力组成:
- 黑盒长期记忆(Black-box long-term memory) —— 用 BGE-m3 在本地对原始文本做向量化,写入路径零 LLM 调用,不做抽取、不建图谱、数据不出本机。检索层做「utterance-routed chunk retrieval」:单会话类/知识更新类问题路由到 turn-window 分块,其余走 session 级 BM25 + dense 的 RRF 混合。
- 漂移检测(Drift detection) —— Agent 动手之前,先把当前 prompt 与一组真实失败样本构成的 anchor set(25 正 + 35 负)做 BGE-m3 余弦比对,打分。这是它主打的差异点:白盒记忆层在写入时就把 prompt 抽象成事实,结构上无法在事后检测漂移。
- 跨 Agent 契约与治理(Cross-agent contracts) —— 多 Agent(或多个对话窗口)共享文件时,从 handoff 文件中推导隐式契约,追踪闭合状态,审计「假闭合」与「红色漂移」。
2026 年 10 月起,项目又长出第四条腿:独立评审与验证层(Independent Judging & Verification),包含 NACRE judge(把评审能力压进 1.7B LoRA)、caliber-bench(给「基准本身」打分的元基准)、预注册判据等。注意这一层的产物与开源的记忆层不是同一件事,部分是 SaaS 侧的。
成熟度自评:仓库卡片标注 research,PyPI 上 PyPI Classifier 写的是 Development Status :: 4 - Beta。许可为 Modified MIT(不是标准 MIT)。
二、它解决什么问题
- Agent 记不住跨会话的东西。常规做法是「写入时用 LLM 抽取成结构化事实」,但这是在赌未来的查询分布——项目称之为 write-time wager。compass 把这个赌注全推到读取侧,e2e 分数因此从 42.6% 涨到 75.4%。
- 召回了记忆也救不了这一次。记忆注入上下文后,Agent 仍可能当场违反某条项目规则。漂移检测补的就是这一段。
- 多 Agent 协同时的责任黑洞:交接文件写了、状态说「已完成」,实际没做。没有契约追踪就只能靠人肉 review。
- LLM-as-judge 的评分不可信:没有预注册判据的基准排行榜基本等于虚构。项目自己把这套叫 judge hygiene,并用「双账目(dual accounting)」同时报出「全集分」与「剔除 judge 掉线题后的分」。
三、快速安装
方式 A:PyPI(推荐,纯 Python 包)
pip install nautilus-compass
# 会装出这些可执行入口:
# nautilus-compass 主 CLI
# compass-mcp MCP server
# compass-a2a A2A adapter
# compass-drift-history
# compass-session-search
# compass-session-writer
- 版本:PyPI 最新 3.3.0(发布于 2026-10-04),要求 Python ≥ 3.10。
- ⚠️ 版本号有坑:仓库 main 分支 README 写的是「PyPI · 3.3.0」,但 PyPI JSON 接口里的
description字段(即打包时冻结的 README 副本)仍写着 3.2.0。两者不冲突(3.3.0 确实是最新),但如果你在文档里看到 3.2.0,那是打包副本过期,不是版本回退。
方式 B:Claude Code / Desktop 插件(30 秒)
git clone https://github.com/chunxiaoxx/nautilus-compass ~/.claude/plugins/nautilus-compass
bash ~/.claude/plugins/nautilus-compass/install.sh
# 启动 BGE-m3 守护进程(每次开机跑一次)
bash ~/.claude/plugins/nautilus-compass/daemon_start.sh
安装脚本会往 ~/.claude/settings.json 里写三个 hook:
| Hook | 作用 |
|---|---|
UserPromptSubmit |
时间分桶记忆召回 + 漂移检测 |
PostToolUse |
会话中途写入观察 |
Stop |
会话结束总结(写入 ~/.claude/.cache/compass-last-session.txt) |
可用斜杠命令:/compass-verify /compass-drift /compass-recall /compass-search /compass-status。
方式 C:其他 MCP 客户端
python ~/.claude/plugins/nautilus-compass/scripts/install_to_agent.py
自动识别 Claude Desktop / Cursor / Cline / Continue.dev / Zed 并改写其 MCP 配置。
方式 D:云托管(公测,自助注册)
# 1) 注册:https://compass.nautilus.social/signup
# 2) Web 控制台建 token(或 POST /tokens)
# 3) MCP 端点(streamable-http + Bearer token):
https://compass.nautilus.social/mcp/
# A2A 发现
curl https://compass.nautilus.social/.well-known/agent.json
同时在 官方 MCP Registry 以 io.github.chunxiaoxx/nautilus-compass 收录(远程 + PyPI 自托管双条目)。
想先看效果,不想装
HuggingFace 上有 CPU-only 的在线 demo(漂移检测 + Merkle 完整性),无需注册: https://huggingface.co/spaces/chunxiaox/nautilus-compass
四、核心用法
4.1 MCP 工具(17 个,核心七个)
| 工具 | 用途 | 本地守护进程延迟 |
|---|---|---|
ingest_obs(name, body, agent_id?) |
写入观察,自动生成 anchor + 漂移信号 | ~150 ms |
recall(query, project?, top_k?) |
BGE-m3 语义 + 关键词混合检索 | ~200 ms |
session_search(query, since?) |
按时间分桶检索会话日志 | ~80 ms |
profile(user_id?) |
工作画像聚合(主题、Agent、漂移趋势) | ~100 ms |
drift_check(prompt, project?) |
对 anchors 打漂移分 | <50 ms |
drift_history(since?, agent_id?) |
漂移分时间线 | ~30 ms |
feedback_log(direction, reason) |
记录正/负 anchor 信号 | <20 ms |
其余包括 thread_recall、proof_of_impact、long_task、平台桥(submit_platform_task / ingest_platform_task_result)、治理组(governance_dispatch / governance_audit / governance_lock_check / governance_plan)与 add_worker。协议为 JSON-RPC 2.0 over stdio / TCP / TLS / mTLS,notifications/*、logging/setLevel、resources/* 规范完整。
4.2 Token 权限(v2.3.1 起 least-privilege)
# 签发一个只读、限定项目的 token
python ops/compass_token_admin.py grant <agent> --scopes read:<project>,write:<project>
# 全项目召回(read:*,含 scope=user)需要显式确认
python ops/compass_token_admin.py grant <agent> --scopes 'read:*' --yes-i-want-star
HTTP 服务端逐次调用强制校验 scope,fail-closed。旧版 list 格式 token 为向后兼容映射为全访问。
4.3 复现论文里的检索数字
bash scripts/reproduce_lmes_retrieval.sh # 完整 500 题
SUBSET=12 bash scripts/reproduce_lmes_retrieval.sh # 冒烟测试
纯检索、无 LLM 调用,CPU 可跑(跑满 500 题建议上 GPU)。
# 基准入口
bash ops/bench_all.sh l0 # 快速层,无需 GPU
bash ops/bench_all.sh l1 30 # LongMemEval 子集
检索相关的开关是环境变量(位于 tests/eval_longmemeval_accuracy.py):
ZMM_UTTERANCE_RETRIEVE / ZMM_UTTERANCE_TYPES / ZMM_HYBRID / ZMM_RETRIEVE_K / ZMM_DATE_ANCHOR / ZMM_EMBED_CACHE。
4.4 拉取评测数据集
from datasets import load_dataset
ds = load_dataset("chunxiaox/nautilus-compass-test-data")
4.5 跑评审层(NACRE)
评审层配套产物在 HuggingFace 上:nautilus-compass/nacre-judge-v1(模型卡 + 权重)、nautilus-compass/caliber-bench-v0(开放样本包)。⚠️ 这一层依赖 Nautilus 平台的组织流程与预注册判据,并非装个 pip 包就能独立复现。
五、典型适用场景
- 个人长期助理:Claude Code 每天干活,希望它记得上周定下的架构约束、没做完的待办。
- 有明确规则的项目:团队要求「所有 DB 改动必须先写迁移脚本」,需要一条在 Agent 动手前就拦一道的护栏。
- 多 Agent 流水线:主 Agent 派活给子 Agent,需要从交接文件自动推导契约并审计假闭合。
- 合规/受控环境:数据不出本机、无 LLM 抽取成本、可离线复现基准。
- 做 Agent 记忆评测:需要可复现脚本 + 公开证据 JSON,而不是一张 PPT。
六、坑与注意
COMPASS_USE_INOTIFY=0会静默失效。关掉后守护进程不再发现新文件,召回看不到新写入的内容,而且不报错。守护进程会打一条 WARNING,但如果你不看日志就会以为一切正常。只在确知原因时才设它。- 锚点文件缺失曾是一个安全洞。旧版本
anchors.json缺失时drift会静默返回「无风险」。当前版本改为显式报错:响应里带drift.anchors_error+should_alert: true。如果你在用旧版本,漂移检测形同虚设——务必确认版本 ≥ 该修复点。 - 首次召回可能耗时 90 秒。守护进程空闲后模型冷加载,MCP 客户端会用延长超时自动重试一次。手工调用时别把超时设得太短。
- 延迟数字有两套,别混用。README 表格里的 ~30–200 ms 是本地守护进程实测值;走公网 HTTPS MCP 端点(
https://compass.nautilus.social/mcp/)会叠加 TLS + WAN 往返,实测 p50 ≈ 0.9–1.7 s(2026-08-28 实测)。每 prompt 都要调用的话,云端方案的性能画像完全不同。 - 评分方法上的坑,README 自己写得很坦率,值得抄作业: - LongMemEval-V2 的初始评分用的是 4096 max token 的 judge,被推理过程吃掉,导致答案被系统性判零;换 16384 token 重判后 web 从 36.7 → 40.0。 - 有一个「弃权(abstention)」补丁因「拒答模板泄漏进可回答题目」而被预注册判据否决。 - LoRA 检索增强闭到 parity(2026-08-31)未采纳。 - 域路由 LoRA 分片出现 −36.6pp 回归(E-NACRE-1,已公开的负面结果),动态权重路由被暂停到语料 ≥3,000。 - README 明确说 EverMemBench 故意报较低的 Run 1(44.4%)而非较高的 Run 2(47.3%),以避免挑结果。
- 「beats mem0」要看清边界。对比是作者自己复现的(mem0 2.0.19,
infer=False,两侧各用各的默认 embedder:bge-m3 vs vertexai text-embedding-005),不是第三方独立评测。README 也承认在 LongMemEval-M 上「还没有 mem0 的 head-to-head」。 - EverMemBench 不宣称 SOTA。只说超过四个已发表基线(Mem0 37.09 / Zep 39.97 / MemOS 42.55 / MemoBase 34.27),并明说 OMEGA、Mem0g 未公开报告。
- 失败实验也写进证据里:cross-encoder 重排在这份语料上反而有害;候选池 K 是 no-op;Qwen3-0.6B 替换是 wash。README 里的数字并非全挑好的报——这是加分项,但也意味着别指望每个开关都有提升。
- 许可不是标准 MIT,是 Modified MIT,商用前请读
LICENSE原文。 - Python ≥ 3.10,低于此版本
pip install直接失败。 - README 自称「唯一做漂移检测的公开记忆层」——这是项目方的宣传口径,本攻略未做第三方交叉验证。已知竞争者中 Letta、Zep、MemOS 等也有各自的评估/异常能力,但没有做同等形态的 prompt 级锚点漂移打分。
七、与同类对比
README 自带一张对比表(compass / mem0 / Letta / Zep / claude-mem / MemOS / Smriti)。按能力维度可以这样理解:
| 维度 | nautilus-compass | mem0 / Zep / MemOS 类 | claude-mem 类 |
|---|---|---|---|
| 写入路径 LLM 调用 | 0 次(黑盒) | 多数有抽取/图谱 LLM 调用 | 视实现 |
| 数据是否出本机 | 完全本地(BGE-m3) | 常用云端 embedder | 视实现 |
| 漂移检测 | 有(AUC 0.83 held-out) | 无同等形态能力 | 无 |
| 跨 Agent 契约/治理 | 有(含假闭合审计) | 无 | 无 |
| MCP 接入 | 17 工具,stdio/TCP/TLS/mTLS | 多数只支持 SDK 或 HTTP | 多为 Claude Code 插件 |
| 长基准可复现性 | 有(脚本 + 公开 evidence JSON) | 部分有 | 普遍较弱 |
差异化的三张牌:漂移检测、写入零 LLM 调用、跨 Agent 契约治理。前两张有量化数字支撑,第三张目前主要是 4-dialog 28 小时的实地研究(docs/case_study_4dialog_compass.md),证据强度弱一些。
同时也要看到反面:compass 的评测多为作者自测,而 mem0/Zep 有更广泛的用户侧采用与第三方评测;compass 的成熟度(Beta / research)低于成熟商业产品。
八、一句话结论
推荐:如果你用 Claude Code 且已经遇到「Agent 每次都失忆」或「Agent 反复违反同一条项目规则」这两个具体痛点,compass 值得花半小时装上试试——它把召回、漂移护栏和写入零成本三件事捆在一个 MCP 插件里,且完全本地;但如果你要的是「有 SLA 的生产级记忆服务」,请先自建评测基线,因为它的数字目前基本是作者自证的。
附:本文来源与核验状态
| 来源 | 用途 | 状态 |
|---|---|---|
https://raw.githubusercontent.com/chunxiaoxx/nautilus-compass/main/README.md |
主体事实(安装、工具表、性能数字、坑) | ✅ 已 fetch(2026-10-23 21:32 UTC) |
https://pypi.org/pypi/nautilus-compass/json(JSON API) |
最新版本 3.3.0、Python ≥3.10、发布时间 | ✅ 已 fetch |
仓库卡片 organized/repo_cards/3931-chunxiaoxx-nautilus-compass.md |
分类、stars 1254、周增 +236、成熟度 research | ✅ 已读 |
https://raw.githubusercontent.com/.../README.md 中 docs/*、paper/*、ops/* 等子路径 |
仅作为 README 内链接引用,未逐一打开 | ⚠️ 未逐一核验 |
待核 / 不确定处: - ⚠️ PyPI 打包的 README 副本仍写 3.2.0,GitHub main 写 3.3.0;已核实 PyPI 最新为 3.3.0,但两处文档版本号不一致本身是遗留问题。 - ⚠️ 「唯一做漂移检测的公开记忆层」为项目方口径,未独立验证。 - ⚠️ 「beats mem0」为作者自测对比(作者自述其复现方式),非第三方评测。 - ⚠️ 漂移检测的安全洞修复具体落在哪个版本号,README 只说「现在会显式报错」,未给出对应 release 号。 - ⚠️ README 中 drift AUC、召回延迟、p95 等均为项目方自测环境数据,未在独立环境复现。