@alipay/alipay-aipay 1.7.0 → 1.7.2

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 (169) hide show
  1. package/README.md +30 -0
  2. package/dist/commands/install-current.js +15 -7
  3. package/dist/commands/install.js +20 -16
  4. package/dist/commands/uninstall.js +8 -3
  5. package/dist/commands/update.js +34 -16
  6. package/dist/index.js +10 -4
  7. package/dist/utils/channels.js +67 -0
  8. package/dist/utils/config.js +15 -11
  9. package/dist/utils/file.js +23 -10
  10. package/dist/utils/npm.js +19 -33
  11. package/package.json +8 -3
  12. package/skill/SKILL.md +2 -0
  13. package/skill/references/normal/json/release-channel.json +1 -0
  14. package/skill/references/normal/scripts/self_update.mjs +62 -17
  15. package/skill/references/normal/self-update.md +3 -1
  16. package/skill-pre/SKILL.md +65 -0
  17. package/skill-pre/VERSION +1 -0
  18. package/skill-pre/references/integration/flow.md +602 -0
  19. package/skill-pre/references/integration/modules/alipay-sdk-reminder.md +281 -0
  20. package/skill-pre/references/integration/modules/checklist.md +154 -0
  21. package/skill-pre/references/integration/modules/code-examples/csharp/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +199 -0
  22. package/skill-pre/references/integration/modules/code-examples/csharp/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/345/205/263/351/227/255/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +68 -0
  23. package/skill-pre/references/integration/modules/code-examples/csharp/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +83 -0
  24. package/skill-pre/references/integration/modules/code-examples/csharp/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +80 -0
  25. package/skill-pre/references/integration/modules/code-examples/csharp/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +73 -0
  26. package/skill-pre/references/integration/modules/code-examples/csharp/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +62 -0
  27. package/skill-pre/references/integration/modules/code-examples/csharp/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +132 -0
  28. package/skill-pre/references/integration/modules/code-examples/csharp/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +640 -0
  29. package/skill-pre/references/integration/modules/code-examples/java/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +184 -0
  30. package/skill-pre/references/integration/modules/code-examples/java/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/345/205/263/351/227/255/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +72 -0
  31. package/skill-pre/references/integration/modules/code-examples/java/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +96 -0
  32. package/skill-pre/references/integration/modules/code-examples/java/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +81 -0
  33. package/skill-pre/references/integration/modules/code-examples/java/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +77 -0
  34. package/skill-pre/references/integration/modules/code-examples/java/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +69 -0
  35. package/skill-pre/references/integration/modules/code-examples/java/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +138 -0
  36. package/skill-pre/references/integration/modules/code-examples/java/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemoController.md +623 -0
  37. package/skill-pre/references/integration/modules/code-examples/nodejs/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +135 -0
  38. package/skill-pre/references/integration/modules/code-examples/nodejs/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/345/205/263/351/227/255/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +51 -0
  39. package/skill-pre/references/integration/modules/code-examples/nodejs/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +63 -0
  40. package/skill-pre/references/integration/modules/code-examples/nodejs/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +59 -0
  41. package/skill-pre/references/integration/modules/code-examples/nodejs/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +54 -0
  42. package/skill-pre/references/integration/modules/code-examples/nodejs/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +84 -0
  43. package/skill-pre/references/integration/modules/code-examples/nodejs/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +71 -0
  44. package/skill-pre/references/integration/modules/code-examples/nodejs/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +498 -0
  45. package/skill-pre/references/integration/modules/code-examples/php/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +157 -0
  46. package/skill-pre/references/integration/modules/code-examples/php/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/345/205/263/351/227/255/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +59 -0
  47. package/skill-pre/references/integration/modules/code-examples/php/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +73 -0
  48. package/skill-pre/references/integration/modules/code-examples/php/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +69 -0
  49. package/skill-pre/references/integration/modules/code-examples/php/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +65 -0
  50. package/skill-pre/references/integration/modules/code-examples/php/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +59 -0
  51. package/skill-pre/references/integration/modules/code-examples/php/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +110 -0
  52. package/skill-pre/references/integration/modules/code-examples/php/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +806 -0
  53. package/skill-pre/references/integration/modules/code-examples/python/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +128 -0
  54. package/skill-pre/references/integration/modules/code-examples/python/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/345/205/263/351/227/255/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +57 -0
  55. package/skill-pre/references/integration/modules/code-examples/python/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +70 -0
  56. package/skill-pre/references/integration/modules/code-examples/python/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +65 -0
  57. package/skill-pre/references/integration/modules/code-examples/python/1-/351/200/232/347/224/250/346/216/245/345/217/243//347/273/237/344/270/200/346/224/266/345/215/225/344/272/244/346/230/223/351/200/200/346/254/276/346/237/245/350/257/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +62 -0
  58. package/skill-pre/references/integration/modules/code-examples/python/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +51 -0
  59. package/skill-pre/references/integration/modules/code-examples/python/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +47 -0
  60. package/skill-pre/references/integration/modules/code-examples/python/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +541 -0
  61. package/skill-pre/references/integration/modules/interface-contract/aipay-interface-contract.md +52 -0
  62. package/skill-pre/references/integration/modules/interface-contract/apppay-interface-contract.md +45 -0
  63. package/skill-pre/references/integration/modules/interface-contract/common-trade-contract.md +42 -0
  64. package/skill-pre/references/integration/modules/interface-contract/notify-url-contract.md +68 -0
  65. package/skill-pre/references/integration/modules/interface-contract/webpay-interface-contract.md +44 -0
  66. package/skill-pre/references/integration/modules/interface-guide.md +61 -0
  67. package/skill-pre/references/integration/modules/product-decision.md +73 -0
  68. package/skill-pre/references/integration/modules/sandbox/a2m-sandbox-test.md +235 -0
  69. package/skill-pre/references/integration/modules/sandbox/alipay-sandbox-tool.md +142 -0
  70. package/skill-pre/references/integration/modules/sandbox/sandbox-setup-guide.md +239 -0
  71. package/skill-pre/references/integration/modules/scripts/local_402_sandbox_pay.py +900 -0
  72. package/skill-pre/references/integration/modules/scripts/sandbox_config.sh +347 -0
  73. package/skill-pre/references/integration/modules/troubleshooting-flow.md +28 -0
  74. package/skill-pre/references/normal/alipay-cli-env.md +169 -0
  75. package/skill-pre/references/normal/conversation-telemetry.md +101 -0
  76. package/skill-pre/references/normal/full-process-routing.md +92 -0
  77. package/skill-pre/references/normal/integration-worker.md +90 -0
  78. package/skill-pre/references/normal/json/customer-messages.json +1 -0
  79. package/skill-pre/references/normal/json/managed-jq-assets.json +1 -0
  80. package/skill-pre/references/normal/json/policy-rules.json +1 -0
  81. package/skill-pre/references/normal/json/release-channel.json +1 -0
  82. package/skill-pre/references/normal/rejection-guide.md +41 -0
  83. package/skill-pre/references/normal/scripts/agent_platform.mjs +43 -0
  84. package/skill-pre/references/normal/scripts/alipay_cli_env.mjs +34 -0
  85. package/skill-pre/references/normal/scripts/alipay_cli_env.sh +55 -0
  86. package/skill-pre/references/normal/scripts/alipay_cli_refresh.mjs +129 -0
  87. package/skill-pre/references/normal/scripts/auth_runtime_runner.mjs +60 -0
  88. package/skill-pre/references/normal/scripts/checklist_sections.mjs +43 -0
  89. package/skill-pre/references/normal/scripts/common.sh +365 -0
  90. package/skill-pre/references/normal/scripts/conversation_telemetry.mjs +105 -0
  91. package/skill-pre/references/normal/scripts/detect_dev_tool.sh +79 -0
  92. package/skill-pre/references/normal/scripts/flow_loader.mjs +237 -0
  93. package/skill-pre/references/normal/scripts/integration_context_runner.mjs +151 -0
  94. package/skill-pre/references/normal/scripts/integration_message_runner.mjs +1456 -0
  95. package/skill-pre/references/normal/scripts/interaction_reply.mjs +140 -0
  96. package/skill-pre/references/normal/scripts/managed_jq.mjs +215 -0
  97. package/skill-pre/references/normal/scripts/onboarding_discovery_runner.mjs +387 -0
  98. package/skill-pre/references/normal/scripts/onboarding_message_runner.mjs +1425 -0
  99. package/skill-pre/references/normal/scripts/onboarding_recovery_runner.mjs +100 -0
  100. package/skill-pre/references/normal/scripts/open_official_url.sh +205 -0
  101. package/skill-pre/references/normal/scripts/platform_compat.mjs +42 -0
  102. package/skill-pre/references/normal/scripts/preview_runtime.mjs +151 -0
  103. package/skill-pre/references/normal/scripts/project_route_inspector.sh +132 -0
  104. package/skill-pre/references/normal/scripts/python_script_runner.mjs +58 -0
  105. package/skill-pre/references/normal/scripts/render_customer_message.mjs +1792 -0
  106. package/skill-pre/references/normal/scripts/runtime.mjs +271 -0
  107. package/skill-pre/references/normal/scripts/self_update.mjs +376 -0
  108. package/skill-pre/references/normal/scripts/telemetry.mjs +2102 -0
  109. package/skill-pre/references/normal/self-update.md +7 -0
  110. package/skill-pre/references/normal/telemetry.md +70 -0
  111. package/skill-pre/references/onboarding/assets/keygen.html +927 -0
  112. package/skill-pre/references/onboarding/flow.md +607 -0
  113. package/skill-pre/references/onboarding/modules/app-release.md +90 -0
  114. package/skill-pre/references/onboarding/modules/authorization.md +43 -0
  115. package/skill-pre/references/onboarding/modules/error-handling.md +62 -0
  116. package/skill-pre/references/onboarding/modules/product-sign.md +49 -0
  117. package/skill-pre/references/onboarding/modules/scripts/app.sh +1485 -0
  118. package/skill-pre/references/onboarding/modules/scripts/ar_sign_apply.sh +331 -0
  119. package/skill-pre/references/onboarding/modules/scripts/auth.sh +1040 -0
  120. package/skill-pre/references/onboarding/modules/scripts/download_key_tool.sh +4 -0
  121. package/skill-pre/references/onboarding/modules/scripts/error_handler.sh +841 -0
  122. package/skill-pre/references/onboarding/modules/scripts/mcc.sh +1085 -0
  123. package/skill-pre/references/onboarding/modules/scripts/network_retry.sh +135 -0
  124. package/skill-pre/references/onboarding/modules/scripts/query_sign_status.sh +105 -0
  125. package/skill-pre/references/onboarding/modules/scripts/service.sh +528 -0
  126. package/skill-pre/references/onboarding/modules/scripts/sign_status_parser.sh +58 -0
  127. package/skill-pre/references/onboarding/modules/scripts/upload_screenshots.sh +208 -0
  128. package/skill-pre/references/onboarding/modules/scripts/upload_special_license.sh +195 -0
  129. package/skill-pre/references/onboarding/modules/service-registration.md +40 -0
  130. package/skill-pre/references/runtime-entry.md +99 -0
  131. package/dist/commands/install-current.d.ts +0 -4
  132. package/dist/commands/install-current.d.ts.map +0 -1
  133. package/dist/commands/install-current.js.map +0 -1
  134. package/dist/commands/install.d.ts +0 -10
  135. package/dist/commands/install.d.ts.map +0 -1
  136. package/dist/commands/install.js.map +0 -1
  137. package/dist/commands/prepare-tools.d.ts +0 -5
  138. package/dist/commands/prepare-tools.d.ts.map +0 -1
  139. package/dist/commands/prepare-tools.js.map +0 -1
  140. package/dist/commands/uninstall.d.ts +0 -10
  141. package/dist/commands/uninstall.d.ts.map +0 -1
  142. package/dist/commands/uninstall.js.map +0 -1
  143. package/dist/commands/update.d.ts +0 -10
  144. package/dist/commands/update.d.ts.map +0 -1
  145. package/dist/commands/update.js.map +0 -1
  146. package/dist/index.d.ts +0 -2
  147. package/dist/index.d.ts.map +0 -1
  148. package/dist/index.js.map +0 -1
  149. package/dist/types.d.ts +0 -42
  150. package/dist/types.d.ts.map +0 -1
  151. package/dist/types.js.map +0 -1
  152. package/dist/utils/alipay-cli.d.ts +0 -20
  153. package/dist/utils/alipay-cli.d.ts.map +0 -1
  154. package/dist/utils/alipay-cli.js.map +0 -1
  155. package/dist/utils/config.d.ts +0 -52
  156. package/dist/utils/config.d.ts.map +0 -1
  157. package/dist/utils/config.js.map +0 -1
  158. package/dist/utils/file.d.ts +0 -77
  159. package/dist/utils/file.d.ts.map +0 -1
  160. package/dist/utils/file.js.map +0 -1
  161. package/dist/utils/jq.d.ts +0 -17
  162. package/dist/utils/jq.d.ts.map +0 -1
  163. package/dist/utils/jq.js.map +0 -1
  164. package/dist/utils/npm.d.ts +0 -17
  165. package/dist/utils/npm.d.ts.map +0 -1
  166. package/dist/utils/npm.js.map +0 -1
  167. package/dist/utils/shell.d.ts +0 -24
  168. package/dist/utils/shell.d.ts.map +0 -1
  169. package/dist/utils/shell.js.map +0 -1
