Replies: 1 comment
|
补充与其他专题的边界:
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
这是 OpenPI 产品哲学总纲 #299 与 Tool Surface Economics #300 的后续专题。
#300 讨论了工具常驻、显式加载、Adaptive Gateway 与 Provider-native deferred loading 的成本。一个进一步的问题是:工具定义在 Session 中途被动态加载后,新的 Context epoch 会怎样处理它?
这里的 epoch 不只指 Compaction,也包括 Session reopen/process restart、branch/fork、model/provider switch,以及 authority/resource shrink。它们都会迫使 Runtime 把 canonical capability state 重新投影为模型可见上下文。
这不只是 Token 优化。它决定 Runtime 权威状态、模型可见能力和 Provider cache boundary 能否保持一致。
问题场景
部分新模型支持把动态工具定义追加到当前历史位置:
这样可以避免为了加入新工具而重写旧 prefix。
但当 Context 过长,Pi 会把较早历史替换为 summary,并只保留近期消息。此时需要回答:
当前 Pi 0.84.1 的可见行为
当前源码可以确认:
setActiveTools()会把新增工具名记录在 Tool Result 的addedToolNames;summary + retainedTail形成自包含 checkpoint,再接 compaction 后的新 entries;只有旧 Session 没有retainedTail时,才回退到firstKeptEntryId兼容路径;addedToolNames的 Tool Result 仍在retainedTail,adapter 可以保留原 deferred load point;如果加载点被压缩掉,当前 active tools 会重新成为 immediate/top-level definitions。能力没有被卸载,但序列化位置改变,可能形成新的 cache prefix;这说明“压缩旧历史”和“卸载 Runtime 能力”不是一回事。但 Session reload、Provider switch、权限变化后的完整恢复合同仍需固定实验验证。
必须区分两类 Compaction
Pi semantic compaction
Pi 生成可读 summary,并把近期
AgentMessage[]物化为retainedTail。后续模型上下文由 Pi 重建,summary pass 自身的 usage 与下一次普通请求应分开记录。Provider-native compaction
例如 OpenAI Responses 可能返回 opaque canonical compaction item,要求后续原样传入。它的可检查性、传输、usage、cache boundary 和跨 Provider 迁移合同不同,不能把 Pi 的
addedToolNames/retainedTail行为直接外推过去,也不能把 opaque item 当作 Runtime 权限来源。本帖当前可从源码确认的行为主要针对 Pi semantic compaction。Provider-native compaction 必须单独冻结 API、model snapshot 和 wire items 验证。
建议的所有权边界
Runtime 保存权威状态
包括:
这些事实不能依赖模型 summary,也不能由 Provider tool reference 自动扩权。
Compaction Summary 保存语义进度
包括:
Summary 不应复制完整 Tool Schema,也不应成为权限来源。
Provider Adapter 重新投影工具定义
在每个新的 context/cache epoch,根据当前 Runtime 权威状态选择:
需要避免的失败形态
候选设计
A. 只依赖进程内 active tools
Compaction 不改变 active set;下一请求根据现有 active tools 重建定义。
优点是简单、Pi-native。缺点是进程重启和 Session 恢复没有持久合同。
B. 在 Session/Compaction 元数据中持久化能力投影
记录 capability 名称、tool-surface fingerprint 与来源,但不记录完整 Schema,也不直接记录执行权限。
优点是可恢复、可诊断。风险是形成第二份状态,必须与当前配置、Trust 和资源状态重新求交,不能盲目回放。
C. 恢复时重新派生
从当前配置、Session canonical state、资源状态和 authority boundary 重新计算工具面;旧记录只用于诊断差异。
这最符合 fail-closed,但需要明确哪些 capability 是用户授权,哪些只是模型在旧上下文中的临时发现。
可能的组合是:B 记录 receipt,C 负责权威恢复。
最小可证伪实验
固定 Pi/OpenPI、Provider、模型、cache key 和工具组,至少覆盖:
addedToolNamesTool Result 仍位于新格式retainedTail;retainedTail移除,active tools 重新成为 immediate/top-level;firstKeptEntryId的 Session 兼容恢复;逐 turn 记录:
addedToolNames与 Provider item 类型;预期不变量:
与现有工作的关系
非目标
希望讨论最终回答:
All reactions