pi-echo

Pi extension for scoped memory cues, historical source search, and full-fact recall.

Packages

Package details

extension

Install pi-echo from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-echo
Package
pi-echo
Version
0.1.4
Published
Sep 7, 2026
Downloads
468/mo · 72/wk
Author
kevin_eric
License
Apache-2.0
Types
extension
Size
168.9 KB
Dependencies
0 dependencies · 3 peers
Pi manifest JSON
{
  "extensions": [
    "./index.ts"
  ]
}

Security note

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

README

pi-echo

pi ────))) echo — 原声过去之后,回声还在。

面向 Pi Coding Agent 的长期记忆扩展。Pi 把旧对话收成摘要;pi-echo 提醒模型哪些历史值得回看,并让模型按需找到原始证据。

它交付什么

长会话压缩(compaction)后,目标和进度通常还在摘要里,当时的命令输出、失败现场和用户原话却可能已离开模型上下文。pi-echo 保留 Pi 的摘要流程,通过三种结果补充证据:

结果 模型得到什么
Memory Cues(自动提醒) 成功压缩后值得回看的工具过程,一行说明一次事件
Search Results(搜索结果) 当前路径中的来源说明、命中位置和原文片段
Retrieved Content(找回内容) 从指定来源行开始的连续原文,未读完时可继续

搜索片段已经足够时,模型可以直接回答;缺少条件或上下文时,再找回完整内容。

🧩 来源线索与自动提醒

一条来源线索包含时间、角色、简短内容和不透明凭据 handle。凭据用于打开对应原文,模型无需解析它。

09-03 09:04 toolResult bash(npm test) → ✗ 3 failed: budget over limit [3 lines, 1 issue]
09-03 09:00 user 帮我修一下预算校验的越界问题

工具过程线索说明做了什么、得到什么,以及背后还有多少内容。超长成分保留首尾,用省略标记说明中段未展示;原文仍可找回。

自动提醒只展示工具执行过程。用户消息、模型正文和带 thinking 标记的历史思考也进入可搜索的来源目录,但不进入自动提醒。当前目标与结论继续由 Pi 上下文和摘要承接。

🌱 提醒会淡去,原文仍可查

每次成功压缩后,新工具过程线索完整进入一批提醒,旧线索按年龄变模糊或退出:

完整提醒 → 仅保留调用说明与内容规模 → 退出提醒,仍可搜索和找回

能够重新取得等价内容的线索衰减较快;记录当时执行状态的线索保留较久,失败点最慢。文件被修改后,此前的读取记录按不可重现内容处理。

模型找回仍在提醒中的事实时,该行在下一次压缩后恢复清晰并受保护一批。已经退出提醒的事实继续可查、可取,不重新进入自动提醒。

系统以模型窗口的 20% 作为压力参考:超出时加快未受保护旧行的衰减。本批新行和刚强化的行始终完整交付,即使它们自身超过参考量。因此,20% 不是提醒体积上限。具体机制见 Cue Provider 设计

🔍 搜索与找回

模型可使用两个工具:

search_memory({ query, match, in, after })
recall_memory({ handle, from })

选择怎样搜索

参数 行为
query 同时搜索当前路径的来源线索与完整原文,包括当前提醒之外的历史
match: "literal"(默认) 忽略大小写的逐行字面子串匹配;.* 等字符也按原样匹配
match: "terms" 将查询拆成词项,按 BM25 相关性排序;适合记得几个词却不记得原句的情况
in 加非空 query 只搜索该凭据对应的完整事实,两种匹配方式均可使用
不填 queryin 分页列出来源线索

例如,精确定位 budget.*校验 可用 literal;只记得 budget rollback validation 这些词时可用 terms。词项搜索不是自然语言理解,也不保证每个查询词都出现。

读懂证据与续取位置

每项搜索结果都带来源说明;命中原文时,还会给出命中行、原文片段范围和所属小节范围。片段没有覆盖整个小节时,可以用 recall_memory 从小节起点补读。标题和来源说明不占原文行号。

非空查询优先显示已离开 Pi 原生上下文的历史,再显示仍保留的内容。historicalretainedunknown 表示上下文保留状态,不表示内容真伪。thinking 标记当时的推演,也不等于已核实结论。

搜索结果给出续页标记时,沿用原来的 querymatchin,添加 after 继续。续页保持首次查询的排序与片段边界;期间追加的新事实需要重新搜索才会进入结果。续页标记失效时,去掉 after 重新开始。

recall_memory 使用 handle 找回原文,from 是从 1 开始的来源行号。每段都带来源说明和实际范围;一行不会从中间切开,未读完时给出下一起点。工具结果连同配对调用交付,图片保持图片,思考保留来源标记。

🌿 范围与失败隔离

记忆权限来自当前 Pi 会话(session)的完整分支路径。搜索参数不能扩大范围,分支摘要(branch summary)也不会授权读取被放弃分支的原文。

正常追加与压缩保留历史可达性;捕获到历史消息修订时撤销旧快照。导航、会话替换和扩展重载(reload)会建立新运行范围,已经失效的工具结果不会交付。

线索准备、检索或找回失败时,Pi 的上下文、压缩、任务和关闭流程继续运行。工具会区分没有匹配、参数需要纠正和暂时不可用,不把计算失败当成没有历史。

安装

pi install npm:pi-echo

只在当前运行中试用:

pi -e npm:pi-echo

安装后无需配置。第一次成功压缩且模型上下文缺少当前路径历史时,普通请求会带上工具过程提醒。重新打开已压缩路径时,扩展重建基线;模型也可随时按需搜索和找回。

开发与验证

需要 Node.js 22.19.0 或更高版本。

npm ci
npm test        # 静态、模块行为与跨模块集成检查
npm run test:pi # 真实 Pi、本地确定性 provider

真实模型检查会发送实际请求。先在 Pi 中登录,检查会复用 Pi 当前配置目录中的凭证:

npm run setup:model # 报告环境状态
npm run test:model  # 真实模型验收

检查产物位于 .dev/verification/。模型记录包含原始请求、输出、耗时与 token 用量;其中费用是 Pi 根据模型目录价格计算的估算,不是实际账单。检查层次、固定模型与结果分类见 Verification

在真实 Pi 中加载当前仓库实现:

npx pi -e ./index.ts

架构与文档

文档入口连接系统设计和各模块设计。本文说明当前用法;设计文档负责目标、契约与机制。存在未完成的交付目标时,文档入口会列出当前开发计划。

许可证

Apache-2.0,见 LICENSE