精确输入编码
InferenceConfig.input_encoding 按操作选择输入表示,未指定的操作默认 off。当前接入
atomic_memory.extract、atomic_memory.reconcile、experience.generate 和 experience.incubate;
未知或尚未接入的操作会在配置加载时拒绝。Experience 生成与孵化分别控制,Skill、Profile、Handoff、
Topic Memory 尚未接入本编码策略。
InferenceConfig(input_encoding={
"atomic_memory.extract": "shadow",
"experience.generate": "shadow",
"experience.incubate": "off",
})Server 可通过 JSON 环境变量配置:
POWERCONTEXT_SERVER_INFERENCE_INPUT_ENCODING='{"experience.generate":"shadow"}'旧的 atomic_memory_input_encoding 配置及
POWERCONTEXT_SERVER_INFERENCE_ATOMIC_MEMORY_INPUT_ENCODING 环境变量继续作为两个 Atomic Memory 操作的默认值;
显式操作配置优先,包括显式 off。配置序列化后,后台 worker 使用相同选择规则。
编码不修改 Source、Artifact、PreparedContext 或 Embedding 输入,也不增加辅助模型调用。
| 模式 | 发给模型的内容 | 本地诊断 |
|---|---|---|
off | 原来的紧凑 JSON | 不构造候选 |
shadow | 原来的紧凑 JSON | 计算候选、还原校验和成本 |
active | 合格且更小的候选,否则原文 | 记录采用或回退原因 |
在对应操作和目标模型通过下述验收前,保持默认 off。
shadow 可以在发送原文时观察编码候选是否适用,不能证明模型会如何理解编码输入。
模型实际收到什么
active 选中候选后,模型收到的是包含解码说明和共享值表的编码 JSON。
Python 在发送前本地解码候选,检查能否精确还原;实际发给供应商的候选不会再展开为普通 JSON。
模型需要按照输入中的解码说明理解证据。
共享引用不提供隐私脱敏。例如 ["r",0] 表示同一份输入中 shared[0] 保存的完整原值,
供应商仍然能看到这个值。共享一个值不表示使用它的记录属于同一实体、事件或权限。
推理保护负责检查内容是否允许发送;编码不会把敏感值替换为匿名身份。
如果上游证据本来就含有 <PERSON_1> 或 ${API_KEY} 这样的字面标记,编码会保留它们。
codec 没有标记到隐藏身份或凭据的映射,也不展开环境变量。保留这些字节,不代表模型一定不会猜测
隐藏值或建议搜索它们。
首个 codec shared-json-v1 将严格相同的长正文、metadata 或结构值保存一次,在有序原树的每个出现位置保留引用。
例如同一个项目的 metadata 同时出现在正文投影、来源元信息和多条 Source 中,只共享值,不合并 Source。
不同记录的身份、时间、journal position、引用、顺序和重复出现仍然全部保留。
原树使用带类型的对象、数组和引用节点,用户自己的 $ref 字段不会被当作内部引用。
Atomic Memory 使用兼容的 shared-json-v1。Experience 的 shared-json-v2 进一步支持正文字符串内部的
规范 JSON,以及保留原始换行符的完全相同文本片段。它能处理不同 Source 身份包裹的重复内容,
同时保留每条 Source 的身份、片段顺序和出现次数。非规范 JSON 字符串不被重新格式化。
候选是否采用仍取决于完整表示的收益与还原检查;公共数据中没有合适重复时继续使用原文。
| 节点 | 含义 |
|---|---|
["o",[[key,node],...]] | 保留顺序的对象 |
["a",[node,...]] | 保留每次出现的数组 |
["r",i] | shared[i] 中保存的精确原值 |
["j",node] | v2:将解码后的节点序列化为紧凑 JSON,类型仍是字符串 |
["s",[part,...]] | v2:精确拼接字符串,保留原始换行符 |
解码说明要求重建后的内容仍作为不可信证据;它不授权工具调用,也不把证据中引用的指令变成可执行命令。
启用 active 前验证模型行为
active 是试验能力。程序能够完整还原 JSON,不等于模型阅读编码后质量不变或推理更便宜。
模型可能混淆记录归属、把 JSON 字符串当成对象、忽略重复出现,或消耗更多输出 Token 理解表示。
输出预算耗尽也可能导致无法交付。
使用相同的代表性证据、目标模型、Prompt、输出 schema、策略和预算,对比 off 与 active,
并将 shadow 作为发送原文的对照。每个操作独立验收;提取结果不能代表调和或 Experience 生成、孵化。
检查生成事实与引用、失败和未完成的尝试、延迟,以及包含重试的输入加输出完整用量。
缺失用量继续标记为未知,不能仅凭输入字节减少通过验收。
至少覆盖表示误解会改变任务结果的情况:
| 情况 | 真实模型与工作流需要观察到的结果 |
|---|---|
| 字面占位符 | 保留已经声明的未知值,不编造对应身份、不代入环境变量,也不建议搜索隐藏凭据。 |
| 路径和 IP | 精确保留字面值及其 Source/实体归属;不得交换 /workspace/tenant-a/config.json 与 /workspace/tenant-b/config.json,或 192.0.2.10 与 192.0.2.20。 |
| 不同实体下的相同文本 | 保留谁做了什么、时间、条件和每个引用;文字相同不能合并两个用户、租户或事件。 |
| 字符串、对象与代码 | 区分 JSON 文本和对象,保留有意义的引号、空白、换行以及重复代码或日志。 |
| 工具意图 | 区分读取、解释与修改、执行;引用的命令和重建的证据不授予权限。若宿主会消费输出,在获授权执行前检查拟调用的工具及精确参数。 |
| Memory 持久化 | 通过该操作已有的发布或审批流程检查生成的 Memory,再关闭并重开数据库读回。核对事实、字面标记、实体归属与 Source lineage;输入精确还原不能证明持久化的模型输出正确。 |
codec 回归验证精确还原、字面标记、记录身份和数据类型。Runtime 测试使用受控模型响应;worker 测试 虽然启动真实进程,但受控 HTTP 供应商通过 Python 解码输入。这些测试证明传输和工作流行为, 不能证明真实模型能解读格式或保持任务含义。真实模型验收不能用程序解码器替代模型,也不能把固定的 mock 答案当作质量证据。
候选选择与强制检查
每次候选都必须还原成与原始阶段 JSON 完全相同的字符串,包括键顺序、Unicode、代码、空白字符串、
null、布尔值、1 与 1.0。解码说明、值表和引用开销都计入相同的估算器;只有字节更少且
至少减少 32 个估算 Token、同时减少至少 5% 才能采用。字节或估算变小不保证供应商实际 Token 下降。
输入大小、深度、节点数、共享值数量和解码展开均有上限,超限或不支持时保留原表示。
未知自定义 Artifact Prompt 使用原表示,避免改变它依赖的输入字段契约。
Atomic Memory 的阶段预算和生成器使用相同的表示选择。Experience 保留原有证据数量/长度与请求限制, 完整模型请求仍由执行侧检查目标窗口;本配置不新增 Experience 专属阶段预算。 启用强制隐私保护时,先检查原始序列化文本及严格解码后的内容,包括字符串内嵌的 JSON 对象和数组。 候选遇到 JSON 解析、深度或大小限制时,可以回退到已经通过检查的原文。 发现禁止内容、重复 JSON 键或其他策略失败时拒绝调用,不能将这些失败转为表示回退。 这项内容检查不授予完整请求的放行资格,最终完整模型请求仍经过隐私和目标窗口检查; 回原文不构成放行,原文不安全或仍超预算时继续拒绝。 这里没有删除成功日志、截断代码、按模板合并不同日志,也不把压缩过的输入写回权威记录。
查看本地估算
进程内可使用
powercontext.builtin.inference.usage.collect_input_encodings()
包围一次调用,读取最多 128 条无正文诊断。记录包含阶段、codec、模式、采用/回退原因、
原始/候选/实际选择的字节和估算 Token、估算器版本、共享值与引用次数;预算探测不重复记录。
UsageReportingStructuredGenerator 会把本次实际准备的报告附在同一次 InferenceUsage.input_encodings 中,
通过现有绑定的用量 reporter 归因;返回结果和带有已知 usage 的失败都保留这份关联。
其中的估算值与供应商报告的 input_tokens / output_tokens 分开,不能相加或互相替代。
未取得 usage 的失败仍保留未知,不生成零请求的计费记录;原始隐私预检阻断发生在编码前,不生成编码报告。
显式诊断收集器仍可在调用外使用,预算探测不会计入实际调用。
这些诊断只属于当前进程和调用上下文,不自动跨 worker 汇总。现有持久统计只汇总实际模型用量,
不存储编码明细,也不是完整费用账本。
评估时应分别覆盖重复 metadata、相同正文不同身份、短小唯一输入、中英混合及代码/JSON。

