gongxiangp2/docs/pi-client-integration-acceptance-2026-10-22.md
WuYongJie 1b6425b552 feat(desktop): connect native Pi sessions with scoped rules and recovery
Track the fixed PhotoCraft source baseline with the existing native client integration. Use the actual Pi SDK for normal sends, durable session recovery, demand-loaded enterprise rules and checked undoable canvas tools. Retain request identities and never resend unknown inference. Include local packaging and real-call acceptance evidence.
2026-10-22 10:49:58 +08:00

8.1 KiB
Raw Blame History

Pi 客户端正式接通与验收 · 2026-10-22

结果与边界

原生客户端正常“编辑画布”发送入口现使用 Pi Coding Agent SDK 1.3.0,保留 PhotoCraft 原生画布、现有极简界面、个人Key、独立对话/生图模型选择。不是另开一个只能在脚本使用的验证器。Pi 在用户电脑运行;服务器新增的只是授权规则读取接口,不承接推理、画布、历史压缩或工具沙箱计算。

本轮真实模型为用户当前选择的 grok-4.7,只访问98k公开客户接口。真实规则来自同事维护的企业知识库及素材库目录,当前完整就绪组合为顾家/电脑桌/GJ-DESK-DNZ0385。其余组合不借用规则或显示就绪。QA产品编号 QA-PI-CLIENT-1022、颜色与尺寸为明确标记的验收资料;使用既有1440px五屏本地画布验证编辑,不把这次验收当成新产品商业详情图质量验收。

接通内容

  • 正常客户端发送启动随包的 Node 子进程;Pi 管理完整会话JSONL、事实记忆、历史检索、摘要与工具循环。每次发送可重新启动宿主,继续读取同一项目会话,不依赖界面最近12条消息。
  • 素材库每次校验授权、账号及用途;个人Key只在Rust与系统凭据库使用,不传给Node。SDK默认终端、文件工具、用户扩展与自动重试关闭。
  • 规则绑定精确到店铺/品类及版本。本机保存完整来源和项目快照,公共规则更新不改写旧项目。普通对话只注入基础约束,需要影像或模板时再加载。品牌文本和登记模块不重复塞入不同字段。
  • 当前真实快照14942字符;最终投影:普通对话/文案1184字符,画布3882字符,方案/生图8125字符。这些仅是规则部分,不含工具定义、产品事实和对话历史。
  • 老的完整画布/规则工具结果投影为可追溯摘要,原始JSONL保留。超过80000字符先压缩,投影后超过120000字符阻断;每个用户轮含压缩最多12次模型调用。
  • 编辑仍进入同一原生命令队列。每步检查文档、账号、revision及接手状态;用户接手、人工修改或撤销后,旧建议不能继续覆盖。子进程预检查尚未结束时接手,同样不能被后续begin重新开启许可。
  • 自编工具在QuickJS WASM中运行,仅JSON输入输出,至少3项测试通过、版本哈希匹配才可调用;不开放本机文件、网络、Key或终端。

实际模型与客户端验收

本轮9条成功派发的用户验收指令,共 24笔模型POST,24笔完整结束,0笔新增未知请求。每笔请求体与原生留存的SHA256相符。另有1条指令在HTTP504前置读取时失败,确认没有派发模型;保留失败现场。93条构造长历史明确标注,不计为真实用户对话或模型回答。

验收 实际结果
事实与更正 原编号、1300×650×760毫米保留;颜色更正为胡桃色,首屏标题定为“留白有序”
店铺/品类注入 模型使用真实顾家、电脑桌、Noto Sans SC规则;模板示例与本款高度冲突列为待确认,不静默采用
方案 给出三屏大纲,不启动生图,不宣称完成最终详情图
长对话 插入93条构造消息后实际触发一次摘要,再用历史检索找回仅在原文中的口令“溪杉-6427”,同时保留更正后的产品事实
关闭重开 保存并实际结束原生GUI,再以新进程打开同一项目;编号、尺寸、颜色、标题、品牌品类、字体及历史口令恢复正确
实时画布 真实函数调用把16号文字层改为“留白有序”并右移12px;字号、字体和其他图层保持,界面观察到真实SSE部分回复
撤销/重做 两次撤销与两次重做,完整图层元数据分别与前后快照一致
用户接手 首条编辑排队时接手,0画布修改,后续模型步骤由本机停止,无额外模型POST
自编工具 完整本地包内Agent编写client_padding_1022,1440/750/0三个测试通过,实际运行1440得到120;画布未改动

