Files
my-pi/pi-tool-search/CHANGELOG.md
T
云服务部-叶林立 73f3117a7e feat(pi-hermes-memory): 接入持久记忆扩展并移除 Hippo
用仓库内 pi-hermes-memory 替换 hippo-memory-pi,清理 Hippo 在组合包中的
全部注入点。

移除 Hippo:
- 删除 hippo-memory-pi/ 与 config/hippo-memory-version。
- extensions/plugin-init.ts 只保留 CodeGraph 初始化目标与预检。
- install.sh / update.sh / uninstall.sh 移除 Hippo CLI 的安装、升级、卸载
  与版本校验逻辑;uninstall.sh 同时删除仅服务于该提示的死代码 ask_yes_no。
- 删除 tests/hippo-extension.test.ts 与 tests/hippo-scripts.test.ts。
- tests/extension-load.test.ts 反转“不得加载 Hermes”的断言为必须加载,
  并断言其排在 pi-compaction 之前。

接入 pi-hermes-memory:
- package.json 增加 file:./pi-hermes-memory 依赖、files 条目与加载入口;
  加载顺序位于 pi-compaction 之前,否则 flushOnCompact 会被 pi-compaction
  的 { cancel: true } 静默跳过。
- 六个记忆工具在 Tool Search 中常驻:memory_search 与 session_search 连同
  context_tree_query 归入 memory-recall,memory_add / memory_replace /
  memory_remove / skill_manage 归入 memory-management。常驻是必需的——注入
  的 memory policy 会在普通工作中指示模型调用它们,schema 不可见会让模型
  静默放弃而不是去 tool_search,同时常驻也保持请求前缀缓存稳定。
- bundleDefaultsVersion 由 2 升到 3;migrate-tool-search-settings.mjs 新增
  上一版快照到当前版本的迁移路径,仍只迁移完整匹配的默认快照并保留自定义
  配置。
- config/pi-permission-policy.jsonc 为六个工具设置 allow:它们只写扩展自己的
  agent 目录数据、不触碰工作区,且 memory_search 每轮都可能被调用,落入
  默认 ask 会产生每轮 AutoReview 往返。

依赖:
- pi-hermes-memory 的 devDependencies 由上游 ^0.80.2 等范围改为与根包一致的
  精确版本。上游范围与根包 0.84.2 不兼容,会让 npm 在本目录嵌套安装第二套
  Pi runtime(实测 229 MB),违反“不得在组合包内再安装一套 Pi runtime”的
  纪律。
- 根 allowScripts 保持只有 better-sqlite3@12.11.1。hermes 的
  better-sqlite3@13 运行时 dlopen 的是包内 N-API 预编译二进制
  prebuilds/<platform>.node,npm 因 binding.gyp 推断出的 node-gyp rebuild
  无需执行;实测删除 build/ 目录后仍正常工作。

文档:AGENTS.md 与 README.md 改写记忆章节,新增 pi-hermes-memory 开发约定,
替换文末的 Hippo 项目记忆块。

验证:根 12 个测试文件、pi-tool-search 的 typecheck/test/build、
pi-permission-system 的 typecheck/2569 测试、pi-hermes-memory 自带的 59 个
测试文件全部通过;隔离 Pi 环境联合加载无错误并生成 bundleDefaultsVersion 3;
npm install 幂等;迁移 helper 对 v2 快照迁移、对自定义配置保留。
2026-10-14 00:56:41 -07:00

6.2 KiB

Changelog

Unreleased — my-pi maintained source

