@galvinsan/pi-mentis

Integrated Pi Mentis knowledge-first memory extension for Pi >= 0.84.0

Packages

Package details

extension

Install @galvinsan/pi-mentis from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@galvinsan/pi-mentis
Package
@galvinsan/pi-mentis
Version
0.1.73
Published
Aug 23, 2026
Downloads
10.2K/mo · 1,769/wk
Author
galvinsan
License
MIT
Types
extension
Size
4.6 MB
Dependencies
9 dependencies · 4 peers
Pi manifest JSON
{
  "extensions": [
    "./dist/index.js"
  ],
  "image": "https://raw.githubusercontent.com/guchengod/pi-mentis/main/assets/pi-mentis-gallery.png"
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Pi Mentis

Pi Mentis 功能概览

说明

面向 Pi 的本地优先长期记忆与知识库:让 Agent 记住偏好、决策和项目上下文,并在需要时检索,而不是把所有历史一直塞进模型上下文。

Pi Mentis 为 Pi >= 0.84.0 提供持续工作记忆、跨会话长期记忆、可导入文件和网页的知识库,以及针对大工具输出的 Artifact 按需检索。它复用 Pi 原生的 Session 和 Branch 语义,不维护第二套会话树。

安装

1. 准备环境

项目 要求
Pi >= 0.84.0
Node.js >= 22.19.0
推理服务 SiliconFlow 或 OpenRouter API Key
数据库 本机 Zvec(由 Pi Mentis 管理)

2. 安装一个产品

三个产品共用同一套本地数据目录,请选择其一安装。通常直接选集成版。

适用场景 可用能力
@galvinsan/pi-mentis 推荐:知识库 + 长期记忆 commit_memorysearch_memory/kb
@galvinsan/pi-mentis-memory 仅个人长期记忆 commit_memorysearch_memory
@galvinsan/pi-mentis-knowledge 仅知识库 commit_knowledgesearch_knowledge
pi install npm:@galvinsan/pi-mentis

升级或卸载:

pi update npm:@galvinsan/pi-mentis
pi remove npm:@galvinsan/pi-mentis

3. 配置凭证并验证

启动 Pi 后运行 /mentis,即可在本地 TUI 中配置 Provider 和 Mentis 系统设置。API Key 存入操作系统的原生凭证库,不进入普通配置文件,也不会进入 Pi 对话或 Mentis Memory。

/mentis
/mentis config
/mentis system
/mentis key
/mentis status
/mentis doctor
/mentis provider

/mentis 第一层显示 ProviderSystem Settings,并在菜单最底部提供 Reset Settings。进入 Provider 后,第一项 Current Provider 用于从已配置好的 Provider 中选择当前运行 Provider;SiliconFlow 和 OpenRouter 各自的菜单只负责配置,不会在进入菜单时提前切换运行时。 如果尚未配置 Key,会直接进入标题为 Key 的独立页面;页面内有带边框的遮罩输入框,输入后 按空格或回车立即保存,Esc 取消。当前 Provider 的 Key 会立即热加载;非当前 Provider 配置完成后,可返回 Current Provider 明确激活。已有 Key 时, 选择 API Key 可直接输入新值并覆盖,不需要 Replace 或 Save 步骤。模型使用选择器配置: SiliconFlow 从 GET /v1/models 获取 Embedding 和 Rerank,OpenRouter 从官方 GET /api/v1/embeddings/models 获取 Embedding;两者都会与 Mentis 已验证兼容目录取交集, 接口不可用时回退到本地已验证列表。OpenRouter 没有 rerank 接口,因此选择它时不会显示或调用 Rerank。

config 直接打开当前 Provider 的模型设置;key 直接输入或更新 API Key;status 查看 当前解析来源和运行状态;doctor 检查凭证、Embedding、可选 Rerank 和连接延迟;provider 配置 Provider 或通过 Current Provider 切换当前运行 Provider;system 直接打开分组的系统设置。Knowledge、Memory、Retrieval、Inference、Storage、Performance、 Observability 和 Intelligence 默认项都可在 TUI 中选择或输入,提交后立即保存并重新加载 Sidecar。help 显示完整帮助。Endpoint 沿用配置文件或 环境变量中的值,不在 TUI 中显示或编辑。Reset Settings 经确认后会清除所有 Provider 模型与系统配置覆盖项并立即恢复默认值;API Key、Memory 和 Knowledge 数据不会被删除。

已有环境变量方式继续兼容:

export SILICONFLOW_API_KEY="YOUR_SILICONFLOW_API_KEY"
# 或
export OPENROUTER_API_KEY="YOUR_OPENROUTER_API_KEY"
pi

凭证优先级是 System Keyring → 当前 Provider 的环境变量(SILICONFLOW_API_KEYOPENROUTER_API_KEY)→ Missing。macOS、Linux、Windows 和 FreeBSD 使用 @napi-rs/keyring 对接系统凭证库;后端写入失败时不会降级为明文文件。 /mentis doctor 会发起最小 embedding 请求,并在启用 rerank 时同时验证 reranker;输出不会显示 Key 或远端响应正文。 当前 Provider 的模型或凭证变更会立即热加载 Sidecar,不需要重启 Pi;非当前 Provider 的配置只保存,不干扰正在运行的 Provider。切换 Current Provider 时,如果双方使用 Mentis 已验证为同一底层模型的别名(例如 SiliconFlow Qwen/Qwen3-Embedding-8B 与 OpenRouter qwen/qwen3-embedding-8b)且维度一致,会复用现有向量 generation;其他模型或维度变化仍会安全阻止写入并要求显式迁移。如果新配置无法激活,会保留旧的 可用运行时并提示失败原因。SiliconFlow 提供 Embedding + Rerank;OpenRouter 提供 Embedding, 并在运行时自动使用不依赖远端 Rerank 的检索路径。

使用

连续推进当前任务

Working Memory 默认开启。你可以连续说“继续”“按刚才的方向修复”“先处理剩余失败项”,Pi Mentis 会保留当前目标、已确认事实、决策、假设、未完成事项、最近结果和 Artifact 引用。它按原生 Session + Branch 隔离,重启或压缩后恢复;分叉会复制起点,但子分支之后的变化不会污染父分支。

Working Memory 与自动 Capsule 共享统一的模型可见预算(默认 1200 tokens)。系统先保留当前 Goal、Open loops 和 Decisions,再用剩余预算注入已确认事实与长期记忆,避免“已经知道什么”挤掉“现在还要做什么”。

这条能力不依赖自动召回,即使 retrieval.automaticRecallfalse 也会工作。每轮开始只注入 Sidecar 已发布到内存中的有界快照,不读取磁盘、不查询 Zvec、也不发起模型或 IPC 请求。

让 Agent 记住长期信息

直接用自然语言告诉 Pi;只有你明确要求记住、更新、纠正或忘记时,Pi 才应写入长期记忆。

请记住:我在 Node.js 项目中优先使用 pnpm,并且默认开启 TypeScript 严格模式。

Pi 会调用 commit_memory({ content })。公开写入接口只有一项自然语言内容,无需填写标签、谓词、记忆类型或事实键。

检索已有记忆和知识

请搜索我关于 Node.js 包管理器的长期偏好。

Pi 会调用 search_memory。集成版的搜索会同时检索个人记忆和知识库;当信息不在当前上下文、存在不确定性或可能来自历史记录时,Pi Mentis 会提示 Agent 先搜索再回答。

要纠正旧信息,先让 Agent 搜到具体旧记录,再写入新的陈述:

先搜索我之前的包管理器偏好,然后更新为:这个项目改用 npm workspaces。

导入知识库

集成版和知识库版支持文件、目录、Git 工作区和网页:

/kb add ./docs
/kb add https://zhanghandong.github.io/pi-book/
/kb status
/kb help

导入任务在后台执行,Pi 前台不会因索引或大文件解析而被阻塞。

核心功能

长期记忆:写入快、整合慢

每条记忆先以带来源和时间的原子陈述保存。后续的强化、替代、撤回或冲突判断在后台进行;相似度只用于寻找候选,不能单独改变记忆状态。这样既能支持偏好和决策的演进,也能保留可追溯的原始记录。

自动记忆形成:候选先行、默认不落库

显式 commit_memory 仍是最高优先级写入入口。除此之外,Sidecar 会先用廉价规则识别明确承诺、纠正和稳定偏好,再调用当前 Pi 模型生成结构化 Memory Candidate。候选必须通过来源、Evidence、Secret、Scope 和稳定性门控;默认 autoPromotion: false,因此只在隔离的候选状态中观察和强化,不参与召回,也不会静默写入长期记忆。

Episode Consolidation:从任务结果学习

同一 Task 的多个 Episode 会聚合为有界摘要,只引用 Artifact ID,不复制大结果。成功验证或失败验证可触发后台归纳:语义结论仍进入 Candidate 管线;程序经验需要不同 Evidence 的重复结果,并通过 Beta 成功率门槛后,才由 Experience 服务提交为可复用过程。Steering 之前被放弃的执行路径不会被当成成功经验。

知识库:混合检索、按预算返回

知识与记忆候选会经过全文检索、向量检索、RRF 融合、权限/时效门控、可选 Rerank、去重和 MMR 多样性选择。最后按上下文预算挑选信息密度最高的内容,而不是简单塞入固定数量的片段。

大结果不反复占用上下文

工具结果默认按大小处理:

结果大小 模型看到的内容 完整内容
≤ 8 KiB 原样返回 当前上下文
8–64 KiB 摘要 + 一份 preview + Artifact ID Artifact
> 64 KiB 结构化摘要 + Artifact ID Artifact

完整 read 结果(最多 256 KiB)会在首次读取时提供给模型,并存为 Artifact;相同路径、范围且内容未变时,后续读取只返回引用。文件内容变化后会再次完整提供。需要细节时,Agent 可使用 search_memory({ id, query }) 在对应 Artifact 内定位局部窗口。

可选自动召回

自动召回默认关闭。开启后,Sidecar 在每轮结束后生成 Memory Capsule;下一轮开始时,Pi 只从已加载的不可变 Capsule 中选择少量证据,不访问磁盘、Zvec 或网络。完整语义检索仍由 search_memory 在 Sidecar 中执行。

{
  "retrieval": { "automaticRecall": true }
}

开启后会增加提示词内容和后台刷新工作,发送消息后可能出现可感知延迟。

系统架构

flowchart LR
  User[用户] --> Pi[Pi Agent / 原生 Session 与 Branch]
  Pi --> Adapter[Pi Mentis 轻量适配器\n工具、事件、内存快照]
  Adapter <-->|版本化 IPC\n请求、通知、大结果一次性文件交接| Sidecar[Mentis Sidecar]

  Adapter -->|每轮同步注入| WMView[不可变 Working Memory 快照]
  Adapter -->|可选:自动召回| Capsule[内存中的不可变\nMemory Capsule]

  Sidecar --> WM[Working Memory\nSession + Branch 隔离]
  Sidecar --> Candidate[Memory Candidate\nEvidence / Secret / Scope 门控]
  Sidecar --> Episode[TaskEpisode Consolidation\n语义候选 + 程序经验]
  Sidecar --> Memory[长期记忆\n原子陈述与关系整合]
  Sidecar --> Knowledge[知识导入\n文件、目录、网页]
  Sidecar --> Retrieval[检索管线\n全文 + 向量 + RRF + Rerank + MMR]
  Sidecar --> Capture[工具结果捕获\n摘要与 Artifact]

  WM --> Zvec[(本机 Zvec\n状态、记忆、知识、证据、Artifact)]
  Candidate --> Zvec
  Episode --> Zvec
  Candidate -->|仅通过资格门槛| Memory
  Episode -->|Experience 资格门槛| Memory
  Sidecar <-->|受限结构化认知请求| Pi
  Memory --> Zvec
  Knowledge --> Zvec
  Retrieval <--> Zvec
  Capture --> Zvec

  Sidecar <--> Provider[SiliconFlow: Embedding / Rerank\nOpenRouter: Embedding]
  Retrieval -->|受预算约束的证据| Adapter

Pi 进程只保留轻量适配器和可选的内存 Capsule;Zvec、远程推理、知识导入、工具结果捕获和后台维护都运行在独立 Sidecar 中。Sidecar 异常时 Pi 仍可继续使用,并会按退避策略尝试恢复。

配置、数据与安全

  • 默认配置文件:~/.pi/.pi-mentis/config.json;可使用 PI_MENTIS_HOME 指定独立的绝对路径。
  • macOS、Linux、Windows 和 FreeBSD 使用原生 System Keyring;不可用时继续支持环境变量, 但绝不写入明文 secret 文件。
  • API keys are never stored in Mentis memory.
  • 默认数据目录:~/.pi/.pi-mentis/zvec;同一目录只允许一个写入进程。
  • 备份前先停止 Pi,再整体复制 storage.rootDir
  • 召回内容会作为不受信任的证据提供给 Agent,不能覆盖当前用户指令。
  • 详细字段、模型设置、资源限制与存储迁移请参阅 配置文档

开发

仓库是 ESM TypeScript monorepo,使用 pnpm:

pnpm install
pnpm format:check
pnpm lint
pnpm typecheck
pnpm test
pnpm test:e2e
pnpm build
pnpm pack:extensions

更多设计细节见 认知记忆系统架构数据模型检索机制测试说明 和各 npm 包:

MIT License.