Files
my-pi/pi-tool-search/AGENTS.md
T
云服务部-叶林立andDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 56cbc83296 refactor: 移除 context-mode,Chrome 快照改为直接返回
context-mode 的 ctx_execute 系工具以真实 shell 执行且权限为 allow,绕过了
bash 策略与 protectedWrites;其每轮注入、独立 MCP 子进程与 skills 也与组合包
提示词单一所有权冲突。大输出职责已由 pi-overflow(入口截断)与
pi-compaction(压力遮蔽)承担:
- 删除 context-mode 依赖、wrapper/过滤器、skills,以及 ctx_* 的权限、
  tools.jsonc、路由规则、tool-search 常驻与 4 个分组
- better-sqlite3@12 仅为 context-mode 传递依赖,随之移除根 allowScripts
- pi-chrome:按用户决定移除快照隐私规则与 .pi/chrome-context 临时文件机制,
  快照 JSON 直接作为工具结果返回、details 只留小型元数据,超长由 pi-overflow
  截断并用 overflow_query 提取;授权生命周期不变

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-21 20:45:33 -07:00

4.0 KiB
Raw Blame History

my-pi 维护约定(pi-tool-search)

  • 扩展入口是 pi-tool-search/extensions/index.ts,组合包权威分组位于 extensions/bundle-groups.ts,目录生成/校验/缓存位于 extensions/catalog.ts,配置读取与路径解析位于 extensions/config.ts(直接读取组合包 config/tool-search.json;目录缓存仍在 <agentDir>/my-pi/tool-search/catalog-v1.json),测试保留在 test/。
  • 同步上游必须记录明确 tag/commit,保留 README、CHANGELOG、文档、作者和许可证说明;不得导入上游 .pi、嵌套 .git、node_modules 或构建产物。
  • 根包必须通过 file:./pi-tool-search 提供本地依赖并直接加载仓库源码,不得同时安装或加载 npm pi-tool-search 实现;同步上游时先核对本地增量动态工具改造,禁止用旧 npm 入口或上游旧宿主实现直接覆盖。
  • 默认常驻核心 read / write / edit / bash / grep / find、codegraph_explore、lsp_diagnostics、六个记忆工具与 context_tree_query、overflow_query,以及 tool_search;Windows 上内置 powershell 必须与 bash 同属固定本地 Shell 核心工具,非 Windows 平台必须从目录中过滤。配置从已安装组合包内的 config/tool-search.json 直接读取,文件缺失或无效时回退 BUNDLE_TOOL_SEARCH_DEFAULTS;扩展自身不播种、不迁移,也不再读写 settings.json 的 toolSearch 段。
  • 其余组合包工具必须优先使用 extensions/bundle-groups.ts 中提交的权威工作流分组;精确已有分组必须直接激活,不得等待无关未知工具的模型增强。默认最多 5 个动态组、模型组最多 8 个工具、动态工具总数最多 28;groups 可原子激活最多 5 个精确组,完整请求超限时不得改变当前状态;加载或组内调用更新 LRU,超限先移除最久未用的非请求组。自然语言查询必须优先精确工具名和已提交 workflow alias,弱匹配或近似同分只能返回候选,不得任意激活;/tool-search-status 必须显示当前容量、LRU 顺序与最近淘汰原因。
  • 标准组合包工具全部命中预置目录时不得调用模型、创建用户缓存或发送隐藏 schema。只有存在未识别第三方工具时才允许惰性模型增强;生成结果必须保留全部预置 assignment,模型元数据不得替代真实名称、参数或 schema。缓存必须位于 agent 目录且权限 600;模型失败必须继续使用预置目录 + 确定性未知工具分组。groupOverrides 优先级高于预置分组。
  • 必须直接使用当前 @earendil-works/pi-coding-agent、typebox、ModelRegistry.complete() 和 setActiveTools();首次纯增加载使用当前 Pi 的增量结果传播,LRU 替换允许走宿主安全 fallback。不得安装或映射旧 @mariozechner runtime,不得恢复 provider payload 改写、代理分发或隐藏 sendMessage steer/retry 兼容循环。Tool Search 是唯一可调用 getActiveTools() / setActiveTools() 管理工具显隐的组合包扩展;pi-permission-system 只能在调用时裁决。
  • 新增、删除或重命名组合包暴露工具时必须同步维护 BUNDLE_GROUP_DEFINITIONS;日常只读工具、provider 工具和高风险管理工具不得因名称相似而混入同一大组,根验证应确认标准组合包没有落入 unknown-tools 路径。
  • 生成目录只能让模型提供摘要、使用边界、关键词与分组;工具名、参数和原始 schema 必须来自宿主。校验或模型调用失败必须 fail-safe 到确定性目录,缓存不得写入仓库或放宽权限。
  • 修改 Tool Card 提示词、目录校验、分组、缓存、active-tool/LRU 生命周期、配置或工具结果时,必须同步更新包内 README、当前动态加载文档、CHANGELOG 和测试。

验证

  • 在本目录内至少运行 npm run typecheck、npm run test 和 npm run build;涉及加载入口或 active-tool 行为时还要运行根扩展联合加载测试和实际 packed tarball 的隔离安装验证。