118 lines
27 KiB
Markdown
118 lines
27 KiB
Markdown
# 朗速 ERP 智能桌宠 Windows x64 验收包
|
||
|
||
交付包内的 1.1 线协议声明 v3 `sessionScopeToken` 及其六项绑定字段;能力、计划和执行请求由客户端携带、由 ERP 服务端权威复核,缺失或错绑时不会进入业务处理。
|
||
|
||
本包只用于受控客户验收,不能仅凭“程序能启动”判定可商用。`BUILD-VERIFICATION.json` 记录构建机自动化结果,`SHA256SUMS.json` 绑定包内全部文件;最终上线仍必须在客户 Windows、旧 ERP、DevExpress 15.2 和可恢复 SQL Server 验收库中完成真实集成测试。
|
||
|
||
## 包内容
|
||
|
||
运行时就绪复核也遵循显式会话边界:计划和执行会把当前 `CommandExecutionContext` 传给支持上下文扩展的业务适配器,再由 SQL 网关在真实连接上核对用户、账套、子系统和数据库作用域;旧适配器只保留启动注册兼容路径,不能替代生产网关的连接复核。
|
||
|
||
- `Host/`:自包含 .NET 8 WPF + WebView2 桌宠宿主,以及独立的 `lserp-agent-cli.exe` 本地桥 CLI。CLI 只提供 `bridge/workflow` 命令,只连接当前已登录 ERP 的同用户命名管道;不接收数据库口令、不直连 SQL Server。每次桥调用必须完整传入精确 ERP PID、数据库作用域指纹、用户编号、用户名、账套、子系统和管理员布尔值;实际权限和模块配置仍由 ERP 会话权威注入,CLI 会把调用方预期范围与实际上下文逐项比对。除 `bridge context` 自身外,CLI 在目标命令前后各读取一次上下文,身份、账套、子系统、数据库作用域或管理员属性漂移时丢弃目标结果;无 UI 副作用的读取/计划还要求当前与已打开模块集合稳定,而执行调用允许导航或初始化追踪按可信计划产生的 UI 变化。CLI 自报版本来自构建时程序集身份而非源码常量,现场预检会实际执行 `version` 并逐字段绑定包版本、协议和安全边界。透明窗口使用合成 WebView2,并启用受控拖动区域和严格退出消息;HTML/CSS/JavaScript 已嵌入签名程序集并从内存提供,不依赖可变外部 Web 目录。
|
||
- `AstrBotPlugin/`:精确锁定 AstrBot `4.27.2` 的 ERP 安全工具插件、上游来源契约及 Python 依赖版本。
|
||
- `Contracts/`:ERP Bridge、AstrBot 和桌宠共同验证的 `erp-agent-wire-contract-v1.json`;固定 15 个计划字段并覆盖采购、请假、模块诊断、动态模块新增/并发修改和导航八个跨组件样本,现场预检拒绝缺失或漂移。
|
||
- `Deployment/`:旧 ERP/CLI 可重复构建脚本及其离线正负契约测试、SQL Server 契约、采购/请假写用例模板、第三方合规门禁、签名工作流/客户总验收生成器、默认拒绝的 `command-rollout.example.json`,以及精确 PID/数据库作用域/用户/账套/子系统绑定的只读动态合同预检、短时 UAT 授权与单用例实机采集器。旧 ERP 构建脚本会在签名前扫描最终一方 EXE/DLL 的 ASCII/UTF-16 字符视图,发现成对硬编码 SQL 用户名/口令时以 `legacy_runtime_hardcoded_sql_credential:<文件名>` 失败关闭且不回显凭据。`Invoke-LserpSelectOnlyProfilePreflight.ps1` 用受控 `PSCredential` 一次完成严格 SELECT-only 目录采集和最终签名 CLI 离线画像比对,锁定画像/采集器/CLI 的哈希与签发者,只发布 ACL 受限且不覆盖的哈希快照和脱敏报告,始终不授权写命令。`Invoke-LserpFieldReadOnlyValidation.ps1` 严格读取默认拒绝的 `field-readonly-validation.example.json` 副本,要求独立审批和 24 小时内时效,同时锁定输入与底层预检脚本哈希,把 PID、二进制身份、会话范围、发布策略及采购/请假/诊断到客户实际模块的角色绑定完整交给只读预检;其报告只含哈希和计数。`Invoke-LserpReadOnlySessionPreflight.ps1` 只允许签名 CLI 调用 `bridge health/context/capabilities` 和不可执行的 `module.parameters` 计划,并只发布会话哈希、合同/配置/原生执行指纹、参数模式/载荷数量、经审核的保存族和新增/修改阻断状态。`FIELD_VALIDATION_RUNBOOK.md` 给实施人员提供分阶段现场放行和统一停止条件,完整证据要求仍以 `CUSTOMER_ACCEPTANCE.md`、`WRITE_ACCEPTANCE.md` 为准。写采集器绑定签名授权、DPAPI 令牌库、签名 CLI 和精确 ERP PID,以同一关联 ID自动完成 `resolve -> create`;UAT 令牌和幂等键仅走标准输入,只发布含授权/作用域哈希和计划合同的脱敏证据并清理受限原始目录。目录还包含仅有对象/字段名且默认禁用的 `customer-profiles` 人工复核材料;其中 compat100 只读、请假强类型写和采购固定 XML 行集写草案均以 `SET NOEXEC ON` 和固定关闭审核开关保护,采购草案另有固定关闭的行级范围开关,只供 DBA 评审,不能直接部署。
|
||
- 只读会话预检必须使用最终 ZIP 中的受限 `Host/lserp-agent-cli.exe`,并用 `-ExpectedCliVersion`、CLI SHA-256/签发者、`-ExpectedErpSha256` 和 PID 锁定运行时;脚本会实际运行 `version`,要求 `bridgeOnly=true`、`databaseDirectAccess=false`,再把经审批的数据库作用域、用户编号、用户名、账套、子系统和管理员布尔值作为每个 CLI 子进程的必填参数传入。CLI 本身和预检包装器都会在读取能力和模块之前逐字复核实际 ERP 上下文,且 CLI 对目标调用执行前后复核。诊断工作流必须明确批准管理员会话。1.5 报告只保留运行时 CLI 版本/哈希/签发者、ERP 身份、会话域分离哈希和脱敏动态执行证据,不保留本机路径、原始会话标识、字段标签、参数 ID、业务值或物理配置;旧 1.4 及更早报告不能用于当前总验收。
|
||
- MiniMax 图片识别由 AstrBot 服务进程使用固定区域的 HTTPS VLM;线协议绑定官方 `minimax-coding-plan-mcp 0.0.4` 提交并发送 `MM-API-Source: Minimax-MCP`,实际发送字节必须命中识别前附件 SHA-256/大小。电子 PDF 先在隔离 PDFium worker 中完整渲染最多三页,再逐页识别并绑定原 PDF/页图/结构结果摘要;XLSX/CSV worker 同样只解析一次验签后的内存快照。交付包不含 `minimax-coding-plan-mcp`、`mmx-cli`、Node.js 或 MiniMax Key。
|
||
- `Verify-LserpCommercialPackage.ps1`:只读现场预检;同时锁定最终 ZIP 与解包目录,逐文件复核清单、大小和 SHA-256。
|
||
- `Start-LserpAgentPet.ps1`:通过全部关键启动门禁后启动桌宠。
|
||
|
||
## 本包刻意不包含
|
||
|
||
- MiniMax Key、AstrBot Key、数据库口令或连接串。
|
||
- 完整管理员/验收工具 `lserp-cli.exe`、改造后的 `Ls_ERP.exe`、AgentBridge/CommandKernel/Core 旧框架二进制。本 ZIP 内的 `Host/lserp-agent-cli.exe` 只是无数据库直连能力的运行时桥 CLI;完整 .NET Framework 4 x86 CLI 和 ERP 组件必须从同一干净提交在客户 Windows 构建机使用 `Deployment/Build-LegacyErpAcceptance.ps1` 重建、签名并作为独立 `LegacyArtifactRoot` 交给预检。`BUILD-VERIFICATION.json/deliveryTopology` 会分别声明两个 CLI 的边界;缺少独立签名旧构建时启动器不会运行桌宠。
|
||
- guga/codex-pets 精灵图。`Deployment/guga-upstream-audit.v1.json` 已锁定 `codex-pets 0.3.0`、服务源码和当时在线素材的摘要,并证明安装器不校验素材摘要/签名/授权;它不是商用许可证。该素材没有随安装结果提供可核验的商用授权文件,禁止在生产机直接运行 `npx codex-pets add guga`,必须先取得权利人的书面商用许可,再经公司受控制品渠道由客户在本机单独提供素材路径和授权证据。
|
||
- 可直接启用的客户业务字段配置、真实发票、员工请假原因或生产数据库数据。`customer-profiles` 只保存从系统目录和低代码配置提取的脱敏候选;仅当客户完成在线复核、签名清单绑定,并在最终 `business-adapters.json` 1.1 中显式设置 `customerProfilePath` 时,指定画像才会作为运行时只读目录门禁加载,候选映射和 SQL 草案永远不会自动执行。
|
||
- 未经客户签收的 `business-adapters.json` 和写工作流签名验收清单。
|
||
|
||
## 部署顺序
|
||
|
||
1. 从与本包 `BUILD-VERIFICATION.json/sourceCommit` 相同的已审查干净提交,在装有 .NET Framework 4 Targeting Pack、Visual Studio MSBuild 和 MSVC 工具的客户 Windows 构建机运行:
|
||
|
||
```powershell
|
||
.\Deployment\Build-LegacyErpAcceptance.ps1 `
|
||
-RepoRoot D:\ReviewedSource\lserp_cs_6.0 `
|
||
-OutputDirectory D:\Acceptance\legacy-erp-build `
|
||
-ExpectedSourceCommit <40位提交号> `
|
||
-CefRedistPackagePath D:\ApprovedPackages\cef.redist.x86.87.1.13.nupkg `
|
||
-AuthenticodeCertificateThumbprint <40位证书指纹> `
|
||
-CertificateStoreLocation CurrentUser `
|
||
-TimestampUrl https://<客户批准的RFC3161时间戳服务>
|
||
```
|
||
|
||
脚本拒绝脏工作树和已有输出目录;它从指定提交创建隔离的本地克隆,按解决方案 `Release|Mixed Platforms` 映射重建 `lserp-cli` 及其 `Ls_ERP`/AgentBridge/CommandKernel 项目依赖,避免把只支持 `AnyCPU` 的老依赖错误地强制成 x86。CEF 包必须是与现有 `Xilium.CefGlue 87.1.1` 绑定配套的 `cef.redist.x86 87.1.13` 原始 nupkg,SHA-256 必须为 `34dfe2504c1ffaef02eab1f38578701b045439349997b6465fd5dd6659fab021`;脚本只在隔离克隆中安全解包,不改动审查工作树,并把完整原生 CEF 目录复制到 Runtime,逐一拒绝冲突旧文件并复核关键 DLL、数据文件和中英文 locale 哈希。它自动定位当前 VS 的 `MSBuild.exe`、`editbin.exe` 和 Windows SDK `signtool.exe`,随后直接读取 PE/CLR 头验证 .NET 4、x86、`32BITREQUIRED`、ERP `LargeAddressAware` 以及 CefGlue/CEF 主版本。关键 EXE/DLL 在生成最终哈希前统一签名并验证证书指纹;输出 `LEGACY-BUILD-EVIDENCE.json` 和签名后逐文件 SHA-256,仍保持 `releaseReadiness=false`。测试构建可不传签名参数,但不会通过商用预检。
|
||
|
||
CEF 87 只用于兼容当前旧 WinForms 绑定,不代表通过现代浏览器安全评估。升级到受支持的 CefGlue/CEF 组合前,必须禁止打开公网和其他不受信任页面;正式广泛商用需完成升级或由客户安全负责人书面接受限定内网页面的遗留风险。
|
||
|
||
正式构建前可在源码根目录先运行 `./Deployment/Test-DeploymentContracts.ps1 -RepoRoot <源码目录>`;它不构建或写入 ERP,只验证当前仓库和多个故意破坏的临时夹具,任一负例未被拒绝都会返回非零退出码。
|
||
|
||
2. 按客户发布流程签署最终安装包,并保存安装包哈希;不得在 `LEGACY-BUILD-EVIDENCE.json` 生成后再次修改其中列出的 Runtime 文件。
|
||
3. 在客户可恢复验收机上安装 Microsoft Edge WebView2 Evergreen Runtime `151.0.4129.50` 或更高版本。宿主锁定 WebView2 SDK `1.0.4129.50`,预检会解析注册表中的实际 Runtime 版本并拒绝更早或格式异常的版本,不能只以“已经安装”代替兼容性检查。
|
||
4. 使用同一客户发布证书签署 `Host/Lskj.AgentPet.Host.exe`、`Lskj.AgentPet.Host.dll`、`Lskj.AgentPet.Host.Core.dll` 与单文件自包含的 `lserp-agent-cli.exe`,记录 40 位证书指纹;四者任一未签、签名失效或签发者不同都会被预检和启动器拒绝。正式包禁止只签桌宠启动 EXE,因为桌宠业务逻辑位于两个一方 DLL 中;桥接 CLI 的托管代码和依赖则完整包含在其签名 EXE 内。
|
||
|
||
在客户 Windows 构建机生成最终桌宠包时,为 `Build-CommercialPackage.sh` 设置 `LSERP_HOST_CERT_THUMBPRINT`、`LSERP_HOST_TIMESTAMP_URL`,以及按需设置 `LSERP_HOST_CERT_STORE`/`LSERP_HOST_SIGNTOOL`。同时必须把 `LSERP_ASTRBOT_SOURCE` 指向企业制品库还原的官方 AstrBot 干净 `v4.27.2` 源码绝对路径,把 `LSERP_ASTRBOT_CONTRACT_PYTHON` 指向已安装该源码运行依赖的受审 Python 绝对路径。打包器会复核官方 HTTPS remote、标签、提交 `ad4fbfa90ca0c4ac2b30b3250e34dbf8fe7babbf`、工作树、许可证 SHA-256、20 个关键源码摘要和实际模块来源,再用真实 AstrBot 类型实例化插件与三个 Tool;缺少这两个输入、仅运行本地 stub 测试或上游源码有任何漂移都会终止。该上游 checkout 只用于构建取证,不会装入交付包。CI 的 Node 工具不在标准 `PATH` 时可用 `LSERP_NPM` 绑定审核过的 npm 绝对路径,避免构建机隐式选择其他版本。脚本会发布自包含桌宠,并把桥接 CLI 压缩为唯一的 Windows x64 单文件自包含 EXE,拒绝残留独立 DLL、deps 或 runtimeconfig;随后在计算 `SHA256SUMS.json` 和 ZIP 哈希前调用 `Deployment/Sign-LserpAgentPetHost.ps1`,使用 SHA-256 与 RFC3161 时间戳签署并复验四个一方文件。签名参数只给一部分会直接失败。未提供参数生成的包只能用于自动化验收,`hostAuthenticode.signed=false`,不能进入商用预检。
|
||
5. 只在精确的 AstrBot 4.27.2 实例中把 `AstrBotPlugin` 复制到 `data/plugins/astrbot_plugin_lserp`。本包的 `PythonWheels/` 是按 `requirements.txt` 中固定 SHA-256、明确以 `win_amd64` 平台下载并由包清单再次逐文件绑定的离线依赖;构建机测试使用单独 wheelhouse,不能把 macOS/Linux wheel 混入 Windows 包。打包脚本会在临时隔离 venv 中安装本机受审 wheel、执行 `pip check`,并以 PDFium/XLSX worker 测试零跳过为硬门禁;客户预检再核对 `pypdfium2-5.12.1-py3-none-win_amd64.whl` 的精确哈希、`pdfium.dll` 及 wheel 内许可证清单。在 AstrBot 专用虚拟环境执行 `python -m pip install --no-index --require-hashes --find-links .\PythonWheels -r .\AstrBotPlugin\requirements.txt`。正式发布还应由制品库保留 AstrBot 与插件依赖的上游来源、签名/恶意软件扫描和 SBOM。插件 metadata 与进程内守卫都会拒绝其他 AstrBot 版本。
|
||
6. 不安装 Node.js、`mmx-cli` 或 `minimax-coding-plan-mcp`。把 AstrBot 插件的 `minimax_api_region` 明确设为购买 Key 的 `global` 或 `cn` 区域,只把轮换后的 `MINIMAX_API_KEY` 注入 AstrBot 专用服务账号的秘密环境;桌宠进程不得继承。先在该账号中运行 `python AstrBotPlugin\verify_minimax_vlm_contract.py --region <global|cn> --output <新文件.json>`,用无客户数据的合成图片验证在线合同并把报告 SHA-256 纳入 MiniMax 服务审查记录。插件只连接固定 MiniMax HTTPS VLM,禁用系统代理和重定向,并在网络请求或文档解析前把实际读取的单一字节快照与消息识别前来源 SHA-256/大小逐字比较。打包器会拒绝五套自动化测试数量低于当前受审基线,也会验证交付包不存在 `MmxRuntime`。制品仍应进入客户软件成分分析和恶意软件扫描流程。
|
||
7. 通过 Windows“凭据管理器”创建通用凭据 `Langsu.Lserp.AstrBot.ApiKey`,只授予 AstrBot `chat + file` scopes。不要把 Key 写进 PowerShell 参数、环境变量、配置文件或日志。
|
||
8. 按 `Deployment/CUSTOMER_ACCEPTANCE.md` 完成客户字段映射、只读契约探针、写事务/幂等/审计和签名证据门禁。先复制并独立审核 `field-readonly-validation.example.json`,用原始文件 SHA-256 调用 `Deployment/Invoke-LserpFieldReadOnlyValidation.ps1`;先带 `-ValidateInputOnly` 验证交接合同,再换新报告路径执行底层只读会话预检。文件明确绑定最终签名 CLI、精确 ERP PID、人工核准的数据库作用域指纹、用户 ID、账套、子系统、管理员属性、发布策略客户 ID/SHA-256,以及采购、请假、诊断角色对应的客户实际模块编号;不同用户会话分文件批准。第一次发现用 `discovery`,适配器注册后用 `final` 并打开实际验收工作流。脚本没有数据库连接参数且不调用执行路径,报告固定不授权生产写入。然后只在已验证备份/恢复且明确非生产的客户 UAT 库,用提升权限的 Windows PowerShell 5.1 运行 `Deployment/New-WorkflowUatAuthorization.ps1`,显式确认五项安全开关并签发最长 24 小时授权;令牌库只留在同一受控验收账号,不能进包、日志或聊天。将授权路径/哈希通过 `LSERP_WORKFLOW_UAT_AUTHORIZATION`、`LSERP_WORKFLOW_UAT_AUTHORIZATION_SHA256` 注入并重启 ERP。随后保持随包 `Deployment/workflow-write-uat-case-catalog.v1.json` 原始字节不变,用 `New-WorkflowWriteUatCampaign.ps1` 生成固定 13+19 项、生产禁用、不会自动写库的受限活动清单;生成器、活动清单与恢复检查器三处绑定同一目录 SHA-256。每次开始或恢复先运行 `Test-WorkflowWriteUatCampaign.ps1`,只读复核目录、授权、CLI、令牌库 ACL/覆盖、精确 ERP PID、已有单用例语义和断点,再按其唯一 `nextCase.operatorGuide` 准备并单独运行 `Invoke-WorkflowWriteCaseCapture.ps1`。禁止循环批量执行 32 项;采集器会验证授权、令牌库、签名 CLI 和精确 ERP PID,令牌/幂等键只走标准输入,但不会替代 DBA 对业务变更数、审计数和来源附件贯通的只读复核。三项确认后漂移场景还必须用交互式 `-PauseAfterPlanForOperatorStaging` 留出 DBA/配置人员阶段,工具本身不修改配置。先把 `Deployment/command-rollout.example.json` 复制到包外受 ACL 保护的客户目录,逐条替换并复核客户部署标识、账套、子系统、精确用户/内置管理员、命令版本和原 ERP 权限契约,对最终原始文件计算 SHA-256;设置 `LSERP_AGENT_ROLLOUT_CONFIG`、`LSERP_AGENT_ROLLOUT_SHA256`、`LSERP_AGENT_ROLLOUT_CUSTOMER_ID` 后,ERP 进程才可通过 `LSERP_AGENT_BRIDGE_ENABLED=1` 显式开启同用户命名管道桥。缺少发布文件、哈希/客户不匹配、`defaultAction` 非 `deny`、规则引用未注册命令或版本/权限漂移时都不发布桥。上线前还要按客户容量和故障演练审批各项限流/熔断参数;非法值不发布桥,变更后必须重启 ERP。
|
||
写入 UAT 的活动生成器、恢复检查器和逐用例采集器同时锁定两类 CLI:最终签名的管理员 `lserp-cli.exe` 只做授权、观察和证据的离线验证;最终 ZIP 中的受限 `lserp-agent-cli.exe` 只做 `version` 与 `bridge health/context/plan/execute`。两者路径、哈希和签发者分别校验且不得互换,每项原始索引与最终报告还会绑定实际运行 CLI 的版本、SHA-256 和签发者。
|
||
运行只读会话预检时必须传入最终 `Ls_ERP.exe` 的 `-ExpectedErpSha256` 以及 `-ExpectedUserId`、`-ExpectedUserName`、`-ExpectedAccountBook`、`-ExpectedSubSystemId`、`-ExpectedIsAdministrator`,并确保 ERP 与 CLI 的签发者同为客户批准证书。
|
||
桌宠实机验收还要记录预览显示的 `bridgeCorrelationId`,确认 resolve/create、页面执行、ERP 原生确认、命令审计和服务器后续计划使用同一个值;篡改页面关联 ID 的负例必须在命名管道前失败且零业务变更。
|
||
两个工作流与四类诊断完成后,把文档规定的 23 个原始制品放在同一只读目录。采购、请假各自需要单工作流 UAT 授权、1.5 只读预检和绑定该文件 SHA-256/运行时 CLI 身份的 1.1 现场交接;诊断另需管理员会话预检与交接。运行 `Deployment/New-CustomerAcceptanceBundle.ps1` 时还要分别传入管理员 `-VerifierCliPath`、最终 ZIP 中的受限 `-RuntimeCliPath` 和 `-ExpectedRuntimeCliVersion`。生成器从 ZIP 清单核对运行时 CLI 并写入严格 `schemaVersion=1.8`,再由最终签名管理员 CLI 离线复验全部 23 个文件;运行时/验证器角色混用、跨子系统交换预检、合并授权、复用交接或把普通业务会话冒充诊断管理员都会被拒绝。总签章不会直接启用写命令。
|
||
如果要发布配置驱动的通用模块新增,还必须按 `Deployment/DYNAMIC_MODULE_WRITE_ACCEPTANCE.md` 部署默认拒绝的 `004_dynamic_module_adapter_contract.sql`,在可恢复 UAT 库逐模块验收全字段、回滚、持久幂等、权限/配置漂移、原生校验/默认值/编号/钩子和审计,再用 `New-DynamicModuleWriteAcceptance.ps1` 对精确模块/配置指纹清单做 TrustedPeople RSA-SHA256 签名。客户 DBA 写入同一摘要的模块级就绪行、发布策略精确允许 `module.record.create` 且三个 `LSERP_DYNAMIC_MODULE_WRITE_*` 启动值一致后,已登录 ERP 桥才会对该模块返回可执行写计划。此流程不授权通用修改、删除或提交。
|
||
9. 取得 guga 素材书面商用授权,并确认授权明确绑定实际精灵图 SHA-256、权利人身份、商业产品使用、客户部署、复制、展示、地域和期限后,在 PowerShell 运行。不要把 npm 的 MIT 声明当成图片授权,也不要在客户生产机用 `npx` 临时下载可变素材:
|
||
|
||
```powershell
|
||
.\Verify-LserpCommercialPackage.ps1 `
|
||
-PackageArchivePath D:\ApprovedPackages\Lserp-AgentPet-@LSERP_PACKAGE_VERSION@-win-x64.zip `
|
||
-ExpectedPackageVersion @LSERP_PACKAGE_VERSION@ `
|
||
-LegacyArtifactRoot D:\Acceptance\legacy-erp-build `
|
||
-RolloutPolicyPath C:\ProgramData\Langsu\AgentBridge\command-rollout.json `
|
||
-RolloutCustomerId CUSTOMER-001 `
|
||
-SpritePath C:\SecureAssets\guga\spritesheet.webp `
|
||
-SpriteLicenseEvidence C:\SecureAssets\guga\commercial-license.pdf `
|
||
-AstrBotComplianceEvidence C:\Compliance\astrbot-agpl-eula-review.pdf `
|
||
-MiniMaxServiceComplianceEvidence C:\Compliance\minimax-api-service-review.pdf `
|
||
-MiniMaxVisionProbeEvidence C:\Compliance\minimax-vision-probe.json `
|
||
-HostCertificateThumbprint <40位客户发布证书指纹> `
|
||
-ErpProcessId 1234 `
|
||
-ExpectedDatabaseScopeFingerprint <64位数据库作用域指纹> `
|
||
-ExpectedUserId <当前ERP登录用户ID> `
|
||
-ExpectedUserName <当前ERP登录用户名> `
|
||
-ExpectedAccountBook <当前ERP账套> `
|
||
-ExpectedSubSystemId <当前ERP子系统ID> `
|
||
-ExpectedIsAdministrator <true|false>
|
||
```
|
||
|
||
脚本会锁定 `-PackageArchivePath` 指向的最终 ZIP,计算其 SHA-256,并拒绝路径越界、大小越界、重复/额外条目、链接条目以及与当前解包目录 `SHA256SUMS.json` 不一致的任何文件;`schemaVersion=1.7` 预检报告据此绑定精确 ZIP、24 小时内的 MiniMax 原始探针和锁定 ScriptDom `TSql100` 语法证据,而不是只绑定相同源码提交或“脚本存在”。它会用包内最终签名的 `Host/lserp-agent-cli.exe` 实际调用目标 ERP 的只读 `bridge context/health/context`,而完整 `LegacyArtifactRoot/lserp-cli.exe` 只承担管理员配置和客户验收职责;预检和启动始终使用相同的必填 `-ErpProcessId`。它会调用 AstrBot 同机公开的 `/api/v1/stats/versions`,不发送聊天 Key,并同时要求运行时版本与磁盘代码版本精确等于 4.27.2。除了检查桥可达,它要求 `health.rolloutPolicy` 只有固定的七个安全字段,并证明目标进程实际加载的客户 ID、数据库作用域、默认拒绝状态和原始配置 SHA-256 与现场指定文件一致;任一发布策略证明不一致时,预检以稳定码 `erp_rollout_policy_mismatch` 失败关闭。健康检查前后的会话还必须逐字匹配预期用户编号、用户名、账套、子系统和数据库作用域,但这些原始标识不会写入报告。它会从受控文件句柄计算发布策略哈希,并从同一个禁止写入/删除共享的文件句柄计算素材 SHA-256、同时有界扫描 RIFF/WebP chunk;素材只接受 1536×1872 的静态 VP8X/VP8 或 VP8L 图集,错图、截断、伪装扩展名和符号链接均失败关闭。宿主随后只服务已验证的内存副本,WebView2 还会实际解码压缩流,通过前不会连接 ERP。脚本在包外以 `CreateNew` 写入 JSON 报告,任一硬门禁失败均返回非零退出码。全部通过后启动:
|
||
|
||
```powershell
|
||
.\Start-LserpAgentPet.ps1 `
|
||
-PackageArchivePath D:\ApprovedPackages\Lserp-AgentPet-@LSERP_PACKAGE_VERSION@-win-x64.zip `
|
||
-ExpectedPackageVersion @LSERP_PACKAGE_VERSION@ `
|
||
-LegacyArtifactRoot D:\Acceptance\legacy-erp-build `
|
||
-RolloutPolicyPath C:\ProgramData\Langsu\AgentBridge\command-rollout.json `
|
||
-RolloutCustomerId CUSTOMER-001 `
|
||
-SpritePath C:\SecureAssets\guga\spritesheet.webp `
|
||
-SpriteLicenseEvidence C:\SecureAssets\guga\commercial-license.pdf `
|
||
-AstrBotComplianceEvidence C:\Compliance\astrbot-agpl-eula-review.pdf `
|
||
-MiniMaxServiceComplianceEvidence C:\Compliance\minimax-api-service-review.pdf `
|
||
-MiniMaxVisionProbeEvidence C:\Compliance\minimax-vision-probe.json `
|
||
-HostCertificateThumbprint <40位客户发布证书指纹> `
|
||
-ErpProcessId 1234 `
|
||
-ExpectedDatabaseScopeFingerprint <64位数据库作用域指纹> `
|
||
-ExpectedUserId <当前ERP登录用户ID> `
|
||
-ExpectedUserName <当前ERP登录用户名> `
|
||
-ExpectedAccountBook <当前ERP账套> `
|
||
-ExpectedSubSystemId <当前ERP子系统ID> `
|
||
-ExpectedIsAdministrator <true|false>
|
||
```
|
||
|
||
启动器会先以独立 Windows PowerShell 5.1 进程重新运行完整 `Verify-LserpCommercialPackage.ps1`,复核包清单、签名、指定 ERP 实例、凭据、运行时、素材、MiniMax 直连合同、24 小时探针、附件快照绑定和三份书面第三方合规证据;`-ExpectedPackageVersion` 必须与 `BUILD-VERIFICATION.json` 及最终 ZIP 文件名中的三段版本完全一致,预检非零时不会启动宿主。AstrBot、已移除的 mmx-cli 制品、MiniMax 在线服务与证据要求见 `Deployment/THIRD_PARTY_COMPLIANCE.md`。因此不能通过跳过上一条人工预检命令绕开商用门禁。
|
||
|
||
`-ErpProcessId` 和六个 `-Expected*` 会话参数始终必填。脚本会把该 PID、进程启动时间以及由数据库作用域指纹、用户编号、用户名、账套、子系统和管理员布尔值共同派生的 v3 32 位作用域令牌写入本次随机 AstrBot 会话,并把六项预期值显式传给宿主独立重算。宿主直连请求和 AstrBot 三个 ERP Tool 都会在目标操作前后读取上下文:初始不符时不发送业务操作,期间发生切换时丢弃结果。预检前后若指定实例、可执行文件、启动时间或会话作用域变化,桌宠都会失败关闭;即使 Windows 以后复用相同 PID,或同一进程内切换登录,也不能自动转入其他数据库、账套或用户会话。
|
||
|
||
发现文件另带每次桥启动随机生成的 32 位小写十六进制 `bridgeInstanceId`,桥只监听 `lserp.agent.<PID>.<bridgeInstanceId>`,发现字段与管道后缀不一致时三端都拒绝。随机后缀保证旧发现记录无法在同 PID 重建窗口误连新桥。该值不进入命令行预期范围、模型上下文或验收报告;CLI 将它纳入 v2 `clientSessionId`,Host 和 AstrBot 将首次代际固定到本次桌宠会话。同一 ERP PID 内停止并重建桥、退出登录或切换账号后,旧桌宠必须在下一次桥调用前得到 `erp_bridge_instance_changed` 并退出;重新运行预检和启动器建立新会话后才可继续,旧计划不得恢复或迁移。
|
||
|
||
当前商用启动器和宿主只接受同机 loopback AstrBot,并要求 AstrBot、ERP 和桌宠属于同一 Windows 用户边界。HTTPS 远程地址也不会被当前版本接受,因为服务端插件无法访问客户机命名管道;中央服务模式必须先实现客户端主动出站、具有短期双向设备身份的 Agent Gateway,不能远程暴露命名管道。
|