@alipay/alipay-aipay 1.8.2 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/package.json +3 -3
  2. package/skill/VERSION +1 -1
  3. package/skill/references/integration/flow.md +27 -30
  4. package/skill/references/integration/modules/checklist.md +4 -6
  5. package/skill/references/integration/modules/sandbox/sandbox-setup-guide.md +2 -2
  6. package/skill/references/normal/integration-worker.md +1 -1
  7. package/skill/references/normal/json/customer-messages.json +1 -1
  8. package/skill/references/normal/scripts/flow_loader.mjs +9 -0
  9. package/skill/references/normal/scripts/integration_message_runner.mjs +81 -14
  10. package/skill/references/normal/scripts/onboarding_message_runner.mjs +80 -250
  11. package/skill/references/normal/scripts/render_customer_message.mjs +6 -6
  12. package/skill/references/onboarding/flow.md +9 -9
  13. package/skill/references/onboarding/modules/product-sign.md +1 -1
  14. package/skill/references/onboarding/modules/scripts/mcc.sh +151 -290
  15. package/skill/references/runtime-entry.md +2 -2
  16. package/skill-pre/VERSION +1 -1
  17. package/skill-pre/references/integration/flow.md +27 -30
  18. package/skill-pre/references/integration/modules/checklist.md +4 -6
  19. package/skill-pre/references/integration/modules/sandbox/sandbox-setup-guide.md +2 -2
  20. package/skill-pre/references/normal/integration-worker.md +1 -1
  21. package/skill-pre/references/normal/json/customer-messages.json +1 -1
  22. package/skill-pre/references/normal/scripts/flow_loader.mjs +9 -0
  23. package/skill-pre/references/normal/scripts/integration_message_runner.mjs +81 -14
  24. package/skill-pre/references/normal/scripts/onboarding_message_runner.mjs +80 -250
  25. package/skill-pre/references/normal/scripts/render_customer_message.mjs +6 -6
  26. package/skill-pre/references/onboarding/flow.md +9 -9
  27. package/skill-pre/references/onboarding/modules/product-sign.md +1 -1
  28. package/skill-pre/references/onboarding/modules/scripts/mcc.sh +151 -290
  29. package/skill-pre/references/runtime-entry.md +2 -2
@@ -16,7 +16,7 @@ AI 网页应用收款覆盖 PC 网页和手机浏览器/H5,接口固定 `alipa
16
16
  7. **沙箱结论**:真实快速沙箱配置不得用占位值,唯一例外是 AI 按量付费沙箱 `service_id=api_mock_service_id`,且生产禁用。`CREATE_PENDING|VERIFY_PENDING` 只允许继续代码实现,阻止字段使用、摘要、后置校验、联调和付款体验。字段校验不等于支付测试;仅完整 402 链路满足 flow 才可称沙箱测试通过。
17
17
  8. **异步通知**:AI 网页应用收款/AI 移动应用收款必须实现通知处理和交易查询。`notify_url` 是可选参数;生产也允许省略。未配置时不触发该地址的异步通知,必须由商家服务端通过 `alipay.trade.query` 主动确认支付结果,校验订单、金额、支付状态及归属,幂等更新订单;即使用户关闭页面,仍须继续处理查询重试和未决订单。如使用异步通知,配置商家已部署、支付宝服务端可公网访问的 HTTPS 地址并完成验签、关键字段校验、幂等、`success` 回写和补偿查询。不能只因没有公网通知地址阻止流程或判定不能上线;通知处理代码仍须实现,实际代码或支付结果确认链路缺陷仍是阻断项。
18
18
  9. **受控页面**:授权链接仅由 `auth.sh` 按固定产品/MCC 生成,只允许 `https://aipay.alipay.com/cli-auth` 及登记参数,禁用 CLI `verification_url`;公钥页和系统 opener 只走登记脚本。失败后宿主内置浏览器只可打开已交付的同一 URL 一次;仍失败才提示手动打开,再有限轮询。禁止搜索、改写或自动操作;opener/config 写失败不算业务失败。
19
- 10. **对客输出**:指定 runner/renderer/脚本时,stdout 是唯一对客正文,须原文回复且不加旁白;工具输出记录、折叠面板或日志不等于已对客发送。展示命令只执行登记单条命令,禁 `2>&1`、管道、`grep/sed/awk/tee`、临时包装或拆回 `jq/printf/renderer`。除 `self_update.mjs` 的 `SELF_UPDATE:*` stderr 终态外,内部事实行均以 `ALIPAY_AIPAY_INTERNAL:` 开头;宿主合并输出时仍整行剔除,严禁对客。`integration.start.confirm`、`onboarding.plan.confirm`、`sandbox.configuration.pending`、`sandbox.environment.summary`、`integration.safety.closeout` 和 `integration.checklist.result` 成功渲染时必须各自产生唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=<messageId>`;下一动作先将剔除内部行后的 stdout 原文作为独立可见消息送达,不得以工具面板、折叠输出、进度话术或最终答复代替,也不得在送达前继续调用工具。送达后同回合按 flow 继续,不等待回复。成功沙箱准备 `READY` 时 stdout 仍按 flow 静默,不构成交付消息;只有待配置正文和后置摘要需要交付。所有 `postRenderHintType=scanReturn` 的页面消息都是交付屏障(当前为 `auth.page`、`application.key.page`):先独立送达页面 stdout,再执行受控 opener 和有限轮询,不合并 pending/收口;不要求确认。阻塞正文后等待;剔除内部行后正文为空则直接转移。
19
+ 10. **对客输出**:指定 runner/renderer/脚本时,stdout 是唯一对客正文,须原文回复且不加旁白;工具输出记录、折叠面板或日志不等于已对客发送。展示命令只执行登记单条命令,禁 `2>&1`、管道、`grep/sed/awk/tee`、临时包装或拆回 `jq/printf/renderer`。除 `self_update.mjs` 的 `SELF_UPDATE:*` stderr 终态外,内部事实行均以 `ALIPAY_AIPAY_INTERNAL:` 开头;宿主合并输出时仍整行剔除,严禁对客。`integration.start.confirm`、`onboarding.plan.confirm`、`sandbox.configuration.pending`、`sandbox.environment.summary`、`integration.safety.closeout` 和 `integration.checklist.result` 在 flow 适用且成功渲染时必须各自产生唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=<messageId>`;下一动作先将剔除内部行后的 stdout 原文作为独立可见消息送达,不得以工具面板、折叠输出、进度话术或最终答复代替,也不得在送达前继续调用工具。送达后同回合按 flow 继续,不等待回复。成功沙箱准备 `READY` 时 stdout 仍按 flow 静默,不构成交付消息;只有待配置正文和后置摘要需要交付。所有 `postRenderHintType=scanReturn` 的页面消息都是交付屏障(当前为 `auth.page`、`application.key.page`):先独立送达页面 stdout,再执行受控 opener 和有限轮询,不合并 pending/收口;不要求确认。阻塞正文后等待;剔除内部行后正文为空则直接转移。
20
20
  11. **确定性转移**:固定脚本终态后立即转移;只执行动作处登记命令,禁止追加 `jq/cat/grep/curl` 或临时脚本重复解析。失败只走登记恢复;项目自检不绕过 Skill 脚本或打印敏感配置。