@@ -0,0 +1,101 @@
1
+ # 对话采集:开始、持续与结束
2
+
3
+ ## 开关与范围
4
+
5
+ 对话遥测环境开关默认可用,实际采集必须先取得当前宿主会话的明确同意,可用独立开关 `ALIPAY_AIPAY_CONVERSATION_TELEMETRY=0|false|off|no` 关闭;未设置或为其他值时保持开启。该开关只关闭对话采集,不影响阶段遥测。默认 code 见下方上报字段表。可用 `ALIPAY_AIPAY_CONVERSATION_CODE` 覆盖(1–16 位数字,不得与阶段遥测 code 数值相同);显式空值、非法值或与阶段遥测 code 数值相同时停用对话入口,不影响阶段遥测。全局 `ALIPAY_AIPAY_TELEMETRY=0|false|off|no` 时,两类遥测均关闭,对话采集入口不采集、不读写、不发送;用户主动拒绝仍保存最小隐私选择,明确拒绝的例外见下一段。每条保留 d1~d5,c1 为 conversation_id,c2 仅含 sequence、role、content。正文仅脱敏凭证和个人信息,不设置采集文本或消息 JSON 的人为长度上限,不截断正文;本地缓存沿用阶段遥测的现有规则。阶段遥测原有 run 创建/关闭、计数和进度不变。
6
+
7
+ 明确的用户拒绝属于隐私选择:即使遥测环境开关当前关闭,preview consent 的“仅使用服务”和 telemetry opt-out 仍保存最小拒绝状态并关闭已有采集,防止开关恢复后旧授权复活;这不采集正文、不生成事件或发起上传。环境开关关闭时的同意不写授权,恢复开关后仍需有效的明确同意。
8
+
9
+ ## 开始:声明后的明确同意
10
+
11
+ 启动器先完整交付内测声明并等待用户选择。只有 `preview consent` 返回 `CONVERSATION_CONSENT=GRANTED`,才允许创建/复用会话并采集;未回复、选择“仅使用服务”、环境开关关闭或授权保存失败时均不采集。授权状态只保存宿主会话 hash、选择、授权随机 ID 和回复幂等 hash,不保存回复正文。普通业务确认、start-run、再次引用 Skill 或自更新均不能修改拒绝状态;恢复采集必须重新展示声明并取得新的明确同意。
12
+
13
+ `SESSION_ID` 复用启动器处理声明选择时一次取得的稳定身份,后续采集和业务 runtime 命令均显式携带同一个值。宿主无身份时,启动器的 resolve-session 生成一次随机身份并沿用,不能为对话与业务分别生成。无法恢复身份时重新展示声明并取得选择,不能继承旧会话同意。上传的 `conversation_id` 仍由运行时生成独立随机 UUID,不等于 SESSION_ID 或业务 RUN_ID。
14
+
15
+ 首次采集以用户同意的那条回复为起点;不补采此前触发请求、声明或其他历史。`MESSAGE_ID` 使用消息的稳定非内容型身份,同一消息重试复用。`SANITIZED_MESSAGE_JSON` 是 `{"role":"user","content":"脱敏后的消息","has_attachments":false}`;只替换凭证与个人信息,保留其余文字及格式。原文不得拼入命令或普通临时文件,使用结构化参数安全传递脱敏 JSON。无文字附件用空文本和 true;不读取附件、OCR 或文件名。运行时兼容 `{"text":"..."}`,其余非法结构静默拒绝。
16
+
17
+ ```text
18
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" telemetry start-conversation --session-id "<SESSION_ID>" --message-id "$MESSAGE_ID" --message-json "$SANITIZED_MESSAGE_JSON"
19
+ ```
20
+
21
+ 从唯一 `ALIPAY_AIPAY_INTERNAL:CONVERSATION_ID=<uuid>` 保存标识。已 ACTIVE 时沿用原 ID;正常结束后再次明确唤起且授权仍有效时可建立新 ID。`start-run` 只在已获同意时兜底,不改变阶段 run 的计数或生命周期。采集失败时继续业务,不宣称成功。
22
+
23
+ 用户选择“仅使用服务”时由 preview consent 保存拒绝;中途明确停止采集时,在采集该消息之前执行:
24
+
25
+ ```text
26
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" telemetry opt-out --session-id "<SESSION_ID>" --input-id "$MESSAGE_ID" --conversation-id "$CONVERSATION_ID"
27
+ ```
28
+
29
+ 尚无 conversation_id 时省略该参数,仍可按 SESSION_ID 保存拒绝。出现 `CONVERSATION_CONSENT=DENIED` 表示已保存拒绝并禁止后续采集;失败时调用方也立即停止传入正文,业务继续,不假报保存成功。正常 `end-conversation` 不等于 opt-out,不修改同意状态。重新同意使用新的授权 ID,旧 conversation 不能复活。
30
+
31
+ 对话状态使用 schema_ver=3,持有 ACTIVE/CLOSED 与创建时的 consent_id;业务 run state 不保存采集选择、对话序号或正文。会话选择、创建、消息写入和关闭使用同一宿主会话锁,不与业务 run 的锁混用。
32
+
33
+ ## 持续:从同意到结束的可见对话
34
+
35
+ 当前授权仍有效且采集 ACTIVE 时,以对话轮次为单位只采集每轮的头和尾:头是本轮用户消息,逐条采集当前宿主会话内的所有用户消息;尾是本轮的阻塞对客消息与最终收口助手回复;不按是否与支付或 Skill 业务相关筛选。包括澄清、补材料和临时切换话题的用户消息;同一轮内的过程说明、进行中回复、阶段性助手回复、工具结果和轮内送达的非阻塞登记对客消息(如方案、摘要、checklist 结果)一律跳过;切换话题本身不等于取消或退出。
36
+
37
+ 助手侧采集对象按 Skill 既有阻塞/非阻塞概念判定,不另设分类:凡阻塞对客消息(送达后本轮即停止、等待用户回复:上下文补问、MCC/应用/服务候选选择、材料收集、阻塞确认、授权或公钥页 pending 等)一律采集;每轮最终收口回复一律采集。阻塞消息通常同时就是本轮收口回复,按一条采集,不重复。两类都适用下方"先采集、后发送"规则:带 `--final true` 的 `conversation-message` 是送达前必须执行的采集动作(任务结束时仅允许再执行下文的 end-conversation),业务交付屏障"送达前禁止调用工具"不排除本条采集,采集内容是最终正文仅替换凭证和个人信息后的版本,不改写其他内容。正文不含 system、隐藏推理或工具输出;不能把工具 stdout 当已送达的回复。已有业务计数窗口内,先执行原有 count-user-input,再采集;窗口外采集对话不补计 counter,所有交付屏障和原计数顺序优先。后续消息执行:
38
+
39
+ ```text
40
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" telemetry conversation-message --session-id "<SESSION_ID>" --conversation-id "$CONVERSATION_ID" --message-id "$MESSAGE_ID" --message-json "$SANITIZED_MESSAGE_JSON"
41
+ ```
42
+
43
+ 用户暂时离开、等待补材料或审核、澄清、遇到报错或中间阶段完成都不结束采集;之后在同一宿主对话继续时沿用原 conversation_id。自更新后保留当前标识,后续命令使用新版同一路径。产品已明确时,初始化和后续消息命令可追加 `--product-type aipay|webpay|apppay`;未知则省略,d5=UNKNOWN。不读取或关联业务 run,不回写前置消息。
44
+
45
+ 助手最终收口回复固定采用先采集、后发送:Agent 组织好本轮最终收口回复后,先执行上述 `conversation-message` 并追加 `--final true`,`--message-json` 的 content 必须是随后发送正文的脱敏版本,仅允许替换凭证和个人信息;执行采集后发送原定回复。禁止先发送后采集、发送后补采或在脱敏之外改写采集内容。assistant 角色缺少 `--final true` 时运行时静默丢弃该条记录,过程回复不得调用 conversation-message。采集成功时 stderr 产生唯一 `ALIPAY_AIPAY_INTERNAL:CONVERSATION_MESSAGE_RECORDED=<sequence>` 内部事实行;未出现该 marker 视为采集失败,遥测失败静默、不阻断 Skill,仍正常发送回复。
46
+
47
+ MESSAGE_ID 可复用用户消息的 USER_INPUT_ID;本地按 conversation_id+role+message_id 的 hash 幂等分配 sequence,消息身份本身不上报。调用方按消息在当前会话中出现的顺序依次采集:收到用户消息后,在适用的原计数动作之后采集;最终收口回复按上述先采集后发送规则采集。不得先采集后出现的消息,再补采前面的消息。sequence 在采集时分配,从 1 开始,在同一 conversation 内加锁递增,产品变化不重置;同一消息重试和已入队消息补传均保留原序号,不重新编号。消费端按 conversation_id+sequence 去重并按 sequence 排序,不依赖网络到达先后。该序号仍表示采集顺序,不能自动纠正漏采后补采的原始位置;不上传原始消息时间。
48
+
49
+ ## 结束:任务完成、取消或退出
50
+
51
+ 正常流程以应用发布完成为采集结束点;仅提交审核或仍有阻塞步骤不算发布完成。用户选择的任务本来不包含应用发布(例如仅代码开发,或仅产品开通且不涉及发布)时,以该任务按对应 flow 的完成条件实际完成为结束点,不扩展任务范围。每轮助手回复说完、业务报错或输出阶段性结果本身都不是结束条件。
52
+
53
+ 达到上述完成条件后,最终结果回复同样按先采集、后发送处理:先通过 conversation-message(`--final true`)完成本地状态写入和 outbox 入队,尝试记录后执行以下结束命令,再发送最终回复;任一遥测动作失败仍正常交付,不等待网络:
54
+
55
+ ```text
56
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" telemetry end-conversation --session-id "<SESSION_ID>" --conversation-id "$CONVERSATION_ID"
57
+ ```
58
+
59
+ 用户明确取消或退出 Skill 时,先采集该用户消息及本次结束回复(如有,`--final true`),再执行同一结束命令,结束回复在结束命令返回后才发送;不等待新的用户确认。结束命令在独立 conversation 锁内将当前采集置为 CLOSED,成功时 stderr 产生唯一 `ALIPAY_AIPAY_INTERNAL:CONVERSATION_CLOSED=true` 内部事实行,不发送额外结束事件,不增加序号或修改业务 run。重复结束幂等,结束后旧 ID 拒绝新消息;不因普通后续聊天自动调用 start-conversation。再次明确唤起 Skill 才开始新的采集。
60
+
61
+ 用户一直未返回时,采集停留在已取得的消息,不推定任务完成或取消,不因沉默设置自动结束计时器,也不额外生成结束上报。
62
+
63
+ 用户明确切换为正式版 `alipay-aipay` 时,视为退出预发版,按上述结束顺序关闭当前 conversation,并停止预发采集动作;不得把正式版后续对话自动纳入旧预发采集。仅暂时切换话题不适用此规则。以后再次明确唤起预发版时,按启动器检查当前声明事实与授权,再决定是否创建新的 conversation。
64
+
65
+ 业务 summary 事件本身不触发关闭,以免漏掉尚未送达的最终回复,也避免 full_process 的中间 summary 提前结束采集。关闭仅停止接收新消息,此前在有效授权下已入队的消息继续按原机制补传,不等网络成功才关闭。
66
+
67
+ ## 失败与宿主执行限制
68
+
69
+ 遥测失败静默,不阻断 Skill。调用方在结束边界记录当前采集已结束并停止传入消息,不能因记录或关闭失败而继续采集无关聊天。结束命令失败可对旧 ID 重试,不以 start-conversation 代替结束重试。
70
+
71
+ 最终收口回复采集和结束命令都在回复发送前执行,不再依赖宿主在最终回复送达后提供执行机会。采集成功但回复被宿主中断、截断或未送达时,该条记录保留在 conversation 中,属于可接受偏差,不补发、不删除;采集失败或未授权时仍正常发送回复,不得以采集成功为业务交付条件。
72
+
73
+ ## 上报字段
74
+
75
+ 复用 collect.alipay.com/yuyan/ 的 syncLog 通道与匿名机器维度,conversation 本地事件使用 schema_ver=5,阶段仍为 schema_ver=2。每条保留 d1~d5,沿用现有取值规则;d3 的模型归一化和 unknown 规则见 [阶段遥测说明](telemetry.md#stage-快照),不依赖查询阶段遥测记录才获取维度。产品由明确的当前上下文传入,未知为 UNKNOWN。对话传输字段如下:
76
+
77
+ | 字段 | 消息事件 |
78
+ |---|---|
79
+ | code | 独立 code(默认 1008) |
80
+ | msg | alipay_aipay_skill_conversation |
81
+ | d1/d2/d3/d4/d5 | 系统、宿主、模型、Skill 版本、产品(可 UNKNOWN) |
82
+ | c1 | conversation_id |
83
+ | c2 | JSON 字符串,只含 sequence、role、content(脱敏正文) |
84
+
85
+ 对话不携带 event_id、run_id 或 root_intent,也不生成关联记录。消费端用 c1 与 c2.sequence 组成唯一键;event_id 不再单独生成。附件和脱敏版本标志只保留在本地事件,不进入 c2;保留旧本地 schema 的 truncated 字段,新消息固定为 false。对话不上传 c3/c4,采集时间仅保留在本地事件供队列处理;统计时间窗口使用平台接收时间,补传会计入接收时段。stage 的 event_id、c1=run_id 和 c4 原白名单保持不变。模块入口为 startConversation({sessionId}, env)、recordConversationMessage(message, {conversationId, messageId, productType?}, env)、endConversation(conversationId, env)。
86
+
87
+ ## 脱敏、本地缓存与共用发送
88
+
89
+ 调用方仅对凭证和个人信息做语义脱敏,保留字段名、周围说明、代码结构及非敏感参数。凭证包括私钥、密码、访问 Token、API Secret/Key、授权码、验证码、认证 Cookie 或支付认证凭证;个人信息包括姓名、手机号、邮箱、身份证号、银行卡号及个人地址。自由叙述中的姓名、住址等由调用方按语义判断,脚本不能保证覆盖任意表达。
90
+
91
+ 脚本在落盘和构造请求前再次过滤私钥 PEM、可解析为 PKCS#8/PKCS#1/SEC1 的无头单行 Base64 私钥、Bearer/Basic 认证值、完整 Cookie 值、带前缀的凭证字段、明确标注的个人信息字段,以及可识别的邮箱、手机号和身份证格式。普通链接、路径、代码块、应用 ID、服务 ID、MCC 编码、价格、业务状态和公钥不再整段或按长字符串过滤;其中若嵌入凭证或个人信息,仅替换敏感值。例如带 token 的 URL 保留地址和其他参数,仅遮盖 token 值。格式匹配仍可能误判或漏判,不能声称完全匿名。
92
+
93
+ 采集脱敏后的完整正文,不主动截断或摘要。
94
+
95
+ 独立 conversation state 只保存随机 ID、会话 hash、去重 hash、消息序号、创建时授权 ID 和 ACTIVE/CLOSED 状态;正文仅进入 0600 私有 outbox。对话事件使用 .conversation 后缀保存 JSON,让只识别 .json 的旧版 worker 跳过。对话正文和解析错误不进入 stdout/stderr。code 入队时固定,后续改配置不重标旧事件。升级前未取得明确同意的旧 conversation 队列不补传;worker 只发送具有创建时授权 ID 的会话消息,后续同意不得追认旧消息。
96
+
97
+ 对话上报请求不设置脚本级网络超时(timeout=0)。采集命令完成本地状态记录和入队后,尝试启动 detached 后台 worker 并立即返回,不在前台等待网络结果。后台发送也负责失败补传;若网络一直不返回结果,仅后台请求等待,不拖住 Skill 的后续命令。前台 flush-outbox 跳过对话记录,把它们留给后台 worker,避免补传重新引入前台等待。后台 worker 启动失败时保留队列,Skill 继续;后续触发时再尝试启动,不保证最终送达。操作系统、宿主和服务端仍可能中止连接;明确失败时继续按原机制保留记录补传。本地状态写入和入队仍需要少量执行时间,不能把“不等待网络”描述为完全零耗时。
98
+
99
+ 除上述对话上报的超时与后台发送规则外,上传、claim 恢复、补传和队列保留/清理规则沿用 [telemetry.md 的“进度与上传”](telemetry.md#进度与上传)。state 成功但 outbox 写入失败时允许丢失且不重建,Skill 继续运行。
100
+
101
+ 预发版默认遥测根目录为系统临时目录下 `alipay-aipay-telemetry/pre`,与正式版的 run、outbox、上传状态及采集授权隔离;手动设置目录/文件覆盖变量时须自行按渠道分开,不能指向同一状态位置。阶段与对话队列各自保留最多 1000 条及 7 天;对话数量不挤占阶段配额。后台先处理阶段队列,再发送对话;对话写入/启动/上传失败均不改写阶段上传状态,前台联网补传判定只统计阶段队列。对话入队外壳采用 schema_ver=2,固定采集时的 platform,跨宿主补传不改变 d2;旧 schema_ver=1 外壳仍兼容。
@@ -0,0 +1,92 @@
1
+ # 完整接入编排
2
+
3
+ 本文件是 `full_process` 唯一入口。启动方案送达前只复用 Integration 步骤 1 的项目、语言、当前系统分支环境和沙箱准备;不得开发代码、进入 Onboarding 或读取开通信息。
4
+
5
+ 目标项目和技术栈确定后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration entry --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`,只加载当前入口阶段并按步骤 1/2 准备及展示方案;代码开发满足衔接条件后执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow onboarding entry --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`。禁止整读两个 flow。所有 Skill 自有运行时动作只用当前 Skill 绝对路径下的统一入口单命令执行,不前置 `cd`、不拼接管道;用户项目命令仍以已确认项目根为 workdir。
6
+
7
+ 其他 Skill 相对命令以 `references/normal/` 为 workdir。`PROJECT_INPUT` 保留原话;Agent 确定两类项目的真实 `PROJECT_PATH`,以 `--project-path` 交 runner 校验。复用须选定项目根,位置未知先定位候选;“当前目录”仅在 runner 识别为项目根时接受。后续只用规范化绝对路径。
8
+
9
+ `full_process` 的 `RUN_ID` 只取 `runtime-entry.md` 中 `start-run` 的唯一 marker。active run 期间每条聊天框用户消息都先执行统一 `count-user-input --run-id "$RUN_ID"`,与 Skill 无关的插话和中断后输入也不例外。每个登记 stage 动作前回顾当前可见用户历史得到 `HISTORY_COUNT`,无法可靠回顾时为 `null`;能生成 stage 的 runtime 命令按对应 flow 追加 `--telemetry-run-id "$RUN_ID" --telemetry-history-count "$HISTORY_COUNT"`。Integration Worker 接收这两个低敏 telemetry 上下文字段及根入口已取得的 telemetry_session_id,并携带同一个 --session-id 透传给原 flow;正式计数仍由 runtime state 读取。`integration_summary` 不关闭 full-process run,只有 `all_summary` 关闭;telemetry 不改变本文件的业务衔接和卡点。
10
+
11
+ ## 边界
12
+
13
+ - 只编排 Integration 与 Onboarding,不复制其状态、完成条件和红线。完整接入复用 Integration 步骤 2 的唯一非阻塞 `integration.start.confirm`、同一检查器事实和模板,本轮只渲染一次。
14
+ - 先确定项目、服务端语言和创建方式;框架按 Integration 登记的 `framework-resolve` 解析,不把框架未知当作补问条件。`NEW_PROJECT` 空路径检查后使用该 runner 默认或用户明确框架初始化最小骨架,再执行 Integration 步骤 1;沙箱不依赖产品、不传 `PRODUCT`、不展示摘要,待配置仍继续。代码开发方案送达前禁止读取/展示 MCC、授权范围和开通材料/待办。
15
+ - 项目事实只来自 runner 与实际文件。未知位置用 `locate-projects --search-input "$SEARCH_INPUT" --format message` 查标记并等待选择;不得扫描上层大目录。完整性仍以 Integration 全部适用项和 checklist 为准。
16
+
17
+ ## 新项目准备与路由分类
18
+
19
+ 项目来源互斥:`CURRENT_PROJECT` 为当前目录内项目根,`OTHER_PROJECT` 为用户以绝对路径提供的目录外项目;未选定/不可访问/不可识别则为 `PROJECT_UNRESOLVED`,禁止凭描述生成状态。
20
+
21
+ `NEW_PROJECT` 只用于初始化前,新建时执行:
22
+
23
+ ```bash
24
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent new --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
25
+ ```
26
+
27
+ 复用现有项目时执行:
28
+
29
+ ```bash
30
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message resolve-project --project-input "$PROJECT_INPUT" --project-path "$PROJECT_PATH" --base-path "$USER_WORKSPACE_ROOT" --intent existing --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
31
+ ```
32
+
33
+ `--project-input` 不得代替真实路径;缺 `--project-path` 则未解析。默认新建由 Agent 选用户目录下 `alipay-aipay-projects/pay-demo`,非空占用则加安全后缀,并显式传入。仅 `preparationStatus=READY` 才继续;框架由 Integration 的 `framework-resolve` 按语言默认或用户明确值初始化,其他结果不得清空/覆盖。初始化且沙箱终态确定后成为本轮 `PREPARED_NEW_PROJECT`;不持久化,重入重扫。`NEW_PROJECT` 不扫描代码。
34
+
35
+ ### 固定检查器与 runner 终态协议
36
+
37
+ - `resolve-project --intent new` 只接受退出码 0、唯一 JSON、绝对 `projectPath`、`projectSelection/projectOrigin=NEW_PROJECT`、`projectOriginLabel=本轮新建项目` 和 `preparationStatus=READY`;否则保持 `PROJECT_UNRESOLVED`。
38
+ - `resolve-project --intent existing` 只接受退出码 0、唯一 JSON、规范化绝对路径、`CURRENT_PROJECT|OTHER_PROJECT` 和 `EXISTING_PROJECT/现有项目`。两类真实路径均经 `--project-path` 传入;相对路径限 `--base-path` 内,目录外由用户提供绝对路径;失败不得以描述/cwd 代替。
39
+ - `locate-projects` 用于未知位置/多候选,缺省搜索词为 `当前目录`。stdout 是唯一候选消息;选择后仍执行 `resolve-project --intent existing`。
40
+ - `start-confirm` 内部只执行一次项目扫描,校验后将同一对象交给 renderer;失败为 `STATUS_UNKNOWN`。禁止改写命令、另跑扫描、抽取代码,或追加 `find`、`ls`、`stat`、额外 `jq` 和临时脚本复核同一结果。
41
+
42
+ ## 维度二:目标产品集成状态
43
+
44
+ 项目和沙箱取得确定终态后再确定产品并扫描合法项目分类。已有描述能唯一映射时直接复用;否则只执行下列消息并等待,仍不唯一时重复同一消息。目标产品明确前不得执行 `scan`。
45
+
46
+ ```bash
47
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message product-clarify --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
48
+ ```
49
+
50
+ - `TARGET_PARTIAL`:发现目标代码/配置,仍完整验证;并存时优先。
51
+ - `OTHER_PRODUCT_ONLY`:仅有其他产品,保留。
52
+ - `NO_PAYMENT`:无支付能力。
53
+ - `STATUS_UNKNOWN`:不可访问、证据冲突/不足或产品不明,停止。
54
+
55
+ 合法项目分类与前三种代码状态确认后进入 Integration;`PROJECT_UNRESOLVED/STATUS_UNKNOWN` 继续澄清。Unix/macOS/Linux 的 `CREATE_PENDING|VERIFY_PENDING` 和 Windows 的 `VERIFY_PENDING` 都不阻止扫描/开发。新项目保留 `projectOriginLabel=本轮新建项目`;已有项目“新建”只能新增能力或使用空路径。这些分类只用于本轮分流,不持久化。
56
+
57
+ ## 完整接入启动方案
58
+
59
+ 合法项目分类、前三种代码状态、产品、服务端语言和 runner 解析的框架全部确定后才能输出非阻塞 `integration.start.confirm`。缺项目或服务端语言时执行下列 `integration.context.required` 标准消息;只缺新项目位置用 `integration.project_path.required` 标准消息,`启动前上下文补问` 只在这一步使用,且只补齐缺失项,只缺框架不补问。禁止使用 AskUserQuestion、request_user_input、宿主超时默认值、Agent 自创选项或自由话术替代;不得先输出扫描摘要或方案。
60
+
61
+ ```bash
62
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message context-required --missing-items "$MISSING_ITEMS" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
63
+ ```
64
+
65
+ `MISSING_ITEMS` 只由 `项目路径`、`技术栈` 组成,其中 `技术栈` 仅表示服务端语言缺失;产品不明确仍用 `product.clarify`。stdout 原文发出后等待,未补齐前不得初始化、安装或修改。路径输入均先 `resolve-project`;未知位置或需候选时执行:
66
+
67
+ ```bash
68
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message locate-projects --base-path "$USER_WORKSPACE_ROOT" --search-input "$SEARCH_INPUT" --format message --input-id "$USER_INPUT_ID" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
69
+ ```
70
+
71
+ 字段齐备后执行唯一 runner;禁止拆开执行项目扫描、`jq` 或 renderer,也不得附加解析。runner stdout 是本动作唯一对客消息;只有取得唯一 `CUSTOMER_MESSAGE_DELIVERY_REQUIRED=integration.start.confirm` 才能继续。命令后的下一个动作必须把 stdout 作为可见进行中消息原文送达,不得作为最终答复结束当前回合,送达前禁止调用工具;送达后同一回合先执行下文的 Worker 分流,由确定的执行者加载 development,不得总结、询问、等待回复或再次校验项目快照。用户中断后若方案事实变化,重新澄清、扫描并输出当前方案;静态扫描只决定进入验证,不证明完成。
72
+
73
+ `ROOT_INTENT` 固定为 `full_process`。
74
+
75
+ ```bash
76
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message start-confirm --root-intent "$ROOT_INTENT" --product-type "$PRODUCT_TYPE" --product-name "$PRODUCT_NAME" --project-path "$PROJECT_PATH" --project-selection "$PROJECT_SELECTION" --language "$SERVER_LANGUAGE" --framework "$FRAMEWORK" --framework-source "$FRAMEWORK_SOURCE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
77
+ ```
78
+
79
+ 上面命令失败时不得展示手写确认或进入子流程。成功时必须取得唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=integration.start.confirm`;缺失或重复视为失败。参数必须是当前确定值,禁止直接拼用户输入。runner 校验产品 variant 并固定服务声明;实际范围仍取当前 Integration flow 和 checklist。
80
+
81
+ 交接事实必须来自 runner 内同一次 `scan`,不得用描述、自报或历史分类代替;`evidence` 不进 renderer,Onboarding 前不传/猜 `mccCode`。方案 stdout 按 marker 送达后,先读取 `../normal/integration-worker.md`;满足其启用条件时,按协议创建唯一 Worker,由其执行步骤 3 至步骤 8;否则由当前 Agent 执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration development --product-type "$PRODUCT_TYPE" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 并串行完成步骤 3 至步骤 8。loader 只加载当前分支规则;业务完成后由登记入口记录完成态 stage。禁止手工 telemetry、解码内部值、重复扫描或重显方案。
82
+
83
+ 合法组合必须确定产品、路径/来源、代码状态、语言/框架、服务声明和顺序;发现其他产品时保留。零散信息、`新建` 选择、未选候选或新项目未准备均不能替代完整机器校验。方案送达后仍完整执行 Integration 和 checklist。
84
+
85
+ ## 子流程衔接规则
86
+
87
+ - 启动方案送达后先完成上述 Worker 分流,再由确定的执行者进入 Integration 步骤 3;用户中断后若项目、产品、语言或框架变化,重新澄清和扫描并输出当前方案。
88
+ - Integration 先完整执行和校验。只有沙箱待配置,或 READY 且仅剩非阻塞人工待验证项时,保持“部分通过”进入 Onboarding;其他代码、安全或依据缺口停在 Integration,不提前登录或收集开通材料。
89
+ - 阶段间只复用有效的产品、Integration 结果、沙箱状态、人工待验证项和剩余待办,不再询问是否进入 Onboarding;Onboarding 只保留非阻塞方案展示。
90
+ - 授权后分别查询签约、应用和适用服务;分支独立,单分支失败不回滚其他成功,认证/授权不匹配或主体变化全局阻断。一次只收集一个类别,提前材料直接校验且不重复索取。
91
+ - 签约材料通过后直接提交;服务创建摘要后直创、修改仍确认;空应用候选材料完整或非空候选明确新建,重查未变即创建,以用户公钥生成官方确认页,校验成功后直接提审。均不增加额外确认点;按量付费沙箱测试仍属 Integration 默认动作。
92
+ - 当前终点汇总代码、沙箱、签约、服务、应用和待办;人工待验证项带入 Onboarding Step 6,不增加确认。有待生效/审核/验证或配置缺口时不得宣称生产就绪。
@@ -0,0 +1,90 @@
1
+ # Integration Worker
2
+
3
+ 本文件仅在 `full_process` 的 `integration.start.confirm` 可见送达后、Agent 加载 development 前的唯一 Worker 转移点读取。Integration Worker 是 Agent 创建的子 Agent,负责 Unix/macOS/Linux 下步骤 3 至步骤 8 的完整 Integration 上下文隔离执行,不是第二套业务流程或状态机;原 `integration/flow.md`、产品契约、脚本和 checklist 仍是唯一执行依据。`integration_only` 保持原 Agent 串行路径,不读本文件。
4
+
5
+ ## 启用条件与唯一调用
6
+
7
+ 只有同时满足以下条件时才启用 Worker:
8
+
9
+ 1. 当前宿主支持创建子 Agent 并可靠等待其终态;
10
+ 2. 当前系统为 Unix、macOS 或 Linux;
11
+ 3. 本轮根意图为 `full_process`。
12
+
13
+ 任一条件不满足时不得试探、模拟或后台放任 Worker,Agent 在方案送达后串行执行步骤 3 至步骤 8。
14
+
15
+ 启用后只创建一个 Integration Worker。Agent 不得创建其他子 Agent,Integration Worker 也不得创建子 Agent。Agent 必须等待同一 Worker 到终态;等待期间不得读取项目、执行 Integration、进入 Onboarding 或结束当前任务。
16
+
17
+ ## 固定请求与输入
18
+
19
+ Agent 发给 Integration Worker 的任务正文只允许由下列一句固定说明和一个输入 JSON 组成:
20
+
21
+ > 完整读取 `<skill_dir>/references/normal/integration-worker.md` 并严格执行;不创建其他子 Agent,最终只返回该文件定义的单个 JSON 对象。
22
+
23
+ 输入 JSON 只包含下列已由启动方案前置准备和 runner 确定的字段:
24
+
25
+ ```json
26
+ {
27
+ "skill_dir": "<SKILL_DIR>",
28
+ "product_type": "<aipay|webpay|apppay>",
29
+ "project_path": "<规范化绝对路径>",
30
+ "server_language": "<Java|Python|Node.js|C#|PHP>",
31
+ "framework": "<已确定框架>",
32
+ "sandbox_config_state": "<READY|CREATE_PENDING|VERIFY_PENDING>",
33
+ "telemetry_run_id": "<RUN_ID marker 中的当前 run_id>",
34
+ "telemetry_session_id": "<主 Agent 已取得的 SESSION_ID>",
35
+ "telemetry_history_count": "<非负整数|null>"
36
+ }
37
+ ```
38
+
39
+ Agent 不得复制、摘录或改写本文件的执行协议,不得在请求中手写任何 `runtime.mjs`、sandbox、verification、acceptance、audit 或 checklist 命令。禁止把完整对话、`integration.start.confirm` stdout、runner evidence、Agent 分析、源码或补丁、完整命令日志、沙箱文件内容、私钥、密码、临时 URL 或此前工具输出复制到 Worker 请求。`skill_dir` 必须是启动器确定的当前 Skill 规范化绝对路径;`sandbox_config_state` 必须是步骤 1 实际取得并在步骤 2 保持有效的终态枚举,不得包含配置内容。`telemetry_run_id` 只取主 Agent 已解析的当前 `RUN_ID` marker;`telemetry_history_count` 是 Worker 创建前主 Agent 对当前可见历史的诊断快照,无法可靠回顾时为 JSON `null`。两者只供原 flow 登记 stage 使用,不改变 Worker 的业务范围。
40
+
41
+ 调用提交成功后,Integration 执行权立即且不可逆地转移给该 Worker。Agent 不得因等待、返回格式或 Worker 失败重新取回本轮 Integration 执行权。
42
+
43
+ ## 执行边界
44
+
45
+ `SESSION_ID` 必须取输入 `telemetry_session_id`,所有 runtime 命令都携带同一个 `--session-id "<SESSION_ID>"`,不得重新生成或 resolve;该输入只用于既有 telemetry 状态定位,不回传。
46
+
47
+ Worker 同样从当前宿主明确身份判断 `AGENT_PLATFORM`,不得使用 Worker 任务名或底层模型名;无法确认才取 `unknown`。下列入口及后续每条 runtime 命令都追加 `--agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"`,遵守 `runtime-entry.md` 的宿主名称兜底规则,不依赖主 Agent 工具进程的环境变量,也不新增用户确认。
48
+
49
+ Integration Worker 使用输入事实执行下列原 flow 入口:
50
+
51
+ ```bash
52
+ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration development --product-type "$PRODUCT_TYPE" --telemetry-run-id "$TELEMETRY_RUN_ID" --telemetry-history-count "$TELEMETRY_HISTORY_COUNT" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
53
+ ```
54
+
55
+ 随后严格按照该入口加载的原 `integration/flow.md`,从步骤 3 对步骤 1 的实际沙箱终态进行复核或保持待配置状态,再完整执行步骤 4 至步骤 8。阶段读取、命令、沙箱状态、代码实现、verification、acceptance、checklist 和失败转移都只以原 flow 为准;本文件不另行定义或覆盖业务流程。Worker 期间主 Agent 不处理新业务消息,因此各 stage 沿用该诊断 history 快照;正式 `user_input_after_clarify_intent` 仍由每个 event 生成时读取 runtime counter,不从 Worker 输入计算。原 flow 中能生成 stage 的 runtime 命令必须继续携带同一对 `--telemetry-run-id/--telemetry-history-count` 参数。
56
+
57
+ Integration Worker 不执行 Onboarding、self-update、`telemetry start-run`、产品/项目重新决策或原 flow 之外的沙箱调用和诊断。不得用 Worker 自报代替原 flow 要求的实际脚本终态和校验证据。
58
+
59
+ 遇到阻塞时,先判断是否能在当前授权和工具范围内自行解决;能解决就继续处理并验证,不能解决才返回 STOP。不得将单次失败或尚未定位原因视为无法继续。恢复仍遵守原 flow 的权限、失败分支和重试边界;有新证据或可验证的修复方向时继续,无新进展时停止重复尝试并如实说明,不伪造通过。STOP 的 `remaining_actions` 须简短列明实际错误、已尝试的恢复及所需外部条件;尚未确认的原因明确标为未知,不返回源码、完整日志或敏感值。
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`。
62
+
63
+ ## 返回协议
64
+
65
+ 最终回复仅包含一个 JSON 对象,不附加 Markdown 代码围栏、源码、补丁、日志或说明:
66
+
67
+ ```json
68
+ {
69
+ "protocol": "INTEGRATION_WORKER_V1",
70
+ "integration_result": "已完成|部分完成,沙箱配置待完成|部分完成,人工待验证|未通过",
71
+ "sandbox_config_state": "READY|CREATE_PENDING|VERIFY_PENDING",
72
+ "manual_verification_items": ["不含敏感值的受控单行项"],
73
+ "remaining_actions": ["不含敏感值的确定下一步"],
74
+ "customer_messages": ["登记 runner/script 的完整原始正文"],
75
+ "next_phase": "ONBOARDING|STOP"
76
+ }
77
+ ```
78
+
79
+ 对应关系固定:
80
+
81
+ - checklist 全部通过且沙箱 `READY`:`已完成`、`ONBOARDING`;
82
+ - 只有沙箱待配置且无其他阻断:`部分完成,沙箱配置待完成`、`ONBOARDING`;
83
+ - 沙箱 `READY` 且只剩原 flow 允许的非阻塞人工项:`部分完成,人工待验证`、`ONBOARDING`;
84
+ - 其他代码、安全、必要依据或协议缺口:`未通过`、`STOP`。
85
+
86
+ 上述七个字段都由 Integration Worker 根据原 flow 的实际结果生成。`protocol` 必须精确为 `INTEGRATION_WORKER_V1`,返回对象只允许包含这七个字段;telemetry 输入不得回传。`sandbox_config_state` 必须复用输入后按步骤 3 实际复核得到的终态,不接受 `null` 或字符串 `"null"`。`manual_verification_items` 和 `remaining_actions` 只保留最终 checklist 已证实的短项;STOP 时 `remaining_actions` 另保留上文要求的脱敏阻塞事实,没有时传空数组。禁止返回项目路径、语言、框架、changed files、依赖列表、源码、收据、绝对路径、配置字段或 Worker 分析。Agent 对每次返回做结构校验,不自行解释、修复、补充或改写结果;仅允许下文规定的同 Worker 核实。结构合法的 STOP 若缺少阻塞依据,或仍存在授权范围内未尝试的恢复方向,在对客送达前最多要求同一 Worker 核实并继续一次;只指出返回中的证据缺口,不读取项目、不创建新 Worker、不接手 Integration。Worker 从当前实际状态继续,不重做已成功动作,仍按原 flow 修复、重检并返回同一七字段对象。宿主不支持继续同一 Worker,或再次返回 STOP 时,不循环追问,如实保留未解决项。最终结果校验通过后,按数组顺序把 `customer_messages` 每一项原文作为可见消息送达,不加旁白;然后丢弃该数组。`next_phase=ONBOARDING` 时只把产品、`integration_result`、`sandbox_config_state`、`manual_verification_items` 和 `remaining_actions` 带入独立 Onboarding;不读取项目、不复查 Worker、不重跑 Integration。`protocol`、`customer_messages` 和 `next_phase` 不带入 Onboarding。最终 `next_phase=STOP` 时在送达登记正文后停止,不进入 Onboarding。
87
+
88
+ `next_phase=ONBOARDING` 时,送达登记正文后立即执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow onboarding entry --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 并继续流程,不得仅宣布下一步就结束当前轮。
89
+
90
+ Worker 明确失败、超时、返回非单一 JSON、字段非法或门禁矛盾时,本轮 Integration 立即停止。Agent 只报告“Integration Worker 交接失败,本轮已停止以避免重复执行”,不创建第二个 Agent,不追问 Worker,不读取项目,不执行任何 `flow integration`、`sandbox`、`a2m`、verification、acceptance、audit 或 checklist 命令,不进入 Onboarding。即使 Worker 文本中包含可猜测的沙箱状态,也不得由 Agent 补跑或重新展示 `integration.start.confirm`。
@@ -0,0 +1 @@
1
+ {"schemaVersion":1,"interactionPrompts":{"confirmInputHint":"如确认,可以回复“继续”“确认”“OK”,也可以输入 1;如需调整,请直接说明。","planAdjustmentHint":"我会继续执行,无需回复;如需调整方案,请中断 Agent 执行并说明。","authorizationCompletionInputHint":"授权完成后可回复“继续”“好了”“OK”或输入 1","publicKeyConfirmationCompletionInputHint":"支付宝扫码确认应用公钥完成后可回复“继续”“好了”“OK”或输入 1","completionInputHint":"完成后可回复“继续”“好了”“已完成”“OK”或输入 1;如需调整,请直接说明。","scanReturnHint":"扫码完成后请回到 Agent 对话页面"},"interactionReplySets":{"affirmative":["1","继续","继续推进","继续执行","继续处理","继续下一步","请继续","请继续推进","继续吧","确认","确认继续","确定","同意","可以","可以继续","可以继续推进","没问题","好","好的","好了","好的继续","已完成","完成","完成了","操作完成","操作好了","已经完成","已经好了","处理好了","确认好了","弄好了","OK","Okay","Yes","Y"]},"messages":[{"messageId":"product.unsupported","owner":"catalog_owned","trigger":"route.unsupported_product","blocking":false,"allowedReplies":[],"variables":[{"name":"productName","type":"singleLine","required":true}],"requiredPolicyIds":["P-MCP-CONTRACT-FROZEN"],"variants":{"DEFAULT":{"templateLines":["当前 Skill 只支持接入 AI 按量付费、AI 网页应用收款和 AI 移动应用收款,不支持 `{{productName}}`。","","- 查看支付宝其他收单产品请前往:[支付宝开放平台](https://open.alipay.com)","- 开通支付宝其他收单产品请前往:[支付宝商家平台](https://b.alipay.com/page/portal/home)"]}}},{"messageId":"onboarding.enterprise.unsupported","owner":"catalog_owned","trigger":"onboarding.enterprise_account","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":[],"variants":{"ONBOARDING_ONLY":{"templateLines":["暂不支持【企业账号】通过 Skill 完成产品开通。","","请前往支付宝商家平台开通:https://b.alipay.com/page/portal/home","","如需继续进行代码开发,试试对 Agent 说:为我集成 AI 网页应用收款/AI 移动应用收款/AI 按量付费"]},"FULL_PROCESS":{"templateLines":["暂不支持【企业账号】通过 Skill 完成产品开通。","","请前往支付宝商家平台开通:https://b.alipay.com/page/portal/home"]}}},{"messageId":"onboarding.windows.redirect","owner":"catalog_owned","trigger":"onboarding.windows_platform","blocking":false,"allowedReplies":[],"variables":[{"name":"officialUrl","type":"officialTemporaryUrl","required":true,"urlKind":"windowsOnboardingRedirect"}],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["当前为 Windows 系统,请您暂时前往支付宝 AI 付站点完成产品开通:","{{officialUrl}}"]}}},{"messageId":"product.clarify","owner":"catalog_owned","trigger":"route.product_unclear","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["请确认您的业务场景:","","1. AI 按量付费:买家通过 Agent 使用支付宝完成支付,适用于 API、MCP、算力资源等按调用付费。","2. AI 网页应用收款:买家在电脑网页或手机浏览器页面使用支付宝付款。","3. AI 移动应用收款:买家在 APP 内调起支付宝完成付款。"]}}},{"messageId":"onboarding.mcc.clarify","owner":"catalog_owned","trigger":"onboarding.mcc_unclear","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[{"name":"productName","type":"enum","required":true,"values":["AI 按量付费","AI 网页应用收款","AI 移动应用收款"]}],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["MCC 与经营类目强相关,无法仅从“{{productName}}”确定。","","请补充本次接入的经营内容,例如:","","- 电商购物(实物商品销售)","- 在线工具","- 软件开发服务","- 售卖宠物用品","","也可以直接提供你已知的 MCC 二级类目名称或编码。"]}}},{"messageId":"onboarding.mcc.no_match","owner":"catalog_owned","trigger":"onboarding.mcc_search.none","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["没有匹配到符合描述的经营类目,请重新澄清经营描述。"]}}},{"messageId":"onboarding.mcc.candidates","owner":"catalog_owned","trigger":"onboarding.mcc_candidates.selection_required","blocking":true,"allowedReplies":[],"replyMode":"runtime_enum","variables":[{"name":"mccCandidates","type":"mccCandidates","required":true},{"name":"candidateTable","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["我找到了几个可能匹配的经营类目,请选择最接近的一项:","","{{candidateTable}}","","请回复序号、MCC 二级类目名称或编码;如果都不匹配,请补充实际销售的商品或服务类型。"]}}},{"messageId":"integration.start.confirm","owner":"catalog_owned","trigger":"integration.step2.ready","blocking":false,"allowedReplies":[],"postRenderHintType":"planAdjustment","variables":[{"name":"productName","type":"enum","required":true,"values":["AI 按量付费","AI 网页应用收款","AI 移动应用收款"]},{"name":"projectPath","type":"path","required":true},{"name":"projectOriginLabel","type":"enum","required":true,"values":["现有项目","本轮新建项目"]},{"name":"integrationStatus","type":"enum","required":true,"values":["TARGET_PARTIAL","OTHER_PRODUCT_ONLY","NO_PAYMENT"]},{"name":"otherProducts","type":"singleLine","required":false},{"name":"language","type":"singleLine","required":true},{"name":"framework","type":"singleLine","required":true},{"name":"nextFlow","type":"enum","required":true,"values":["integration"]}],"requiredPolicyIds":["P-PROJECT-PROTECT","P-SENSITIVE-STATE"],"variants":{"AIPAY":{"templateLines":["代码开发方案:","","| 项目 | 内容 |","|---|---|","| 目标产品 | {{productName}} |","| 项目路径 | `{{projectPath}}` |","| 项目来源 | {{projectOriginLabel}} |","| 代码开发状态 | {{integrationStatus}} |","| 检测到的其他支付产品 | {{otherProducts}} |","| 语言 / 框架 | {{language}} / {{framework}} |","","服务声明:","1. 使用本服务需遵守法律法规、自行审核测试并承担使用责任,我方不对使用效果、正确性担保。","2. 生产环境账号密码、API Keys、应用私钥等敏感信息切勿暴露给 Agent;仅沙箱环境信息可按本 Skill 的沙箱配置流程提供和使用。","","推荐扫码入群,使用支付宝 AI 付接入 Skill 的过程中如您遇到任何问题,均可在群内咨询","• 钉钉-支付宝AI支付官方技术支持群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/MlFpRKmYyLIAAAAARJAAAAgADlahAQFr/original","• 企业微信-支付宝AI支付官方交流群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/Cz0TTZVO7_4AAAAAQDAAAAgADlahAQFr/fmt.webp"]},"WEBPAY":{"templateLines":["代码开发方案:","","| 项目 | 内容 |","|---|---|","| 目标产品 | AI 网页应用收款 |","| 项目路径 | `{{projectPath}}` |","| 项目来源 | {{projectOriginLabel}} |","| 代码开发状态 | {{integrationStatus}} |","| 检测到的其他支付产品 | {{otherProducts}} |","| 语言 / 框架 | {{language}} / {{framework}} |","","服务声明:","1. 使用本服务需遵守法律法规、自行审核测试并承担使用责任,我方不对使用效果、正确性担保。","2. 生产环境账号密码、API Keys、应用私钥等敏感信息切勿暴露给 Agent;仅沙箱环境信息可按本 Skill 的沙箱配置流程提供和使用。","","推荐扫码入群,使用支付宝 AI 付接入 Skill 的过程中如您遇到任何问题,均可在群内咨询","• 钉钉-支付宝AI支付官方技术支持群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/MlFpRKmYyLIAAAAARJAAAAgADlahAQFr/original","• 企业微信-支付宝AI支付官方交流群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/Cz0TTZVO7_4AAAAAQDAAAAgADlahAQFr/fmt.webp"]},"APPPAY":{"templateLines":["代码开发方案:","","| 项目 | 内容 |","|---|---|","| 目标产品 | AI 移动应用收款 |","| 项目路径 | `{{projectPath}}` |","| 项目来源 | {{projectOriginLabel}} |","| 代码开发状态 | {{integrationStatus}} |","| 检测到的其他支付产品 | {{otherProducts}} |","| 语言 / 框架 | {{language}} / {{framework}} |","","【前置提醒】接 AI 移动应用收款需要你有自己的 APP,本轮代码开发主要覆盖商家服务端支付接口的实现,APP 还需接入支付宝客户端 SDK 后才能调起支付。","","服务声明:","1. 使用本服务需遵守法律法规、自行审核测试并承担使用责任,我方不对使用效果、正确性担保。","2. 生产环境账号密码、API Keys、应用私钥等敏感信息切勿暴露给 Agent;仅沙箱环境信息可按本 Skill 的沙箱配置流程提供和使用。","","推荐扫码入群,使用支付宝 AI 付接入 Skill 的过程中如您遇到任何问题,均可在群内咨询","• 钉钉-支付宝AI支付官方技术支持群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/MlFpRKmYyLIAAAAARJAAAAgADlahAQFr/original","• 企业微信-支付宝AI支付官方交流群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/Cz0TTZVO7_4AAAAAQDAAAAgADlahAQFr/fmt.webp"]}}},{"messageId":"onboarding.plan.confirm","owner":"catalog_owned","trigger":"onboarding.step2.ready","blocking":false,"allowedReplies":[],"postRenderHintType":"planAdjustment","variables":[{"name":"mccCode","type":"mccCode","required":true},{"name":"mccName","type":"singleLine","required":true},{"name":"mccContextReceipt","type":"string","required":true},{"name":"mccQualification","type":"singleLine","required":true}],"requiredPolicyIds":["P-AUTH-BEFORE-ONBOARDING"],"variants":{"AIPAY":{"templateLines":["产品开通方案:","","| 项目 | 内容 |","|---|---|","| 产品 | AI 按量付费 |","| 产品码 | `I1080300001000160457` |","| 经营类目 | {{mccName}} (`{{mccCode}}`) |","| 特殊资质 | {{mccQualification}} |","| 授权范围 | `app:all,machine_pay:write,agmnt:write` |","| 材料预告 | 1、签约申请无需页面截图;2、新建或修改服务时收集服务资料;3、新建应用设置应用公钥时由用户提供 |","","你也可以选择前往支付宝 AI 付站点完成产品开通(https://aipay.alipay.com/?from=alipay-aipay-skill)","","暂不支持【企业账号】通过 Skill 完成产品开通,【企业账号】如需开通请前往支付宝商家平台(https://b.alipay.com/page/portal/home)","","推荐扫码入群,使用支付宝 AI 付接入 Skill 的过程中如您遇到任何问题,均可在群内咨询","• 钉钉-支付宝AI支付官方技术支持群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/MlFpRKmYyLIAAAAARJAAAAgADlahAQFr/original","• 企业微信-支付宝AI支付官方交流群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/Cz0TTZVO7_4AAAAAQDAAAAgADlahAQFr/fmt.webp"]},"WEBPAY":{"templateLines":["产品开通方案:","","| 项目 | 内容 |","|---|---|","| 产品 | AI 网页应用收款 |","| 产品码 | `I1080300001000041203` |","| 经营类目 | {{mccName}} (`{{mccCode}}`) |","| 特殊资质 | {{mccQualification}} |","| 授权范围 | `app:all,fast_instant_trade_pay:write` |","| 材料预告 | 1、未签约时收集首页、商品页、支付页 3 张截图;支付页是展示支付宝付款方式,等待用户去支付的页面;2、新建应用设置应用公钥时由用户提供 |","","你也可以选择前往支付宝 AI 付站点完成产品开通(https://aipay.alipay.com/?from=alipay-aipay-skill)","","暂不支持【企业账号】通过 Skill 完成产品开通,【企业账号】如需开通请前往支付宝商家平台(https://b.alipay.com/page/portal/home)","","推荐扫码入群,使用支付宝 AI 付接入 Skill 的过程中如您遇到任何问题,均可在群内咨询","• 钉钉-支付宝AI支付官方技术支持群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/MlFpRKmYyLIAAAAARJAAAAgADlahAQFr/original","• 企业微信-支付宝AI支付官方交流群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/Cz0TTZVO7_4AAAAAQDAAAAgADlahAQFr/fmt.webp"]},"APPPAY":{"templateLines":["产品开通方案:","","| 项目 | 内容 |","|---|---|","| 产品 | AI 移动应用收款 |","| 产品码 | `I1080300001000041313` |","| 经营类目 | {{mccName}} (`{{mccCode}}`) |","| 特殊资质 | {{mccQualification}} |","| 授权范围 | `app:all,auth_alipay_apppay:write` |","| 材料预告 | 1、未签约时收集 APP 名称和首页、商品页、支付页 3 张截图;支付页是展示支付宝付款方式,等待用户去支付的页面;2、新建应用支持 iOS、Android 或 ALL(二者同时);3、新建应用设置应用公钥时由用户提供 |","| 特别提醒 | 鸿蒙系统移动应用暂不支持通过 Skill 创建,请前往支付宝开放平台-控制台手动创建:https://open.alipay.com/ |","","你也可以选择前往支付宝 AI 付站点完成产品开通(https://aipay.alipay.com/?from=alipay-aipay-skill)","","暂不支持【企业账号】通过 Skill 完成产品开通,【企业账号】如需开通请前往支付宝商家平台(https://b.alipay.com/page/portal/home)","","推荐扫码入群,使用支付宝 AI 付接入 Skill 的过程中如您遇到任何问题,均可在群内咨询","• 钉钉-支付宝AI支付官方技术支持群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/MlFpRKmYyLIAAAAARJAAAAgADlahAQFr/original","• 企业微信-支付宝AI支付官方交流群:https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/Cz0TTZVO7_4AAAAAQDAAAAgADlahAQFr/fmt.webp"]}}},{"messageId":"auth.page","owner":"catalog_owned","trigger":"AUTH_FLOW:READY_TO_OPEN","blocking":false,"allowedReplies":[],"postRenderHintType":"scanReturn","expiresWithPrompt":true,"variables":[{"name":"productName","type":"enum","required":true,"values":["AI 按量付费","AI 网页应用收款","AI 移动应用收款"]},{"name":"deviceCode","type":"singleLine","required":true},{"name":"mccCode","type":"mccCode","required":true},{"name":"mccName","type":"singleLine","required":true},{"name":"mccContextReceipt","type":"string","required":true},{"name":"verificationCode","type":"singleLine","required":true},{"name":"expiresDisplay","type":"singleLine","required":true},{"name":"officialUrl","type":"officialTemporaryUrl","required":true,"urlKind":"authorization"}],"requiredPolicyIds":["P-AUTH-URL","P-AUTH-URL-AUTO-OPEN"],"variants":{"READY":{"templateLines":["接下来会自动打开支付宝扫码授权页面,请在页面中扫码完成授权。","","| 授权信息 | 内容 |","|---|---|","| 产品类型 | {{productName}} |","| 经营类目 | {{mccName}} (`{{mccCode}}`) |","| 确认码 | {{verificationCode}} |","| 授权链接有效期 | {{expiresDisplay}} |","","安全提示:支付宝扫码后,请核对授权页面显示的确认码是否与上方一致;如不一致,请勿授权并立即停止操作。确认码只用于核对,不需要输入。","","如果自动跳转失败,请复制下方链接到网页浏览器打开。","授权链接:","{{officialUrl}}"]}}},{"messageId":"auth.open.manual","owner":"catalog_owned","trigger":"AUTH_OPEN:OPEN_FAILED|GUI_UNAVAILABLE|LINK_ONLY","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":["P-AUTH-URL-AUTO-OPEN"],"variants":{"DEFAULT":{"templateLines":["未能自动打开支付宝授权页面,请手动打开上一条消息中的授权链接并完成扫码。我会继续检查授权结果,无需回复。"]}}},{"messageId":"application.key.page","owner":"catalog_owned","trigger":"application.key_page.ready","blocking":false,"allowedReplies":[],"postRenderHintType":"scanReturn","expiresWithPrompt":true,"variables":[{"name":"appId","type":"singleLine","required":true},{"name":"officialUrl","type":"officialTemporaryUrl","required":true,"urlKind":"publicKeyConfirmation"}],"requiredPolicyIds":["P-KEY-URL","P-KEY-URL-AUTO-OPEN"],"variants":{"READY":{"templateLines":["接下来会自动打开应用 `{{appId}}` 的公钥确认页面,请打开支付宝扫码确认应用公钥。","","如果自动跳转失败,请复制下方链接到网页浏览器打开。","公钥确认链接:","{{officialUrl}}"]}}},{"messageId":"application.key.pending","owner":"catalog_owned","trigger":"FLOW:KEY_NOT_CONFIRMED","blocking":true,"allowedReplySet":"affirmative","inputHintType":"publicKeyConfirmationComplete","variables":[],"requiredPolicyIds":["P-KEY-PUBLIC-USER"],"variants":{"DEFAULT":{"templateLines":["应用公钥尚未确认,请先完成公钥设置确认。"]}}},{"messageId":"onboarding.discovery.summary","owner":"catalog_owned","trigger":"onboarding.discovery.finished","blocking":false,"allowedReplies":[],"variables":[{"name":"signingStatus","type":"enum","required":true,"values":["未签约","已提交待生效","已生效","其他状态待核验","查询失败"]},{"name":"serviceStatus","type":"enum","required":false,"values":["无已有服务","已有服务候选","查询失败"]},{"name":"applicationStatus","type":"enum","required":true,"values":["无同类型应用","有上线应用可复用","仅有未上线应用","查询失败"]}],"requiredPolicyIds":["P-PARTIAL-RESULT","P-MATERIAL-CATEGORY"],"variants":{"AIPAY":{"templateLines":["当前查询结果:","","| 流程 | 当前状态 |","|---|---|","| 产品签约 | {{signingStatus}} |","| 服务市场 | {{serviceStatus}} |","| 应用发布 | {{applicationStatus}} |"]},"WEBPAY":{"templateLines":["当前查询结果:","","| 流程 | 当前状态 |","|---|---|","| 产品签约 | {{signingStatus}} |","| 服务市场 | 无需处理 |","| 应用发布 | {{applicationStatus}} |"]},"APPPAY":{"templateLines":["当前查询结果:","","| 流程 | 当前状态 |","|---|---|","| 产品签约 | {{signingStatus}} |","| 服务市场 | 无需处理 |","| 应用发布 | {{applicationStatus}} |"]}}},{"messageId":"materials.category.collect","owner":"catalog_owned","trigger":"materials.category.ready","blocking":true,"allowedReplies":[],"replyMode":"freeform","expiresWithPrompt":true,"variables":[{"name":"categoryName","type":"enum","required":true,"values":["签约材料","服务资料","应用资料"]},{"name":"currentStatus","type":"enum","required":true,"values":["待补充","部分已提供,待补充","校验失败,需更正"]},{"name":"missingFields","type":"enumList","required":true,"values":["APP名称","首页截图","商品页截图","支付页截图","特殊资质材料","服务名称","服务描述","服务地址","服务单价","请求示例JSON","应用平台和对应资料","iOS Bundle ID(bundleId)","Android 应用包名(appPackage)","Android 应用签名摘要(appSign)","应用公钥"]},{"name":"paymentPageHint","type":"string","derived":true,"values":["支付页说明:支付页是展示支付宝付款方式,等待用户去支付的页面,不是支付成功页。"]},{"name":"serviceUrlHint","type":"string","derived":true,"values":["请提供有效的 URL 地址(以 http:// 或 https:// 开头)"]},{"name":"servicePricingHint","type":"string","derived":true,"values":["请提供不低于 0.01 元的有效服务单价,可输入 0.03、0.03元或 0.03 元/次。"]},{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]},{"name":"specialQualificationHint","type":"string","required":false},{"name":"applicationKeyMethods","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":["P-MATERIAL-CATEGORY"],"variants":{"INITIAL":{"templateLines":["当前收集类别:{{categoryName}}","","请在一条回复中提供:{{missingFields}}。","{{paymentPageHint}}","{{specialQualificationHint}}"]},"APP_WEB_INITIAL":{"templateLines":["当前收集类别:应用资料","","请在一条回复中提供【应用公钥】;请勿提供应用私钥。无需另行回复 `新建`。","","填写示例(请替换为实际内容):","```text","应用公钥:<你自行生成的完整应用公钥>","```","{{applicationKeyMethods}}"]},"APP_MOBILE_INITIAL":{"templateLines":["当前收集类别:应用资料","","请在一条回复中选择平台并提供以下材料:","","- 如选择 iOS 系统,请回复 --> 我选择 iOS + iOS Bundle ID(bundleId)+【应用公钥】","- 如选择 Android 系统,请回复 --> 我选择 Android + Android 应用包名(appPackage)+ Android 应用签名摘要(appSign)+【应用公钥】","- 如选择 iOS + Android 系统,请回复 --> 我要同时支持两类系统 + iOS Bundle ID + Android 应用包名 + Android 应用签名摘要 +【应用公钥】","","填写示例(请替换为实际内容):","```text","我选择 Android","Android 应用包名(appPackage):com.example.app","Android 应用签名摘要(appSign):<你的 Android 应用签名摘要>","应用公钥:<你自行生成的完整应用公钥>","```","","{{applicationKeyMethods}}","注:鸿蒙系统移动应用暂不支持通过 Skill 创建,请前往支付宝开放平台-控制台手动创建:https://open.alipay.com/"]},"PARTIAL":{"templateLines":["当前收集类别:{{categoryName}}","","还需补充:{{missingFields}}。","{{paymentPageHint}}","{{specialQualificationHint}}","已校验字段无需重复提供。"]},"INVALID":{"templateLines":["当前收集类别:{{categoryName}}","","以下内容需要更正:{{missingFields}}。","{{serviceUrlHint}}","{{servicePricingHint}}","{{paymentPageHint}}","{{specialQualificationHint}}","已校验字段无需重复提供。"]},"SERVICE_INITIAL":{"templateLines":["当前收集类别:服务资料","","请在一条回复中提供:服务名称、服务描述、服务地址、服务单价、请求示例JSON。","","填写示例(请替换为实际内容):","```text","服务名称:天气查询","服务描述:按城市查询天气","服务地址:以 http:// 或 https:// 开头的实际服务地址","服务单价:0.08 元/次","请求示例 JSON:{\"city\":\"杭州\"}","```","{{specialQualificationHint}}"]}}},{"messageId":"service.create.summary","owner":"catalog_owned","trigger":"service.create.ready","blocking":false,"allowedReplies":[],"variables":[{"name":"serviceName","type":"singleLine","required":true},{"name":"serviceDescription","type":"singleLine","required":true},{"name":"serviceUrl","type":"runtimeUrl","required":true},{"name":"servicePricing","type":"singleLine","required":true},{"name":"serviceSchema","type":"string","required":true}],"requiredPolicyIds":["P-SERVICE-WRITE","P-WRITE-UNKNOWN"],"variants":{"DEFAULT":{"templateLines":["将创建以下 AI 按量付费服务:","","服务名称:{{serviceName}}","服务描述:{{serviceDescription}}","服务地址:`{{serviceUrl}}`","服务单价:{{servicePricing}} 元/次","请求示例 JSON:","```json","{{serviceSchema}}","```"]}}},{"messageId":"onboarding.write.confirm","owner":"catalog_owned","trigger":"external_write.ready","blocking":true,"allowedReplySet":"affirmative","inputHintType":"confirm","expiresWithPrompt":true,"variables":[{"name":"sessionSummary","type":"singleLine","required":true},{"name":"subjectSummary","type":"singleLine","required":true},{"name":"productName","type":"enum","required":true,"values":["AI 按量付费","AI 网页应用收款","AI 移动应用收款"]},{"name":"actionTypes","type":"enumList","required":true,"values":["服务修改"]},{"name":"serviceId","type":"singleLine","required":false},{"name":"serviceName","type":"singleLine","required":false},{"name":"serviceDescription","type":"singleLine","required":false},{"name":"serviceUrl","type":"runtimeUrl","required":false},{"name":"servicePricing","type":"singleLine","required":false},{"name":"serviceSchema","type":"string","required":false}],"requiredPolicyIds":["P-SERVICE-WRITE","P-WRITE-UNKNOWN"],"variants":{"SERVICE_UPDATE_ONLY":{"templateLines":["请确认以下支付宝操作:","","- 当前会话:{{sessionSummary}}","- 操作主体:{{subjectSummary}}","- 产品:AI 按量付费","- 动作:服务修改","","服务ID:`{{serviceId}}`","服务名称:{{serviceName}}","服务描述:{{serviceDescription}}","服务地址:`{{serviceUrl}}`","服务单价:{{servicePricing}} 元/次","请求示例 JSON:","```json","{{serviceSchema}}","```","","本次只执行上述服务修改;签约、应用创建、公钥设置和应用提审不包含在本确认中。"]}}},{"messageId":"process.partial_result","owner":"catalog_owned","trigger":"process.current_endpoint","blocking":false,"allowedReplies":[],"variables":[{"name":"productName","type":"enum","required":true,"values":["AI 按量付费","AI 网页应用收款","AI 移动应用收款"]},{"name":"processResultTitle","type":"enum","required":true,"values":["支付产品-产品开通已完成","流程进展"]},{"name":"integrationResult","type":"enum","required":true,"values":["不在本轮执行范围","已完成","部分完成,沙箱配置待完成","部分完成,人工待验证","未完成","结果未知"]},{"name":"sandboxConfigState","type":"enum","required":false,"values":["READY","CREATE_PENDING","VERIFY_PENDING"]},{"name":"signingResult","type":"enum","required":true,"values":["未签约","已提交,等待生效","已生效","失败","结果未知"]},{"name":"serviceResult","type":"enum","required":true,"values":["无需处理","已复用","创建成功,状态未取得","修改成功,状态未取得","已完成","失败","结果未知"]},{"name":"applicationResult","type":"enum","required":true,"values":["待选择","已创建,待设置公钥","公钥待确认","HarmonyOS 应用待平台侧创建、配置或上线","已提交审核,等待上线","已上线且配置完整","需人工配置","失败","结果未知"]},{"name":"remainingActions","type":"singleLine","required":true},{"name":"manualVerificationItems","type":"singleLine","required":false},{"name":"manualVerificationLine","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"productionReadinessBlock","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"statusQueryHint","type":"enum","required":false,"derived":true,"values":["。这期间,你也可以试着对 Agent 说:“帮我查询产品签约状态”或“帮我查询应用状态”。"]},{"name":"sandboxRecoveryHint","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"nextFlowReminderLine","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"nextFlowReminder","type":"enum","required":true,"values":["还需完成支付产品-代码开发,才能在业务系统中实际发起支付。","代码开发已在本轮执行;后续只按上表实际待办继续。"]}],"requiredPolicyIds":["P-PARTIAL-RESULT"],"variants":{"DEFAULT":{"templateLines":["{{processResultTitle}}:","","| 分支 | 实际结果 |","|---|---|","| 产品 | {{productName}} |","| 代码开发 | {{integrationResult}} |","| 产品开通 | {{signingResult}} |","| 服务市场 | {{serviceResult}} |","| 应用发布 | {{applicationResult}} |","","本轮流程仍需处理:{{remainingActions}}{{statusQueryHint}}","{{manualVerificationLine}}","{{sandboxRecoveryHint}}","","{{productionReadinessBlock}}","","{{nextFlowReminderLine}}"]}}},{"messageId":"key_tool.download.result","owner":"catalog_owned","trigger":"key_tool.download.finished","blocking":false,"allowedReplies":[],"variables":[{"name":"downloadPath","type":"existingPath","required":true},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]}],"requiredPolicyIds":["P-KEY-TOOL-DOWNLOAD"],"fallbackMessageId":"key_tool.download.fallback","variants":{"DOWNLOADED":{"templateLines":["支付宝开放平台密钥工具已下载到:`{{downloadPath}}`。","","请打开该安装包并按页面引导完成安装;Agent 不会自动安装、启动工具或生成密钥。","","{{keyToolFormatHint}}","","生成后只向 Agent 提供【应用公钥】,应用私钥请自行妥善保管。",""]}}},{"messageId":"key_tool.download.fallback","owner":"catalog_owned","trigger":"key_tool.download.fallback","blocking":false,"allowedReplies":[],"variables":[{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]}],"requiredPolicyIds":["P-KEY-TOOL-DOWNLOAD"],"variants":{"DEFAULT":{"templateLines":["请自行下载安装“支付宝开放平台密钥工具”,生成并保存 RSA 应用密钥对:","{{keyToolManual}}","","{{keyToolFormatHint}}","","仅提供上传【应用公钥】,请自行妥善保管【应用私钥】,不要发送给 Agent。"]}}},{"messageId":"sandbox.windows.manual_setup","owner":"catalog_owned","trigger":"integration.sandbox.windows.manual_setup","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[],"requiredPolicyIds":["P-SANDBOX-CREDENTIAL-EXCEPTION","P-SENSITIVE-STATE"],"variants":{"DEFAULT":{"templateLines":["当前 Windows 环境暂不支持自动创建快速沙箱,请前往支付宝 AI 付站点-选择产品-一站式接入-技术集成页面获取沙箱配置:https://aipay.alipay.com/?from=alipay-aipay-skill","","请把沙箱应用的 APPID、支付宝公钥、应用公钥、与当前开发语言(JAVA语言/非JAVA语言)匹配的应用私钥、沙箱账号信息告诉我,我会帮你完成项目配置,并继续进行支付产品代码开发。","","生产环境应用私钥和密码切勿暴露给 Agent。"]}}},{"messageId":"sandbox.environment.summary","owner":"catalog_owned","trigger":"integration.sandbox.persisted","blocking":false,"allowedReplies":[],"variables":[{"name":"productName","type":"enum","required":true,"values":["AI 按量付费","AI 网页应用收款","AI 移动应用收款"]},{"name":"configPath","type":"existingPath","required":true},{"name":"environmentRows","type":"sandboxTableRows","required":true}],"requiredPolicyIds":["P-SANDBOX-CREDENTIAL-EXCEPTION","P-SENSITIVE-STATE"],"variants":{"DEFAULT":{"templateLines":["沙箱环境摘要","","| 项目 | 信息 |","|---|---|","| 产品 | {{productName}} |","| 配置文件目录 | `{{configPath}}` |","{{environmentRows}}","| 沙箱密钥 | 支付宝沙箱环境的密钥配置已写入本地文件,默认不在对话中展开 |"]}}},{"messageId":"sandbox.configuration.pending","owner":"catalog_owned","trigger":"integration.sandbox.pending","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":["P-SENSITIVE-STATE"],"variants":{"CREATE":{"templateLines":["快速沙箱暂未创建成功,当前沙箱配置尚未完成。","","本轮将继续代码开发。代码开发完成后,请对 Agent 说:“重新创建并配置沙箱”。"]},"VERIFY":{"templateLines":["快速沙箱配置复核未通过,当前沙箱配置尚未完成。","","本轮将继续代码开发。代码开发完成后,请对 Agent 说:“重新创建并配置沙箱”。"]}}},{"messageId":"sandbox.create.failure","owner":"catalog_owned","trigger":"integration.sandbox.failed","blocking":false,"allowedReplies":[],"variables":[{"name":"failureReason","type":"singleLine","required":true},{"name":"recoveryAction","type":"singleLine","required":true}],"requiredPolicyIds":["P-SENSITIVE-STATE"],"variants":{"WINDOWS":{"templateLines":["Windows 沙箱本地配置未准备完成:{{failureReason}}","","恢复动作:{{recoveryAction}}","","字段缺失、来源不明或本地保护未完成时不能继续,也不能把当前配置表述为可用。"]}}},{"messageId":"sandbox.environment.reminder","owner":"catalog_owned","trigger":"integration.sandbox.persisted.reminder","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":["P-A2M-SANDBOX","P-SENSITIVE-STATE"],"variants":{"DEFAULT":{"templateLines":["- 快速沙箱环境配置已准备完成(完整配置已写入上述本地文件),仅用于测试,不涉及真实资金。","- 本 Skill 要求 Agent 在代码开发阶段自动为项目配置支付宝沙箱,正式上线前,需要您自行替换为:通过本“支付宝 AI 付接入 Skill”的产品开通流程获取的【线上-支付宝应用配置】。"]},"WINDOWS":{"templateLines":["Windows 沙箱本地配置已准备完成,仅用于测试,不涉及真实资金。","","配置已保存至上述本机路径。"]}}},{"messageId":"a2m.test.start","owner":"catalog_owned","trigger":"integration.a2m.test.start","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":["P-A2M-SANDBOX","P-A2M-SUCCESS"],"variants":{"DEFAULT":{"templateLines":["开始执行 AI 按量付费沙箱服务端联调。","","我将连续验证 `402 Payment-Needed`、沙箱收银、`Payment-Proof` 重试和资源交付,完成后输出实际结论;这里不需要额外确认。"]}}},{"messageId":"a2m.test.result","owner":"catalog_owned","trigger":"integration.a2m.test.finished","blocking":false,"allowedReplies":[],"variables":[{"name":"evidenceSummary","type":"singleLine","required":true},{"name":"recoveryAction","type":"singleLine","required":false}],"requiredPolicyIds":["P-A2M-SUCCESS","P-SENSITIVE-STATE"],"variants":{"PASSED":{"templateLines":["AI 按量付费沙箱服务端联调通过。","","通过证据:{{evidenceSummary}}"]},"FAILED":{"templateLines":["AI 按量付费沙箱服务端联调未通过。","","实际证据:{{evidenceSummary}}","","恢复动作:{{recoveryAction}}"]}}},{"messageId":"a2m.payment.experience","owner":"catalog_owned","trigger":"integration.a2m.optional_payment_experience","blocking":false,"allowedReplies":[],"variables":[{"name":"paymentUrl","type":"runtimeUrl","required":true},{"name":"buyerAccount","type":"singleLine","required":true},{"name":"buyerLoginPassword","type":"sandboxCredential","required":true},{"name":"buyerPayPassword","type":"sandboxCredential","required":true}],"requiredPolicyIds":["P-SANDBOX-CREDENTIAL-EXCEPTION"],"variants":{"FULL":{"templateLines":["可选:体验 AI 按量付费沙箱付款","","付款链接(复制到网页浏览器打开):{{paymentUrl}}","沙箱买家账号:{{buyerAccount}}","登录密码:{{buyerLoginPassword}}","支付密码:{{buyerPayPassword}}"]}}},{"messageId":"webpay.sandbox.experience","owner":"catalog_owned","trigger":"integration.webpay.sandbox_experience","blocking":false,"allowedReplies":[],"variables":[{"name":"startCommand","type":"command","required":true},{"name":"paymentUrl","type":"runtimeUrl","required":true},{"name":"buyerAccount","type":"singleLine","required":true},{"name":"buyerLoginPassword","type":"sandboxCredential","required":true},{"name":"buyerPayPassword","type":"sandboxCredential","required":true},{"name":"resultPageInstruction","type":"enum","required":true,"values":["付款后确认浏览器自动返回商户结果页,页面可正常展示并通过服务端查询呈现订单状态。","付款后不会自动返回商户网站;请手动返回商户订单查询页并刷新或查询订单状态。"]}],"requiredPolicyIds":["P-SANDBOX-CREDENTIAL-EXCEPTION"],"variants":{"DEFAULT":{"templateLines":["AI 网页应用收款沙箱付款指引","","1. 启动服务:`{{startCommand}}`","2. 在浏览器打开:{{paymentUrl}}","3. 在沙箱收银台二选一:使用沙箱买家账号登录,或仅在 Android 沙箱支付宝中扫描收银台页面二维码。","4. 沙箱买家账号:{{buyerAccount}}","5. 登录密码:{{buyerLoginPassword}}","6. 支付密码:{{buyerPayPassword}}","7. {{resultPageInstruction}}","","沙箱测试环境不稳定,可能出现跳转到支付宝收银台页面后报错,如:504 Gateway Time-out;输入完测试买家账号后展示系统繁忙;输入完测试买家支付密码后展示系统繁忙。您可以回到支付页重新发起支付以完成沙箱测试。","","前台页面和同步回跳参数不是支付成功依据,最终以验签通过的异步通知或交易查询为准。用户暂不付款只记为待体验,不得表述为沙箱测试通过。"]}}},{"messageId":"sandbox.android.client","owner":"catalog_owned","trigger":"integration.sandbox_android_client","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["沙箱支付宝当前仅支持 Android。请复制以下支付宝官方地址到网页浏览器打开,并扫描屏幕二维码下载沙箱版支付宝安装包:","","https://mdn.alipayobjects.com/sandboxsys/afts/img/_itHRrdOD9oAAAAAAAAAAAAADgSLAQBr/original","","如果直链或页面二维码无法打开,请前往支付宝开放平台-沙箱工具页下载:","","https://open.alipay.com/develop/sandbox/tool"]}}},{"messageId":"webpay.sandbox.experience.windows","owner":"catalog_owned","trigger":"integration.webpay.sandbox_experience.windows","blocking":false,"allowedReplies":[],"variables":[{"name":"startCommand","type":"command","required":true},{"name":"paymentUrl","type":"runtimeUrl","required":true},{"name":"resultPageInstruction","type":"enum","required":true,"values":["付款后确认浏览器自动返回商户结果页,页面可正常展示并通过服务端查询呈现订单状态。","付款后不会自动返回商户网站;请手动返回商户订单查询页并刷新或查询订单状态。"]}],"requiredPolicyIds":["P-SENSITIVE-STATE"],"variants":{"DEFAULT":{"templateLines":["AI 网页应用收款沙箱付款指引","","1. 启动服务:`{{startCommand}}`","2. 在浏览器打开:{{paymentUrl}}","3. 在沙箱收银台使用支付宝开放平台控制台中的沙箱买家账号登录,或仅在 Android 沙箱支付宝中扫描收银台页面二维码。","4. 登录密码和支付密码请直接从本机保存的信息或支付宝开放平台控制台取得,无需再次提供给 Agent。","5. {{resultPageInstruction}}","","沙箱测试环境不稳定,可能出现跳转到支付宝收银台页面后报错,如:504 Gateway Time-out;输入完测试买家账号后展示系统繁忙;输入完测试买家支付密码后展示系统繁忙。您可以回到支付页重新发起支付以完成沙箱测试。","","前台页面和同步回跳参数不是支付成功依据,最终以验签通过的异步通知或交易查询为准。用户暂不付款只记为待体验,不得表述为沙箱测试通过。"]}}},{"messageId":"integration.safety.closeout","owner":"catalog_owned","trigger":"integration.step7.safety","blocking":false,"allowedReplies":[],"variables":[{"name":"acceptanceSummary","type":"singleLine","required":true}],"requiredPolicyIds":["P-SENSITIVE-STATE"],"variants":{"AIPAY":{"templateLines":["【代码开发安全与上线提醒】","","- 上线前必须完成人工代码审查。","- 私钥只保存在商家服务端,禁止写入客户端、日志或公共仓库。","- Java 使用 `PKCS#8` 私钥,非 Java 使用 `PKCS#1` 私钥,格式不匹配时只用支付宝官方密钥工具转换。","- `Payment-Proof` 必须调用 `alipay.aipay.agent.payment.verify` 验证;无效或过期凭证拒绝服务,结果不明时不得要求用户重复付款。","- 资源交付后必须调用 `alipay.aipay.agent.fulfillment.confirm`;履约确认失败必须可重试且保持幂等。","","【线上环境配置替换】","","- 沙箱配置仅用于开发调试,正式上线前必须替换代码中的“支付宝应用配置”为同一套生产 `appId`、应用私钥和支付宝公钥。","- 将 `api_mock_service_id` 替换为真实 `serviceId`。`serviceId` 获取方式:支付宝扫码登录支付宝 AI 付站点 → 控制台 → 服务管理 → 复制审核已通过的服务 ID:https://aipay.alipay.com/?from=alipay-aipay-skill","- 收款商户 PID/2088 用于 AI 按量付费 `seller_id` 和 `seller_unique_id`,不由 Agent 猜测。获取方式:支付宝扫码登录支付宝商家平台 → 点击头像 → 复制账户名下方 2088 开头的商家 ID:https://b.alipay.com/page/portal/home","- 生产环境必须严格校验本地订单、金额与资源关系;正式收款必须完成 `Payment-Proof` 验付和异步履约回执确认。","","当前验收口径:{{acceptanceSummary}}"]},"WEBPAY":{"templateLines":["【代码开发安全与上线提醒】","","- 上线前必须完成人工代码审查。","- 私钥只保存在商家服务端,禁止写入客户端、日志或公共仓库。","- Java 使用 `PKCS#8` 私钥,非 Java 使用 `PKCS#1` 私钥,格式不匹配时只用支付宝官方密钥工具转换。","- 同步回跳和前台结果不作为支付成功依据;必须以验签通过的异步通知或交易查询为准。","","【线上环境配置替换】","","- 沙箱配置仅用于开发调试,正式上线前必须替换代码中的“支付宝应用配置”为同一套生产 `appId`、应用私钥和支付宝公钥。","- AI 网页应用收款生产上线必须配置并联调公网 HTTPS `notify_url`;异步通知必须验签、校验关键字段、幂等处理并返回 `success`,同时配置交易查询补偿。若当前仅完成本地生产参数验收,该项仍需在上线前补齐;localhost、局域网地址或其他不可公网访问的地址不能用于生产异步通知。支付结果不明时不得要求用户重复付款。","","当前验收口径:{{acceptanceSummary}}"]},"APPPAY":{"templateLines":["【代码开发安全与上线提醒】","","- 上线前必须完成人工代码审查。","- 私钥只保存在商家服务端,禁止写入 APP 客户端、日志或公共仓库。","- Java 使用 `PKCS#8` 私钥,非 Java 使用 `PKCS#1` 私钥,格式不匹配时只用支付宝官方密钥工具转换。","- 客户端支付结果不作为成功依据;必须以验签通过的异步通知或服务端交易查询为准。","","【线上环境配置替换】","","- 沙箱配置仅用于开发调试,正式上线前必须替换代码中的“支付宝应用配置”为同一套生产 `appId`、应用私钥和支付宝公钥。","- AI 移动应用收款生产上线必须配置并联调公网 HTTPS `notify_url`;异步通知必须验签、校验关键字段、幂等处理并返回 `success`,同时配置交易查询补偿。若当前仅完成本地生产参数验收,该项仍需在上线前补齐;localhost、局域网地址或其他不可公网访问的地址不能用于生产异步通知。支付结果不明时不得要求用户重复付款。","- 本轮代码开发只覆盖商家服务端;APP 客户端仍需接入支付宝客户端 SDK,使用服务端返回的 `orderStr` 调起支付,并与服务端异步通知或交易查询完成联调。","","当前验收口径:{{acceptanceSummary}}"]}}},{"messageId":"integration.checklist.result","owner":"catalog_owned","trigger":"integration.checklist.finished","blocking":false,"allowedReplies":[],"variables":[{"name":"overallResult","type":"enum","required":true,"values":["通过","部分通过","未通过"]},{"name":"failedItems","type":"singleLine","required":true},{"name":"manualItems","type":"singleLine","required":true},{"name":"sandboxResult","type":"enum","required":false,"values":["AI 按量付费沙箱服务端联调通过","AI 按量付费沙箱服务端联调未通过"]},{"name":"webpayExperienceResult","type":"enum","required":false,"values":["已提供浏览器付款入口和操作指引,实际付款及结果验证仍以用户完成情况为准","未提供浏览器付款入口或完整操作指引,需先补齐","已提供浏览器付款入口和操作指引;用户已完成一笔沙箱付款,结果只按实际核验证据记录"]},{"name":"sandboxConfigState","type":"enum","required":true,"values":["READY","CREATE_PENDING","VERIFY_PENDING"]},{"name":"blockingDefectState","type":"enum","required":true,"values":["NONE","PRESENT"]},{"name":"executionMode","type":"enum","required":true,"values":["仅代码开发","完整接入"]},{"name":"nextFlowReminder","type":"enum","required":true,"values":["正式上线前还需完成支付产品-产品开通。","代码开发校验通过后将自动进入支付产品-产品开通;未通过时停留在代码开发。","沙箱配置尚未完成,但不阻塞本轮继续支付产品-产品开通;完成配置后再进行沙箱测试。","代码开发自动校验已完成,仍有人工待验证项;本轮继续产品开通。"]}],"requiredPolicyIds":[],"variants":{"AIPAY_PASSED":{"templateLines":["AI 按量付费代码开发校验通过。","","{{nextFlowReminder}}"]},"AIPAY_INCOMPLETE":{"templateLines":["AI 按量付费代码开发校验:{{overallResult}}。","","未完成项:{{failedItems}}","人工待验证:{{manualItems}}","","{{nextFlowReminder}}"]},"WEBPAY_PASSED":{"templateLines":["AI 网页应用收款代码开发校验通过。","","{{nextFlowReminder}}"]},"WEBPAY_INCOMPLETE":{"templateLines":["AI 网页应用收款代码开发校验:{{overallResult}}。","","未完成项:{{failedItems}}","人工待验证:{{manualItems}}","","{{nextFlowReminder}}"]},"APPPAY_PASSED":{"maintenanceTodo":"TODO: 后续确定 AI 移动应用收款沙箱测试的对客引导动作后,在本变体补充;同步 integration flow、checklist 和测试。","templateLines":["AI 移动应用收款代码开发校验通过。","","{{nextFlowReminder}}"]},"APPPAY_INCOMPLETE":{"maintenanceTodo":"TODO: 后续确定 AI 移动应用收款沙箱测试的对客引导动作后,在本变体补充;同步 integration flow、checklist 和测试。","templateLines":["AI 移动应用收款代码开发校验:{{overallResult}}。","","未完成项:{{failedItems}}","人工待验证:{{manualItems}}","","{{nextFlowReminder}}"]}}},{"messageId":"auth.pending","owner":"catalog_owned","trigger":"AUTH_FLOW:PENDING","blocking":true,"allowedReplySet":"affirmative","inputHintType":"authorizationComplete","variables":[],"requiredPolicyIds":["P-AUTH-BEFORE-ONBOARDING"],"variants":{"DEFAULT":{"templateLines":["支付宝授权尚未完成,当前流程保持等待,请在已打开的网页二维码页面完成扫码确认后,再回复当前授权提示。"]}}},{"messageId":"auth.expired","owner":"catalog_owned","trigger":"AUTH_FLOW:EXPIRED","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":["P-AUTH-BEFORE-ONBOARDING"],"variants":{"DEFAULT":{"templateLines":["本次支付宝授权链接已过期,旧链接和旧回复均已失效。正在重新生成授权链接,请使用新的授权页面完成授权。"]}}},{"messageId":"auth.mismatch","owner":"catalog_owned","trigger":"AUTH_FLOW:SCOPE_MISMATCH|MCC_MISMATCH","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":["P-AUTH-BEFORE-ONBOARDING"],"variants":{"DEFAULT":{"templateLines":["当前授权范围或经营类目不匹配,需要退出当前登录并重新生成授权页面。"]}}},{"messageId":"error.mcp.auth","owner":"catalog_owned","trigger":"error.mcp_auth","blocking":false,"allowedReplies":[],"variables":[{"name":"errorMessage","type":"customerErrorText","required":false}],"requiredPolicyIds":["P-AUTH-BEFORE-ONBOARDING","P-SENSITIVE-STATE"],"variants":{"START":{"templateLines":["🔐 未登录或授权已过期","","当前登录状态已失效,无法继续操作。MCP 调用返回认证错误,正在退出当前登录。"]},"LOGOUT_UNCONFIRMED":{"templateLines":["无法确认退出当前登录结果,已停止重新授权。","","这通常表示当前 Agent 执行环境缺少联网权限、CLI wrapper 混入输出,或 stdout/stderr 无法唯一解析;不代表用户本机 logout 失败,也不能据此判断支付宝业务失败。","","Agent 应申请可联网权限后重试同一动作;不要要求用户手动 logout 代替本轮事实。"]},"LOGOUT_FAILED":{"templateLines":["退出当前登录失败,已停止重新授权。","错误信息:{{errorMessage}}","","请先重试退出登录;确认退出成功后再重新授权。"]},"LOGOUT_SUCCESS":{"templateLines":["已退出登录状态。","","请重新执行登录授权流程:生成授权链接后,使用支付宝扫码授权,授权成功后继续当前操作。","","产品、MCC 和授权范围未变化时,沿用已有确认立即重新生成授权链接;发生变化时先重新确认受影响内容。"]}}},{"messageId":"error.mcp.service","owner":"catalog_owned","trigger":"error.mcp_service","blocking":false,"allowedReplies":[],"variables":[{"name":"errorDetail","type":"customerErrorText","required":false}],"requiredPolicyIds":["P-PARTIAL-RESULT","P-SENSITIVE-STATE"],"variants":{"AGENT_NETWORK":{"templateLines":["MCP 服务暂时不可用。","","当前命令需要访问支付宝服务,但当前 Agent 执行环境可能没有外网权限。Agent 应申请可联网权限后重试同一条命令,不要要求用户排查本机网络,也不要更换业务参数。","","请授权 Agent 联网重试,或稍后重新执行当前命令。"]},"GENERIC":{"templateLines":["MCP 服务暂时不可用。","","无法连接到支付宝服务,请稍后重试。","错误详情:{{errorDetail}}","","当前动作已停止重试;由主流程记录受影响分支,并在不受其依赖的情况下继续其他分支。本轮收口时将一次说明未恢复的动作、受影响分支和后续恢复方式。"]}}},{"messageId":"error.backend","owner":"catalog_owned","trigger":"error.backend_business","blocking":false,"allowedReplies":[],"variables":[{"name":"errorCode","type":"customerErrorText","required":true},{"name":"errorMessage","type":"customerErrorText","required":true},{"name":"errorScene","type":"customerErrorText","required":false},{"name":"errorSpecific","type":"customerErrorText","required":false},{"name":"checkedErrors","type":"customerErrorDetails","required":false},{"name":"bizTips","type":"customerErrorText","required":false},{"name":"appMax","type":"enum","required":true,"values":["YES","NO"]},{"name":"errorSceneLine","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"checkedErrorsBlock","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"bizTipsLine","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"appMaxLine","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":["P-SENSITIVE-STATE"],"variants":{"DEFAULT":{"templateLines":["业务处理失败。","","错误码:{{errorCode}}","错误信息:{{errorMessage}}","{{errorSceneLine}}","","{{checkedErrorsBlock}}","","{{bizTipsLine}}","","{{appMaxLine}}","","当前业务错误不会自动重试;请先按以上错误信息修正受影响分支的业务条件。","如需帮助,请联系技术支持并提供以上脱敏错误信息。"]}}},{"messageId":"error.service.unstable","owner":"catalog_owned","trigger":"error.service_unstable","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":["P-PARTIAL-RESULT"],"variants":{"DEFAULT":{"templateLines":["MCP 服务暂时不稳定。","","当前动作已停止重试;由主流程记录受影响分支,并在不受其依赖的情况下继续其他分支。","本轮收口时将一次说明未恢复的动作、受影响分支和后续恢复方式。"]}}},{"messageId":"error.cli","owner":"catalog_owned","trigger":"error.cli_output","blocking":false,"allowedReplies":[],"variables":[{"name":"errorMessage","type":"customerErrorText","required":true},{"name":"bizTips","type":"customerErrorText","required":false},{"name":"checkedErrors","type":"customerErrorDetails","required":false},{"name":"bizTipsLine","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"checkedErrorsBlock","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":["P-SENSITIVE-STATE"],"variants":{"DEFAULT":{"templateLines":["命令执行失败:{{errorMessage}}","{{bizTipsLine}}","{{checkedErrorsBlock}}"]}}},{"messageId":"integration.service.not_ready","owner":"catalog_owned","trigger":"integration.a2m.service_not_ready","blocking":false,"allowedReplies":[],"variables":[{"name":"recoveryAction","type":"singleLine","required":true}],"requiredPolicyIds":["P-A2M-SUCCESS"],"variants":{"DEFAULT":{"templateLines":["AI 按量付费本地服务尚未达到自动联调前置条件。","","需要处理:{{recoveryAction}}","","该条件未满足前不会运行自动联调,也不会把服务标记为可用。"]}}},{"messageId":"integration.project_path.required","owner":"catalog_owned","trigger":"integration.project_path.unresolved","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["现有项目及文件保持不变。请在一条回复中说明新项目要放在哪里;可以说“在当前目录新建 pay-demo”、提供当前目录下的新子目录名,或提供电脑上的完整路径。若不想指定位置,可以说“新建项目”或“帮我新建默认项目”,我会在用户目录下选择安全的新目录并告知项目地址。路径解析和确认完成前不会创建或修改文件。"]}}},{"messageId":"integration.context.required","owner":"catalog_owned","trigger":"integration.context.unresolved","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[{"name":"missingItems","type":"enumList","required":true,"values":["项目路径","技术栈"]}],"requiredPolicyIds":["P-PROJECT-PROTECT"],"variants":{"DEFAULT":{"templateLines":["为继续代码开发,请先确定:{{missingItems}}。","","- 要新建项目:可以说“在xxx目录新建xx项目”。","- 要复用已有项目:请告诉我项目位置。","- 技术栈:例如 Node.js + Express、Java + Spring Boot、Python + Flask、PHP + Laravel、C# + ASP.NET。","","项目和技术栈明确前,不会创建或修改文件。"]},"PROJECT_PATH_ONLY":{"templateLines":["为继续代码开发,请先确定:{{missingItems}}。","","- 要新建项目:可以说“在xxx目录新建xx项目”。","- 要复用已有项目:请告诉我项目位置。","","项目路径明确前,不会创建或修改文件。"]}}},{"messageId":"integration.project_candidates.select","owner":"catalog_owned","trigger":"integration.project_candidates.located","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[{"name":"searchBasePath","type":"existingPath","required":true},{"name":"candidateRows","type":"string","required":true}],"requiredPolicyIds":["P-PROJECT-PROTECT"],"variants":{"DEFAULT":{"templateLines":["我先在 `{{searchBasePath}}` 下做了轻量项目定位;这里只看项目标记文件,不扫描代码内容。","","{{candidateRows}}","","如果要复用已有项目,请回复候选序号或具体项目文件夹。","如果要新建项目,可以回复:“在xxx目录新建一个xx项目”。","","选定具体项目目录前,不会扫描整个大目录,也不会创建或修改文件。"]}}},{"messageId":"integration.local_acceptance.notice","owner":"catalog_owned","trigger":"integration.local_acceptance.enabled","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["当前使用本地生产参数验收模式:本轮可以暂不发起公网异步通知,但生产上线前必须恢复并验证 `notify_url`。这不是生产最终配置,也不能据此宣称生产就绪。"]}}},{"messageId":"application.reuse.no_key","owner":"catalog_owned","trigger":"FLOW:REUSE_NO_KEY","blocking":false,"allowedReplies":[],"variables":[{"name":"appId","type":"singleLine","required":true},{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]},{"name":"applicationKeyMethods","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":["P-KEY-PUBLIC-USER"],"variants":{"DEFAULT":{"templateLines":["应用 `{{appId}}` 当前为可复用的上线应用,但尚未确认 RSA2 应用公钥,应用分支仍未完成。","","接下来需要为该应用设置【应用公钥】;如果你已经准备好应用公钥,请直接提供。","","{{applicationKeyMethods}}","","如果不想继续复用这个应用,请说明要“重新选择”或“新建应用”。"]}}},{"messageId":"application.candidates.facts","owner":"catalog_owned","trigger":"application.candidates.queried","blocking":false,"allowedReplies":[],"variables":[{"name":"applicationType","type":"enum","required":true,"values":["WEBAPP","MOBILEAPP"]},{"name":"applicationCandidates","type":"applicationCandidates","required":true},{"name":"candidateTable","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]},{"name":"applicationKeyMethods","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":["P-PARTIAL-RESULT","P-KEY-TOOL-DOWNLOAD"],"variants":{"EMPTY":{"templateLines":["📋 暂无 {{applicationType}} 应用。","","{{applicationKeyMethods}}"]},"PENDING_ONLY":{"templateLines":["📋 当前已有以下尚未上线的 {{applicationType}} 应用:","","{{candidateTable}}","","以上应用当前不可复用。"]},"ONLINE_WITH_OPTIONAL_PENDING":{"templateLines":["📋 发现您已有以下上线 {{applicationType}} 应用:","","{{candidateTable}}"]}}},{"messageId":"application.candidate.invalid","owner":"catalog_owned","trigger":"application.candidates.selection_invalid","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["上一次回复未匹配当前应用候选或支持的选择格式。已重新展示当前候选,请按下方方式重新选择。","复用应用需要当前事实表中已上线应用的完整 `appId`;公钥获取方式的 1、2、3 只用于准备公钥,不用于选择应用。"]}}},{"messageId":"application.candidate.select","owner":"catalog_owned","trigger":"application.candidates.selection_required","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]},{"name":"applicationKeyMethods","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":[],"variants":{"ONLINE_WEB_OR_NEW":{"templateLines":["请选择应用分支下一步:","","- 回复上方事实表中状态为“已上线”的完整 `appId`:复用对应应用。","- 新建应用:在同一条回复中表明要新建并提供【应用公钥】,材料完整后将创建应用、设置公钥并进入公钥确认。","","新建回复示例(请替换为实际内容):","```text","新建","应用公钥:<你自行生成的完整应用公钥>","```","","{{applicationKeyMethods}}"]},"PENDING_WEB_OR_NEW":{"templateLines":["当前同类型应用均未上线,不能复用。","","- 新建应用:在同一条回复中表明要新建并提供【应用公钥】,材料完整后将创建应用、设置公钥并进入公钥确认。","- 回复 `暂不新建`:本轮应用分支保持待办。","","新建回复示例(请替换为实际内容):","```text","新建","应用公钥:<你自行生成的完整应用公钥>","```","","{{applicationKeyMethods}}"]},"ONLINE_MOBILE_OR_NEW":{"templateLines":["请选择应用分支下一步:","","- 【复用】"," - 回复上方事实表中状态为“已上线”的完整 `appId`:复用对应应用。","- 【新建】"," - 如选择 iOS 系统,请回复 --> 新建,我选择 iOS + iOS Bundle ID(bundleId)+【应用公钥】"," - 如选择 Android 系统,请回复 --> 新建,我选择 Android + Android 应用包名(appPackage)+ Android 应用签名摘要(appSign)+【应用公钥】"," - 如选择 iOS + Android 系统,请回复 --> 新建,我要同时支持两类系统 + iOS Bundle ID + Android 应用包名 + Android 应用签名摘要 +【应用公钥】","","{{applicationKeyMethods}}"]},"PENDING_MOBILE_OR_NEW":{"templateLines":["当前同类型应用均未上线,不能复用。","","- 【新建】"," - 如选择 iOS 系统,请回复 --> 新建,我选择 iOS + iOS Bundle ID(bundleId)+【应用公钥】"," - 如选择 Android 系统,请回复 --> 新建,我选择 Android + Android 应用包名(appPackage)+ Android 应用签名摘要(appSign)+【应用公钥】"," - 如选择 iOS + Android 系统,请回复 --> 新建,我要同时支持两类系统 + iOS Bundle ID + Android 应用包名 + Android 应用签名摘要 +【应用公钥】","- 回复 `暂不新建`:本轮应用分支保持待办。","","{{applicationKeyMethods}}"]}}},{"messageId":"application.operation.result","owner":"catalog_owned","trigger":"application.operation.completed","blocking":false,"allowedReplies":[],"variables":[{"name":"appId","type":"singleLine","required":true},{"name":"actualStatus","type":"singleLine","required":true},{"name":"nextAction","type":"singleLine","required":false},{"name":"appKeySavePath","type":"singleLine","required":false},{"name":"appKeySaveLine","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"manualConfigurationNextAction","type":"string","required":false,"derived":true,"values":["前往支付宝 AI 付站点,进入一站式接入 → 密钥配置,按当前 appId 获取对应的支付宝公钥,并手动配置到项目:https://aipay.alipay.com/?from=alipay-aipay-skill"]}],"requiredPolicyIds":["P-PARTIAL-RESULT"],"variants":{"DEFAULT":{"templateLines":["应用 `{{appId}}` 的实际状态:{{actualStatus}}。","{{appKeySaveLine}}","","下一步:{{nextAction}}","","待审核、待设置公钥或待人工配置时不会表述为应用发布完成。"]},"ALIPAY_PUBLIC_KEY_MANUAL_CONFIGURATION":{"templateLines":["应用 `{{appId}}` 的实际状态:需人工配置。","","下一步:{{manualConfigurationNextAction}}","","待人工配置时不会表述为应用发布完成。"]}}},{"messageId":"application.harmony.manual_create","owner":"catalog_owned","trigger":"application.harmony.manual_create","blocking":true,"allowedReplySet":"affirmative","inputHintType":"complete","variables":[],"requiredPolicyIds":["P-MCP-CONTRACT-FROZEN"],"variants":{"DEFAULT":{"templateLines":["当前 Skill 不支持创建 HarmonyOS 移动应用。","","请前往支付宝开放平台,进入“控制台” → “创建移动应用”,完成平台要求的创建、配置和审核:https://open.alipay.com/","","完成后将重新查询移动应用列表。"]}}},{"messageId":"service.operation.result","owner":"catalog_owned","trigger":"service.operation.completed","blocking":false,"allowedReplies":[],"variables":[{"name":"serviceId","type":"singleLine","required":true},{"name":"actualResult","type":"singleLine","required":true}],"requiredPolicyIds":["P-PARTIAL-RESULT"],"variants":{"DEFAULT":{"templateLines":["服务市场实际结果:{{actualResult}}。","已确认的 `serviceId`:`{{serviceId}}`。","","查看服务状态和服务详情:请前往支付宝 AI 付站点,登录后进入控制台 → 服务管理。","https://aipay.alipay.com/?from=alipay-aipay-skill","","该结果只代表服务分支,不会覆盖签约或应用分支的实际状态。"]}}},{"messageId":"signing.operation.result","owner":"catalog_owned","trigger":"signing.operation.completed","blocking":false,"allowedReplies":[],"variables":[{"name":"actualStatus","type":"singleLine","required":true},{"name":"feeDisplay","type":"singleLine","required":false},{"name":"nextAction","type":"singleLine","required":true}],"requiredPolicyIds":["P-PARTIAL-RESULT"],"variants":{"WITHOUT_FEE":{"templateLines":["产品当前签约状态:{{actualStatus}}。","","下一步:{{nextAction}}"]},"WITH_FEE":{"templateLines":["产品当前签约状态:{{actualStatus}}。","费率:{{feeDisplay}}","","下一步:{{nextAction}}"]}}},{"messageId":"service.candidates.facts","owner":"catalog_owned","trigger":"service.candidates.queried","blocking":false,"allowedReplies":[],"variables":[{"name":"serviceCandidates","type":"serviceCandidates","required":true},{"name":"candidateTable","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":["P-PARTIAL-RESULT"],"variants":{"EMPTY":{"templateLines":["📋 暂无已有服务。"]},"DEFAULT":{"templateLines":["📋 发现您已有以下服务:","","{{candidateTable}}"]}}},{"messageId":"service.candidate.invalid","owner":"catalog_owned","trigger":"service.candidates.selection_invalid","blocking":false,"allowedReplies":[],"variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["上一次回复没有匹配到有效的服务操作。","仅回复序号,或提供不在当前事实表中的 `serviceId`,均不会触发服务操作。"]}}},{"messageId":"service.candidate.select","owner":"catalog_owned","trigger":"service.candidates.selection_required","blocking":true,"allowedReplies":[],"replyMode":"freeform","variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["请选择下一步:","","- 回复上方事实表中的完整 `serviceId`:复用对应服务。","- 新建服务:回复 `新建`,并在同一条回复中提供服务名称、服务描述、服务地址、服务单价、请求示例 JSON。","- 回复 `修改:<serviceId>`:修改对应服务。","","- 如果只回复 `新建` 或材料不完整,我会再提示补充缺失项。","","新建回复示例(请替换为实际内容):","```text","新建","服务名称:天气查询","服务描述:按城市查询天气","服务地址:以 http:// 或 https:// 开头的实际服务地址","服务单价:0.08 元/次","请求示例 JSON:{\"city\":\"杭州\"}","```","","如需核对服务状态或服务详情,可前往支付宝 AI 付站点,登录后进入控制台 → 服务管理查看。","https://aipay.alipay.com/?from=alipay-aipay-skill"]}}},{"messageId":"service.id.missing","owner":"catalog_owned","trigger":"service.save.id_missing","blocking":false,"allowedReplies":[],"variables":[{"name":"serviceName","type":"singleLine","required":true}],"requiredPolicyIds":["P-PARTIAL-RESULT"],"variants":{"DEFAULT":{"templateLines":["服务 `{{serviceName}}` 的创建或修改调用已返回成功,但未解析到 `serviceId`,因此服务分支尚未完成。接下来会重新查询完整服务列表,并使用本次实际提交资料与列表可见字段做唯一匹配;没有唯一结果时保持未知。在取得实际 `serviceId` 前不会宣称 AI 按量付费产品开通完成。","","如需自行核对服务状态或服务详情,可前往支付宝 AI 付站点,登录后进入控制台 → 服务管理查看。","https://aipay.alipay.com/?from=alipay-aipay-skill"]}}},{"messageId":"preview.notice","owner":"catalog_owned","trigger":"preview.notice","blocking":true,"allowedReplies":[],"variables":[],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["当前使用的支付宝 AI 付接入 Skill 为【内测版】","","【内测版使用说明】","","1.请确认您通过支付宝官方提供的内测版 Skill 安装指令进行安装和使用。","","2.内测版 Skill 支持您选择在本地浏览器页面生成支付宝应用密钥对。若选择该方式,密钥对将在您的设备本地生成,请您自行妥善保管生成的【应用私钥】,避免泄露、遗失或被他人获取。您也可以根据实际需要选择其他支持的密钥生成方式。","","3.为持续优化 Skill 的功能和使用体验,在您同意的情况下,我们会采集您使用 Skill 过程中的会话信息,仅用于产品体验分析和优化,不用于其他用途。","","A-如您同意上述说明,并同意我们按照第 3 条所述方式采集和使用会话信息,请回复【确认】;","","B-如您希望使用本服务,但不同意采集和使用上述会话信息,请回复【仅使用服务】,我们将不会采集相关会话信息用于产品体验分析和优化;","","C-如您不希望继续使用本服务,无需回复。"]}},"replyMode":"freeform"},{"messageId":"application.key.methods","owner":"catalog_owned","trigger":"application.key.methods","blocking":false,"allowedReplies":[],"variables":[{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]}],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["应用公钥获取方式(三选一):","1、自备符合支付宝开放平台应用密钥规范的密钥对,直接提供上传【应用公钥】,格式说明参考文档:https://opendocs.alipay.com/common/055l5k","2、下载安装“支付宝开放平台密钥工具”,自行生成并保存 RSA 应用密钥对,仅提供上传【应用公钥】,密钥工具下载地址:{{keyToolManual}}","3、设备本地唤起非联网密钥生成页面,自行生成并保存 RSA 应用密钥对,仅提供上传【应用公钥】,回复“方式三”将唤起密钥生成页面","","密钥格式说明:支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。请自行妥善保管【应用私钥】,不要发送给 Agent。"]}}},{"messageId":"application.key.local.opened","owner":"catalog_owned","trigger":"application.key.local.opened","blocking":false,"allowedReplies":[],"variables":[{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]}],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["已请求在本机浏览器打开离线密钥生成页面。请在页面中自行点击生成,并下载、妥善保存密钥文件;仅将【应用公钥】复制回此对话。","如果页面未打开或无法生成,请告知,或自行下载安装支付宝开放平台密钥工具:{{keyToolManual}}","{{keyToolFormatHint}}","请勿向 Agent 提供【应用私钥】。"]}}},{"messageId":"application.key.local.fallback","owner":"catalog_owned","trigger":"application.key.local.fallback","blocking":false,"allowedReplies":[],"variables":[{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]}],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["未能打开或使用本地密钥生成页面。请自行下载安装“支付宝开放平台密钥工具”,生成并保存 RSA 应用密钥对:","{{keyToolManual}}","","{{keyToolFormatHint}}","","新建应用可输入:新建应用+应用公钥内容;复用已选应用时直接提供应用公钥即可。","仅提供上传【应用公钥】,请自行妥善保管【应用私钥】,不要发送给 Agent。"]}}},{"messageId":"application.key.tool.manual","owner":"catalog_owned","trigger":"application.key.tool.manual","blocking":false,"allowedReplies":[],"variables":[{"name":"keyToolManual","type":"string","required":false,"derived":true,"values":["renderer"]},{"name":"keyToolFormatHint","type":"string","required":false,"derived":true,"values":["【密钥格式说明】支付宝开放平台密钥工具“生成密钥”默认生成适用于 Java 编程语言的 PKCS#8 格式应用私钥;非 Java 语言请使用“密钥工具-格式转换”转换获取 PKCS#1 格式的应用私钥。"]}],"requiredPolicyIds":[],"variants":{"DEFAULT":{"templateLines":["请自行下载安装“支付宝开放平台密钥工具”,生成并保存 RSA 应用密钥对:","{{keyToolManual}}","","{{keyToolFormatHint}}","","仅提供上传【应用公钥】,请自行妥善保管【应用私钥】,不要发送给 Agent。"]}}}]}
@@ -0,0 +1 @@
1
+ {"schemaVersion":1,"version":"1.7.1","downloadTimeoutMs":60000,"idleTimeoutMs":15000,"maxBytes":8388608,"maxRedirects":5,"assets":{"darwin-x64":{"name":"jq-macos-amd64","sha256":"4155822bbf5ea90f5c79cf254665975eb4274d426d0709770c21774de5407443","url":"https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-macos-amd64"},"darwin-arm64":{"name":"jq-macos-arm64","sha256":"0bbe619e663e0de2c550be2fe0d240d076799d6f8a652b70fa04aea8a8362e8a","url":"https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-macos-arm64"},"linux-x64":{"name":"jq-linux-amd64","sha256":"5942c9b0934e510ee61eb3e30273f1b3fe2590df93933a93d7c58b81d19c8ff5","url":"https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64"},"linux-arm64":{"name":"jq-linux-arm64","sha256":"4dd2d8a0661df0b22f1bb9a1f9830f06b6f3b8f7d91211a1ef5d7c4f06a8b4a5","url":"https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-arm64"}}}
@@ -0,0 +1 @@
1
+ {"schemaVersion":1,"rules":[{"policyId":"P-MCP-CONTRACT-FROZEN","scope":"all","severity":"critical","text":"只用当前 Skill 已验证的 MCP 脚本契约;禁止推断、改名或尝试近似方法。","runtimeText":"仅用已验证脚本;禁推断或尝试近似方法。"},{"policyId":"P-AUTH-BEFORE-ONBOARDING","scope":"onboarding","severity":"critical","text":"登录、scope 和 MCC 校验通过前,禁止 onboarding 查询或写入。","runtimeText":"登录/scope/MCC 未通过前禁查询和写入。"},{"policyId":"P-SIGNING-WRITE","scope":"onboarding.signing","severity":"critical","text":"签约材料校验通过后直接提交,不增加确认;缺失或非法时禁止提交。"},{"policyId":"P-SERVICE-WRITE","scope":"onboarding.service","severity":"critical","text":"服务创建摘要送达后直接创建;服务修改须取得绑定当前脱敏摘要的明确确认。"},{"policyId":"P-APPLICATION-WRITE","scope":"onboarding.application","severity":"critical","text":"完整新建材料或非空候选后的明确“新建”已构成创建确认;快照未变时不追加确认,公钥确认后直接提审。"},{"policyId":"P-WRITE-UNKNOWN","scope":"onboarding.write","severity":"critical","text":"非幂等写入结果不明时只读核验;仍无法确认则进入 UNKNOWN,禁止重试写入。"},{"policyId":"P-PARTIAL-RESULT","scope":"onboarding","severity":"critical","text":"签约、服务、应用分支独立记录,失败不回滚或覆盖其他成功结果。"},{"policyId":"P-MATERIAL-CATEGORY","scope":"onboarding.materials","severity":"required","text":"每轮只展示一个材料类别;同类一次收齐,已提供材料不得重复索取。"},{"policyId":"P-KEY-NO-PRIVATE","scope":"onboarding.application","severity":"critical","text":"Agent 禁止请求、读取、处理、保存或输出生产私钥,也不提供密钥生成命令;仅用户选择方案3后可打开本地静态页面,由用户在浏览器内自行生成并保存密钥,禁止 Agent 操作页面生成按钮或读取页面密钥。"},{"policyId":"P-KEY-PUBLIC-USER","scope":"onboarding.application","severity":"critical","text":"应用公钥只能由用户提供;缺少时禁止 createKeyConfirmPage,也不得补全、改写或添加 PEM 头尾。"},{"policyId":"P-AUTH-URL","scope":"onboarding.authorization","severity":"critical","text":"授权链接只由 auth.sh 构造并校验固定域名、路径和参数;禁用 verification_url。"},{"policyId":"P-KEY-URL","scope":"onboarding.application","severity":"critical","text":"公钥确认只展示 createKeyConfirmPage 返回并校验的裸 URL;禁止二维码链接和 alipays://。"},{"policyId":"P-AUTH-URL-AUTO-OPEN","scope":"onboarding.authorization","severity":"critical","text":"授权 URL 交付后调用受控 opener;失败时保留同一裸 URL 和复制兜底。"},{"policyId":"P-KEY-URL-AUTO-OPEN","scope":"onboarding.application","severity":"critical","text":"公钥 URL 交付后调用受控 opener;失败时保留同一裸 URL 和复制兜底。"},{"policyId":"P-KEY-TOOL-DOWNLOAD","scope":"onboarding.application","severity":"critical","text":"预发版查询应用列表成功后展示三种公钥获取方式,不自动下载密钥工具。用户明确选择方案3才打开随包本地离线页面;失败引导自行下载安装官方密钥工具。页面由用户自行生成、保存密钥,Agent 只接收用户提供的公钥。"},{"policyId":"P-A2M-SANDBOX","scope":"integration.aipay","severity":"critical","text":"AI 按量付费沙箱 serviceId 固定为 api_mock_service_id,SDK 使用沙箱网关;生产网关和真实 serviceId 只用于正式配置。","runtimeText":"A2M 沙箱固定 api_mock_service_id 与沙箱网关;生产值仅用于正式配置。"},{"policyId":"P-A2M-SUCCESS","scope":"integration.aipay","severity":"critical","text":"自动联调只有在 HTTP 200、非空可归属资源、无明确业务失败且适用 Payment-Validation 有效时通过。","runtimeText":"联调仅在 HTTP 200、资源可归属、无业务失败且适用回执有效时通过。"},{"policyId":"P-SANDBOX-CREDENTIAL-EXCEPTION","scope":"integration.sandbox","severity":"critical","text":"Unix/macOS/Linux 只允许快速沙箱实际返回且已校验的买家登录/支付密码在沙箱摘要和付款体验中经 stdin 临时渲染。Windows 手工沙箱允许用户在 sandbox.windows.manual_setup 后提供当前沙箱应用的 APPID、支付宝公钥、应用公钥、与当前开发语言匹配的应用私钥和沙箱账号信息;Agent 只能将其用于已确认目标项目的受保护配置,不得在回复、摘要、普通日志或业务状态中复述或另存原文。两类例外均不得扩展到生产环境账号、应用私钥或密码。","runtimeText":"仅登记且已校验的快速沙箱或 Windows 手工沙箱资料可按 flow 用于受保护项目;禁复述、另存或扩展到生产值。"},{"policyId":"P-SENSITIVE-STATE","scope":"all","severity":"critical","text":"用户公钥仅用于当前 app key/verify-key/verify-key-and-audit 调用,禁止在回复、摘要、普通日志、跨会话状态或宽权限临时文件中复述或保存;除登记的沙箱例外外,私钥、token、Payment-Proof、签名串、完整支付表单和未脱敏响应同样不得进入这些位置;临时 URL 仅可由登记动作校验后在该动作正文展示。","runtimeText":"公钥限当前 app 调用且禁复述/保存;敏感值禁入回复/摘要/日志/状态/宽权限文件;临时 URL 仅由登记动作展示。"},{"policyId":"P-PROJECT-PROTECT","scope":"integration","severity":"critical","text":"不得清空、覆盖或删除用户既有项目;只在已确认目标路径和范围内做必要修改。","runtimeText":"禁清空/覆盖/删除既有项目;仅改已确认路径和范围。"},{"policyId":"P-CUSTOMER-OUTPUT-EXCLUSIVE","scope":"all","severity":"critical","text":"登记 runner/script 的 stdout 是唯一对客正文,禁止增删改写;阻塞消息送达后立即等待用户。","runtimeText":"登记 stdout 原文是唯一正文;阻塞送达后立即等待。"},{"policyId":"P-ONBOARDING-CONTROL-CHANNEL","scope":"onboarding","severity":"critical","text":"剔除 ALIPAY_AIPAY_INTERNAL 内部行后再处理 stdout;内部行禁止对客,正文为空时直接转移。","runtimeText":"内部行禁对客;正文为空按唯一终态转移。"},{"policyId":"P-AUTH-PAGE-DELIVERY-BARRIER","scope":"onboarding.authorization","severity":"critical","text":"`auth.page` stdout 必须先独立送达,再 opener 和有限轮询;不得合并 pending 或收口,也不等待确认。"},{"policyId":"P-KEY-PAGE-DELIVERY-BARRIER","scope":"onboarding.application","severity":"critical","text":"`application.key.page` stdout 必须先独立送达,再 opener 和有限轮询;不得合并 pending 或收口,也不等待确认。"},{"policyId":"P-DETERMINISTIC-HANDOFF","scope":"all","severity":"critical","text":"只执行 flow 动作处登记命令并按唯一终态立即转移;禁止追加命令重复解析,失败只走登记恢复。","runtimeText":"仅执行登记命令并按唯一终态转移;禁追加解析;失败只走登记恢复。"}],"officialUrls":{"aipaySite":"https://aipay.alipay.com/","aipaySkillSite":"https://aipay.alipay.com/?from=alipay-aipay-skill","merchantPlatform":"https://b.alipay.com/page/portal/home","openPlatform":"https://open.alipay.com/","openPlatformHome":"https://open.alipay.com","technicalSupport":"https://opensupport.alipay.com/support/intelligent-services?form=payskill","keyToolManual":"https://opendocs.alipay.com/isv/02kipk","keyToolMac":"https://ideservice.alipay.com/ide/getPluginUrl.htm?clientType=assistant&platform=mac&channelType=WEB","keyToolWindows":"https://ideservice.alipay.com/ide/getPluginUrl.htm?clientType=assistant&platform=win&channelType=WEB","androidSandboxAlipay":"https://mdn.alipayobjects.com/sandboxsys/afts/img/_itHRrdOD9oAAAAAAAAAAAAADgSLAQBr/original","sandboxToolFallback":"https://open.alipay.com/develop/sandbox/tool","sandboxGateway":"https://openapi-sandbox.dl.alipaydev.com/gateway.do","productionGateway":"https://openapi.alipay.com/gateway.do","openPlatformPaySkill":"https://open.alipay.com?form=payskill","traditionalPaymentSkill":"https://github.com/alipay/ai/tree/main/skills","dingtalkSupportGroupQr":"https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/MlFpRKmYyLIAAAAARJAAAAgADlahAQFr/original","wecomCommunityGroupQr":"https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/Cz0TTZVO7_4AAAAAQDAAAAgADlahAQFr/fmt.webp","applicationKeyFormat":"https://opendocs.alipay.com/common/055l5k"},"authorizationProducts":[{"productName":"AI 按量付费","salesCode":"I1080300001000160457","scope":"app:all,machine_pay:write,agmnt:write"},{"productName":"AI 网页应用收款","salesCode":"I1080300001000041203","scope":"app:all,fast_instant_trade_pay:write"},{"productName":"AI 移动应用收款","salesCode":"I1080300001000041313","scope":"app:all,auth_alipay_apppay:write"}],"temporaryUrlAllowlist":{"authorization":{"host":"aipay.alipay.com","path":"/cli-auth","requiredQueryParams":["deviceCode","productCode","mccCode"],"optionalQueryParams":["platform"]},"publicKeyConfirmation":{"host":"aipay.alipay.com","path":"/public-key-confirm","requiredQueryParams":["keyConfirmToken"],"optionalQueryParams":[]},"windowsOnboardingRedirect":{"host":"aipay.alipay.com","path":"/","requiredQueryParams":["from","reason","platform_id"],"optionalQueryParams":[]}}}