Repository navigation
PowerContext Gateway 首轮工程计划:执行底座、可靠性与度量基线 #2433
AlexStocks
started this conversation in
Ideas
Replies: 0 comments
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.
PowerContext Gateway 首轮工程计划:执行底座、可靠性与度量基线
2853ed98a6ab。相对任务基线1190dcbbb492,本次核对的 Gateway 运行/CI 与 Core factory/check 源码未变化;此前定向测试仍绑定9c8f061c。0. 本轮交付
本轮交付 Gateway 的执行底座和度量基线;token 优化在基线建立后按独立任务推进。 G1–G8 围绕目标绑定、部署认证、请求生命周期、容量、调用证据、准确重放和真实进程验收展开。本轮完成表示这些能力在声明范围内可验证,不代表 token 或模型费用已降低,也不代表已达到通用生产或性能要求。
三项产品目标对应不同的后续证据:
Core 内部的 Judge、rerank、模型分档和修复策略继续由 #2015 承接;完整请求/token 预算由 #2127 承接。它们不计入本轮 Gateway 排期。
1. 已核实的缺口与暴露面
保留现有 Python Core 决策、Rust Gateway 执行 的架构,以及 app、core、types、protocol、transport、evidence 的 crate 分工。
pc-gateway-core是 Rust 执行器,不是第二个领域决策层。S1 S3 S4优先级含义:P0 是对应部署开放前必须解决的授权边界;P1 是首轮受限发布所需的可靠性与验收;P2 是在基础能力可用后接续的增强与完整评估。可并行描述的是开工条件,优先级决定资源不足时先完成哪项。
attempts/not_sent持续追加;calls也无上限,但当前无生产调用limits.payload_bytes,Rust DTO 已有字段,运行时未用于容量准入事实入口:启动与认证 S14 S8;目标与检查 S11 S18;容量能力 S21 S18;UDS S15;重放 S5;证据与 transport S4 S6 S7;CI 与 live 测试 S19 S20。
部署状态与近期处置
当前未核实实际生产使用人数、部署清单或网络暴露面。 仓库默认 loopback 只能说明默认配置,不能说明经反向代理、端口转发或自定义监听后的可达性;已有真实服务验证记录也不是生产部署清单。
已有部署应记录监听/代理入口、凭据是否必需、固定主体与 Scope、获准目标及当前增强模式。缺少认证或目标一致性证据的实例先限制为受控本地验证;对外开放以 G1/G2 的适用验收为前提。状态丢失仍需继续增强的生产需求,另走持久恢复任务。
2. 统一不变量与交付边界
本表是各任务共用的约束,Issue 负责给出实现入口和具体样例。
before_send拒绝时上游零发送,before_release拒绝时下游零正文释放,由接收端证明enforcing 启动检查已有禁止降级的行为,Core 也已拒绝
length/incomplete输出。相关任务补的是执行与状态边界;strict 缓冲继续作为现有契约。Limited超限是 body error,透明 fallback 的处理与完整模型正文检查分别验证。S2 S11 S14 S16 S173. 任务、依赖与优先级
沿用八个 Issue;分阶段 PR 可先交付,Issue 在其适用验收完成后关闭。工作量为有效开发、自测与文档投入,1 人日约 6–8 小时。
八项合计 41–61 人日,另留 10–14 人日做集成、review 修正、兼容与复现说明,总有效投入约 51–75 人日。等待、真实 provider/宿主实验和各地假期单独计算。
可独立先合入的止损 PR
NoopEvidenceSink,测试/演示保留 buffered;完整有界可读输出在 G4-BG2-A 是外部监听的立即阻断,不覆盖 loopback 经代理暴露的全部风险;该场景仍须配置认证并完成 G2-B。普通字符串比较不是常量时间保证,本次未证明远程计时攻击。
G4-A 是临时资源止损,不算完整 G4 验收,也不提供用量/审计能力。G4-B 仍须交付有界、可读取、失败隔离的生产证据;发布条件中的最小有界记录由 G4-B 完成。
G5:消费已有能力,再做驻留预算
Core 已返回
context_protection.limits.payload_bytes = min(max_payload_bytes, 1 MiB),RustContextProtectionLimits也已有该字段。G5-A 复用现有查询,校验版本和正整数上限,并取部署上限与其有效交集;能力不可确认时暂停对应模型入口。S21 S18prepared/steering 注入和协议渲染后仍按最终 UTF-8 正文检查;透明 MCP/SSE fallback 使用自身预算。provider 输出缓冲先受当前 Core 输出硬上限约束,更低输出配置继续由 Core 检查。现有
payload_bytes只声明输入,不能冒充已协商输出上限;需要新增输出字段时在 G5-B 按公共契约补齐。UDS 的 8 MiB 约束的是 Core RPC 响应解析,不是模型正文额度;正文、JSON/RPC 包装和不同方向分别计量。G5-B 的主要工作是实际持有者与全局驻留预算、回收,以及确有缺口的容量字段,不重建输入能力协议。
G3-0:共享执行链接线的显式前置
#2462 先交 1–2 人日骨架 PR:固定窄请求上下文、单调 deadline/取消信号和终态 owner 的接线,保留现有领域语义,并通过已有执行器/网络行为回归。
G1 的 Rust 发送绑定、G2-B 的请求身份接线、G4-B 的终态记录、G5-B 的资源 owner、G6 的会话/重放接入,在 G3-0 合入后再改共享 Executor 请求生命周期与接口。Core 契约、独立模块和样例可并行;G3 完整取消/drain 行为不作为所有任务的开工阻塞。G2-A、G4-A 和不改请求接口的 G5-A 小补丁可先合入。
main.rs配置/装配由 G2 协调合入顺序,G3 拥有 Executor 生命周期接口;其他任务以小 PR 接线,不并行重写整文件。延期时保留什么
该顺序按风险和依赖分配投入;“能够并行开工”不表示任务同等紧急。需要增强会话才能使用的场景,则必须等待 G6 的适用验收。
4. 资源假设与任务周期
按 6–8 周的社区协作窗口估算,总有效投入约 51–75 人日。起算日 T0 要求 G2/G3/G7 有认领人、Core/Rust 接口能接续,且团队确认合计每周约 80 小时有效投入;条件未满足时保留待排期状态,不把 2026-11-05 当成已确认开工日。
2026-11-04 复核时的认领如下;后续以各 Issue 实时状态为准,本表不做人员指派:
NeverENGbeatenevobeatenevoMaoMengwwNeverENG可立即推进已认领任务的独立部分;G2/G3/G7 的空缺仍会影响完整交付。总投入变化时按
51–75 人日 × 每人日 6–8 小时 ÷ 每周团队有效小时重算,并另查依赖链。G6 要在前两周启动契约、状态实现和样例。其 10–15 人日约为 60–120 小时,单人每周投入 20 小时需要约 3–6 周;迟启动须顺延完整窗口。没有可靠增强关联载体的宿主保持 check_only。各任务按 G3-0 和已稳定的 Core 契约接续,最终验收等待其实际依赖行为完成。
5. G8 验收表与初始预算
5.1 先建立同等语义的对照
由 #2467 当前认领人在首个基准 PR 中固定第 5.2 节预算、环境/负载清单和改动前 Gateway/Core 提交,运行前完成登记。G7-A 可用后的前 1–2 人日优先跑前两组并保存基线,不等待 G4/G5-B/G6。 用独立构建目录和外部测试底座执行钉住的改动前提交,再用同一环境/方法执行候选提交;底座晚交付也保留可重建的改动前对照。安全修复可先合入,性能增益声明以保存的配对结果为准。
裸连 provider 可另报告。每组保留 Core 原有去重和复用;第三组的准备次数与最终输入变化分别计量。
5.2 可执行的初始预算
以下是首轮本地受控负载的工程验收目标,尚未实测,不是产品性能或真实模型收益声明。采用同机真实 Gateway/Core 与本地固定响应 provider,provider 固定延迟 20 ms;记录 CPU 型号、核数、内存、OS、IPC、协议、目标配置和全部资源上限。不同机器的结果独立成组。
每组预热至少 200 次,再采集至少 2,000 个完成样本,交错重复配对对照 3 轮。错误、超时和拒绝单独报告,不能通过排除失败样本改善结论。测量从客户端发起到 strict 首次内容释放;下表的
ΔP99 = P99(Gateway) − P99(同等检查直连)是两个分位值之差。正文大小指实际 UTF-8 字节。fixture 需覆盖多字节与转义变体,容量不足时报告不支持;隐私/绑定检查保持开启。冷启动另测。CPU/RSS、逻辑保留字节、错误率、阶段耗时和首字节同时报告;内存门槛使用 G5 声明的配置与回收条件,不能以逻辑预算代替 RSS。
预算在运行前随 workload/commit 固定。未达标如实记录,先分析开销;需要调整预算时说明工作负载或资源假设和依据,保留旧结果,并在下一轮运行前确定新值。不能倒改门槛把既有失败标成通过。
5.3 每次实验必须填写的记录
usage 保存必要原始计数字段与映射版本,归一到
total_input_tokens后计算cache_read_tokens / total_input_tokens;known/estimated/unknown/reconciled 分开,请求命中比例另报。两个具体例子:input_tokens=1200,input_tokens_details.cached_tokens=10001000/1200 ≈ 83.3%,不再把 1000 加入分母input_tokens=200,cache_creation_input_tokens=100,cache_read_input_tokens=900200+100+900=1200,读取占比900/1200=75%缓存创建内部细分若已计入创建总量,不再重复相加;字段未知、API 语义未核实或分母为零时占比记 unknown。映射按具体 provider/model/API 版本核对;主辅模型、失败和不确定尝试计入完整任务成本。本地 usage fixture 只验证记账。E4 P1
原生缓存参数按 provider/model/API 能力设置,保留客户端已有键,派生范围遵守主体/Scope/epoch 与目标绑定,字段在最终检查前落实。命中、缓存折扣和 token 削减分别报告;提示不提供物理路由或命中保证。S2 E4 E5
非流式 JSON、合成 SSE 首事件和 strict 首次内容释放分别计时;不可取得的模型 TTFT 保持 unknown。付费 provider 和真实宿主实验单独取得预算、实际执行,CI 使用合成数据与本地 provider。S7 S8
6. 集成与发布条件
G7-P:强隐私的接收侧测试归属
#2466 明确拥有这组真实进程门禁;领域修复仍由对应任务完成:
G7-A 就绪后先覆盖已有输入/输出保护,新增目标/owner/epoch 场景随功能接入;未覆盖的载体保留缺失声明。
基础结果可以先交付,完整 G1–G8 或持久恢复尚未完成时只发布已通过的范围。G8 初始预算未达到时,标记性能未达标,不能称为高性能验收完成。
已有工作继续分工:
7. 来源与证据
RFC 2086/2199 在核查基线中为提案;代码链接固定提交。此前在原型提交记录的定向结果是 Rust Executor 55 项、UDS/transport 本地 socket 5 项、Python context-check 14 项通过。本次未重跑这些测试;真实模型、宿主和压力结果仍需由任务提交各自证据。
All reactions