21
21
 
22
22
  ## 标准消息
@@ -82,7 +82,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" telemetry resolve-sessi
82
82
 
83
83
  每个登记 stage 动作前,Agent 回顾当前可见历史并得到 `HISTORY_COUNT`;只统计本 run `clarify_intent` 后的用户角色消息,无法可靠回顾时使用 `null`。调用能生成 stage 的业务命令时追加 `--telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT"`,由统一 gateway 在业务 parser 前剥离并传给唯一 stage 责任方,Agent 不再额外调用 `telemetry stage`。首次在产品/MCC 确认命令内部新建 run 时尚无 marker,该进程使用刚创建的 active run 且本次 history 固定为 0。`c4` 只承载 `user_input_after_clarify_intent`、`history_count`、`root_intent` 和按唯一非 summary event 数计算的 `progress_pct`;正式计数始终取 runtime counter,history 只诊断、不纠偏。
84
84
 
85
- 三种入口均只在无法确定产品时执行 `product-clarify` runner;产品明确但缺 MCC 用 `mcc-clarify`,且必须携带当前 `ROOT_INTENT`,由 runner 先创建或复用正式 telemetry run。已有经营描述、名称或编码时只执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" mcc resolve-plan --query "$MCC_SEARCH_QUERY" --product-type "$PRODUCT_TYPE" --root-intent "$ROOT_INTENT" [--semantic-terms-json "$MCC_SEMANTIC_TERMS_JSON"] [--agent-candidate-refs-json "$MCC_AGENT_CANDIDATE_REFS_JSON"] --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`。`ROOT_INTENT` 缺失或非法时 runner 必须停止,禁止依赖跨进程环境变量静默推断或在没有正式 run 的情况下继续 MCC 查询。非精确编码时,Agent 在首次调用中最多补充 12 个有原话依据的行业概念、经营对象或同义表达;本地结果为 `NONE`、候选冲突或低置信时,runner 只发出一次目录复核 marker,携带同一次 `queryMcc` 返回的当前产品 MCC 名称、描述和稳定引用,Agent 返回最多 8 个本轮目录引用后原样重跑;目录复核不新增 MCP/网络调用且不消耗语义重试预算。语义扩充仍受同一 `run + 用户输入 + 原始 query + 产品` 最多 2 次限制,复用同一 `USER_INPUT_ID`,每次只增加有原话依据且此前未使用的概念;达到上限仍为 `NONE` 时必须按既有 no-match 对客消息要求用户重新描述经营信息。禁止通过更换 query、重置参数或重复调用绕过上限,也禁止硬编码映射、自由提交 MCC code、远程语义或手拼候选。runner 按 Onboarding entry 严格校验当前产品 `queryMcc` 目录、联合排序原话、语义证据和目录引用,只为命中且 `needSpecialQual=true` 的候选调用一次 `batchQueryMcc`,并复用有效的同 run/产品候选快照。
85
+ 三种入口均只在无法确定产品时执行 `product-clarify` runner;产品明确但缺 MCC 用 `mcc-clarify`,且必须携带当前 `ROOT_INTENT`,由 runner 先创建或复用正式 telemetry run。已有经营描述、名称或编码时只执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" mcc resolve-plan --query "$MCC_SEARCH_QUERY" --product-type "$PRODUCT_TYPE" --root-intent "$ROOT_INTENT" [--agent-candidate-refs-json "$MCC_AGENT_CANDIDATE_REFS_JSON"] --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`。`ROOT_INTENT` 缺失或非法时 runner 必须停止,禁止依赖跨进程环境变量静默推断或在没有正式 run 的情况下继续 MCC 查询。合法 MCC 编码和规范化后的完整二级类目名称由 runner 直接匹配;其他自然语言只在同一次 `queryMcc` 返回的当前产品完整目录上触发一次受限 Agent 判断,Agent 根据用户完整原话返回按相关度排序的 0 到 8 个稳定目录引用。用户明确说明的行业、商品、服务对象、经营方式和场景必须作为约束;未说明的细分维度保持开放。非法结果只允许一次协议修复,修复不得重新解释用户意图;第二次非法、重复判断、结果变更、同一 `USER_INPUT_ID` 改写 query、动态目录变化或状态不可安全记录时立即停止,不回退字符匹配、不再次调用 Agent,也不进入授权或签约。首次合法结果与同一 `run + 产品 + USER_INPUT_ID + 原始 query + 动态目录摘要` 绑定;网络恢复时只允许同一结果幂等重放。目录判断和修复不新增 MCP、网络调用或用户确认。禁止业务词到 MCC 的硬编码映射、自由提交 MCC code、远程语义或手拼候选。runner 只为最终候选中 `needSpecialQual=true` 的 MCC 调用一次 `batchQueryMcc`,并复用有效的同 run/产品候选快照。
86
86
 
87
87
  代码开发或完整接入缺项目位置/服务端语言时,使用 `integration.context.required` 或 `integration.project_path.required` 标准消息;框架缺失不触发补问。先区分新建/复用,`PROJECT_INPUT` 保留原话。Agent 确定两类项目的真实 `PROJECT_PATH`,以 `resolve-project --project-path "$PROJECT_PATH" --intent <existing|new>` 交 runner 校验;`PROJECT_INPUT` 不得代替路径。默认新建也先选安全路径并显式传入。现有项目位置未知时先定位候选;路径经 `resolve-project` 后再用 `framework-resolve`。补齐前不初始化、装依赖或改文件。