长历史摘要调用的最高输入为50654Token,包含构造历史、系统与工具上下文,不能误称为品牌规范本身超过5万或10万Token。原始历史仍保存在本机项目会话树中。

中断与未知请求

受控测试只在原响应完整落盘、原生记录为received后中断本地Node宿主,不伪装成上游宕机。客户端显示待核查,恢复等待窗口内未完成,随后再次执行原请求只读恢复,成功显示原回复 RECOVERY-1022-STABLE-V2。全过程只有 1笔生成POST、恢复0笔POST、自动画布写入0次,不是重发后碰巧成功。

原请求身份:本地b603e953-1d8c-456a-b580-93c011a48d1f,客户请求号92614d9f-14f6-4fb1-97e6-7e1b8f2dc215。完整落盘响应先通过原协议解析器校验;修改类工具建议没有执行证据时保持待核对,不自动回放,可明确放弃后继续。

之前遗留的未知请求0447b17b-1c45-4902-a6a5-18357a3e2a3f/客户请求号9dd3eebf-3b86-46c8-ac9e-3e4bb33c959b,本轮只读查询仍返回410,保持未知,未重发、未删除或换身份重做。生产已有未知任务记录的整体指纹在发布前后也相同。

缓存实测

24笔均返回可用usage:总输入 304000 Token,其中缓存输入 101248 Token,加权命中率 33.31%;单笔 2.53%~99.49%。

这是98k响应报告值,不是独立计费审计。不能保证每个模型或每次调用相同。之前2026-10-21的26笔为46.40%,与本轮是不同样本,不能混为稳定承诺。摘要调用首次读取较长历史也可能低命中。

本地保存规则和会话不等于模型缓存;模型缓存命中仍占上下文窗口,只可能影响响应速度/计费。未返回缓存字段时显示未知,不记成0。必须继续控制注入量,不能用缓存解释重复膨胀。

验证、打包与发布

  • Pi测试30/30;原生相关测试55项通过、2项需要显式外部输入而忽略,新增预检查期间接手回归1项通过。
  • 严格Clippy、31crate依赖分层和wasm检查通过。wasm保留上游3条既有dead_code警告;本地Windows开发构建仍有图标/版本资源编译警告,不能称为正式签名安装包。
  • 正式Web规则接口3项定向测试通过,生产构建通过;已用本地客户端授权态读取在线规则目录。匿名读取HTTP401、private, no-store;公网健康检查数据库/Redis正常。
  • $impeccable audit 按原生Operate工作台执行:实际查看1440×900及1280×800截图,双模型及规则选择、输入区、操作胶囊均在窗口内,无说明墙或新网页面板。已有布局测试覆盖960/1100/1280/1440/1920等窗口。未宣称做过屏幕阅读器、移动浏览器或Photoshop实机验收。
  • 本地完整包位于output/pi-client-integration-20261022/client,包含原生程序、Node 24.16.0、Pi和锁定依赖,约380.7MB;不含配置、Key、用户作品或请求日志。实际观察到客户端启动包内agent/node.exe及agent/src/desktop-host.mjs,自编工具真实调用通过,不依赖源码目录的Node脚本。
  • 服务端提交/线上版本:a8f75f341317dd83e474483c413809682a56b42a。生产镜像配置ID:sha256:a7982b8e400c16eda2871d12999dbe50f38cdce77416c6954592598846cd161b;回退版本70369dbdb2405bb6e7548f821211953b7ccf2557保留。无数据库迁移,无生产模型请求;发布前后未知记录指纹相同。
  • 客户端源码另行提交:固定上游基线、二次开发源码与Pi运行层纳入主仓库;不提交嵌套Git元数据和其他未完成的Web/旧Electron改动。客户端源码/报告不改变上述线上Web镜像。

留存证据集中在output/pi-client-integration-20261022:final-client-summary.json、阶段*-passed.json与*-states.json、原生留存响应/payload、interrupt-recovery-passed.json、production-rule-ui.json、两张audit-*.png、项目保存文件及server-release/post-release.log。证据只保留本机,不提交Key、账户配置或运行期请求内容。