Files
agent-desirecore/web/solver-report/README.zh-CN.md
2026-08-30 11:02:51 -04:00

3.8 KiB
Raw Blame History

求解器验证书 Web

这里版本化管理“求解器智能体团队验证书”的 Web 源码与构建工具。

本目录负责 Web 应用、交互行为、构建契约、静态验证器和部署验证脚本。场景包、运行回执和原始截图继续作为外部构建输入,避免让 DesireCore 核心 Agent 的 bootstrap 体积增加数百 MB。

图片查看器

截图预览支持:

  • 适应窗口与 1:1 原始像素模式;
  • 有上下限的缩放按钮,以及 + / - / 0 / 1 键盘快捷键(移动端也能达到截图的 1:1 原始像素);
  • Ctrl/Command + 滚轮或触控板捏合,以指针位置为中心缩放;
  • 双击缩放、鼠标/单指拖动平移;
  • 双指触控捏合缩放;
  • 原图下载入口和可访问的实时缩放状态。

每次打开新图片都从“适应窗口”开始;关闭后重新打开不会保留旧的缩放或平移状态。

构建

构建输入目录需要包含 scenario-packs/evidence/,产物默认写到 report-web/dist/。Markdown、公式和图片处理依赖从 DesireCore 应用 checkout 解析。

公网构建还必须提供 evidence/public-release-attestation.json。它按 Draft-07 Schema 绑定全部公开消息与 174 张截图的内容根哈希,并明确记录审查方法、证据归属和公开发布结论。消息或截图发生任何变化,旧证明都会失效,构建直接失败。

站点只消费 evidence/screenshots/public-screenshot-plan.json。该派生计划通过每张图的 sourceSha256 将公开脱敏图绑定到不可变原始证据;含本地路径的原始截图绝不能直接作为公网原图。

export SOLVER_REPORT_INPUT_ROOT=/absolute/path/to/scenario-book
export DESIRECORE_APP_ROOT=/absolute/path/to/desirecore
node scripts/build-report-web.mjs
node scripts/validate-report-web.mjs

可选环境变量:

  • SOLVER_REPORT_OUTPUT_ROOT:覆盖生成路径;为避免递归清理误伤,它必须位于 <SOLVER_REPORT_INPUT_ROOT>/report-web/ 的子目录内,且不得与 Agent 源码或 DesireCore 应用目录重叠。
  • LATEST_PLATFORM_REGRESSION_FILE:覆盖最新回归摘要路径。
  • SOLVER_REPORT_PUBLIC_RELEASE_ATTESTATION_FILE:覆盖公开发布证明路径。
  • SOLVER_REPORT_VALIDATION_FILE:覆盖静态验证结果路径。
  • REPORT_BASE_URLvalidate-deployed-report.mjs 使用的公网地址。
  • SOLVER_REPORT_DEPLOYMENT_VALIDATION_FILE:覆盖部署验证结果路径。

源码契约测试:node --test tests/*.test.mjs

签署公开发布证明前,必须以可读分辨率逐张检查全部原始截图。联系表只用于核对场景 ID、截图哈希和覆盖范围不能替代小字凭据审查。在 macOS 上还要运行原图级 Apple Vision OCR 门禁,作为第二条独立检查路径:

export SOLVER_REPORT_SCREENSHOT_OCR_FILE=/private/tmp/solver-report-ocr.json
export SOLVER_REPORT_SCREENSHOT_OCR_VALIDATION_FILE=/private/tmp/solver-report-ocr-validation.json
npm run privacy:ocr

验证器要求 174 张计划内原图按顺序全部出现,重新计算每张源图哈希,并对识别文字复用 fail-closed 敏感信息策略。OCR 与全分辨率人工视觉审查必须同时通过后,才能更新公开发布证明;审查产物不会进入站点或 Agent bootstrap。

部署边界

构建器只允许公开 provenance 白名单字段,并会拒绝本机路径、邮箱、私有 URL、常见密钥和具名凭据。部署验证同时要求 build.json#gates.publicReleasePrivacy=pass 且证明哈希与 manifest 一致。

每次生成新的不可变 release切换前逐项验证 integrity.json,然后原子更新服务端 current 软链接。禁止覆盖既有 release也禁止把历史证据重新标记为新版平台产物。