# 上游来源 - 官方仓库: - 导入发布 tag:`v0.9.10` - 导入 commit:`df624056a2e8c68bc89ba0a81e1c120856ec9665`(`chore: bump version to 0.9.10 (#277)`,2026-10-02) - 初始本地导入:2026-10-13 - 接入组合包:2026-10-14 - 许可证:MIT;上游 `LICENSE` 文件原样保留。 快照取自官方 Git 仓库中 `v0.9.10` tag 指向的 commit。导入时上游 `main` 已领先该 tag(`24fcd8ad26fc27badb8d7dbaf8034645de07b893`,2026-10-11);选择 tag 是为了让导入状态对应一个已发布、可复现的版本。不保留嵌套 `.git`、上游 `.github` 工作流、依赖目录、覆盖率与构建产物。 ## 本地维护 本目录由 `my-pi` 组合包直接维护,不是 submodule。根包通过 `file:./pi-hermes-memory` 依赖并直接加载 `pi-hermes-memory/src/index.ts`,不得同时安装或加载 npm 预编译入口。 ### 加载顺序 **该扩展必须注册在 `pi-compaction` 之前。** `ExtensionRunner.emit()` 在遇到第一个返回 `{ cancel: true }` 的 `session_before_compact` handler 时立即返回,而 `pi-compaction/index.ts` 在判定无需压缩时正是这样返回。注册在它之后的 handler 在这些轮次会被跳过,从而静默禁用该扩展的 `flushOnCompact`。 ### 依赖 - `better-sqlite3@^13.0.3`:13.x 运行时实际 `dlopen` 的是包内 N-API 预编译二进制 `prebuilds/.node`,**不依赖 node-gyp 编译产物**。npm 会因该包存在 `binding.gyp` 而推断出隐式 `node-gyp rebuild`,但该步骤既无必要也不得批准。npm 会把它嵌套安装到本目录的 `node_modules/`,与 Context Mode 使用的根 `better-sqlite3@12.11.1` 并存;因此根 `allowScripts` 无需新增条目,也不得删除既有的 `better-sqlite3@12.11.1` 放行。 - `strip-ansi@7.2.0`:解析到根 `node_modules`。 ### 本地改动 - `devDependencies` 中的 `@earendil-works/pi-ai`、`@earendil-works/pi-coding-agent`、`@earendil-works/pi-tui`、`typebox`、`tsx`、`typescript`、`@types/better-sqlite3` 已从上游的 `^0.80.2` 等范围改为与根包一致的精确版本。上游的宽松范围与根包的 `0.84.2` 不兼容,会让 npm 在本目录嵌套安装第二套 Pi runtime(实测 229 MB),违反组合包"不得再安装一套 Pi runtime"的纪律;`pi-notify/package.json` 是同样的先例。运行时依赖(`better-sqlite3`、`strip-ansi`)与 `peerDependencies` 保持上游原样。 ### 工具与常驻 该扩展注册 `memory_add`、`memory_replace`、`memory_remove`、`memory_search`、`session_search`、`skill_manage`,以及 `/memory-*` 命令。六个工具全部通过 `pi-tool-search` 的 `alwaysEnabled` 常驻,并在 `pi-permission-system` 策略中默认 `allow`。 注意 `skill_manage` 由本扩展提供,不是 Pi 宿主能力:Pi 只负责发现并加载 skill 目录(`~/.pi/agent/skills/` 加扩展通过 `resources_discover` 注册的目录),本身没有创建 skill 的工具。因此本扩展同时承担 skill 的**写入**与**目录注册**两件事;不加载它,`projects-memory/<项目>/skills/` 下的既有 skill 也不会被 Pi 发现。 ### 用户数据 - 全局记忆与 skill:`~/.pi/agent/pi-hermes-memory/` - 项目记忆与 skill:`~/.pi/agent/projects-memory/<项目>/` 以上路径是用户数据,不属于组合包,也不应提交或自动清理。组合包配置位于已安装组合包的 `config/pi-hermes-memory.json`,随 `pi update` 刷新;旧 `~/.pi/agent/hermes-memory-config.json` 被忽略。 同步上游时,请从明确 tag/commit 移植改动,并与本地改动对照审查,不得整体覆盖本目录。