88
88
 
package/skill-pre/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.1-pre
1
+ 1.8.3-pre
@@ -519,22 +519,20 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message ser
519
519
 
520
520
  ### 步骤 7:集成后说明
521
521
 
522
- **任务**:在最终校验前一次输出安全红线和上线指引,不得提前宣称集成已经完成
522
+ **任务**:按产品交付集成后说明,并进入步骤 8 代码开发校验。
523
523
 
524
524
  **完成条件**:
525
- - [INT.CLOSEOUT.SAFETY_AND_NEXT_STEPS_PRINTED] 已向用户明文输出安全红线和完整上线指引
525
+ - [INT.CLOSEOUT.SAFETY_AND_NEXT_STEPS_HANDLED] 已完成下述产品分支的集成后说明。
526
526
 
527
- **安全与上线提醒(必须明文打印给用户)**:使用 `../normal/json/customer-messages.json` 的 `integration.safety.closeout`,按 `aipay=AIPAY`、`webpay=WEBPAY`、`apppay=APPPAY` 映射产品并传入实际验收口径。模板覆盖私钥保护、支付结果依据、异常恢复、异步通知或 `Payment-Proof`/履约确认、生产配置、真实 `serviceId` 和私钥格式;不重复沙箱摘要、账号密码、Android 下载或步骤 6 体验。不得临场删减、拆分或维护近似话术。命令必须产生唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=integration.safety.closeout`;返回后的下一动作先将 stdout 原文独立送达,再进入步骤 8。必须执行:
527
+ 网页收款与按量付费直接进入步骤 8。
528
+
529
+ <!-- ALIPAY_AIPAY_PRODUCT:apppay:START -->
530
+ APP 支付使用 `integration.safety.closeout/APPPAY` 交付商家服务端与客户端的接入范围说明。命令必须产生唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=integration.safety.closeout`;返回后的下一动作先将 stdout 原文独立送达,再进入步骤 8:
528
531
 
529
532
  ```bash
530
- node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message safety-closeout --variant "$PRODUCT_VARIANT" --acceptance-summary "$ACCEPTANCE_SUMMARY" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
533
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message safety-closeout --variant APPPAY --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
531
534
  ```
532
-
533
- 生产密钥的一致性、语言格式、官方工具转换、沙箱/生产配置替换、`notify_url` 公网联调边界、按量付费 `api_mock_service_id` 替换和生产就绪表述限制均由上述一条标准消息统一输出。实际写入配置时仍使用不带 PEM 头尾、包装行或说明文字的原始私钥字符串;该执行细节不得省略或改写密钥内容。
534
-
535
- **签约衔接提醒(必须输出)**:
536
- - 如果当前意图是 `integration_only`:提醒用户正式上线前还需要完成对应支付产品的产品开通。
537
- - 如果当前意图是 `full_process`:本步骤只说明仍需完成步骤 8 集成校验;此时不展示签约待办、MCC、授权范围或材料。全部适用步骤通过时进入 onboarding;只有沙箱待配置且其余检查通过,或沙箱 `READY` 且仅剩非阻塞人工待验证项时,也以“部分通过”继续 onboarding;其他阻塞缺口仍停在代码开发。
535
+ <!-- ALIPAY_AIPAY_PRODUCT:END -->
538
536
 
