mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 10:45:22 +00:00
- codemode:Tool Search 常驻(alwaysEnabled)、权限 allow(嵌套调用仍逐个过权限门)、 tools.jsonc 登记使用规则;RTK 跳过 parentToolCallId 嵌套调用,避免丢失 bash structuredContent;Tool Search 目录过滤 hidden / codemode(script-only)exposure; 扩展加载测试加载 builtin:codemode 并断言其常驻激活 - 搜索 key 不再经命令行参数传递:search-auth.mjs 改为 --set-stdin(先读校验再加锁), configure.sh 交互输入经管道、非交互用 --<provider> - - CodeGraph 客户端监听子进程 stdin error,避免 EPIPE 未处理导致崩溃 - 移除 PI_TOOL_SEARCH/HERMES_MEMORY/RTK_CONFIG_PATH 环境变量入口,测试改用工厂 configPath 注入 - pi-subagents 固定 vitest / coverage-istanbul 4.1.10,修复 npm ls 版本冲突 - 补 pi-web-search / pi-worktree UPSTREAM.md 与 pi-minimal-footer AGENTS.md, files 白名单补齐并加测试;.codegraph/.gitignore 移出跟踪 - detect_kitty 优先识别官方安装目录 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
4.2 KiB
4.2 KiB
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提供本地依赖并直接加载仓库源码,不得同时安装或加载 npmpi-tool-search实现;同步上游时先核对本地增量动态工具改造,禁止用旧 npm 入口或上游旧宿主实现直接覆盖。 - 默认常驻核心
read/write/edit/bash/grep/find、codegraph_explore、lsp_diagnostics、六个记忆工具与context_tree_query、overflow_query、内置codemode(exposuremodel-only),以及tool_search;Windows 上内置powershell必须与bash同属固定本地 Shell 核心工具,非 Windows 平台必须从目录中过滤。exposure 为hidden或codemode(script-only、模型不可直达)的工具一律不得进入目录或常驻集合。配置从已安装组合包内的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。不得安装或映射旧@mariozechnerruntime,不得恢复 provider payload 改写、代理分发或隐藏sendMessagesteer/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 的隔离安装验证。