Changed

  • Imported upstream v0.3.6 at ddfb23646fd3957b791214de278e23aa393c9b13 for direct local maintenance.
  • Migrated runtime imports to @earendil-works/pi-coding-agent and current typebox.
  • Replaced the hidden steer/retry compatibility loop with current Pi dynamic-tool propagation.
  • Replaced the truncated name manifest and add-only lifetime with validated model-generated Tool Cards, workflow groups, and bounded LRU activation.
  • Added deterministic no-model fallback grouping, private manifest-hash caching, exact group overrides, lazy /tool-search-rebuild, and nested model usage accounting.
  • Added limits for active groups, generated group size, and total dynamic tools, plus current-host catalog/config/LRU tests.
  • Added checked-in authoritative groups for every tool exposed by the standard my-pi bundle, eliminating first-use model generation and user caching unless unrecognized third-party tools are present.
  • Replaced the Hermes and third-party Hippo assignments with the five tools exposed by the official Hippo Pi extension, grouped into recall and management workflows.
  • Replaced the retired Hippo hippo_* assignments with the vendored Hermes memory extension's six tools, grouped into memory-recall (memory_search, session_search, context_tree_query) and memory-management (memory_add, memory_replace, memory_remove, skill_manage).
  • Added the enabled bundle's Agent, get_subagent_result, and steer_subagent tools to a checked-in subagents orchestration group.
  • Added authoritative ssh-connection, ssh-remote-files, ssh-remote-search, and ssh-remote-shell groups for the maintained pi-ssh tools, keeping reviewed connection, bounded discovery, structured file operations, and reviewed shell execution separate; the connection workflow now requires sequential ssh_connect to succeed before dependent tools.
  • Added sequential ssh_cd to the authoritative remote-shell workflow and direct the model to wait for a successful workspace change before dependent remote calls, avoiding both the unknown-tools fallback and cwd races.
  • Added the authoritative user-interaction group for the maintained ask_user_question TUI tool.
  • Added authoritative chrome-navigation, chrome-interaction, and chrome-debugging groups for all 21 tools registered by the pinned pi-chrome bridge after explicit session authorization.
  • Raised the bundle defaults to five active groups and 28 dynamic tools, and pinned the high-frequency Context Mode execution trio alongside CodeGraph exploration and LSP diagnostics.
  • Pinned all six Hermes memory tools in the bundle defaults and raised bundleDefaultsVersion to 3. The injected memory policy expects these schemas every turn, and pinning also keeps the request prefix cache-stable instead of paying a tool_search round trip plus a cache invalidation. scripts/migrate-tool-search-settings.mjs migrates the complete version-2 snapshot while leaving customized configurations untouched.
  • Added atomic multi-group activation through tool_search.groups, bounded to five exact group ids and rejected without state changes when the complete workflow cannot fit.
  • Weighted exact tool names, group metadata, and common SSH/Chrome/Context aliases during query routing; weak or ambiguous matches now return candidates instead of activating arbitrarily.
  • Added /tool-search-status for catalog source, capacity, active-group LRU order, and latest eviction diagnostics.
  • Added an explicit update.sh migration for the complete former 3/20 bundle-default snapshot, with owner-only backup, atomic replacement, provenance versioning, and fail-safe preservation of custom or invalid user settings.

Fixed

  • Treat Pi's optional powershell definition as the same pinned local-shell/core class as bash on Windows, while excluding it from non-Windows catalogs so it cannot become an unknown-tool model group.
  • Activate exact existing groups from the current catalog before optional unknown-tool model enrichment, preventing unrelated catalog generation from delaying known group loads.
  • Include pinned tools in the optional footer's total-tool denominator.

[0.3.6] - 2026-04-24

Bug Fixes

  • Clear footer status when toolSearch.showToolSearchFooterStatus is false, and re-read setting each refresh so settings changes take effect without stale status.
  • Add explicit showToolSearchFooterStatus config name with backward compatibility for older status keys.

[0.3.5] - 2026-04-23

Other

  • Add pi install npm:pi-tool-search command to README

[0.3.4] - 2026-04-23

Other

  • Clarify core defaults and token-saving purpose

[0.3.3] - 2026-04-23

Bug Fixes

  • Refresh active tools on every turn_start, not only fresh user prompts, so unlocked tools stay available during agent-loop continuations
  • Queue hidden steer hint after successful tool_search so agent can continue/retry without waiting for another user message
  • Stop showing visible retry guidance in tool_search results and narrow hidden retry hint so successful same-turn tool calls are not repeated

Other

  • Document same-response activation caveat and recovery behavior in README.md

[0.3.2] - 2026-04-23

Bug Fixes

  • Split tool_search description into "Already active" and "Hidden" sections so LLM skips redundant enable calls
  • Add grep and find to default core tools (always enabled alongside read, write, edit, bash)

[0.3.1] - 2026-04-23

Other

  • Add repository field to package.json

0.3.0

  • Renamed from pi-lazy-tools to pi-tool-search
  • Config key changed: lazyTools → toolSearch in settings.json
  • showStatus config option: show/hide N / total tools footer status (default: on)
  • Provider-agnostic: removed payload-level filtering, relies solely on setActiveTools
  • readUserConfig() consolidates all settings reads into one call

0.2.0

  • User config: add "toolSearch": { "alwaysEnabled": ["lsp", "grep"] } to settings.json to pre-unlock tools beyond the defaults
  • Reads config at each session_start — no reinstall needed after changes

0.1.0

  • Initial release
  • Manifest-aware tool_search gate
  • names: string[] batch enabling
  • Per-turn manifest refresh via before_agent_start