539
537
  步骤 7 完成后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration checklist --product-type "$PRODUCT_TYPE" --project-path "$PROJECT_PATH" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`;只接受该命令生成的本轮 `CHECKLIST_SCOPE_RECEIPT`,不得使用修复前或其他项目的 receipt。
540
538
 
@@ -556,22 +554,19 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message saf
556
554
 
557
555
  步骤 3 至步骤 7 的必要依据、配置摘要、代码修复、网站回跳或按量付费联调在本轮无法继续时,跳过所有依赖该失败事实的后续动作,但仍进入本步骤:把未满足条件和被跳过动作按实际证据标记为失败或人工待验证,并使用同一 `integration.checklist.result` 收口。不得为了生成结果重新执行已阻断的外部动作。该 runner 只能在当前产品匹配且未收口的 `integration_only|full_process` active run 内执行;telemetry 开启时缺少或不匹配 run 会直接停止,禁止完成 checklist 后静默丢失 `integration.complete_coding`。`full_process` 中,只有沙箱为 `CREATE_PENDING|VERIFY_PENDING` 且代码实现与不依赖沙箱的安全检查均通过、或沙箱为 `READY` 且仅剩非阻塞人工待验证项时,才在输出标准“部分通过”结果后继续 onboarding;存在其他代码、安全或必要依据失败时仍停在代码开发。
558
556
 
559
- 校验项包括:
560
- - 签名验签
561
- - 异步通知
562
- - 异常处理
563
-
564
- > 详细校验清单已附在当前阶段 bundle 的“当前产品适用校验清单”。
565
-
566
557
  **验收阶段边界**:本轮代码开发按沙箱集成验收;checklist 第七节中尚未开通产品或尚未取得、切换生产实值的检查,记为当前阶段不适用并保留上线前待办,不计入失败项或人工待验证项,不单独阻止 Onboarding。仍须检查生产配置加载边界、环境隔离和所有适用代码/安全控制;已发现的实现缺陷、泄露或环境混用仍是阻断缺口。不得为完成本轮检查索取生产私钥、提前改用生产配置或宣称生产就绪。
567
558
 
568
- **校验完整性要求**:内部必须覆盖当前 bundle 中适用于目标产品的密钥与安全、异步通知、接口覆盖、支付结果处理、按量付费专项、退款、上线前和结果输出章节,不得只检查上方三个摘要项。checklist 校验结果段落:通过时只输出通过结论和下一步;完整接入部分通过或未通过时只输出实际未完成项、人工待验证项和下一步;仅代码开发不展示“未完成项”“人工待验证”独立标签,将实际失败问题及下一步放在【当前状态】,需核实事项只在上线关键点内列一次;仅代码开发另由同一 renderer 追加下述最终摘要。联调或付款体验结论不重复展开;仅网页收款在仅代码开发的最终 checklist 上线关键点前展示步骤 5 已交付摘要中的三项买家信息,完整接入则留到 Onboarding 最终总收口;按量付费与 APP 支付最终 summary 不展示沙箱配置。通过项与不适用项无需逐行展开,用户要求明细时再输出完整逐项结果。精简输出不得导致任何适用校验被跳过。
559
+ **校验完整性要求**:内部必须覆盖当前 bundle 中适用于目标产品的密钥与安全、异步通知、接口覆盖、支付结果处理、按量付费专项、退款、上线前和结果输出章节。checklist 校验结果段落:通过时只输出通过结论和下一步;完整接入部分通过或未通过时只输出实际存在的未完成项、人工待验证项和下一步;两类缺口分别展示,不把人工待验证项复制为未完成项,无项目时不输出对应标签;仅代码开发不展示“未完成项”“人工待验证”独立标签,将实际失败问题及下一步放在【当前状态】,需核实事项只在上线关键点内列一次;仅代码开发另由同一 renderer 追加下述最终摘要。联调或付款体验结论不重复展开;仅网页收款在仅代码开发的最终 checklist 上线关键点前展示步骤 5 已交付摘要中的三项买家信息,完整接入则留到 Onboarding 最终总收口;按量付费与 APP 支付最终 summary 不展示沙箱配置。通过项与不适用项无需逐行展开,用户要求明细时再输出完整逐项结果。精简输出不得导致任何适用校验被跳过。
569
560
 
570
561
  先汇总 checklist 证据;本轮可修复时按上述有限修复预算处理,只定向复检受影响项,不渲染中间结果。项目快照变化会使旧 `CHECKLIST_SCOPE_RECEIPT` 失效,必须重新加载本阶段并重跑受影响检查。
571
562
 
572
- 项目不再变化且准备生成最终结论时,按 `aipay=AIPAY`、`webpay=WEBPAY`、`apppay=APPPAY` 得到 `PRODUCT_VARIANT`。下方唯一 runner 会重算项目快照、校验 scope,并执行固定 implementation audit;审计只读非测试生产源码,检查核心接口标记和登记的高置信度危险模式,不替代完整 checklist,也不接受 Agent 审计 receipt。
563
+ 项目不再变化且准备生成最终结论时,下方唯一 runner 会重算项目快照、校验 scope,并执行固定 implementation audit;审计只读非测试生产源码,检查核心接口标记和登记的疑似危险模式,不替代完整 checklist,也不接受 Agent 审计 receipt。
564
+
565
+ 若存在未排除的审计命中且未传 finalize,stdout 为空,stderr 只接受唯一 `ALIPAY_AIPAY_INTERNAL:CHECKLIST_AUDIT={state:"REPAIR_REQUIRED",findings:[...]}`。`findings` 是待核对线索,不凭关键字距离认定实际缺陷。Agent 对同一快照的每个命中先核对一次当前源码、实际控制流或配置依赖:有明确依据证明误报才排除;真实缺陷或证据不足仍阻断,禁止仅改名、搬动代码或改写正确实现来迎合扫描。不能因为接口标记存在就省略完整业务审查。
573
566
 
574
- 若审计发现问题且命令未传 `--finalize-audit-findings true`,stdout 为空,stderr 只接受唯一 `ALIPAY_AIPAY_INTERNAL:CHECKLIST_AUDIT={state:"REPAIR_REQUIRED",findings:[...]}`。本轮仍有修复预算时先修复,只定向复检受影响项,重新加载 checklist 阶段取得新 scope,再用更新后的实际证据执行同一结论命令,禁止渲染中间结果。预算耗尽、无进展或无法修复时向同一命令追加 `--finalize-audit-findings true`,runner 将 findings 合入“未通过”并收口;该内部重跑不新增用户操作点。`full_process` 必须停在 Integration。
567
+ 需要记录核对时,向同一结论命令追加 `--audit-review "$AUDIT_REVIEW_JSON"`。该值为 JSON 数组,每项只含 `findingId`(当前 findings 中的 `id`)、`decision`(`FALSE_POSITIVE|CONFIRMED|UNRESOLVED`)、`evidence`(1—20 项)。每条 evidence 只含 `path`(当前项目生产源码的规范化相对路径,使用 `/`)、`line`(从 1 开始的非空源码行号)、`reason`(12—2000 字符单行具体理由,说明该代码如何证明误报或实际缺口)。禁止笼统“已检查/正常”、复制密钥或凭证;通过宿主参数数组或安全引用传 JSON,不手写转义链。runner 核对 finding 与当前产品/快照绑定、路径及行有效性;理由是否成立仍由 Agent 对实际代码负责,不能声称 runner 已证明业务正确。只有有依据的 `FALSE_POSITIVE` 可排除;未提供核对、`CONFIRMED` 或 `UNRESOLVED` 均继续阻断。代码或配置内容变化后旧 findingId 失效,不复用旧核对。
568
+
569
+ 仅排除误报且项目未变时,复用当前 scope 和已有检查证据再次执行结论命令,不重跑测试。真实缺陷有修复预算时只修复并定向复检受影响项,重新加载 checklist 取得新 scope 后重算命中;不得借核对、刷新 scope 或新 findingId 重置同一问题预算。核对后剩余缺陷预算耗尽、无进展或无法确认/修复时,保留已有合法核对并追加 `--finalize-audit-findings true`,将其余 findings 合入“未通过”收口,未核对或无法确认的项保留“静态扫描疑点尚未排除”措辞,不伪称已确认缺陷;只有全部误报已排除时不得传 finalize。最终只渲染一次,`full_process` 有剩余阻断时停在 Integration。
575
570
 
576
571
  对客结论统一使用 `integration.checklist.result`;整体结论、失败/部分通过项和人工待验证项必须来自最终一轮 checklist 实际证据。最终渲染成功时必须产生唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=integration.checklist.result`;命令返回后的下一动作先将 stdout 原文独立送达,不得以工具面板或自写总结替代。首次调用前先按以下完整契约确定参数,禁止改枚举:
577
572
 
