mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 10:45:22 +00:00
此前截断分散在多层且互相冲突:Pi bash 保留尾部 50KB,RTK 兜底截断又只留 开头 12000 字符(砍掉报错与完整输出路径),pi-chrome 截开头 30K,web_fetch 各 provider 不一致。新扩展统一负责"新结果给模型看多少": - capture.ts 最先加载暂存原文,index.ts 最后加载(system-prompt 之前) - 超过 24K 字符时原文落盘 <agentDir>/my-pi/pi-overflow/(700/600、原子写), 优先取 bash fullOutputPath 完整文件;模型看到 头 + 中段信号行 + 尾 的有界 视图,行号基于落盘原文、结尾永远可见 - overflow_query:按 id 正则搜索、行区间、jsonPath 只读查询,id 校验防穿越 - 收编:RTK truncate 默认关闭、删除 pi-chrome truncateText、web_fetch 默认 每页 20000(上限 100000)、web_search max_results 限定 1–20 - pi-compaction 遮蔽带 details.overflow.id 的结果时在占位符提示 overflow_query - 登记 tools.jsonc / routing / 权限 allow / tool-search 常驻与分组 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
5.6 KiB
5.6 KiB
my-pi 维护约定(pi-compaction)
- 扩展入口是
pi-compaction/index.ts,遮蔽规划、投影索引、遮蔽台账、服务与 Codex native 实现在src/,测试位于test/,双上游来源记录是UPSTREAM.md。 - 根包必须通过
file:./pi-compaction提供依赖并直接加载源码;不得重新声明或加载pi-condense、npm@ogulcancelik/pi-codex-compaction或 npmpi-context-view。 pi-compaction只支持自己的 version 1 记录和config/pi-compaction.json配置,不读取或迁移旧context-prune-*、contextPrune、openai-codex-native-compaction或旧segment-summary状态;切换后应使用新 Session。配置不写回settings.json。- Context Authority 是 compaction 唯一生产投影者。普通 Provider、Codex native、
/context、/compaction-status和 footer 必须消费同一个不可变 projection snapshot;pi-minimal-footer优先显示同一 effective usage,snapshot 尚未建立时才回退宿主原始 usage。 pi-compaction负责已经进入 Session 的历史投影,与 Context Mode 的输入隔离职责互补。首次 Session hydration 允许一次完整扫描;后续普通contexthot path 必须复用不可变 snapshot 或只处理 delta,不得调用 summarizer、写 Session 或重新构建完整 branch。- L2 遮蔽只用 Pi 原生
context_edit({ type: "context_edit", targetId, replacement })处理保护窗口外的旧 toolResult:成批提交、受 trigger/target 回差与minClearTokens约束,不逐条即时替换;不为遮蔽写segment-summary等 custom entry,原始条目、UI 与导出保持不变。 - 不得改写最近
keepRecentTurns轮;不得遮蔽 user/assistant 消息、excludeTools中的工具、SKILL.md的read结果、已遮蔽或已省略的条目、以及小于minEntryTokens的结果。 - 遮蔽占位符必须确定性、单行、以
MASK_PREFIX("[pi-compaction] Earlier ")开头,并在文本中指向context_tree_query恢复;context_tree_query与 native checkpoint 的 portable summary 都必须有界。被遮蔽的 toolResult 若带details.overflow.id(pi-overflow 已存原文),占位符末尾追加overflow_query提示——只读该公开字段,不得 import pi-overflow 内部实现。 - L3 整段摘要只能从空闲的
agent_settled通过ctx.compact触发(ctx.compact会中止当前运行,非空闲时调用会破坏运行);同一 leaf 不重复触发。阈值以绝对 token 计并受窗口比例约束(effectiveThreshold = min(tokens, floor(ratio × contextWindow)))。 context钩子不得改写消息——非 checkpoint 路径只更新 snapshot 并返回 undefined;唯一例外是 native checkpoint 路径:checkpoint 之后的条目在投影时必须应用各 target 最新的context_edit(null 省略、字符串规范成 text block),因为sessionEntryToContextMessages不处理 edits。session_before_compact只负责生成 portable/native 摘要,不得按自身阈值取消 Pi 的压缩(Pi 的contextTokens > window - reserveTokens是最终安全网)。- effective token 默认使用 Provider usage-backed baseline 加 projected delta;无可靠 baseline 时使用带上下界的估算。遮蔽台账在
session_start/session_tree/session_compact从当前 branch 的context_edit条目重建,指标暴露maskedResults与reclaimedTokens。 - Codex native compaction 必须直接消费当前 projection 生成的 ResponseItems,不得从 raw branch 重建输入;native checkpoint 同时保存有界 portable summary 供模型或 Provider 切换。
- 原生远程压缩限定为
openai-codex+openai-codex-responses与sub-api+openai-responses,默认由 L3 阈值或 Pi 自身阈值触发。src/native-provider.ts统一资格与传输选择:Codex 保留原 endpoint/JWT/account ID;SubAPI 从显式baseUrl解析公共/responses,使用配置的 API key 和请求头,不解析 ChatGPT account ID、不硬编码网关域名,也不调用独立/responses/compact。两者复用 projection、compaction_trigger、SSE 结果、native checkpoint 恢复和 portable 模型切换摘要;SubAPI 部署须支持原生 compaction v2。普通聊天支持不代表压缩支持,失败回退 Pi,不自动改写用户模型配置。 - SubAPI 原生压缩认证必须保留非空显式
Authorization(大小写不敏感)的优先级;没有该头时才使用非空 API key 生成 Bearer,均缺失时可接受非空cf-aig-authorization代理认证头。不得要求 header-only 配置额外提供假 API key,也不得生成Bearer undefined;空白或缺失凭据在网络请求前拒绝并回退 Pi。Codex 仍必须提供有效 JWT,不能用请求头绕过。 - 同步 Codex 协议代码必须从官方
ogulcancelik/pi-extensions明确 commit 移植并保留对应 MIT 许可证;不得从 npm tarball、缓存、node_modules或构建产物导入。
验证
- 在本目录内至少运行
npm test、npm run check和npm pack --dry-run --json;涉及依赖、加载入口、context writer、footer 或 observer 时还要验证根npm install幂等、锁文件仅包含预期本地 link 变化、根扩展联合加载、性能回归,以及实际 packed 根 tarball 的隔离安装/加载。 - 修改 projection、token accounting、遮蔽规划/台账、threshold、checkpoint、模型切换或恢复索引后,至少运行
npm test、npm run check、npm pack --dry-run --json、根扩展联合加载、packed 根 tarball 隔离加载和性能回归。性能门禁为 cache-hit P95 <2ms、delta projection P95 <10ms,普通 hot path 不得扫描完整 branch。