@@ -579,9 +574,9 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message saf
579
574
  - `failedItems`/`manualItems` 必须是含下一步的受控单行值,无项目传“无”。先按证据分类:单纯尚无公网 `notify_url` 属于通用上线提醒,用户尚未自愿完成沙箱付款属于可选体验,两者不得进入 `failedItems`、`manualItems` 或影响完成判定的待办;付款入口及完整指引仍须按步骤 6 交付。实际 UI/已选通知链路证据缺口进入 `manualItems` 并保留部分通过,代码/安全缺陷进入 `failedItems` 并按原门禁处理。不得为每个项目固定添加 UI 或通知幂等待验证项;不得仅因沙箱摘要未展示而改变分类。renderer 拒绝把上述通用提醒、可选体验作为缺口的旧输入;遇到分类错误只修正结果参数,不重新执行已完成检查。`sandboxConfigState` 只允许 `READY|CREATE_PENDING|VERIFY_PENDING`;除沙箱配置及其直接依赖外存在代码、安全或必要依据缺口时 `blockingDefectState=PRESENT`,否则 `NONE`。待配置时 `failedItems` 必须列出沙箱配置及依赖动作未完成;恢复口令只由步骤 1/3 已发送的 `sandbox.configuration.pending` 正文提供。
580
575
  - `executionMode`:`integration_only` 固定“仅代码开发”,`nextFlowReminder` 固定“正式上线前还需完成支付产品-产品开通。”。`full_process` 固定“完整接入”:`READY` 且“通过”时提醒“代码开发校验通过后将自动进入支付产品-产品开通;未通过时停留在代码开发。”;沙箱待配置且 `blockingDefectState=NONE` 时提醒“沙箱配置尚未完成,但不阻塞本轮继续支付产品-产品开通;完成配置后再进行沙箱测试。”;`READY`、`failedItems=无` 且仅有人工待验证项时提醒“代码开发自动校验已完成,仍有人工待验证项;本轮继续产品开通。”,并把 `manualItems` 原样带入 Onboarding Step 6。其他阻断结果停在 Integration。
581
576
  - 上述 `nextFlowReminder` 仍按代码校验事实传入;Windows `CODE_ONLY` 且 `executionMode=完整接入` 时,renderer 在原有校验后统一使用消息目录的 `windowsCodeOnlyReminder` 替换对客后续提示。无论代码通过、沙箱待配置、仅人工待验证或阻塞失败,都不得承诺本轮继续开通;本轮停在代码开发,工具恢复后按 `../normal/windows-environment.md` 重新执行原根意图的 `windows-entry`,取得唯一 `READY` 后才可恢复开通。该显示覆盖不改变代码结果、沙箱状态、失败项或现有门禁。
582
- - 仅 `AIPAY` 传 `sandboxResult`:步骤 6 端到端联调通过为“AI 按量付费沙箱服务端联调通过”,否则为“AI 按量付费沙箱服务端联调未通过”。仅 `WEBPAY` 传 `webpayExperienceResult`,按步骤 6 证据从三个登记值中选择:已提供入口指引且待用户实际付款、未提供完整入口指引、或用户已完成一笔沙箱付款且结果有核验证据。`APPPAY` 不传这两个参数。
577
+ - 仅 `AIPAY` 传 `sandboxResult`:步骤 6 端到端联调通过为“AI 按量付费沙箱服务端联调通过”,否则为“AI 按量付费沙箱服务端联调未通过”。仅 `WEBPAY` 传 `webpayExperienceResult`,按步骤 6 证据从本 bundle 附带的“WEBPAY 结果参数精确枚举”中选择原值;该列表直接来自当前消息目录。`APPPAY` 不传这两个参数。
583
578
 
584
- 必须从本 flow 所在目录执行当前产品对应单行 runner;runner stdout 是唯一对客正文,必须把 stdout 原文作为当前回复正文发给用户:
579
+ 执行当前产品对应单行 runner;runner stdout 是唯一对客正文,必须把 stdout 原文作为当前回复正文发给用户:
585
580
 
586
581
  <!-- ALIPAY_AIPAY_PRODUCT:aipay:START -->
587
582
  ```bash
@@ -607,9 +602,17 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message che
607
602
 
608
603
  这些产品专属字段只用于 renderer 校验最终结论,不在 checklist 对客结果中重复展示。APP 支付未来沙箱测试对客引导的维护 TODO 只保留在消息目录对应变体,不得渲染给用户;补充时必须同步本 flow、`modules/checklist.md` 和测试。
609
604
 
610
- **完成语义**:只有步骤 1-8 的适用完成条件均满足且 `sandboxConfigState=READY` 后,才可声明支付产品-代码开发完成。沙箱待配置但代码实现与其余检查通过时只能输出“部分通过”,不得改写为完成;存在其他未通过项时输出“未通过”;若配置已就绪且仅剩无法自动验证项,输出“部分通过”并登记人工待验证项,不得改写为完成或生产就绪。
605
+ **完成语义**:只有步骤 1-8 的适用完成条件均满足且 `sandboxConfigState=READY` 后,才可声明支付产品-代码开发完成。沙箱待配置但代码实现与其余检查通过时只能输出“部分通过”,不得改写为完成;存在其他未通过项时输出“未通过”;若配置已就绪且仅剩无法自动验证项,输出“部分通过”并登记人工待验证项,不得改写为完成或生产就绪。沙箱状态不得被产品开通结果覆盖。
606
+
607
+ 完成结论必须逐项来自本轮实际检查。配置内容、当前语言字段选择、实际加载路径/加载器或适用保护变化导致旧证据失效时,只复检受影响的配置项;证据仍有效时复用步骤 3/5 的实际结果,不因进入步骤 8 再做一遍。Windows LEGACY/CODE_ONLY 手工配置沿用原位检查方式,不改用快速沙箱脚本。沙箱待配置时复用实际终态、跳过依赖动作,不读取、创建或循环复核配置。按量付费联调只接受步骤 6 本轮 `run --auto-complete --require-payment-validation` 的实际成功,不重复联调;不得由 Agent 自填 `PASS`。
608
+
609
+ 仅 Unix/macOS/Linux 或 Windows READY 的快速沙箱原为 `READY`、且配置内容/文件保护证据失效需要重新校验时,按本轮有限预算执行一次固定命令;仅加载器变化时定向审查加载器及 SDK 映射,不因此重验原始配置:
610
+
611
+ ```text
612
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" sandbox reverify "$PROJECT_PATH" "$SERVER_LANGUAGE" --telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
613
+ ```
611
614
 
612
- 完成结论必须逐项来自本轮实际检查:首次覆盖时检查项目和代码;局部修复后的检查与下述配置验证仅在相关证据受影响时重新执行,未受影响的有效证据沿用;Unix/macOS/Linux 或 Windows READY 只有 `sandboxConfigState=READY` 时才重新执行严格的 `sandbox_config.sh verify`,待配置时直接复用本轮脚本终态并标记相关项未完成,不得在 checklist 中再次创建或复核;Windows LEGACY/CODE_ONLY 只有 `READY` 时重新检查项目实际读取的本地配置、密钥格式和版本控制保护,`VERIFY_PENDING` 时直接标记配置及依赖动作未完成;按量付费联调只接受本轮 `run --auto-complete --require-payment-validation` 的实际成功;用户确认项只接受当前摘要后的回复。任何一项缺失、失败或无法执行都标记为失败或人工待验证,不得由 Agent 自填 `PASS`。
615
+ 只接受唯一 `ALIPAY_AIPAY_INTERNAL:FLOW:SANDBOX_CONFIG_READY` 或 `ALIPAY_AIPAY_INTERNAL:FLOW:SANDBOX_CONFIG_PENDING_VERIFY` 及成功退出。前者复用更新后就绪证据,后者更新为 `VERIFY_PENDING`、交付脚本已有待配置正文并停止沙箱依赖动作;异常或不可唯一解析时保留阻断事实并收口,不猜测就绪、不换命令追加尝试。该动作不创建配置,不修改原脚本内部重试预算;项目内容因此变化时仅刷新 scope、复检受影响项,不全量重测。
613
616
 
614
617
  **沙箱结论边界**:步骤 8 的代码与配置校验不得把步骤 3 的字段完整性、网站支付的付款指引或 APP 支付跳过步骤 6 改写为“沙箱测试通过”。只有按量付费步骤 6 已取得完整端到端成功证据时,最终摘要才可复用该测试结论。
615
618
 
@@ -620,10 +623,4 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message che
620
623
  仅在用户报告报错、错误码、问题、排查、调试或异常时读取 `modules/troubleshooting-flow.md`;正常路径不得预加载。先确认产品,有错误码时再确认接口;禁止猜测密钥格式、MCP 方法或业务规则。
621
624
 
622
625
  ---
623
-
624
- ## 代码开发完成确认
625
-
626
- - `integration_only`:仅由 `integration.checklist.result` 输出未通过项、人工待验证项和产品开通提醒,不追加第二份话术。
627
- - `full_process`:Windows `CODE_ONLY` 始终先停在产品开通前,环境恢复并复检取得唯一 `READY` 后才按原完成条件衔接。其他环境下,全部适用步骤通过后进入 `references/onboarding/flow.md`;仅沙箱待配置,或沙箱 `READY` 且仅剩非阻塞人工待验证项时,以“部分通过”继续并保留未完成事实。其他代码、安全或依据缺口停在 Integration,不提前执行 Onboarding。
628
- - 未通过时不得宣称完成;沙箱状态不得被产品开通结果覆盖。
629
626
  <!-- ALIPAY_AIPAY_FLOW:INTEGRATION_CHECKLIST:END -->
@@ -56,7 +56,7 @@
56
56
 
57
57
  | 校验项 | 校验要求 | 说明 |
58
58
  |----------|----------|----------|
59
- | 前台同步结果防范 | 前台同步跳转结果仅作通知,**不能作为支付成功的依据** | 必须以异步通知或查询接口结果为准 |
59
+ | 支付成功依据与商家资损防范 | 前台同步跳转结果仅作通知,**不能作为支付成功的依据**;必须以验签通过的异步通知或交易查询结果为准 | 防止用户未付款但商家判定成功 |
60
60
  | AI 网页应用收款回跳默认行为 | 用户未明确关闭同步回跳时,已配置项目实际 `return_url` | 地址不得包含示例域名、占位符、猜测端口或未实现路由 |
61
61
  | AI 网页应用收款回跳页可用性 | 启动服务后 GET 访问精确 `return_url`,并在 Agent 具备浏览器/UI 能力时验证页面正常渲染;当前环境无法取得 UI 证据时标记人工待验证 | 不得出现 404、500、空白页、可见报错、认证循环或重定向循环;单页应用直接刷新路由也必须可用 |
62
62
  | AI 网页应用收款回跳状态展示 | 先验证同步参数签名,或使用与当前用户会话绑定的服务端订单标识;再通过服务端查询或已验签通知状态展示最终支付结果 | 同步回跳参数不得直接改写订单或作为支付成功依据,不得使用可任意修改的订单号访问其他订单 |
@@ -64,7 +64,6 @@
64
64
  | 支付成功判断 | 仅 `trade_status` 为 `TRADE_SUCCESS` 或 `TRADE_FINISHED` 时才认定付款成功 | 其他状态不算支付成功 |
65
65
  | 主动查询兜底 | 主动查询订单状态必须作为支付结果确认的兜底逻辑 | 无论异步通知是否到达,都应具备主动查询订单状态的能力,防止因网络抖动、通知延迟或丢失导致的状态不一致 |
66
66
  | 未知异常处理 | 网络超时或未知异常时,必须调用查询接口确认 | 不能简单推断为成功或失败 |
67
- | 商家资损防范 | 不依赖前台同步结果,以异步通知或查询为准 | 防止用户未付款但商家判定成功 |
68
67
  | 用户资损防范 | 未确认支付结果前不要求用户再次付款 | 防止用户已付款但商家判定失败导致重复扣款 |
69
68
 
70
69
  > AI 按量付费不使用前台同步跳转结果和异步通知作为支付成功依据,需按下一节专项校验。
@@ -119,6 +118,7 @@
119
118
  | AI 按量付费 serviceId 替换 | 生产配置中不得保留 `api_mock_service_id` | 上线前替换为服务市场实际返回的真实 `serviceId` |
120
119
  | 证书模式 | 只有明确采用证书模式时才切换为同一生产应用的完整证书链并使用证书执行 API | 应用公钥证书、支付宝公钥证书、支付宝根证书必须同时配置;公钥模式不得调用证书执行 API |
121
120
  | 产品开通状态 | 确认产品已在生产环境开通 | 沙箱无需开通,生产环境需要申请开通 |
121
+ | 人工代码审查 | 上线前必须完成人工代码审查 | 生产上线前检查 |
122
122
  | 私钥安全 | 私钥不在代码、日志、公共仓库中明文存储 | 使用安全的方式管理私钥 |
123
123
  | 日志安全 | 日志中不打印敏感信息(私钥、用户信息等) | 防止信息泄露 |
124
124
  | HTTPS 通信 | 生产环境必须使用 HTTPS | 保证传输安全 |
@@ -135,9 +135,7 @@
135
135
  > - ➖ 不适用:当前集成场景不涉及此项
136
136
  > - 🟡 人工待验证:当前环境无法自动取得充分证据
137
137
 
138
- 首次按当前证据覆盖全部适用项;本轮可修复时只在 `../flow.md` 步骤 8 的有限预算内修复、定向复检,不渲染中间结果。严禁循环检测;局部修复后只检查修复项及直接受影响项,未受影响且证据仍有效的项目不重复执行,严禁重新运行全量测试。定向复检仍失败或没有新进展时按实际未解决项收口,不以刷新快照或 scope 重置预算。项目稳定后按 `../flow.md` 执行唯一 `checklist-result`,由 runner 在同一次最终调用中校验 scope 并对同一项目快照执行固定 implementation audit。审计失败是阻断缺口,不能被 Agent 自报结论覆盖;可修复时先返回结构化 findings,项目变化后重新加载 checklist 阶段取得新 scope。
139
-
140
- 最终 action、完整参数和失败转移只以 `../flow.md` 步骤 8 为准,本模块不复制命令。runner 只接受最终一轮实际证据:Unix/macOS/Linux 或 Windows READY 的 `sandboxConfigState` 复用脚本终态,Windows LEGACY/CODE_ONLY 复用步骤 1/3 的 `READY|VERIFY_PENDING`;待配置时不重跑或读取配置,并把配置及依赖动作列为未完成。
138
+ 执行命令、有限修复预算、禁止循环与全量重测、证据复用、scope 刷新及最终审计核对/失败收口,统一按同一阶段 bundle 中 `../flow.md` 步骤 8 执行。本节保留逐项状态、产品证据和缺口分类,不复制执行规则。
141
139
 
142
140
  各产品结论差异如下,对客正文只在消息目录维护:
143
141
 
@@ -147,7 +145,7 @@
147
145
  | `WEBPAY` | 未提供浏览器付款入口和完整指引时不得通过;仅未配置 `notify_url` 不判为失败;生产就绪需按所选通知或可靠主动查单链路验证 | 失败/部分通过项、实际人工待验证项;可选付款体验不计入缺口 |
148
146
  | `APPPAY` | 当前没有沙箱付款验证结论,不据此生成通过或失败,也不临场补充沙箱付款步骤 | 失败/部分通过项、人工待验证项 |
149
147
 
150
- `failedItems`、`manualItems` 必须包含确定下一步,无对应项时传“无”。生成结果前完成分类:普通上线提醒(包括仅未部署公网 `notify_url`)和可选沙箱付款体验不得混入这两个字段或影响完成判定的待办;它们沿用已有上线说明/付款指引。真实 UI、已选通知链路的证据缺口才进入 `manualItems`,并在最终上线关键点逐项可见;已确认的实现缺陷进入 `failedItems`。不固定增加待验证事项,不在 summary 末端隐藏实际缺口;可选沙箱配置区块有无不参与完成判定。`overallResult=通过` 要求两者为“无”、`sandboxConfigState=READY`、`blockingDefectState=NONE`;“部分通过”至少有一类缺口;“未通过”必须列出失败项。`blockingDefectState` 只表示沙箱配置及其直接依赖以外的代码、安全或必要依据缺口;单纯 UI、浏览器或已选通知链路实际联调待验证只进入 `manualItems`;仅未部署公网地址不计入其中。`full_process` 仅在沙箱待配置且无其他阻断,或 `READY` 且只剩非阻塞人工项时继续 Onboarding。
148
+ `failedItems`、`manualItems` 必须包含确定下一步,无对应项时传“无”。生成结果前完成分类:普通上线提醒(包括仅未部署公网 `notify_url`)和可选沙箱付款体验不得混入这两个字段或影响完成判定的待办;它们沿用已有上线说明/付款指引。真实 UI、已选通知链路的证据缺口才进入 `manualItems`,并在最终上线关键点逐项可见;已确认的实现缺陷进入 `failedItems`。不固定增加待验证事项,不在 summary 末端隐藏实际缺口;可选沙箱配置区块有无不参与完成判定。`overallResult=通过` 要求两者为“无”、`sandboxConfigState=READY`、`blockingDefectState=NONE`;“部分通过”至少有一类缺口且 `blockingDefectState=NONE`;存在代码、安全或必要依据阻断缺口时必须“未通过”并列出失败项。`blockingDefectState` 只表示沙箱配置及其直接依赖以外的代码、安全或必要依据缺口;单纯 UI、浏览器或已选通知链路实际联调待验证只进入 `manualItems`;仅未部署公网地址不计入其中。`full_process` 仅在沙箱待配置且无其他阻断,或 `READY` 且只剩非阻塞人工项时继续 Onboarding。
151
149
 
152
150
  内部保留适用项依据;明细按实际证据输出,不维护第二份模板。同一次代码开发只渲染一次;renderer stdout 是默认收口的唯一对客正文,前后不得追加摘要、风险或待办。
153
151
 
@@ -151,7 +151,7 @@ renderer 固定输出唯一摘要表、密钥字段已落盘提示和“配置
151
151
 
152
152
  ### 5.3 配置准备完成后提示(卡点)
153
153
 
154
- `sandbox.environment.summary` 后立即渲染 `sandbox.environment.reminder`:Unix/macOS/Linux 或 Windows READY 由 `sandbox_config.sh summary` 使用 `DEFAULT`,Windows LEGACY/CODE_ONLY 使用上方 `WINDOWS` 命令。该消息说明测试资金边界和配置位置;`DEFAULT` 另提醒代码开发阶段自动配置沙箱,正式上线前由用户替换为产品开通流程取得的线上应用配置。安全控制由脚本执行,详细生产配置与上线要求由步骤 7 的 `integration.safety.closeout` 输出。创建阶段不渲染,不维护文案副本。
154
+ `sandbox.environment.summary` 后立即渲染 `sandbox.environment.reminder`:Unix/macOS/Linux 或 Windows READY 由 `sandbox_config.sh summary` 使用 `DEFAULT`,Windows LEGACY/CODE_ONLY 使用上方 `WINDOWS` 命令。该消息说明测试资金边界和配置位置;`DEFAULT` 另提醒代码开发阶段自动配置沙箱,正式上线前由用户替换为产品开通流程取得的线上应用配置。安全控制由脚本执行;三款产品的生产配置与上线要求统一在最终 summary 展示,步骤 7 仅 APP 支付使用 `integration.safety.closeout` 说明服务端与客户端的接入范围。创建阶段不渲染,不维护文案副本。
155
155
 
156
156
  ### 5.4 沙箱对客展示白名单
157
157
 
@@ -185,7 +185,7 @@ renderer 固定输出唯一摘要表、密钥字段已落盘提示和“配置
185
185
  - **默认分支**:“付款后确认浏览器自动返回商户结果页,页面可正常展示并通过服务端查询呈现订单状态。”
186
186
  - **关闭分支**:“付款后不会自动返回商户网站;请手动返回商户订单查询页并刷新或查询订单状态。”
187
187
 
188
- 两个分支都必须继续提醒:前台页面或同步回跳参数不是支付成功依据,最终结果以验签通过的异步通知或交易查询结果为准。异步通知只有在 `notify_url` 可被支付宝服务器公网访问时才能联调;当前仅有本地或局域网地址时保留上线前提醒,不单独记为本轮人工待验证。生产可省略 `notify_url`,但必须验证服务端可靠主动查单、持久化幂等及后台重试;当前本地验收不等于生产上线完成。
188
+ 两个分支的内部验收要求保持:前台页面或同步回跳参数不是支付成功依据,最终结果以验签通过的异步通知或交易查询结果为准。付款指引不重复打印该实现要求,也不打印“用户暂不付款只记为待体验”等内部判定说明;支付结果依据统一在最终 summary 提醒。异步通知只有在 `notify_url` 可被支付宝服务器公网访问时才能联调;当前仅有本地或局域网地址时保留上线前提醒,不单独记为本轮人工待验证。生产可省略 `notify_url`,但必须验证服务端可靠主动查单、持久化幂等及后台重试;当前本地验收不等于生产上线完成。
189
189
 
190
190
  **下载渠道红线:**
191
191
  - 严禁声称 iOS 支持安装沙箱版支付宝。
@@ -58,7 +58,7 @@ Integration Worker 不执行 Onboarding、self-update、`telemetry start-run`、
58
58
 
59
59
  遇到阻塞时,先判断是否能在当前授权和工具范围内自行解决;能解决就继续处理并验证,不能解决才返回 STOP。不得将单次失败或尚未定位原因视为无法继续。恢复仍遵守原 flow 的权限、失败分支和重试边界;checklist 必须遵守原 flow 的有限修复和定向复检预算,禁止局部修复后全量测试,主 Agent 的核实/继续请求不得重置该预算;有新证据或可验证的修复方向时继续,无新进展时停止重复尝试并如实说明,不伪造通过。STOP 的 `remaining_actions` 须简短列明实际错误、已尝试的恢复及所需外部条件;尚未确认的原因明确标为未知,不返回源码、完整日志或敏感值。
60
60
 
61
- 原 flow 要求对客送达的登记 runner/script stdout 都要进入交接对象。`integration.start.confirm` 已由主 Agent 在 Worker 转移前按唯一 marker 独立交付;Worker 从步骤 3 开始,以 flow、消息目录和 runner 契约为准收集后续对客 stdout,其中 `sandbox.configuration.pending`、`sandbox.environment.summary`、`integration.safety.closeout` 和 `integration.checklist.result` 必须各自带唯一 `CUSTOMER_MESSAGE_DELIVERY_REQUIRED=<messageId>` marker,缺失、重复或对应正文为空时按交接失败处理;按发生顺序剔除 `ALIPAY_AIPAY_INTERNAL:` 行后保存到 `customer_messages`。过程 stdout、分析、命令和日志不得进入交接对象。登记正文不改写、不总结;空正文不加入。沙箱账号只允许存在于原始登记正文中,不得拆出、复述或进入其他字段。返回结果只依据最终 checklist 的实际证据;只有原 flow 允许衔接时 `next_phase=ONBOARDING`,其他情况为 `STOP`。
61
+ 原 flow 要求对客送达的登记 runner/script stdout 都要进入交接对象。`integration.start.confirm` 已由主 Agent 在 Worker 转移前按唯一 marker 独立交付;Worker 从步骤 3 开始,以 flow、消息目录和 runner 契约为准收集后续对客 stdout,其中 `sandbox.configuration.pending`、`sandbox.environment.summary`、`integration.safety.closeout` 和 `integration.checklist.result` 必须各自带唯一 `CUSTOMER_MESSAGE_DELIVERY_REQUIRED=<messageId>` marker,缺失、重复或对应正文为空时按交接失败处理;按发生顺序剔除 `ALIPAY_AIPAY_INTERNAL:` 行后保存到 `customer_messages`。网页收款与按量付费步骤 7 不产生 `integration.safety.closeout`,其缺席不是交接失败,不要求补发;仅 APP 支付按该步骤校验范围说明交付。过程 stdout、分析、命令和日志不得进入交接对象。登记正文不改写、不总结;空正文不加入。沙箱账号只允许存在于原始登记正文中,不得拆出、复述或进入其他字段。返回结果只依据最终 checklist 的实际证据;只有原 flow 允许衔接时 `next_phase=ONBOARDING`,其他情况为 `STOP`。
62
62
 
63
63
  ## 返回协议
64
64